damus-github-export

Damus issue data exported from github
git clone git://jb55.com/damus-github-export
Log | Files | Refs | README | LICENSE

nostrdb.json (267343B)


      1 [
      2   {
      3     "issue": {
      4       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/27",
      5       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
      6       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/labels{/name}",
      7       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/comments",
      8       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/events",
      9       "html_url": "https://github.com/damus-io/nostrdb/issues/27",
     10       "id": 2234035426,
     11       "node_id": "I_kwDOJ9k5Is6FKKzi",
     12       "number": 27,
     13       "title": "cli: output events in json",
     14       "user": {
     15         "login": "jb55",
     16         "id": 45598,
     17         "node_id": "MDQ6VXNlcjQ1NTk4",
     18         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
     19         "gravatar_id": "",
     20         "url": "https://api.github.com/users/jb55",
     21         "html_url": "https://github.com/jb55",
     22         "followers_url": "https://api.github.com/users/jb55/followers",
     23         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
     24         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
     25         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
     26         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
     27         "organizations_url": "https://api.github.com/users/jb55/orgs",
     28         "repos_url": "https://api.github.com/users/jb55/repos",
     29         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
     30         "received_events_url": "https://api.github.com/users/jb55/received_events",
     31         "type": "User",
     32         "site_admin": false
     33       },
     34       "labels": [],
     35       "state": "open",
     36       "locked": false,
     37       "assignee": null,
     38       "assignees": [],
     39       "milestone": null,
     40       "comments": 0,
     41       "created_at": "2024-04-09T17:55:42Z",
     42       "updated_at": "2024-04-09T17:55:42Z",
     43       "closed_at": null,
     44       "author_association": "CONTRIBUTOR",
     45       "active_lock_reason": null,
     46       "body": "right now when using search it doesn't output the event in json. let's fix that",
     47       "reactions": {
     48         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/reactions",
     49         "total_count": 0,
     50         "+1": 0,
     51         "-1": 0,
     52         "laugh": 0,
     53         "hooray": 0,
     54         "confused": 0,
     55         "heart": 0,
     56         "rocket": 0,
     57         "eyes": 0
     58       },
     59       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/27/timeline",
     60       "performed_via_github_app": null,
     61       "state_reason": null
     62     }
     63   },
     64   {
     65     "issue": {
     66       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/26",
     67       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
     68       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/labels{/name}",
     69       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/comments",
     70       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/events",
     71       "html_url": "https://github.com/damus-io/nostrdb/issues/26",
     72       "id": 2181280152,
     73       "node_id": "I_kwDOJ9k5Is6CA7GY",
     74       "number": 26,
     75       "title": "Add created_at query plan",
     76       "user": {
     77         "login": "jb55",
     78         "id": 45598,
     79         "node_id": "MDQ6VXNlcjQ1NTk4",
     80         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
     81         "gravatar_id": "",
     82         "url": "https://api.github.com/users/jb55",
     83         "html_url": "https://github.com/jb55",
     84         "followers_url": "https://api.github.com/users/jb55/followers",
     85         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
     86         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
     87         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
     88         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
     89         "organizations_url": "https://api.github.com/users/jb55/orgs",
     90         "repos_url": "https://api.github.com/users/jb55/repos",
     91         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
     92         "received_events_url": "https://api.github.com/users/jb55/received_events",
     93         "type": "User",
     94         "site_admin": false
     95       },
     96       "labels": [],
     97       "state": "closed",
     98       "locked": false,
     99       "assignee": {
    100         "login": "jb55",
    101         "id": 45598,
    102         "node_id": "MDQ6VXNlcjQ1NTk4",
    103         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
    104         "gravatar_id": "",
    105         "url": "https://api.github.com/users/jb55",
    106         "html_url": "https://github.com/jb55",
    107         "followers_url": "https://api.github.com/users/jb55/followers",
    108         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
    109         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
    110         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
    111         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
    112         "organizations_url": "https://api.github.com/users/jb55/orgs",
    113         "repos_url": "https://api.github.com/users/jb55/repos",
    114         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
    115         "received_events_url": "https://api.github.com/users/jb55/received_events",
    116         "type": "User",
    117         "site_admin": false
    118       },
    119       "assignees": [
    120         {
    121           "login": "jb55",
    122           "id": 45598,
    123           "node_id": "MDQ6VXNlcjQ1NTk4",
    124           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
    125           "gravatar_id": "",
    126           "url": "https://api.github.com/users/jb55",
    127           "html_url": "https://github.com/jb55",
    128           "followers_url": "https://api.github.com/users/jb55/followers",
    129           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
    130           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
    131           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
    132           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
    133           "organizations_url": "https://api.github.com/users/jb55/orgs",
    134           "repos_url": "https://api.github.com/users/jb55/repos",
    135           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
    136           "received_events_url": "https://api.github.com/users/jb55/received_events",
    137           "type": "User",
    138           "site_admin": false
    139         }
    140       ],
    141       "milestone": null,
    142       "comments": 0,
    143       "created_at": "2024-03-12T10:38:04Z",
    144       "updated_at": "2024-03-13T07:55:39Z",
    145       "closed_at": "2024-03-13T07:55:39Z",
    146       "author_association": "CONTRIBUTOR",
    147       "active_lock_reason": null,
    148       "body": "For timeline queries and query fallbacks, the simplest possible query plan is the created_at scan. This works well for timelines in our case, because nostrdb is not typically used as a global database and should contain notes intended for us anyways. This allows us to simplify timeline queries into a linear scan. Since most of our indices are ordered by created_at, this linear scan is pretty efficient for looking for recent notes.",
    149       "reactions": {
    150         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/reactions",
    151         "total_count": 0,
    152         "+1": 0,
    153         "-1": 0,
    154         "laugh": 0,
    155         "hooray": 0,
    156         "confused": 0,
    157         "heart": 0,
    158         "rocket": 0,
    159         "eyes": 0
    160       },
    161       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/26/timeline",
    162       "performed_via_github_app": null,
    163       "state_reason": "completed"
    164     }
    165   },
    166   {
    167     "issue": {
    168       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25",
    169       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    170       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/labels{/name}",
    171       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/comments",
    172       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/events",
    173       "html_url": "https://github.com/damus-io/nostrdb/pull/25",
    174       "id": 2067542613,
    175       "node_id": "PR_kwDOJ9k5Is5jUpuv",
    176       "number": 25,
    177       "title": "Fix typos",
    178       "user": {
    179         "login": "shuoer86",
    180         "id": 129674997,
    181         "node_id": "U_kgDOB7qu9Q",
    182         "avatar_url": "https://avatars.githubusercontent.com/u/129674997?v=4",
    183         "gravatar_id": "",
    184         "url": "https://api.github.com/users/shuoer86",
    185         "html_url": "https://github.com/shuoer86",
    186         "followers_url": "https://api.github.com/users/shuoer86/followers",
    187         "following_url": "https://api.github.com/users/shuoer86/following{/other_user}",
    188         "gists_url": "https://api.github.com/users/shuoer86/gists{/gist_id}",
    189         "starred_url": "https://api.github.com/users/shuoer86/starred{/owner}{/repo}",
    190         "subscriptions_url": "https://api.github.com/users/shuoer86/subscriptions",
    191         "organizations_url": "https://api.github.com/users/shuoer86/orgs",
    192         "repos_url": "https://api.github.com/users/shuoer86/repos",
    193         "events_url": "https://api.github.com/users/shuoer86/events{/privacy}",
    194         "received_events_url": "https://api.github.com/users/shuoer86/received_events",
    195         "type": "User",
    196         "site_admin": false
    197       },
    198       "labels": [],
    199       "state": "closed",
    200       "locked": false,
    201       "assignee": null,
    202       "assignees": [],
    203       "milestone": null,
    204       "comments": 1,
    205       "created_at": "2024-01-05T15:27:36Z",
    206       "updated_at": "2024-01-05T18:26:22Z",
    207       "closed_at": "2024-01-05T18:25:24Z",
    208       "author_association": "CONTRIBUTOR",
    209       "active_lock_reason": null,
    210       "draft": false,
    211       "pull_request": {
    212         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/25",
    213         "html_url": "https://github.com/damus-io/nostrdb/pull/25",
    214         "diff_url": "https://github.com/damus-io/nostrdb/pull/25.diff",
    215         "patch_url": "https://github.com/damus-io/nostrdb/pull/25.patch",
    216         "merged_at": null
    217       },
    218       "body": null,
    219       "reactions": {
    220         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/reactions",
    221         "total_count": 0,
    222         "+1": 0,
    223         "-1": 0,
    224         "laugh": 0,
    225         "hooray": 0,
    226         "confused": 0,
    227         "heart": 0,
    228         "rocket": 0,
    229         "eyes": 0
    230       },
    231       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/timeline",
    232       "performed_via_github_app": null,
    233       "state_reason": null
    234     }
    235   },
    236   {
    237     "issue": {
    238       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25",
    239       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    240       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/labels{/name}",
    241       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/comments",
    242       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/events",
    243       "html_url": "https://github.com/damus-io/nostrdb/pull/25",
    244       "id": 2067542613,
    245       "node_id": "PR_kwDOJ9k5Is5jUpuv",
    246       "number": 25,
    247       "title": "Fix typos",
    248       "user": {
    249         "login": "shuoer86",
    250         "id": 129674997,
    251         "node_id": "U_kgDOB7qu9Q",
    252         "avatar_url": "https://avatars.githubusercontent.com/u/129674997?v=4",
    253         "gravatar_id": "",
    254         "url": "https://api.github.com/users/shuoer86",
    255         "html_url": "https://github.com/shuoer86",
    256         "followers_url": "https://api.github.com/users/shuoer86/followers",
    257         "following_url": "https://api.github.com/users/shuoer86/following{/other_user}",
    258         "gists_url": "https://api.github.com/users/shuoer86/gists{/gist_id}",
    259         "starred_url": "https://api.github.com/users/shuoer86/starred{/owner}{/repo}",
    260         "subscriptions_url": "https://api.github.com/users/shuoer86/subscriptions",
    261         "organizations_url": "https://api.github.com/users/shuoer86/orgs",
    262         "repos_url": "https://api.github.com/users/shuoer86/repos",
    263         "events_url": "https://api.github.com/users/shuoer86/events{/privacy}",
    264         "received_events_url": "https://api.github.com/users/shuoer86/received_events",
    265         "type": "User",
    266         "site_admin": false
    267       },
    268       "labels": [],
    269       "state": "closed",
    270       "locked": false,
    271       "assignee": null,
    272       "assignees": [],
    273       "milestone": null,
    274       "comments": 1,
    275       "created_at": "2024-01-05T15:27:36Z",
    276       "updated_at": "2024-01-05T18:26:22Z",
    277       "closed_at": "2024-01-05T18:25:24Z",
    278       "author_association": "CONTRIBUTOR",
    279       "active_lock_reason": null,
    280       "draft": false,
    281       "pull_request": {
    282         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/25",
    283         "html_url": "https://github.com/damus-io/nostrdb/pull/25",
    284         "diff_url": "https://github.com/damus-io/nostrdb/pull/25.diff",
    285         "patch_url": "https://github.com/damus-io/nostrdb/pull/25.patch",
    286         "merged_at": null
    287       },
    288       "body": null,
    289       "reactions": {
    290         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/reactions",
    291         "total_count": 0,
    292         "+1": 0,
    293         "-1": 0,
    294         "laugh": 0,
    295         "hooray": 0,
    296         "confused": 0,
    297         "heart": 0,
    298         "rocket": 0,
    299         "eyes": 0
    300       },
    301       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/25/timeline",
    302       "performed_via_github_app": null,
    303       "state_reason": null
    304     },
    305     "comment": {
    306       "user": "jb55",
    307       "created_at": "2024-01-05T18:26:21Z",
    308       "updated_at": "2024-01-05T18:26:21Z",
    309       "body": "Thanks!\n\npushed\n\nTo github.com:damus-io/nostrdb\n    3802828..6285179  master -> master\n"
    310     }
    311   },
    312   {
    313     "issue": {
    314       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    315       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    316       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    317       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    318       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    319       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    320       "id": 2061809289,
    321       "node_id": "I_kwDOJ9k5Is565LaJ",
    322       "number": 24,
    323       "title": "Valgrind reports a memory leak.",
    324       "user": {
    325         "login": "eznix86",
    326         "id": 26553194,
    327         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    328         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    329         "gravatar_id": "",
    330         "url": "https://api.github.com/users/eznix86",
    331         "html_url": "https://github.com/eznix86",
    332         "followers_url": "https://api.github.com/users/eznix86/followers",
    333         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    334         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    335         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    336         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    337         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    338         "repos_url": "https://api.github.com/users/eznix86/repos",
    339         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    340         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    341         "type": "User",
    342         "site_admin": false
    343       },
    344       "labels": [],
    345       "state": "open",
    346       "locked": false,
    347       "assignee": null,
    348       "assignees": [],
    349       "milestone": null,
    350       "comments": 6,
    351       "created_at": "2024-01-01T22:39:33Z",
    352       "updated_at": "2024-01-03T05:39:43Z",
    353       "closed_at": null,
    354       "author_association": "NONE",
    355       "active_lock_reason": null,
    356       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    357       "reactions": {
    358         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    359         "total_count": 0,
    360         "+1": 0,
    361         "-1": 0,
    362         "laugh": 0,
    363         "hooray": 0,
    364         "confused": 0,
    365         "heart": 0,
    366         "rocket": 0,
    367         "eyes": 0
    368       },
    369       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    370       "performed_via_github_app": null,
    371       "state_reason": null
    372     }
    373   },
    374   {
    375     "issue": {
    376       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    377       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    378       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    379       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    380       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    381       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    382       "id": 2061809289,
    383       "node_id": "I_kwDOJ9k5Is565LaJ",
    384       "number": 24,
    385       "title": "Valgrind reports a memory leak.",
    386       "user": {
    387         "login": "eznix86",
    388         "id": 26553194,
    389         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    390         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    391         "gravatar_id": "",
    392         "url": "https://api.github.com/users/eznix86",
    393         "html_url": "https://github.com/eznix86",
    394         "followers_url": "https://api.github.com/users/eznix86/followers",
    395         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    396         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    397         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    398         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    399         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    400         "repos_url": "https://api.github.com/users/eznix86/repos",
    401         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    402         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    403         "type": "User",
    404         "site_admin": false
    405       },
    406       "labels": [],
    407       "state": "open",
    408       "locked": false,
    409       "assignee": null,
    410       "assignees": [],
    411       "milestone": null,
    412       "comments": 6,
    413       "created_at": "2024-01-01T22:39:33Z",
    414       "updated_at": "2024-01-03T05:39:43Z",
    415       "closed_at": null,
    416       "author_association": "NONE",
    417       "active_lock_reason": null,
    418       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    419       "reactions": {
    420         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    421         "total_count": 0,
    422         "+1": 0,
    423         "-1": 0,
    424         "laugh": 0,
    425         "hooray": 0,
    426         "confused": 0,
    427         "heart": 0,
    428         "rocket": 0,
    429         "eyes": 0
    430       },
    431       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    432       "performed_via_github_app": null,
    433       "state_reason": null
    434     },
    435     "comment": {
    436       "user": "jb55",
    437       "created_at": "2024-01-01T22:47:11Z",
    438       "updated_at": "2024-01-01T22:47:11Z",
    439       "body": "On Mon, Jan 01, 2024 at 02:39:44PM -0800, Bruno Bernard wrote:\n>here is the full report:\n>```\n>valgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\n>==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\n>==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\n>==90548==    by 0x10E557: main (ndb.c:133)\n>```\n>\n>The memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.\n\nhow does valgrind determine leaks in this case? of course this is\nleaking because free only happens on ndb_destroy.\n"
    440     }
    441   },
    442   {
    443     "issue": {
    444       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    445       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    446       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    447       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    448       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    449       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    450       "id": 2061809289,
    451       "node_id": "I_kwDOJ9k5Is565LaJ",
    452       "number": 24,
    453       "title": "Valgrind reports a memory leak.",
    454       "user": {
    455         "login": "eznix86",
    456         "id": 26553194,
    457         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    458         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    459         "gravatar_id": "",
    460         "url": "https://api.github.com/users/eznix86",
    461         "html_url": "https://github.com/eznix86",
    462         "followers_url": "https://api.github.com/users/eznix86/followers",
    463         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    464         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    465         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    466         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    467         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    468         "repos_url": "https://api.github.com/users/eznix86/repos",
    469         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    470         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    471         "type": "User",
    472         "site_admin": false
    473       },
    474       "labels": [],
    475       "state": "open",
    476       "locked": false,
    477       "assignee": null,
    478       "assignees": [],
    479       "milestone": null,
    480       "comments": 6,
    481       "created_at": "2024-01-01T22:39:33Z",
    482       "updated_at": "2024-01-03T05:39:43Z",
    483       "closed_at": null,
    484       "author_association": "NONE",
    485       "active_lock_reason": null,
    486       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    487       "reactions": {
    488         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    489         "total_count": 0,
    490         "+1": 0,
    491         "-1": 0,
    492         "laugh": 0,
    493         "hooray": 0,
    494         "confused": 0,
    495         "heart": 0,
    496         "rocket": 0,
    497         "eyes": 0
    498       },
    499       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    500       "performed_via_github_app": null,
    501       "state_reason": null
    502     },
    503     "comment": {
    504       "user": "eznix86",
    505       "created_at": "2024-01-01T23:45:55Z",
    506       "updated_at": "2024-01-01T23:46:11Z",
    507       "body": "While reading the code, I saw that. But Valgrind spits the memory leaks as it sees it happening during the execution. Even if memory is freed at the end using `ndb_destroy`. _Maybe_ a proper fix would be to free the memory right after it is no longer needed. What do you think ?\r\n\r\nAlso, it is negligible. 280 Bytes ¯\\_(ツ)_/¯ "
    508     }
    509   },
    510   {
    511     "issue": {
    512       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    513       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    514       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    515       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    516       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    517       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    518       "id": 2061809289,
    519       "node_id": "I_kwDOJ9k5Is565LaJ",
    520       "number": 24,
    521       "title": "Valgrind reports a memory leak.",
    522       "user": {
    523         "login": "eznix86",
    524         "id": 26553194,
    525         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    526         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    527         "gravatar_id": "",
    528         "url": "https://api.github.com/users/eznix86",
    529         "html_url": "https://github.com/eznix86",
    530         "followers_url": "https://api.github.com/users/eznix86/followers",
    531         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    532         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    533         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    534         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    535         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    536         "repos_url": "https://api.github.com/users/eznix86/repos",
    537         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    538         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    539         "type": "User",
    540         "site_admin": false
    541       },
    542       "labels": [],
    543       "state": "open",
    544       "locked": false,
    545       "assignee": null,
    546       "assignees": [],
    547       "milestone": null,
    548       "comments": 6,
    549       "created_at": "2024-01-01T22:39:33Z",
    550       "updated_at": "2024-01-03T05:39:43Z",
    551       "closed_at": null,
    552       "author_association": "NONE",
    553       "active_lock_reason": null,
    554       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    555       "reactions": {
    556         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    557         "total_count": 0,
    558         "+1": 0,
    559         "-1": 0,
    560         "laugh": 0,
    561         "hooray": 0,
    562         "confused": 0,
    563         "heart": 0,
    564         "rocket": 0,
    565         "eyes": 0
    566       },
    567       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    568       "performed_via_github_app": null,
    569       "state_reason": null
    570     },
    571     "comment": {
    572       "user": "jb55",
    573       "created_at": "2024-01-01T23:58:06Z",
    574       "updated_at": "2024-01-01T23:58:06Z",
    575       "body": "On Mon, Jan 01, 2024 at 03:46:06PM -0800, Bruno Bernard wrote:\n>While reading the code, I saw that. But Valgrind spits the memory leaks\n>as it sees it happening during the execution. Even if memory is freed\n>at the end using `ndb_destroy`. _Maybe_ a proper fix would be to free\n>the memory right after it is no longer needed. What do you think\n>instead of waiting at the end.\n\nThat wouldn't make any sense. Everything is needed in ndb until the\ndatabase is closed.\n"
    576     }
    577   },
    578   {
    579     "issue": {
    580       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    581       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    582       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    583       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    584       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    585       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    586       "id": 2061809289,
    587       "node_id": "I_kwDOJ9k5Is565LaJ",
    588       "number": 24,
    589       "title": "Valgrind reports a memory leak.",
    590       "user": {
    591         "login": "eznix86",
    592         "id": 26553194,
    593         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    594         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    595         "gravatar_id": "",
    596         "url": "https://api.github.com/users/eznix86",
    597         "html_url": "https://github.com/eznix86",
    598         "followers_url": "https://api.github.com/users/eznix86/followers",
    599         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    600         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    601         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    602         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    603         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    604         "repos_url": "https://api.github.com/users/eznix86/repos",
    605         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    606         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    607         "type": "User",
    608         "site_admin": false
    609       },
    610       "labels": [],
    611       "state": "open",
    612       "locked": false,
    613       "assignee": null,
    614       "assignees": [],
    615       "milestone": null,
    616       "comments": 6,
    617       "created_at": "2024-01-01T22:39:33Z",
    618       "updated_at": "2024-01-03T05:39:43Z",
    619       "closed_at": null,
    620       "author_association": "NONE",
    621       "active_lock_reason": null,
    622       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    623       "reactions": {
    624         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    625         "total_count": 0,
    626         "+1": 0,
    627         "-1": 0,
    628         "laugh": 0,
    629         "hooray": 0,
    630         "confused": 0,
    631         "heart": 0,
    632         "rocket": 0,
    633         "eyes": 0
    634       },
    635       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    636       "performed_via_github_app": null,
    637       "state_reason": null
    638     },
    639     "comment": {
    640       "user": "eznix86",
    641       "created_at": "2024-01-02T11:34:29Z",
    642       "updated_at": "2024-01-02T11:34:29Z",
    643       "body": "I agree, but I think it's something related with the calloc. Rather than the ndb itself. I can close the issue. But it would be nice to have some kind of memory leak checker in the CI. What do you think ?"
    644     }
    645   },
    646   {
    647     "issue": {
    648       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    649       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    650       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    651       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    652       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    653       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    654       "id": 2061809289,
    655       "node_id": "I_kwDOJ9k5Is565LaJ",
    656       "number": 24,
    657       "title": "Valgrind reports a memory leak.",
    658       "user": {
    659         "login": "eznix86",
    660         "id": 26553194,
    661         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    662         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    663         "gravatar_id": "",
    664         "url": "https://api.github.com/users/eznix86",
    665         "html_url": "https://github.com/eznix86",
    666         "followers_url": "https://api.github.com/users/eznix86/followers",
    667         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    668         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    669         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    670         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    671         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    672         "repos_url": "https://api.github.com/users/eznix86/repos",
    673         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    674         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    675         "type": "User",
    676         "site_admin": false
    677       },
    678       "labels": [],
    679       "state": "open",
    680       "locked": false,
    681       "assignee": null,
    682       "assignees": [],
    683       "milestone": null,
    684       "comments": 6,
    685       "created_at": "2024-01-01T22:39:33Z",
    686       "updated_at": "2024-01-03T05:39:43Z",
    687       "closed_at": null,
    688       "author_association": "NONE",
    689       "active_lock_reason": null,
    690       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    691       "reactions": {
    692         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    693         "total_count": 0,
    694         "+1": 0,
    695         "-1": 0,
    696         "laugh": 0,
    697         "hooray": 0,
    698         "confused": 0,
    699         "heart": 0,
    700         "rocket": 0,
    701         "eyes": 0
    702       },
    703       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    704       "performed_via_github_app": null,
    705       "state_reason": null
    706     },
    707     "comment": {
    708       "user": "jb55",
    709       "created_at": "2024-01-02T15:16:12Z",
    710       "updated_at": "2024-01-02T15:16:12Z",
    711       "body": "On Tue, Jan 02, 2024 at 03:34:40AM -0800, Bruno Bernard wrote:\n>I agree, but I think it's something related with the calloc. Rather\n>than the ndb itself. I can close the issue. But it would be nice to\n>have some kind of memory leak checker in the CI. What do you think ?\n\nyeah for sure, ideally without these false positives.\n"
    712     }
    713   },
    714   {
    715     "issue": {
    716       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24",
    717       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    718       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/labels{/name}",
    719       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/comments",
    720       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/events",
    721       "html_url": "https://github.com/damus-io/nostrdb/issues/24",
    722       "id": 2061809289,
    723       "node_id": "I_kwDOJ9k5Is565LaJ",
    724       "number": 24,
    725       "title": "Valgrind reports a memory leak.",
    726       "user": {
    727         "login": "eznix86",
    728         "id": 26553194,
    729         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    730         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    731         "gravatar_id": "",
    732         "url": "https://api.github.com/users/eznix86",
    733         "html_url": "https://github.com/eznix86",
    734         "followers_url": "https://api.github.com/users/eznix86/followers",
    735         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    736         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    737         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    738         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    739         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    740         "repos_url": "https://api.github.com/users/eznix86/repos",
    741         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    742         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    743         "type": "User",
    744         "site_admin": false
    745       },
    746       "labels": [],
    747       "state": "open",
    748       "locked": false,
    749       "assignee": null,
    750       "assignees": [],
    751       "milestone": null,
    752       "comments": 6,
    753       "created_at": "2024-01-01T22:39:33Z",
    754       "updated_at": "2024-01-03T05:39:43Z",
    755       "closed_at": null,
    756       "author_association": "NONE",
    757       "active_lock_reason": null,
    758       "body": "here is the full report:\r\n```\r\nvalgrind  --leak-check=full  ./ndb search --limit 2 --oldest-first 'nosy ostrich'\r\n==90548== Memcheck, a memory error detector\r\n==90548== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.\r\n==90548== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info\r\n==90548== Command: ./ndb search --limit 2 --oldest-first nosy\\ ostrich\r\n==90548== \r\nusing db '.'\r\nmdb_env_open failed, error 22\r\n==90548== \r\n==90548== HEAP SUMMARY:\r\n==90548==     in use at exit: 528 bytes in 2 blocks\r\n==90548==   total heap usage: 9 allocs, 7 frees, 3,146,979 bytes allocated\r\n==90548== \r\n==90548== 528 (280 direct, 248 indirect) bytes in 1 blocks are definitely lost in loss record 2 of 2\r\n==90548==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)\r\n==90548==    by 0x11635B: ndb_init (nostrdb.c:3222)\r\n==90548==    by 0x10E557: main (ndb.c:133)\r\n==90548== \r\n==90548== LEAK SUMMARY:\r\n==90548==    definitely lost: 280 bytes in 1 blocks\r\n==90548==    indirectly lost: 248 bytes in 1 blocks\r\n==90548==      possibly lost: 0 bytes in 0 blocks\r\n==90548==    still reachable: 0 bytes in 0 blocks\r\n==90548==         suppressed: 0 bytes in 0 blocks\r\n==90548== \r\n==90548== For lists of detected and suppressed errors, rerun with: -s\r\n==90548== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)\r\n```\r\n\r\nThe memory leak is negligible but it would be nice to add some kind of report in case of memory leak in the CI.",
    759       "reactions": {
    760         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/reactions",
    761         "total_count": 0,
    762         "+1": 0,
    763         "-1": 0,
    764         "laugh": 0,
    765         "hooray": 0,
    766         "confused": 0,
    767         "heart": 0,
    768         "rocket": 0,
    769         "eyes": 0
    770       },
    771       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/24/timeline",
    772       "performed_via_github_app": null,
    773       "state_reason": null
    774     },
    775     "comment": {
    776       "user": "eznix86",
    777       "created_at": "2024-01-03T05:39:42Z",
    778       "updated_at": "2024-01-03T05:39:42Z",
    779       "body": "Valgrind has some suppression features. I will push it for the CI, when I have some time"
    780     }
    781   },
    782   {
    783     "issue": {
    784       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23",
    785       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    786       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/labels{/name}",
    787       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/comments",
    788       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/events",
    789       "html_url": "https://github.com/damus-io/nostrdb/pull/23",
    790       "id": 2061779863,
    791       "node_id": "PR_kwDOJ9k5Is5jBQNc",
    792       "number": 23,
    793       "title": "Add required dependencies to README",
    794       "user": {
    795         "login": "eznix86",
    796         "id": 26553194,
    797         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    798         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    799         "gravatar_id": "",
    800         "url": "https://api.github.com/users/eznix86",
    801         "html_url": "https://github.com/eznix86",
    802         "followers_url": "https://api.github.com/users/eznix86/followers",
    803         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    804         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    805         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    806         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    807         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    808         "repos_url": "https://api.github.com/users/eznix86/repos",
    809         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    810         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    811         "type": "User",
    812         "site_admin": false
    813       },
    814       "labels": [],
    815       "state": "open",
    816       "locked": false,
    817       "assignee": null,
    818       "assignees": [],
    819       "milestone": null,
    820       "comments": 1,
    821       "created_at": "2024-01-01T21:23:23Z",
    822       "updated_at": "2024-01-03T11:20:58Z",
    823       "closed_at": null,
    824       "author_association": "FIRST_TIME_CONTRIBUTOR",
    825       "active_lock_reason": null,
    826       "draft": false,
    827       "pull_request": {
    828         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/23",
    829         "html_url": "https://github.com/damus-io/nostrdb/pull/23",
    830         "diff_url": "https://github.com/damus-io/nostrdb/pull/23.diff",
    831         "patch_url": "https://github.com/damus-io/nostrdb/pull/23.patch",
    832         "merged_at": null
    833       },
    834       "body": "fixes #22 \r\n\r\n~3 _required_ dependencies are missing to be able to install the project properly.~\r\n\r\nAs for Mac OS (In my case Sonoma), I have to write `byteswap.h` to `/usr/local/include/`\r\n\r\n```c\r\n#if defined(__APPLE__)\r\n// Mac OS X / Darwin features\r\n#include <libkern/OSByteOrder.h>\r\n#define bswap_16(x) OSSwapInt16(x)\r\n#define bswap_32(x) OSSwapInt32(x)\r\n#define bswap_64(x) OSSwapInt64(x)\r\n#endif\r\n```\r\n\r\nedit: 2 _required_ dependencies are needed to be able to install the project properly.",
    835       "reactions": {
    836         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/reactions",
    837         "total_count": 0,
    838         "+1": 0,
    839         "-1": 0,
    840         "laugh": 0,
    841         "hooray": 0,
    842         "confused": 0,
    843         "heart": 0,
    844         "rocket": 0,
    845         "eyes": 0
    846       },
    847       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/timeline",
    848       "performed_via_github_app": null,
    849       "state_reason": null
    850     }
    851   },
    852   {
    853     "issue": {
    854       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23",
    855       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    856       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/labels{/name}",
    857       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/comments",
    858       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/events",
    859       "html_url": "https://github.com/damus-io/nostrdb/pull/23",
    860       "id": 2061779863,
    861       "node_id": "PR_kwDOJ9k5Is5jBQNc",
    862       "number": 23,
    863       "title": "Add required dependencies to README",
    864       "user": {
    865         "login": "eznix86",
    866         "id": 26553194,
    867         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    868         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    869         "gravatar_id": "",
    870         "url": "https://api.github.com/users/eznix86",
    871         "html_url": "https://github.com/eznix86",
    872         "followers_url": "https://api.github.com/users/eznix86/followers",
    873         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    874         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    875         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    876         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    877         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    878         "repos_url": "https://api.github.com/users/eznix86/repos",
    879         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    880         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    881         "type": "User",
    882         "site_admin": false
    883       },
    884       "labels": [],
    885       "state": "open",
    886       "locked": false,
    887       "assignee": null,
    888       "assignees": [],
    889       "milestone": null,
    890       "comments": 1,
    891       "created_at": "2024-01-01T21:23:23Z",
    892       "updated_at": "2024-01-03T11:20:58Z",
    893       "closed_at": null,
    894       "author_association": "FIRST_TIME_CONTRIBUTOR",
    895       "active_lock_reason": null,
    896       "draft": false,
    897       "pull_request": {
    898         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/23",
    899         "html_url": "https://github.com/damus-io/nostrdb/pull/23",
    900         "diff_url": "https://github.com/damus-io/nostrdb/pull/23.diff",
    901         "patch_url": "https://github.com/damus-io/nostrdb/pull/23.patch",
    902         "merged_at": null
    903       },
    904       "body": "fixes #22 \r\n\r\n~3 _required_ dependencies are missing to be able to install the project properly.~\r\n\r\nAs for Mac OS (In my case Sonoma), I have to write `byteswap.h` to `/usr/local/include/`\r\n\r\n```c\r\n#if defined(__APPLE__)\r\n// Mac OS X / Darwin features\r\n#include <libkern/OSByteOrder.h>\r\n#define bswap_16(x) OSSwapInt16(x)\r\n#define bswap_32(x) OSSwapInt32(x)\r\n#define bswap_64(x) OSSwapInt64(x)\r\n#endif\r\n```\r\n\r\nedit: 2 _required_ dependencies are needed to be able to install the project properly.",
    905       "reactions": {
    906         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/reactions",
    907         "total_count": 0,
    908         "+1": 0,
    909         "-1": 0,
    910         "laugh": 0,
    911         "hooray": 0,
    912         "confused": 0,
    913         "heart": 0,
    914         "rocket": 0,
    915         "eyes": 0
    916       },
    917       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/23/timeline",
    918       "performed_via_github_app": null,
    919       "state_reason": null
    920     },
    921     "comment": {
    922       "user": "eznix86",
    923       "created_at": "2024-01-02T11:36:20Z",
    924       "updated_at": "2024-01-02T11:36:20Z",
    925       "body": "@jb55 curl removed"
    926     }
    927   },
    928   {
    929     "issue": {
    930       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22",
    931       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
    932       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}",
    933       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments",
    934       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events",
    935       "html_url": "https://github.com/damus-io/nostrdb/pull/22",
    936       "id": 2061761832,
    937       "node_id": "PR_kwDOJ9k5Is5jBMZz",
    938       "number": 22,
    939       "title": "Specify build environment in readme",
    940       "user": {
    941         "login": "eznix86",
    942         "id": 26553194,
    943         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
    944         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
    945         "gravatar_id": "",
    946         "url": "https://api.github.com/users/eznix86",
    947         "html_url": "https://github.com/eznix86",
    948         "followers_url": "https://api.github.com/users/eznix86/followers",
    949         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
    950         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
    951         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
    952         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
    953         "organizations_url": "https://api.github.com/users/eznix86/orgs",
    954         "repos_url": "https://api.github.com/users/eznix86/repos",
    955         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
    956         "received_events_url": "https://api.github.com/users/eznix86/received_events",
    957         "type": "User",
    958         "site_admin": false
    959       },
    960       "labels": [],
    961       "state": "closed",
    962       "locked": false,
    963       "assignee": null,
    964       "assignees": [],
    965       "milestone": null,
    966       "comments": 3,
    967       "created_at": "2024-01-01T20:37:11Z",
    968       "updated_at": "2024-01-06T19:53:32Z",
    969       "closed_at": "2024-01-01T21:23:44Z",
    970       "author_association": "FIRST_TIME_CONTRIBUTOR",
    971       "active_lock_reason": null,
    972       "draft": false,
    973       "pull_request": {
    974         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22",
    975         "html_url": "https://github.com/damus-io/nostrdb/pull/22",
    976         "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff",
    977         "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch",
    978         "merged_at": null
    979       },
    980       "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment",
    981       "reactions": {
    982         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions",
    983         "total_count": 0,
    984         "+1": 0,
    985         "-1": 0,
    986         "laugh": 0,
    987         "hooray": 0,
    988         "confused": 0,
    989         "heart": 0,
    990         "rocket": 0,
    991         "eyes": 0
    992       },
    993       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline",
    994       "performed_via_github_app": null,
    995       "state_reason": null
    996     }
    997   },
    998   {
    999     "issue": {
   1000       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22",
   1001       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1002       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}",
   1003       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments",
   1004       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events",
   1005       "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1006       "id": 2061761832,
   1007       "node_id": "PR_kwDOJ9k5Is5jBMZz",
   1008       "number": 22,
   1009       "title": "Specify build environment in readme",
   1010       "user": {
   1011         "login": "eznix86",
   1012         "id": 26553194,
   1013         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
   1014         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
   1015         "gravatar_id": "",
   1016         "url": "https://api.github.com/users/eznix86",
   1017         "html_url": "https://github.com/eznix86",
   1018         "followers_url": "https://api.github.com/users/eznix86/followers",
   1019         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
   1020         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
   1021         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
   1022         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
   1023         "organizations_url": "https://api.github.com/users/eznix86/orgs",
   1024         "repos_url": "https://api.github.com/users/eznix86/repos",
   1025         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
   1026         "received_events_url": "https://api.github.com/users/eznix86/received_events",
   1027         "type": "User",
   1028         "site_admin": false
   1029       },
   1030       "labels": [],
   1031       "state": "closed",
   1032       "locked": false,
   1033       "assignee": null,
   1034       "assignees": [],
   1035       "milestone": null,
   1036       "comments": 3,
   1037       "created_at": "2024-01-01T20:37:11Z",
   1038       "updated_at": "2024-01-06T19:53:32Z",
   1039       "closed_at": "2024-01-01T21:23:44Z",
   1040       "author_association": "FIRST_TIME_CONTRIBUTOR",
   1041       "active_lock_reason": null,
   1042       "draft": false,
   1043       "pull_request": {
   1044         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22",
   1045         "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1046         "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff",
   1047         "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch",
   1048         "merged_at": null
   1049       },
   1050       "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment",
   1051       "reactions": {
   1052         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions",
   1053         "total_count": 0,
   1054         "+1": 0,
   1055         "-1": 0,
   1056         "laugh": 0,
   1057         "hooray": 0,
   1058         "confused": 0,
   1059         "heart": 0,
   1060         "rocket": 0,
   1061         "eyes": 0
   1062       },
   1063       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline",
   1064       "performed_via_github_app": null,
   1065       "state_reason": null
   1066     },
   1067     "comment": {
   1068       "user": "jb55",
   1069       "created_at": "2024-01-01T20:55:29Z",
   1070       "updated_at": "2024-01-01T20:55:29Z",
   1071       "body": "It builds fine on macos for me?\n\n"
   1072     }
   1073   },
   1074   {
   1075     "issue": {
   1076       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22",
   1077       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1078       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}",
   1079       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments",
   1080       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events",
   1081       "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1082       "id": 2061761832,
   1083       "node_id": "PR_kwDOJ9k5Is5jBMZz",
   1084       "number": 22,
   1085       "title": "Specify build environment in readme",
   1086       "user": {
   1087         "login": "eznix86",
   1088         "id": 26553194,
   1089         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
   1090         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
   1091         "gravatar_id": "",
   1092         "url": "https://api.github.com/users/eznix86",
   1093         "html_url": "https://github.com/eznix86",
   1094         "followers_url": "https://api.github.com/users/eznix86/followers",
   1095         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
   1096         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
   1097         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
   1098         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
   1099         "organizations_url": "https://api.github.com/users/eznix86/orgs",
   1100         "repos_url": "https://api.github.com/users/eznix86/repos",
   1101         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
   1102         "received_events_url": "https://api.github.com/users/eznix86/received_events",
   1103         "type": "User",
   1104         "site_admin": false
   1105       },
   1106       "labels": [],
   1107       "state": "closed",
   1108       "locked": false,
   1109       "assignee": null,
   1110       "assignees": [],
   1111       "milestone": null,
   1112       "comments": 3,
   1113       "created_at": "2024-01-01T20:37:11Z",
   1114       "updated_at": "2024-01-06T19:53:32Z",
   1115       "closed_at": "2024-01-01T21:23:44Z",
   1116       "author_association": "FIRST_TIME_CONTRIBUTOR",
   1117       "active_lock_reason": null,
   1118       "draft": false,
   1119       "pull_request": {
   1120         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22",
   1121         "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1122         "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff",
   1123         "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch",
   1124         "merged_at": null
   1125       },
   1126       "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment",
   1127       "reactions": {
   1128         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions",
   1129         "total_count": 0,
   1130         "+1": 0,
   1131         "-1": 0,
   1132         "laugh": 0,
   1133         "hooray": 0,
   1134         "confused": 0,
   1135         "heart": 0,
   1136         "rocket": 0,
   1137         "eyes": 0
   1138       },
   1139       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline",
   1140       "performed_via_github_app": null,
   1141       "state_reason": null
   1142     },
   1143     "comment": {
   1144       "user": "eznix86",
   1145       "created_at": "2024-01-01T20:59:33Z",
   1146       "updated_at": "2024-01-01T20:59:33Z",
   1147       "body": "So, some dependencies are missing. \r\n\r\nFirst issue I had is: byteswap.h missing. I had to copy paste it from a website."
   1148     }
   1149   },
   1150   {
   1151     "issue": {
   1152       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22",
   1153       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1154       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/labels{/name}",
   1155       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/comments",
   1156       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/events",
   1157       "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1158       "id": 2061761832,
   1159       "node_id": "PR_kwDOJ9k5Is5jBMZz",
   1160       "number": 22,
   1161       "title": "Specify build environment in readme",
   1162       "user": {
   1163         "login": "eznix86",
   1164         "id": 26553194,
   1165         "node_id": "MDQ6VXNlcjI2NTUzMTk0",
   1166         "avatar_url": "https://avatars.githubusercontent.com/u/26553194?v=4",
   1167         "gravatar_id": "",
   1168         "url": "https://api.github.com/users/eznix86",
   1169         "html_url": "https://github.com/eznix86",
   1170         "followers_url": "https://api.github.com/users/eznix86/followers",
   1171         "following_url": "https://api.github.com/users/eznix86/following{/other_user}",
   1172         "gists_url": "https://api.github.com/users/eznix86/gists{/gist_id}",
   1173         "starred_url": "https://api.github.com/users/eznix86/starred{/owner}{/repo}",
   1174         "subscriptions_url": "https://api.github.com/users/eznix86/subscriptions",
   1175         "organizations_url": "https://api.github.com/users/eznix86/orgs",
   1176         "repos_url": "https://api.github.com/users/eznix86/repos",
   1177         "events_url": "https://api.github.com/users/eznix86/events{/privacy}",
   1178         "received_events_url": "https://api.github.com/users/eznix86/received_events",
   1179         "type": "User",
   1180         "site_admin": false
   1181       },
   1182       "labels": [],
   1183       "state": "closed",
   1184       "locked": false,
   1185       "assignee": null,
   1186       "assignees": [],
   1187       "milestone": null,
   1188       "comments": 3,
   1189       "created_at": "2024-01-01T20:37:11Z",
   1190       "updated_at": "2024-01-06T19:53:32Z",
   1191       "closed_at": "2024-01-01T21:23:44Z",
   1192       "author_association": "FIRST_TIME_CONTRIBUTOR",
   1193       "active_lock_reason": null,
   1194       "draft": false,
   1195       "pull_request": {
   1196         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/22",
   1197         "html_url": "https://github.com/damus-io/nostrdb/pull/22",
   1198         "diff_url": "https://github.com/damus-io/nostrdb/pull/22.diff",
   1199         "patch_url": "https://github.com/damus-io/nostrdb/pull/22.patch",
   1200         "merged_at": null
   1201       },
   1202       "body": "Just tried on OSX, it fails, because of some dependencies are missing, so it's good to specify the environment",
   1203       "reactions": {
   1204         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/reactions",
   1205         "total_count": 0,
   1206         "+1": 0,
   1207         "-1": 0,
   1208         "laugh": 0,
   1209         "hooray": 0,
   1210         "confused": 0,
   1211         "heart": 0,
   1212         "rocket": 0,
   1213         "eyes": 0
   1214       },
   1215       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/22/timeline",
   1216       "performed_via_github_app": null,
   1217       "state_reason": null
   1218     },
   1219     "comment": {
   1220       "user": "jb55",
   1221       "created_at": "2024-01-06T19:53:31Z",
   1222       "updated_at": "2024-01-06T19:53:31Z",
   1223       "body": "On Mon, Jan 01, 2024 at 12:59:43PM -0800, Bruno Bernard wrote:\n>So, some dependencies are missing.\n>\n>First issue I had is: byteswap.h missing. I had to copy paste it from a website.\n\nThis is fixed in e3cc896e25f68778401e5a87cb251290da2b062d\n"
   1224     }
   1225   },
   1226   {
   1227     "issue": {
   1228       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1229       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1230       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1231       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1232       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1233       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1234       "id": 2022550514,
   1235       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1236       "number": 21,
   1237       "title": "add \"import -\"",
   1238       "user": {
   1239         "login": "mattn",
   1240         "id": 10111,
   1241         "node_id": "MDQ6VXNlcjEwMTEx",
   1242         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1243         "gravatar_id": "",
   1244         "url": "https://api.github.com/users/mattn",
   1245         "html_url": "https://github.com/mattn",
   1246         "followers_url": "https://api.github.com/users/mattn/followers",
   1247         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1248         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1249         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1250         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1251         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1252         "repos_url": "https://api.github.com/users/mattn/repos",
   1253         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1254         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1255         "type": "User",
   1256         "site_admin": false
   1257       },
   1258       "labels": [],
   1259       "state": "closed",
   1260       "locked": false,
   1261       "assignee": null,
   1262       "assignees": [],
   1263       "milestone": null,
   1264       "comments": 5,
   1265       "created_at": "2023-12-03T14:39:05Z",
   1266       "updated_at": "2023-12-13T19:58:02Z",
   1267       "closed_at": "2023-12-13T19:58:02Z",
   1268       "author_association": "CONTRIBUTOR",
   1269       "active_lock_reason": null,
   1270       "draft": false,
   1271       "pull_request": {
   1272         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1273         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1274         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1275         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1276         "merged_at": null
   1277       },
   1278       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1279       "reactions": {
   1280         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1281         "total_count": 0,
   1282         "+1": 0,
   1283         "-1": 0,
   1284         "laugh": 0,
   1285         "hooray": 0,
   1286         "confused": 0,
   1287         "heart": 0,
   1288         "rocket": 0,
   1289         "eyes": 0
   1290       },
   1291       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1292       "performed_via_github_app": null,
   1293       "state_reason": null
   1294     }
   1295   },
   1296   {
   1297     "issue": {
   1298       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1299       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1300       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1301       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1302       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1303       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1304       "id": 2022550514,
   1305       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1306       "number": 21,
   1307       "title": "add \"import -\"",
   1308       "user": {
   1309         "login": "mattn",
   1310         "id": 10111,
   1311         "node_id": "MDQ6VXNlcjEwMTEx",
   1312         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1313         "gravatar_id": "",
   1314         "url": "https://api.github.com/users/mattn",
   1315         "html_url": "https://github.com/mattn",
   1316         "followers_url": "https://api.github.com/users/mattn/followers",
   1317         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1318         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1319         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1320         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1321         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1322         "repos_url": "https://api.github.com/users/mattn/repos",
   1323         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1324         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1325         "type": "User",
   1326         "site_admin": false
   1327       },
   1328       "labels": [],
   1329       "state": "closed",
   1330       "locked": false,
   1331       "assignee": null,
   1332       "assignees": [],
   1333       "milestone": null,
   1334       "comments": 5,
   1335       "created_at": "2023-12-03T14:39:05Z",
   1336       "updated_at": "2023-12-13T19:58:02Z",
   1337       "closed_at": "2023-12-13T19:58:02Z",
   1338       "author_association": "CONTRIBUTOR",
   1339       "active_lock_reason": null,
   1340       "draft": false,
   1341       "pull_request": {
   1342         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1343         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1344         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1345         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1346         "merged_at": null
   1347       },
   1348       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1349       "reactions": {
   1350         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1351         "total_count": 0,
   1352         "+1": 0,
   1353         "-1": 0,
   1354         "laugh": 0,
   1355         "hooray": 0,
   1356         "confused": 0,
   1357         "heart": 0,
   1358         "rocket": 0,
   1359         "eyes": 0
   1360       },
   1361       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1362       "performed_via_github_app": null,
   1363       "state_reason": null
   1364     },
   1365     "comment": {
   1366       "user": "jb55",
   1367       "created_at": "2023-12-04T18:32:44Z",
   1368       "updated_at": "2023-12-04T18:32:44Z",
   1369       "body": "On Sun, Dec 03, 2023 at 11:33:57PM +0900, Yasuhiro Matsumoto wrote:\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3410,6 +3410,72 @@ int _ndb_process_events(struct ndb *ndb, const char *ldjson, size_t json_len, in\n> \treturn 1;\n> }\n>\n>+static char *read_line(FILE *fp)\n>+{\n>+\tchar    *line = NULL;\n>+\tsize_t  maxlen = 0;\n>+\n>+\tfor(;;)\n>+\t{\n>+\t\tchar *sep, *block;\n>+\n>+\t\tmaxlen += BUFSIZ;\n>+\t\tline = realloc(line, maxlen + 1);\n>+\t\tif (line == NULL)\n>+\t\t\tbreak;\n>+\t\tblock = line + maxlen - BUFSIZ;\n>+\t\tif (fgets(block, BUFSIZ + 1, fp) == NULL)\n>+\t\t{\n>+\t\t\tif (block == line)\n>+\t\t\t{\n>+\t\t\t\tfree(line);\n>+\t\t\t\tline = NULL;\n>+\t\t\t}\n>+\t\t\tbreak;\n>+\t\t}\n>+\t\tsep = strchr(block, '\\n');\n>+\t\tif (sep != NULL)\n>+\t\t{\n>+\t\t\t*sep = 0x0;\n>+\t\t\tif (sep != block)\n>+\t\t\t{\n>+\t\t\t\tif ('\\r' == *(--sep))\n>+\t\t\t\t\t*sep = 0x0;\n>+\t\t\t}\n>+\t\t\tbreak;\n>+\t\t}\n>+\t}\n>+\treturn line;\n>+}\n>+\n>+int ndb_process_events_stream(struct ndb *ndb, FILE* fp)\n>+{\n>+#if DEBUG\n>+\tint processed = 0;\n>+#endif\n>+\n>+\twhile (!feof(fp)) {\n>+\t\tchar *line = read_line(fp);\n>+\t\tif (line == NULL)\n>+\t\t\tbreak;\n>+\t\tif (!ndb_process_event(ndb, line, strlen(line))) {\n>+\t\t\tndb_debug(\"ndb_process_event failed\\n\");\n>+\t\t\tfree(line);\n>+\t\t\treturn 0;\n>+\t\t}\n>+\t\tfree(line);\n>+#if DEBUG\n>+\t\tprocessed++;\n>+#endif\n>+\t}\n>+\n>+#if DEBUG\n>+\tndb_debug(\"ndb_process_events: processed %d events\\n\", processed);\n>+#endif\n>+\n>+\treturn 1;\n>+}\n\nWhy not just use \"getline\"?\n\nint ndb_process_events_stream(struct ndb *ndb, FILE* fp) {\n\tchar *line = NULL;\n\tsize_t len = 0;\n\tssize_t nread;\n\n\twhile ((nread = getline(&line, &len, stdin)) != -1) {\n\t\tif (line == NULL)\n\t\t\tbreak;\n\t\tndb_process_event(ndb, line, strlen(line));\n\t}\n\n\tif (line)\n\t\tfree(line);\n}\n"
   1370     }
   1371   },
   1372   {
   1373     "issue": {
   1374       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1375       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1376       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1377       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1378       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1379       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1380       "id": 2022550514,
   1381       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1382       "number": 21,
   1383       "title": "add \"import -\"",
   1384       "user": {
   1385         "login": "mattn",
   1386         "id": 10111,
   1387         "node_id": "MDQ6VXNlcjEwMTEx",
   1388         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1389         "gravatar_id": "",
   1390         "url": "https://api.github.com/users/mattn",
   1391         "html_url": "https://github.com/mattn",
   1392         "followers_url": "https://api.github.com/users/mattn/followers",
   1393         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1394         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1395         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1396         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1397         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1398         "repos_url": "https://api.github.com/users/mattn/repos",
   1399         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1400         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1401         "type": "User",
   1402         "site_admin": false
   1403       },
   1404       "labels": [],
   1405       "state": "closed",
   1406       "locked": false,
   1407       "assignee": null,
   1408       "assignees": [],
   1409       "milestone": null,
   1410       "comments": 5,
   1411       "created_at": "2023-12-03T14:39:05Z",
   1412       "updated_at": "2023-12-13T19:58:02Z",
   1413       "closed_at": "2023-12-13T19:58:02Z",
   1414       "author_association": "CONTRIBUTOR",
   1415       "active_lock_reason": null,
   1416       "draft": false,
   1417       "pull_request": {
   1418         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1419         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1420         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1421         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1422         "merged_at": null
   1423       },
   1424       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1425       "reactions": {
   1426         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1427         "total_count": 0,
   1428         "+1": 0,
   1429         "-1": 0,
   1430         "laugh": 0,
   1431         "hooray": 0,
   1432         "confused": 0,
   1433         "heart": 0,
   1434         "rocket": 0,
   1435         "eyes": 0
   1436       },
   1437       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1438       "performed_via_github_app": null,
   1439       "state_reason": null
   1440     },
   1441     "comment": {
   1442       "user": "jb55",
   1443       "created_at": "2023-12-04T18:33:11Z",
   1444       "updated_at": "2023-12-04T18:33:11Z",
   1445       "body": "On Sun, Dec 03, 2023 at 11:38:41PM +0900, Yasuhiro Matsumoto wrote:\n>---\n> nostrdb.c | 2 +-\n> 1 file changed, 1 insertion(+), 1 deletion(-)\n>\n>diff --git a/nostrdb.c b/nostrdb.c\n>index b8db79d..b14ffac 100644\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3470,7 +3470,7 @@ int ndb_process_events_stream(struct ndb *ndb, FILE* fp)\n> \t}\n>\n> #if DEBUG\n>-\tndb_debug(\"ndb_process_events: processed %d events\\n\", processed);\n>+\tndb_debug(\"ndb_process_events_stream: processed %d events\\n\", processed);\n> #endif\n>\n> \treturn 1;\n\nyou can just squash this into the first patch\n"
   1446     }
   1447   },
   1448   {
   1449     "issue": {
   1450       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1451       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1452       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1453       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1454       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1455       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1456       "id": 2022550514,
   1457       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1458       "number": 21,
   1459       "title": "add \"import -\"",
   1460       "user": {
   1461         "login": "mattn",
   1462         "id": 10111,
   1463         "node_id": "MDQ6VXNlcjEwMTEx",
   1464         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1465         "gravatar_id": "",
   1466         "url": "https://api.github.com/users/mattn",
   1467         "html_url": "https://github.com/mattn",
   1468         "followers_url": "https://api.github.com/users/mattn/followers",
   1469         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1470         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1471         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1472         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1473         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1474         "repos_url": "https://api.github.com/users/mattn/repos",
   1475         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1476         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1477         "type": "User",
   1478         "site_admin": false
   1479       },
   1480       "labels": [],
   1481       "state": "closed",
   1482       "locked": false,
   1483       "assignee": null,
   1484       "assignees": [],
   1485       "milestone": null,
   1486       "comments": 5,
   1487       "created_at": "2023-12-03T14:39:05Z",
   1488       "updated_at": "2023-12-13T19:58:02Z",
   1489       "closed_at": "2023-12-13T19:58:02Z",
   1490       "author_association": "CONTRIBUTOR",
   1491       "active_lock_reason": null,
   1492       "draft": false,
   1493       "pull_request": {
   1494         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1495         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1496         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1497         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1498         "merged_at": null
   1499       },
   1500       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1501       "reactions": {
   1502         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1503         "total_count": 0,
   1504         "+1": 0,
   1505         "-1": 0,
   1506         "laugh": 0,
   1507         "hooray": 0,
   1508         "confused": 0,
   1509         "heart": 0,
   1510         "rocket": 0,
   1511         "eyes": 0
   1512       },
   1513       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1514       "performed_via_github_app": null,
   1515       "state_reason": null
   1516     },
   1517     "comment": {
   1518       "user": "mattn",
   1519       "created_at": "2023-12-05T02:11:23Z",
   1520       "updated_at": "2023-12-05T02:11:23Z",
   1521       "body": "sure."
   1522     }
   1523   },
   1524   {
   1525     "issue": {
   1526       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1527       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1528       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1529       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1530       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1531       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1532       "id": 2022550514,
   1533       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1534       "number": 21,
   1535       "title": "add \"import -\"",
   1536       "user": {
   1537         "login": "mattn",
   1538         "id": 10111,
   1539         "node_id": "MDQ6VXNlcjEwMTEx",
   1540         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1541         "gravatar_id": "",
   1542         "url": "https://api.github.com/users/mattn",
   1543         "html_url": "https://github.com/mattn",
   1544         "followers_url": "https://api.github.com/users/mattn/followers",
   1545         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1546         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1547         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1548         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1549         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1550         "repos_url": "https://api.github.com/users/mattn/repos",
   1551         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1552         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1553         "type": "User",
   1554         "site_admin": false
   1555       },
   1556       "labels": [],
   1557       "state": "closed",
   1558       "locked": false,
   1559       "assignee": null,
   1560       "assignees": [],
   1561       "milestone": null,
   1562       "comments": 5,
   1563       "created_at": "2023-12-03T14:39:05Z",
   1564       "updated_at": "2023-12-13T19:58:02Z",
   1565       "closed_at": "2023-12-13T19:58:02Z",
   1566       "author_association": "CONTRIBUTOR",
   1567       "active_lock_reason": null,
   1568       "draft": false,
   1569       "pull_request": {
   1570         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1571         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1572         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1573         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1574         "merged_at": null
   1575       },
   1576       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1577       "reactions": {
   1578         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1579         "total_count": 0,
   1580         "+1": 0,
   1581         "-1": 0,
   1582         "laugh": 0,
   1583         "hooray": 0,
   1584         "confused": 0,
   1585         "heart": 0,
   1586         "rocket": 0,
   1587         "eyes": 0
   1588       },
   1589       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1590       "performed_via_github_app": null,
   1591       "state_reason": null
   1592     },
   1593     "comment": {
   1594       "user": "mattn",
   1595       "created_at": "2023-12-05T02:12:29Z",
   1596       "updated_at": "2023-12-05T02:12:29Z",
   1597       "body": "BTW, Why ndb accept three element items? `[\"EVENT\", \"s\", {...}]` "
   1598     }
   1599   },
   1600   {
   1601     "issue": {
   1602       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21",
   1603       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1604       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/labels{/name}",
   1605       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/comments",
   1606       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/events",
   1607       "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1608       "id": 2022550514,
   1609       "node_id": "PR_kwDOJ9k5Is5g_DE-",
   1610       "number": 21,
   1611       "title": "add \"import -\"",
   1612       "user": {
   1613         "login": "mattn",
   1614         "id": 10111,
   1615         "node_id": "MDQ6VXNlcjEwMTEx",
   1616         "avatar_url": "https://avatars.githubusercontent.com/u/10111?v=4",
   1617         "gravatar_id": "",
   1618         "url": "https://api.github.com/users/mattn",
   1619         "html_url": "https://github.com/mattn",
   1620         "followers_url": "https://api.github.com/users/mattn/followers",
   1621         "following_url": "https://api.github.com/users/mattn/following{/other_user}",
   1622         "gists_url": "https://api.github.com/users/mattn/gists{/gist_id}",
   1623         "starred_url": "https://api.github.com/users/mattn/starred{/owner}{/repo}",
   1624         "subscriptions_url": "https://api.github.com/users/mattn/subscriptions",
   1625         "organizations_url": "https://api.github.com/users/mattn/orgs",
   1626         "repos_url": "https://api.github.com/users/mattn/repos",
   1627         "events_url": "https://api.github.com/users/mattn/events{/privacy}",
   1628         "received_events_url": "https://api.github.com/users/mattn/received_events",
   1629         "type": "User",
   1630         "site_admin": false
   1631       },
   1632       "labels": [],
   1633       "state": "closed",
   1634       "locked": false,
   1635       "assignee": null,
   1636       "assignees": [],
   1637       "milestone": null,
   1638       "comments": 5,
   1639       "created_at": "2023-12-03T14:39:05Z",
   1640       "updated_at": "2023-12-13T19:58:02Z",
   1641       "closed_at": "2023-12-13T19:58:02Z",
   1642       "author_association": "CONTRIBUTOR",
   1643       "active_lock_reason": null,
   1644       "draft": false,
   1645       "pull_request": {
   1646         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/21",
   1647         "html_url": "https://github.com/damus-io/nostrdb/pull/21",
   1648         "diff_url": "https://github.com/damus-io/nostrdb/pull/21.diff",
   1649         "patch_url": "https://github.com/damus-io/nostrdb/pull/21.patch",
   1650         "merged_at": null
   1651       },
   1652       "body": "This is very experimental feature but ndb search should be possible to used while ndb import.",
   1653       "reactions": {
   1654         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/reactions",
   1655         "total_count": 0,
   1656         "+1": 0,
   1657         "-1": 0,
   1658         "laugh": 0,
   1659         "hooray": 0,
   1660         "confused": 0,
   1661         "heart": 0,
   1662         "rocket": 0,
   1663         "eyes": 0
   1664       },
   1665       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/21/timeline",
   1666       "performed_via_github_app": null,
   1667       "state_reason": null
   1668     },
   1669     "comment": {
   1670       "user": "jb55",
   1671       "created_at": "2023-12-05T18:56:09Z",
   1672       "updated_at": "2023-12-05T18:56:09Z",
   1673       "body": "On Mon, Dec 04, 2023 at 06:12:39PM -0800, mattn wrote:\n>BTW, Why ndb accept three element items? `[\"EVENT\", \"s\", {...}]`\n\noriginally nostrdb was designed as a client for consuming events from\nrelays, so this is the format relays returned results to be ingested\ninto nostrdb.\n\nThese days it's a bit of a client/relay hybrid, so we should probably\njust have a bare note import, or at least an ingester that supports\nevents of all kinds:\n\n[\"EVENT\", {}]\n[\"EVENT\", \"subid\", {}]\n{}\n\nIt's something I will improve in the future.\n"
   1674     }
   1675   },
   1676   {
   1677     "issue": {
   1678       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20",
   1679       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1680       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/labels{/name}",
   1681       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/comments",
   1682       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/events",
   1683       "html_url": "https://github.com/damus-io/nostrdb/pull/20",
   1684       "id": 2022502911,
   1685       "node_id": "PR_kwDOJ9k5Is5g-5bf",
   1686       "number": 20,
   1687       "title": "Update",
   1688       "user": {
   1689         "login": "Hakkadaikon",
   1690         "id": 57866935,
   1691         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   1692         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   1693         "gravatar_id": "",
   1694         "url": "https://api.github.com/users/Hakkadaikon",
   1695         "html_url": "https://github.com/Hakkadaikon",
   1696         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   1697         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   1698         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   1699         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   1700         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   1701         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   1702         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   1703         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   1704         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   1705         "type": "User",
   1706         "site_admin": false
   1707       },
   1708       "labels": [],
   1709       "state": "closed",
   1710       "locked": false,
   1711       "assignee": null,
   1712       "assignees": [],
   1713       "milestone": null,
   1714       "comments": 1,
   1715       "created_at": "2023-12-03T12:40:24Z",
   1716       "updated_at": "2023-12-03T12:41:32Z",
   1717       "closed_at": "2023-12-03T12:40:54Z",
   1718       "author_association": "CONTRIBUTOR",
   1719       "active_lock_reason": null,
   1720       "draft": false,
   1721       "pull_request": {
   1722         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/20",
   1723         "html_url": "https://github.com/damus-io/nostrdb/pull/20",
   1724         "diff_url": "https://github.com/damus-io/nostrdb/pull/20.diff",
   1725         "patch_url": "https://github.com/damus-io/nostrdb/pull/20.patch",
   1726         "merged_at": null
   1727       },
   1728       "body": null,
   1729       "reactions": {
   1730         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/reactions",
   1731         "total_count": 0,
   1732         "+1": 0,
   1733         "-1": 0,
   1734         "laugh": 0,
   1735         "hooray": 0,
   1736         "confused": 0,
   1737         "heart": 0,
   1738         "rocket": 0,
   1739         "eyes": 0
   1740       },
   1741       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/timeline",
   1742       "performed_via_github_app": null,
   1743       "state_reason": null
   1744     }
   1745   },
   1746   {
   1747     "issue": {
   1748       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20",
   1749       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1750       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/labels{/name}",
   1751       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/comments",
   1752       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/events",
   1753       "html_url": "https://github.com/damus-io/nostrdb/pull/20",
   1754       "id": 2022502911,
   1755       "node_id": "PR_kwDOJ9k5Is5g-5bf",
   1756       "number": 20,
   1757       "title": "Update",
   1758       "user": {
   1759         "login": "Hakkadaikon",
   1760         "id": 57866935,
   1761         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   1762         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   1763         "gravatar_id": "",
   1764         "url": "https://api.github.com/users/Hakkadaikon",
   1765         "html_url": "https://github.com/Hakkadaikon",
   1766         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   1767         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   1768         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   1769         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   1770         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   1771         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   1772         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   1773         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   1774         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   1775         "type": "User",
   1776         "site_admin": false
   1777       },
   1778       "labels": [],
   1779       "state": "closed",
   1780       "locked": false,
   1781       "assignee": null,
   1782       "assignees": [],
   1783       "milestone": null,
   1784       "comments": 1,
   1785       "created_at": "2023-12-03T12:40:24Z",
   1786       "updated_at": "2023-12-03T12:41:32Z",
   1787       "closed_at": "2023-12-03T12:40:54Z",
   1788       "author_association": "CONTRIBUTOR",
   1789       "active_lock_reason": null,
   1790       "draft": false,
   1791       "pull_request": {
   1792         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/20",
   1793         "html_url": "https://github.com/damus-io/nostrdb/pull/20",
   1794         "diff_url": "https://github.com/damus-io/nostrdb/pull/20.diff",
   1795         "patch_url": "https://github.com/damus-io/nostrdb/pull/20.patch",
   1796         "merged_at": null
   1797       },
   1798       "body": null,
   1799       "reactions": {
   1800         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/reactions",
   1801         "total_count": 0,
   1802         "+1": 0,
   1803         "-1": 0,
   1804         "laugh": 0,
   1805         "hooray": 0,
   1806         "confused": 0,
   1807         "heart": 0,
   1808         "rocket": 0,
   1809         "eyes": 0
   1810       },
   1811       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/20/timeline",
   1812       "performed_via_github_app": null,
   1813       "state_reason": null
   1814     },
   1815     "comment": {
   1816       "user": "Hakkadaikon",
   1817       "created_at": "2023-12-03T12:41:31Z",
   1818       "updated_at": "2023-12-03T12:41:31Z",
   1819       "body": "Sorry, it's a mistake."
   1820     }
   1821   },
   1822   {
   1823     "issue": {
   1824       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/19",
   1825       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1826       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/labels{/name}",
   1827       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/comments",
   1828       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/events",
   1829       "html_url": "https://github.com/damus-io/nostrdb/issues/19",
   1830       "id": 2021471954,
   1831       "node_id": "I_kwDOJ9k5Is54fTbS",
   1832       "number": 19,
   1833       "title": "Link error : pthread",
   1834       "user": {
   1835         "login": "Hakkadaikon",
   1836         "id": 57866935,
   1837         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   1838         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   1839         "gravatar_id": "",
   1840         "url": "https://api.github.com/users/Hakkadaikon",
   1841         "html_url": "https://github.com/Hakkadaikon",
   1842         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   1843         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   1844         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   1845         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   1846         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   1847         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   1848         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   1849         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   1850         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   1851         "type": "User",
   1852         "site_admin": false
   1853       },
   1854       "labels": [],
   1855       "state": "open",
   1856       "locked": false,
   1857       "assignee": null,
   1858       "assignees": [],
   1859       "milestone": null,
   1860       "comments": 0,
   1861       "created_at": "2023-12-01T19:36:39Z",
   1862       "updated_at": "2023-12-01T19:36:39Z",
   1863       "closed_at": null,
   1864       "author_association": "CONTRIBUTOR",
   1865       "active_lock_reason": null,
   1866       "body": "Hi,\r\nWhen I built nostrdb, the following link error occurred.\r\n\r\n```bash\r\n$ make clean; make\r\nrm -rf test bench bench-ingest bench-ingest-many\r\ncc -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include bench.c nostrdb.c sha256.c bech32.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a  -o bench\r\n/usr/bin/ld: deps/lmdb/liblmdb.a(mdb.o): in function `mdb_txn_renew0':\r\n/home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:2719: undefined reference to `pthread_getspecific'\r\n/usr/bin/ld: /home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:2762: undefined reference to `pthread_setspecific'\r\n/usr/bin/ld: deps/lmdb/liblmdb.a(mdb.o): in function `mdb_env_copythr':\r\n/home/hakkadaikon/repos/hakkadaikon/nostrdb/deps/lmdb/mdb.c:9126: undefined reference to `pthread_sigmask'\r\n~\r\ncollect2: error: ld returned 1 exit status\r\nmake: *** [Makefile:137: bench] Error 1\r\n```\r\n\r\nThe problem was resolved by changing nostrdb/Makefile as follows.\r\n\r\n```diff\r\n--- a/Makefile\r\n+++ b/Makefile\r\n@@ -2,7 +2,7 @@ CFLAGS = -Wall -Wno-misleading-indentation -Wno-unused-function -Werror -O2 -g -\r\n HEADERS = sha256.h nostrdb.h cursor.h hex.h jsmn.h config.h sha256.h random.h memchr.h $(C_BINDINGS)\r\n FLATCC_SRCS=deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/verifier.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c\r\n SRCS = nostrdb.c sha256.c bech32.c $(FLATCC_SRCS)\r\n-LDS = $(SRCS) $(ARS) \r\n+LDS = $(SRCS) $(ARS) -lpthread\r\n DEPS = $(SRCS) $(HEADERS) $(ARS)\r\n ARS = deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a \r\n LMDB_VER=0.9.31\r\n```\r\n\r\nI'm using Ubuntu 20.04.\r\n```bash\r\ncat /etc/lsb-release\r\nDISTRIB_ID=Ubuntu\r\nDISTRIB_RELEASE=20.04\r\nDISTRIB_CODENAME=focal\r\nDISTRIB_DESCRIPTION=\"Ubuntu 20.04.2 LTS\"\r\n```\r\n\r\n",
   1867       "reactions": {
   1868         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/reactions",
   1869         "total_count": 1,
   1870         "+1": 1,
   1871         "-1": 0,
   1872         "laugh": 0,
   1873         "hooray": 0,
   1874         "confused": 0,
   1875         "heart": 0,
   1876         "rocket": 0,
   1877         "eyes": 0
   1878       },
   1879       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/19/timeline",
   1880       "performed_via_github_app": null,
   1881       "state_reason": null
   1882     }
   1883   },
   1884   {
   1885     "issue": {
   1886       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   1887       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1888       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   1889       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   1890       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   1891       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   1892       "id": 2021354427,
   1893       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   1894       "number": 18,
   1895       "title": "Delete unuse argument (destsize)",
   1896       "user": {
   1897         "login": "Hakkadaikon",
   1898         "id": 57866935,
   1899         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   1900         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   1901         "gravatar_id": "",
   1902         "url": "https://api.github.com/users/Hakkadaikon",
   1903         "html_url": "https://github.com/Hakkadaikon",
   1904         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   1905         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   1906         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   1907         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   1908         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   1909         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   1910         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   1911         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   1912         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   1913         "type": "User",
   1914         "site_admin": false
   1915       },
   1916       "labels": [],
   1917       "state": "closed",
   1918       "locked": false,
   1919       "assignee": null,
   1920       "assignees": [],
   1921       "milestone": null,
   1922       "comments": 7,
   1923       "created_at": "2023-12-01T18:04:55Z",
   1924       "updated_at": "2023-12-01T21:58:12Z",
   1925       "closed_at": "2023-12-01T21:58:12Z",
   1926       "author_association": "CONTRIBUTOR",
   1927       "active_lock_reason": null,
   1928       "draft": false,
   1929       "pull_request": {
   1930         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   1931         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   1932         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   1933         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   1934         "merged_at": null
   1935       },
   1936       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   1937       "reactions": {
   1938         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   1939         "total_count": 0,
   1940         "+1": 0,
   1941         "-1": 0,
   1942         "laugh": 0,
   1943         "hooray": 0,
   1944         "confused": 0,
   1945         "heart": 0,
   1946         "rocket": 0,
   1947         "eyes": 0
   1948       },
   1949       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   1950       "performed_via_github_app": null,
   1951       "state_reason": null
   1952     }
   1953   },
   1954   {
   1955     "issue": {
   1956       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   1957       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   1958       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   1959       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   1960       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   1961       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   1962       "id": 2021354427,
   1963       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   1964       "number": 18,
   1965       "title": "Delete unuse argument (destsize)",
   1966       "user": {
   1967         "login": "Hakkadaikon",
   1968         "id": 57866935,
   1969         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   1970         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   1971         "gravatar_id": "",
   1972         "url": "https://api.github.com/users/Hakkadaikon",
   1973         "html_url": "https://github.com/Hakkadaikon",
   1974         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   1975         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   1976         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   1977         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   1978         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   1979         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   1980         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   1981         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   1982         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   1983         "type": "User",
   1984         "site_admin": false
   1985       },
   1986       "labels": [],
   1987       "state": "closed",
   1988       "locked": false,
   1989       "assignee": null,
   1990       "assignees": [],
   1991       "milestone": null,
   1992       "comments": 7,
   1993       "created_at": "2023-12-01T18:04:55Z",
   1994       "updated_at": "2023-12-01T21:58:12Z",
   1995       "closed_at": "2023-12-01T21:58:12Z",
   1996       "author_association": "CONTRIBUTOR",
   1997       "active_lock_reason": null,
   1998       "draft": false,
   1999       "pull_request": {
   2000         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2001         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2002         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2003         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2004         "merged_at": null
   2005       },
   2006       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2007       "reactions": {
   2008         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2009         "total_count": 0,
   2010         "+1": 0,
   2011         "-1": 0,
   2012         "laugh": 0,
   2013         "hooray": 0,
   2014         "confused": 0,
   2015         "heart": 0,
   2016         "rocket": 0,
   2017         "eyes": 0
   2018       },
   2019       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2020       "performed_via_github_app": null,
   2021       "state_reason": null
   2022     },
   2023     "comment": {
   2024       "user": "jb55",
   2025       "created_at": "2023-12-01T18:17:16Z",
   2026       "updated_at": "2023-12-01T18:17:16Z",
   2027       "body": "we don't ever use this function with unknown destination sizes, is there\na specific issue you're trying to fix here?\n"
   2028     }
   2029   },
   2030   {
   2031     "issue": {
   2032       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2033       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2034       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2035       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2036       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2037       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2038       "id": 2021354427,
   2039       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2040       "number": 18,
   2041       "title": "Delete unuse argument (destsize)",
   2042       "user": {
   2043         "login": "Hakkadaikon",
   2044         "id": 57866935,
   2045         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2046         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2047         "gravatar_id": "",
   2048         "url": "https://api.github.com/users/Hakkadaikon",
   2049         "html_url": "https://github.com/Hakkadaikon",
   2050         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2051         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2052         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2053         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2054         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2055         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2056         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2057         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2058         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2059         "type": "User",
   2060         "site_admin": false
   2061       },
   2062       "labels": [],
   2063       "state": "closed",
   2064       "locked": false,
   2065       "assignee": null,
   2066       "assignees": [],
   2067       "milestone": null,
   2068       "comments": 7,
   2069       "created_at": "2023-12-01T18:04:55Z",
   2070       "updated_at": "2023-12-01T21:58:12Z",
   2071       "closed_at": "2023-12-01T21:58:12Z",
   2072       "author_association": "CONTRIBUTOR",
   2073       "active_lock_reason": null,
   2074       "draft": false,
   2075       "pull_request": {
   2076         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2077         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2078         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2079         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2080         "merged_at": null
   2081       },
   2082       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2083       "reactions": {
   2084         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2085         "total_count": 0,
   2086         "+1": 0,
   2087         "-1": 0,
   2088         "laugh": 0,
   2089         "hooray": 0,
   2090         "confused": 0,
   2091         "heart": 0,
   2092         "rocket": 0,
   2093         "eyes": 0
   2094       },
   2095       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2096       "performed_via_github_app": null,
   2097       "state_reason": null
   2098     },
   2099     "comment": {
   2100       "user": "Hakkadaikon",
   2101       "created_at": "2023-12-01T18:30:25Z",
   2102       "updated_at": "2023-12-01T18:30:36Z",
   2103       "body": "> we don't ever use this function with unknown destination sizes\r\n\r\nI thought I meant to detect a buffer overflow on the destination size, since the destination size is passed as an argument and is not used.\r\n\r\nIf destsize is just being passed for future use, this may not be necessary."
   2104     }
   2105   },
   2106   {
   2107     "issue": {
   2108       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2109       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2110       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2111       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2112       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2113       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2114       "id": 2021354427,
   2115       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2116       "number": 18,
   2117       "title": "Delete unuse argument (destsize)",
   2118       "user": {
   2119         "login": "Hakkadaikon",
   2120         "id": 57866935,
   2121         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2122         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2123         "gravatar_id": "",
   2124         "url": "https://api.github.com/users/Hakkadaikon",
   2125         "html_url": "https://github.com/Hakkadaikon",
   2126         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2127         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2128         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2129         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2130         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2131         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2132         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2133         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2134         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2135         "type": "User",
   2136         "site_admin": false
   2137       },
   2138       "labels": [],
   2139       "state": "closed",
   2140       "locked": false,
   2141       "assignee": null,
   2142       "assignees": [],
   2143       "milestone": null,
   2144       "comments": 7,
   2145       "created_at": "2023-12-01T18:04:55Z",
   2146       "updated_at": "2023-12-01T21:58:12Z",
   2147       "closed_at": "2023-12-01T21:58:12Z",
   2148       "author_association": "CONTRIBUTOR",
   2149       "active_lock_reason": null,
   2150       "draft": false,
   2151       "pull_request": {
   2152         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2153         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2154         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2155         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2156         "merged_at": null
   2157       },
   2158       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2159       "reactions": {
   2160         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2161         "total_count": 0,
   2162         "+1": 0,
   2163         "-1": 0,
   2164         "laugh": 0,
   2165         "hooray": 0,
   2166         "confused": 0,
   2167         "heart": 0,
   2168         "rocket": 0,
   2169         "eyes": 0
   2170       },
   2171       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2172       "performed_via_github_app": null,
   2173       "state_reason": null
   2174     },
   2175     "comment": {
   2176       "user": "jb55",
   2177       "created_at": "2023-12-01T18:31:59Z",
   2178       "updated_at": "2023-12-01T18:31:59Z",
   2179       "body": "On Fri, Dec 01, 2023 at 10:30:36AM -0800, Hakkadaikon wrote:\n>> we don't ever use this function with unknown destination sizes\n>\n>If destsize is just being passed for future use, this may not be necessary.\n\noh we can remove destsize if we're not using it\n"
   2180     }
   2181   },
   2182   {
   2183     "issue": {
   2184       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2185       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2186       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2187       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2188       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2189       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2190       "id": 2021354427,
   2191       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2192       "number": 18,
   2193       "title": "Delete unuse argument (destsize)",
   2194       "user": {
   2195         "login": "Hakkadaikon",
   2196         "id": 57866935,
   2197         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2198         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2199         "gravatar_id": "",
   2200         "url": "https://api.github.com/users/Hakkadaikon",
   2201         "html_url": "https://github.com/Hakkadaikon",
   2202         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2203         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2204         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2205         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2206         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2207         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2208         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2209         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2210         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2211         "type": "User",
   2212         "site_admin": false
   2213       },
   2214       "labels": [],
   2215       "state": "closed",
   2216       "locked": false,
   2217       "assignee": null,
   2218       "assignees": [],
   2219       "milestone": null,
   2220       "comments": 7,
   2221       "created_at": "2023-12-01T18:04:55Z",
   2222       "updated_at": "2023-12-01T21:58:12Z",
   2223       "closed_at": "2023-12-01T21:58:12Z",
   2224       "author_association": "CONTRIBUTOR",
   2225       "active_lock_reason": null,
   2226       "draft": false,
   2227       "pull_request": {
   2228         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2229         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2230         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2231         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2232         "merged_at": null
   2233       },
   2234       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2235       "reactions": {
   2236         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2237         "total_count": 0,
   2238         "+1": 0,
   2239         "-1": 0,
   2240         "laugh": 0,
   2241         "hooray": 0,
   2242         "confused": 0,
   2243         "heart": 0,
   2244         "rocket": 0,
   2245         "eyes": 0
   2246       },
   2247       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2248       "performed_via_github_app": null,
   2249       "state_reason": null
   2250     },
   2251     "comment": {
   2252       "user": "Hakkadaikon",
   2253       "created_at": "2023-12-01T18:35:55Z",
   2254       "updated_at": "2023-12-01T18:35:55Z",
   2255       "body": "OK, I'll create a \"new pull request with destsize removed\"."
   2256     }
   2257   },
   2258   {
   2259     "issue": {
   2260       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2261       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2262       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2263       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2264       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2265       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2266       "id": 2021354427,
   2267       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2268       "number": 18,
   2269       "title": "Delete unuse argument (destsize)",
   2270       "user": {
   2271         "login": "Hakkadaikon",
   2272         "id": 57866935,
   2273         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2274         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2275         "gravatar_id": "",
   2276         "url": "https://api.github.com/users/Hakkadaikon",
   2277         "html_url": "https://github.com/Hakkadaikon",
   2278         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2279         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2280         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2281         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2282         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2283         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2284         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2285         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2286         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2287         "type": "User",
   2288         "site_admin": false
   2289       },
   2290       "labels": [],
   2291       "state": "closed",
   2292       "locked": false,
   2293       "assignee": null,
   2294       "assignees": [],
   2295       "milestone": null,
   2296       "comments": 7,
   2297       "created_at": "2023-12-01T18:04:55Z",
   2298       "updated_at": "2023-12-01T21:58:12Z",
   2299       "closed_at": "2023-12-01T21:58:12Z",
   2300       "author_association": "CONTRIBUTOR",
   2301       "active_lock_reason": null,
   2302       "draft": false,
   2303       "pull_request": {
   2304         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2305         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2306         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2307         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2308         "merged_at": null
   2309       },
   2310       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2311       "reactions": {
   2312         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2313         "total_count": 0,
   2314         "+1": 0,
   2315         "-1": 0,
   2316         "laugh": 0,
   2317         "hooray": 0,
   2318         "confused": 0,
   2319         "heart": 0,
   2320         "rocket": 0,
   2321         "eyes": 0
   2322       },
   2323       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2324       "performed_via_github_app": null,
   2325       "state_reason": null
   2326     },
   2327     "comment": {
   2328       "user": "jb55",
   2329       "created_at": "2023-12-01T18:50:15Z",
   2330       "updated_at": "2023-12-01T18:50:15Z",
   2331       "body": "On Fri, Dec 01, 2023 at 10:36:06AM -0800, Hakkadaikon wrote:\n>OK, I'll create a \"new pull request with destsize removed\".\n\nyou can just update this one as well if you want \n"
   2332     }
   2333   },
   2334   {
   2335     "issue": {
   2336       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2337       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2338       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2339       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2340       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2341       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2342       "id": 2021354427,
   2343       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2344       "number": 18,
   2345       "title": "Delete unuse argument (destsize)",
   2346       "user": {
   2347         "login": "Hakkadaikon",
   2348         "id": 57866935,
   2349         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2350         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2351         "gravatar_id": "",
   2352         "url": "https://api.github.com/users/Hakkadaikon",
   2353         "html_url": "https://github.com/Hakkadaikon",
   2354         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2355         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2356         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2357         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2358         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2359         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2360         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2361         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2362         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2363         "type": "User",
   2364         "site_admin": false
   2365       },
   2366       "labels": [],
   2367       "state": "closed",
   2368       "locked": false,
   2369       "assignee": null,
   2370       "assignees": [],
   2371       "milestone": null,
   2372       "comments": 7,
   2373       "created_at": "2023-12-01T18:04:55Z",
   2374       "updated_at": "2023-12-01T21:58:12Z",
   2375       "closed_at": "2023-12-01T21:58:12Z",
   2376       "author_association": "CONTRIBUTOR",
   2377       "active_lock_reason": null,
   2378       "draft": false,
   2379       "pull_request": {
   2380         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2381         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2382         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2383         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2384         "merged_at": null
   2385       },
   2386       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2387       "reactions": {
   2388         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2389         "total_count": 0,
   2390         "+1": 0,
   2391         "-1": 0,
   2392         "laugh": 0,
   2393         "hooray": 0,
   2394         "confused": 0,
   2395         "heart": 0,
   2396         "rocket": 0,
   2397         "eyes": 0
   2398       },
   2399       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2400       "performed_via_github_app": null,
   2401       "state_reason": null
   2402     },
   2403     "comment": {
   2404       "user": "Hakkadaikon",
   2405       "created_at": "2023-12-01T19:14:34Z",
   2406       "updated_at": "2023-12-01T19:14:34Z",
   2407       "body": "> you can just update this one as well if you want\r\n\r\nHi,\r\nI have changed the title and modification details of this pull request. (Unused variable: destsize removed.)\r\nPlease check.🙏\r\n\r\nAlso, hex_encode was only used in one place."
   2408     }
   2409   },
   2410   {
   2411     "issue": {
   2412       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18",
   2413       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2414       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/labels{/name}",
   2415       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/comments",
   2416       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/events",
   2417       "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2418       "id": 2021354427,
   2419       "node_id": "PR_kwDOJ9k5Is5g7Jbr",
   2420       "number": 18,
   2421       "title": "Delete unuse argument (destsize)",
   2422       "user": {
   2423         "login": "Hakkadaikon",
   2424         "id": 57866935,
   2425         "node_id": "MDQ6VXNlcjU3ODY2OTM1",
   2426         "avatar_url": "https://avatars.githubusercontent.com/u/57866935?v=4",
   2427         "gravatar_id": "",
   2428         "url": "https://api.github.com/users/Hakkadaikon",
   2429         "html_url": "https://github.com/Hakkadaikon",
   2430         "followers_url": "https://api.github.com/users/Hakkadaikon/followers",
   2431         "following_url": "https://api.github.com/users/Hakkadaikon/following{/other_user}",
   2432         "gists_url": "https://api.github.com/users/Hakkadaikon/gists{/gist_id}",
   2433         "starred_url": "https://api.github.com/users/Hakkadaikon/starred{/owner}{/repo}",
   2434         "subscriptions_url": "https://api.github.com/users/Hakkadaikon/subscriptions",
   2435         "organizations_url": "https://api.github.com/users/Hakkadaikon/orgs",
   2436         "repos_url": "https://api.github.com/users/Hakkadaikon/repos",
   2437         "events_url": "https://api.github.com/users/Hakkadaikon/events{/privacy}",
   2438         "received_events_url": "https://api.github.com/users/Hakkadaikon/received_events",
   2439         "type": "User",
   2440         "site_admin": false
   2441       },
   2442       "labels": [],
   2443       "state": "closed",
   2444       "locked": false,
   2445       "assignee": null,
   2446       "assignees": [],
   2447       "milestone": null,
   2448       "comments": 7,
   2449       "created_at": "2023-12-01T18:04:55Z",
   2450       "updated_at": "2023-12-01T21:58:12Z",
   2451       "closed_at": "2023-12-01T21:58:12Z",
   2452       "author_association": "CONTRIBUTOR",
   2453       "active_lock_reason": null,
   2454       "draft": false,
   2455       "pull_request": {
   2456         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/18",
   2457         "html_url": "https://github.com/damus-io/nostrdb/pull/18",
   2458         "diff_url": "https://github.com/damus-io/nostrdb/pull/18.diff",
   2459         "patch_url": "https://github.com/damus-io/nostrdb/pull/18.patch",
   2460         "merged_at": null
   2461       },
   2462       "body": "Hi !\r\nI'm hakkadaikon. (npub: npub1zqdnpm5gcfap8hngha7gcp3k363786phvs2etsvxw4nh6x9ydfzsuyk6mn)\r\n\r\nI added this because there was no destsize check in the hex_encode method.\r\nPlease check. 🙏",
   2463       "reactions": {
   2464         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/reactions",
   2465         "total_count": 0,
   2466         "+1": 0,
   2467         "-1": 0,
   2468         "laugh": 0,
   2469         "hooray": 0,
   2470         "confused": 0,
   2471         "heart": 0,
   2472         "rocket": 0,
   2473         "eyes": 0
   2474       },
   2475       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/18/timeline",
   2476       "performed_via_github_app": null,
   2477       "state_reason": null
   2478     },
   2479     "comment": {
   2480       "user": "jb55",
   2481       "created_at": "2023-12-01T21:57:59Z",
   2482       "updated_at": "2023-12-01T21:57:59Z",
   2483       "body": "Thanks!\n\nReviewed-by: William Casarin ***@***.***>\n\nOn Sat, Dec 02, 2023 at 02:52:14AM +0900, hakkadaikon wrote:\n>Closes: https://github.com/damus-io/nostrdb/pull/18\n>---\n> hex.h     | 2 +-\n> nostrdb.c | 2 +-\n> 2 files changed, 2 insertions(+), 2 deletions(-)\n>\n>diff --git a/hex.h b/hex.h\n>index 88000a7..ce20ff4 100644\n>--- a/hex.h\n>+++ b/hex.h\n>@@ -50,7 +50,7 @@ static inline char hexchar(unsigned int val)\n> \tabort();\n> }\n>\n>-static int hex_encode(const void *buf, size_t bufsize, char *dest, size_t destsize)\n>+static int hex_encode(const void *buf, size_t bufsize, char *dest)\n> {\n> \tsize_t i;\n>\n>diff --git a/nostrdb.c b/nostrdb.c\n>index d973b67..2a8451f 100644\n>--- a/nostrdb.c\n>+++ b/nostrdb.c\n>@@ -3616,7 +3616,7 @@ static int ndb_event_commitment(struct ndb_note *ev, unsigned char *buf, int buf\n> \tstruct cursor cur;\n> \tint ok;\n>\n>-\tif (!hex_encode(ev->pubkey, sizeof(ev->pubkey), pubkey, sizeof(pubkey)))\n>+\tif (!hex_encode(ev->pubkey, sizeof(ev->pubkey), pubkey))\n> \t\treturn 0;\n>\n> \tmake_cursor(buf, buf + buflen, &cur);\n"
   2484     }
   2485   },
   2486   {
   2487     "issue": {
   2488       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17",
   2489       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2490       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}",
   2491       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments",
   2492       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events",
   2493       "html_url": "https://github.com/damus-io/nostrdb/issues/17",
   2494       "id": 1891117168,
   2495       "node_id": "I_kwDOJ9k5Is5wuChw",
   2496       "number": 17,
   2497       "title": "Consider Cap'n Proto optimizations",
   2498       "user": {
   2499         "login": "vRobM",
   2500         "id": 2704733,
   2501         "node_id": "MDQ6VXNlcjI3MDQ3MzM=",
   2502         "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4",
   2503         "gravatar_id": "",
   2504         "url": "https://api.github.com/users/vRobM",
   2505         "html_url": "https://github.com/vRobM",
   2506         "followers_url": "https://api.github.com/users/vRobM/followers",
   2507         "following_url": "https://api.github.com/users/vRobM/following{/other_user}",
   2508         "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}",
   2509         "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}",
   2510         "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions",
   2511         "organizations_url": "https://api.github.com/users/vRobM/orgs",
   2512         "repos_url": "https://api.github.com/users/vRobM/repos",
   2513         "events_url": "https://api.github.com/users/vRobM/events{/privacy}",
   2514         "received_events_url": "https://api.github.com/users/vRobM/received_events",
   2515         "type": "User",
   2516         "site_admin": false
   2517       },
   2518       "labels": [],
   2519       "state": "closed",
   2520       "locked": false,
   2521       "assignee": null,
   2522       "assignees": [],
   2523       "milestone": null,
   2524       "comments": 3,
   2525       "created_at": "2023-09-11T19:17:41Z",
   2526       "updated_at": "2023-12-01T18:39:49Z",
   2527       "closed_at": "2023-12-01T18:39:49Z",
   2528       "author_association": "NONE",
   2529       "active_lock_reason": null,
   2530       "body": "Since you're familiar with flatbuffers.. ;-)",
   2531       "reactions": {
   2532         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions",
   2533         "total_count": 0,
   2534         "+1": 0,
   2535         "-1": 0,
   2536         "laugh": 0,
   2537         "hooray": 0,
   2538         "confused": 0,
   2539         "heart": 0,
   2540         "rocket": 0,
   2541         "eyes": 0
   2542       },
   2543       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline",
   2544       "performed_via_github_app": null,
   2545       "state_reason": "completed"
   2546     }
   2547   },
   2548   {
   2549     "issue": {
   2550       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17",
   2551       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2552       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}",
   2553       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments",
   2554       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events",
   2555       "html_url": "https://github.com/damus-io/nostrdb/issues/17",
   2556       "id": 1891117168,
   2557       "node_id": "I_kwDOJ9k5Is5wuChw",
   2558       "number": 17,
   2559       "title": "Consider Cap'n Proto optimizations",
   2560       "user": {
   2561         "login": "vRobM",
   2562         "id": 2704733,
   2563         "node_id": "MDQ6VXNlcjI3MDQ3MzM=",
   2564         "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4",
   2565         "gravatar_id": "",
   2566         "url": "https://api.github.com/users/vRobM",
   2567         "html_url": "https://github.com/vRobM",
   2568         "followers_url": "https://api.github.com/users/vRobM/followers",
   2569         "following_url": "https://api.github.com/users/vRobM/following{/other_user}",
   2570         "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}",
   2571         "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}",
   2572         "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions",
   2573         "organizations_url": "https://api.github.com/users/vRobM/orgs",
   2574         "repos_url": "https://api.github.com/users/vRobM/repos",
   2575         "events_url": "https://api.github.com/users/vRobM/events{/privacy}",
   2576         "received_events_url": "https://api.github.com/users/vRobM/received_events",
   2577         "type": "User",
   2578         "site_admin": false
   2579       },
   2580       "labels": [],
   2581       "state": "closed",
   2582       "locked": false,
   2583       "assignee": null,
   2584       "assignees": [],
   2585       "milestone": null,
   2586       "comments": 3,
   2587       "created_at": "2023-09-11T19:17:41Z",
   2588       "updated_at": "2023-12-01T18:39:49Z",
   2589       "closed_at": "2023-12-01T18:39:49Z",
   2590       "author_association": "NONE",
   2591       "active_lock_reason": null,
   2592       "body": "Since you're familiar with flatbuffers.. ;-)",
   2593       "reactions": {
   2594         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions",
   2595         "total_count": 0,
   2596         "+1": 0,
   2597         "-1": 0,
   2598         "laugh": 0,
   2599         "hooray": 0,
   2600         "confused": 0,
   2601         "heart": 0,
   2602         "rocket": 0,
   2603         "eyes": 0
   2604       },
   2605       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline",
   2606       "performed_via_github_app": null,
   2607       "state_reason": "completed"
   2608     },
   2609     "comment": {
   2610       "user": "jb55",
   2611       "created_at": "2023-09-11T20:36:08Z",
   2612       "updated_at": "2023-09-11T20:36:08Z",
   2613       "body": "On Mon, Sep 11, 2023 at 12:17:51PM -0700, Rob wrote:\n>Since you're familiar with flatbuffers.. ;-)\n\nI'm not set on flatbuffers, it's just what I'm using right now. I was\nlooking at the capn' proto comparison to flatbuffers the other day and\nthere doesn't seem that much difference that is relevant to nostrdb. do\nyou have something specific in mind?\n"
   2614     }
   2615   },
   2616   {
   2617     "issue": {
   2618       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17",
   2619       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2620       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}",
   2621       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments",
   2622       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events",
   2623       "html_url": "https://github.com/damus-io/nostrdb/issues/17",
   2624       "id": 1891117168,
   2625       "node_id": "I_kwDOJ9k5Is5wuChw",
   2626       "number": 17,
   2627       "title": "Consider Cap'n Proto optimizations",
   2628       "user": {
   2629         "login": "vRobM",
   2630         "id": 2704733,
   2631         "node_id": "MDQ6VXNlcjI3MDQ3MzM=",
   2632         "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4",
   2633         "gravatar_id": "",
   2634         "url": "https://api.github.com/users/vRobM",
   2635         "html_url": "https://github.com/vRobM",
   2636         "followers_url": "https://api.github.com/users/vRobM/followers",
   2637         "following_url": "https://api.github.com/users/vRobM/following{/other_user}",
   2638         "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}",
   2639         "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}",
   2640         "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions",
   2641         "organizations_url": "https://api.github.com/users/vRobM/orgs",
   2642         "repos_url": "https://api.github.com/users/vRobM/repos",
   2643         "events_url": "https://api.github.com/users/vRobM/events{/privacy}",
   2644         "received_events_url": "https://api.github.com/users/vRobM/received_events",
   2645         "type": "User",
   2646         "site_admin": false
   2647       },
   2648       "labels": [],
   2649       "state": "closed",
   2650       "locked": false,
   2651       "assignee": null,
   2652       "assignees": [],
   2653       "milestone": null,
   2654       "comments": 3,
   2655       "created_at": "2023-09-11T19:17:41Z",
   2656       "updated_at": "2023-12-01T18:39:49Z",
   2657       "closed_at": "2023-12-01T18:39:49Z",
   2658       "author_association": "NONE",
   2659       "active_lock_reason": null,
   2660       "body": "Since you're familiar with flatbuffers.. ;-)",
   2661       "reactions": {
   2662         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions",
   2663         "total_count": 0,
   2664         "+1": 0,
   2665         "-1": 0,
   2666         "laugh": 0,
   2667         "hooray": 0,
   2668         "confused": 0,
   2669         "heart": 0,
   2670         "rocket": 0,
   2671         "eyes": 0
   2672       },
   2673       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline",
   2674       "performed_via_github_app": null,
   2675       "state_reason": "completed"
   2676     },
   2677     "comment": {
   2678       "user": "vRobM",
   2679       "created_at": "2023-09-11T21:21:22Z",
   2680       "updated_at": "2023-09-11T21:21:22Z",
   2681       "body": "Understood.\r\n\r\nNot an expert on it, so on the surface yes, fairly similar, however it's a pretty deep subject depending on which layer you look at which can be optimized.\r\n\r\nNot sure what the data format considerations are in nostrdb, for example the binary data format would be more compact compared to JSON. How that would affect KV needs or other transformations & manipulations IDK. Depends where the overhead is acceptable. \r\n\r\nhttps://www.youtube.com/watch?v=6V_lVZzV6AE \r\nThis guy delves into the depths of Cap'n Proto which may provide useful perspectives, however limited to the example app he builds.\r\n\r\nA learning opportunity for sure, and we can connect with Kenton who designed it if desired."
   2682     }
   2683   },
   2684   {
   2685     "issue": {
   2686       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17",
   2687       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2688       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/labels{/name}",
   2689       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/comments",
   2690       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/events",
   2691       "html_url": "https://github.com/damus-io/nostrdb/issues/17",
   2692       "id": 1891117168,
   2693       "node_id": "I_kwDOJ9k5Is5wuChw",
   2694       "number": 17,
   2695       "title": "Consider Cap'n Proto optimizations",
   2696       "user": {
   2697         "login": "vRobM",
   2698         "id": 2704733,
   2699         "node_id": "MDQ6VXNlcjI3MDQ3MzM=",
   2700         "avatar_url": "https://avatars.githubusercontent.com/u/2704733?v=4",
   2701         "gravatar_id": "",
   2702         "url": "https://api.github.com/users/vRobM",
   2703         "html_url": "https://github.com/vRobM",
   2704         "followers_url": "https://api.github.com/users/vRobM/followers",
   2705         "following_url": "https://api.github.com/users/vRobM/following{/other_user}",
   2706         "gists_url": "https://api.github.com/users/vRobM/gists{/gist_id}",
   2707         "starred_url": "https://api.github.com/users/vRobM/starred{/owner}{/repo}",
   2708         "subscriptions_url": "https://api.github.com/users/vRobM/subscriptions",
   2709         "organizations_url": "https://api.github.com/users/vRobM/orgs",
   2710         "repos_url": "https://api.github.com/users/vRobM/repos",
   2711         "events_url": "https://api.github.com/users/vRobM/events{/privacy}",
   2712         "received_events_url": "https://api.github.com/users/vRobM/received_events",
   2713         "type": "User",
   2714         "site_admin": false
   2715       },
   2716       "labels": [],
   2717       "state": "closed",
   2718       "locked": false,
   2719       "assignee": null,
   2720       "assignees": [],
   2721       "milestone": null,
   2722       "comments": 3,
   2723       "created_at": "2023-09-11T19:17:41Z",
   2724       "updated_at": "2023-12-01T18:39:49Z",
   2725       "closed_at": "2023-12-01T18:39:49Z",
   2726       "author_association": "NONE",
   2727       "active_lock_reason": null,
   2728       "body": "Since you're familiar with flatbuffers.. ;-)",
   2729       "reactions": {
   2730         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/reactions",
   2731         "total_count": 0,
   2732         "+1": 0,
   2733         "-1": 0,
   2734         "laugh": 0,
   2735         "hooray": 0,
   2736         "confused": 0,
   2737         "heart": 0,
   2738         "rocket": 0,
   2739         "eyes": 0
   2740       },
   2741       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/17/timeline",
   2742       "performed_via_github_app": null,
   2743       "state_reason": "completed"
   2744     },
   2745     "comment": {
   2746       "user": "jb55",
   2747       "created_at": "2023-12-01T18:39:49Z",
   2748       "updated_at": "2023-12-01T18:39:49Z",
   2749       "body": "closing this until we have some specific thing we are trying to optimize for"
   2750     }
   2751   },
   2752   {
   2753     "issue": {
   2754       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/16",
   2755       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2756       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/labels{/name}",
   2757       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/comments",
   2758       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/events",
   2759       "html_url": "https://github.com/damus-io/nostrdb/pull/16",
   2760       "id": 1878171607,
   2761       "node_id": "PR_kwDOJ9k5Is5ZYQrs",
   2762       "number": 16,
   2763       "title": "Create README.md",
   2764       "user": {
   2765         "login": "geeknik",
   2766         "id": 466878,
   2767         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   2768         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   2769         "gravatar_id": "",
   2770         "url": "https://api.github.com/users/geeknik",
   2771         "html_url": "https://github.com/geeknik",
   2772         "followers_url": "https://api.github.com/users/geeknik/followers",
   2773         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   2774         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   2775         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   2776         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   2777         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   2778         "repos_url": "https://api.github.com/users/geeknik/repos",
   2779         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   2780         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   2781         "type": "User",
   2782         "site_admin": false
   2783       },
   2784       "labels": [],
   2785       "state": "open",
   2786       "locked": false,
   2787       "assignee": null,
   2788       "assignees": [],
   2789       "milestone": null,
   2790       "comments": 0,
   2791       "created_at": "2023-09-01T23:35:29Z",
   2792       "updated_at": "2023-12-04T22:39:25Z",
   2793       "closed_at": null,
   2794       "author_association": "CONTRIBUTOR",
   2795       "active_lock_reason": null,
   2796       "draft": false,
   2797       "pull_request": {
   2798         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/16",
   2799         "html_url": "https://github.com/damus-io/nostrdb/pull/16",
   2800         "diff_url": "https://github.com/damus-io/nostrdb/pull/16.diff",
   2801         "patch_url": "https://github.com/damus-io/nostrdb/pull/16.patch",
   2802         "merged_at": null
   2803       },
   2804       "body": "Create README.md for the fuzzer since nobody reads the patch notes.",
   2805       "reactions": {
   2806         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/reactions",
   2807         "total_count": 0,
   2808         "+1": 0,
   2809         "-1": 0,
   2810         "laugh": 0,
   2811         "hooray": 0,
   2812         "confused": 0,
   2813         "heart": 0,
   2814         "rocket": 0,
   2815         "eyes": 0
   2816       },
   2817       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/16/timeline",
   2818       "performed_via_github_app": null,
   2819       "state_reason": null
   2820     }
   2821   },
   2822   {
   2823     "issue": {
   2824       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15",
   2825       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2826       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/labels{/name}",
   2827       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/comments",
   2828       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/events",
   2829       "html_url": "https://github.com/damus-io/nostrdb/pull/15",
   2830       "id": 1878169050,
   2831       "node_id": "PR_kwDOJ9k5Is5ZYQGn",
   2832       "number": 15,
   2833       "title": "Create simple_fuzzer.c",
   2834       "user": {
   2835         "login": "geeknik",
   2836         "id": 466878,
   2837         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   2838         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   2839         "gravatar_id": "",
   2840         "url": "https://api.github.com/users/geeknik",
   2841         "html_url": "https://github.com/geeknik",
   2842         "followers_url": "https://api.github.com/users/geeknik/followers",
   2843         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   2844         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   2845         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   2846         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   2847         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   2848         "repos_url": "https://api.github.com/users/geeknik/repos",
   2849         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   2850         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   2851         "type": "User",
   2852         "site_admin": false
   2853       },
   2854       "labels": [],
   2855       "state": "closed",
   2856       "locked": false,
   2857       "assignee": null,
   2858       "assignees": [],
   2859       "milestone": null,
   2860       "comments": 1,
   2861       "created_at": "2023-09-01T23:32:54Z",
   2862       "updated_at": "2023-09-27T17:24:39Z",
   2863       "closed_at": "2023-09-27T17:24:35Z",
   2864       "author_association": "CONTRIBUTOR",
   2865       "active_lock_reason": null,
   2866       "draft": false,
   2867       "pull_request": {
   2868         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/15",
   2869         "html_url": "https://github.com/damus-io/nostrdb/pull/15",
   2870         "diff_url": "https://github.com/damus-io/nostrdb/pull/15.diff",
   2871         "patch_url": "https://github.com/damus-io/nostrdb/pull/15.patch",
   2872         "merged_at": null
   2873       },
   2874       "body": "simple and inefficient AFL fuzzer for nostrdb\r\nresponsible for finding\r\n 1x global buffer overflow\r\n 1x Floating Point Exception (div by zero)\r\n 1x Assertion failure\r\n \r\nHow to use it yourself:\r\n1. Install Clang 14+\r\n2. Install LLVM 14+\r\n3. Install AFL++\r\n4. Then...\r\n AFL_USE_ASAN=1 afl-clang-lto -flto=full -fsanitize=address -Wall -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include fuzzer.c nostrdb.c sha256.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o fuzzer\r\n5. create an input directory drop some sort of starting corpus. i chose blns.txt because it rocks. \r\n6. afl-fuzz -i $input -o $output -- ./fuzzer \r\n \r\n![image](https://github.com/damus-io/nostrdb/assets/466878/d29e5db8-4bfc-4e4b-8e71-67ddfc4b6537)\r\n\r\n",
   2875       "reactions": {
   2876         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/reactions",
   2877         "total_count": 0,
   2878         "+1": 0,
   2879         "-1": 0,
   2880         "laugh": 0,
   2881         "hooray": 0,
   2882         "confused": 0,
   2883         "heart": 0,
   2884         "rocket": 0,
   2885         "eyes": 0
   2886       },
   2887       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/timeline",
   2888       "performed_via_github_app": null,
   2889       "state_reason": null
   2890     }
   2891   },
   2892   {
   2893     "issue": {
   2894       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15",
   2895       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2896       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/labels{/name}",
   2897       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/comments",
   2898       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/events",
   2899       "html_url": "https://github.com/damus-io/nostrdb/pull/15",
   2900       "id": 1878169050,
   2901       "node_id": "PR_kwDOJ9k5Is5ZYQGn",
   2902       "number": 15,
   2903       "title": "Create simple_fuzzer.c",
   2904       "user": {
   2905         "login": "geeknik",
   2906         "id": 466878,
   2907         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   2908         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   2909         "gravatar_id": "",
   2910         "url": "https://api.github.com/users/geeknik",
   2911         "html_url": "https://github.com/geeknik",
   2912         "followers_url": "https://api.github.com/users/geeknik/followers",
   2913         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   2914         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   2915         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   2916         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   2917         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   2918         "repos_url": "https://api.github.com/users/geeknik/repos",
   2919         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   2920         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   2921         "type": "User",
   2922         "site_admin": false
   2923       },
   2924       "labels": [],
   2925       "state": "closed",
   2926       "locked": false,
   2927       "assignee": null,
   2928       "assignees": [],
   2929       "milestone": null,
   2930       "comments": 1,
   2931       "created_at": "2023-09-01T23:32:54Z",
   2932       "updated_at": "2023-09-27T17:24:39Z",
   2933       "closed_at": "2023-09-27T17:24:35Z",
   2934       "author_association": "CONTRIBUTOR",
   2935       "active_lock_reason": null,
   2936       "draft": false,
   2937       "pull_request": {
   2938         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/15",
   2939         "html_url": "https://github.com/damus-io/nostrdb/pull/15",
   2940         "diff_url": "https://github.com/damus-io/nostrdb/pull/15.diff",
   2941         "patch_url": "https://github.com/damus-io/nostrdb/pull/15.patch",
   2942         "merged_at": null
   2943       },
   2944       "body": "simple and inefficient AFL fuzzer for nostrdb\r\nresponsible for finding\r\n 1x global buffer overflow\r\n 1x Floating Point Exception (div by zero)\r\n 1x Assertion failure\r\n \r\nHow to use it yourself:\r\n1. Install Clang 14+\r\n2. Install LLVM 14+\r\n3. Install AFL++\r\n4. Then...\r\n AFL_USE_ASAN=1 afl-clang-lto -flto=full -fsanitize=address -Wall -Wno-unused-function -Werror -O2 -g -Ideps/secp256k1/include -Ideps/lmdb -Ideps/flatcc/include fuzzer.c nostrdb.c sha256.c deps/flatcc/src/runtime/json_parser.c deps/flatcc/src/runtime/builder.c deps/flatcc/src/runtime/emitter.c deps/flatcc/src/runtime/refmap.c deps/lmdb/liblmdb.a deps/secp256k1/.libs/libsecp256k1.a -o fuzzer\r\n5. create an input directory drop some sort of starting corpus. i chose blns.txt because it rocks. \r\n6. afl-fuzz -i $input -o $output -- ./fuzzer \r\n \r\n![image](https://github.com/damus-io/nostrdb/assets/466878/d29e5db8-4bfc-4e4b-8e71-67ddfc4b6537)\r\n\r\n",
   2945       "reactions": {
   2946         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/reactions",
   2947         "total_count": 0,
   2948         "+1": 0,
   2949         "-1": 0,
   2950         "laugh": 0,
   2951         "hooray": 0,
   2952         "confused": 0,
   2953         "heart": 0,
   2954         "rocket": 0,
   2955         "eyes": 0
   2956       },
   2957       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/15/timeline",
   2958       "performed_via_github_app": null,
   2959       "state_reason": null
   2960     },
   2961     "comment": {
   2962       "user": "jb55",
   2963       "created_at": "2023-09-02T01:00:10Z",
   2964       "updated_at": "2023-09-02T01:00:10Z",
   2965       "body": "Hey! Few comments below.\n\nOn Fri, Sep 01, 2023 at 11:29:04PM +0000, geeknik wrote:\n>simple and inefficient AFL fuzzer for nostrdb\n>responsible for finding\n> 1x global buffer overflow\n> 1x Floating Point Exception (div by zero)\n> 1x Assertion failure\n>\n>Closes: https://github.com/damus-io/nostrdb/pull/15\n>---\n> fuzzer/simple_fuzzer.c | 35 +++++++++++++++++++++++++++++++++++\n> 1 file changed, 35 insertions(+)\n> create mode 100644 fuzzer/simple_fuzzer.c\n>\n>diff --git a/fuzzer/simple_fuzzer.c b/fuzzer/simple_fuzzer.c\n>new file mode 100644\n>index 0000000..f436aa1\n>--- /dev/null\n>+++ b/fuzzer/simple_fuzzer.c\n>\n>[..]\n> \n>+__AFL_FUZZ_INIT();\n>+\n>+int main(void) {\n>+    while (__AFL_LOOP(1000000)) {\n>+        unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;\n>+        size_t len = __AFL_FUZZ_TESTCASE_LEN;\n>+        struct ndb *db;\n>+        int init_result = ndb_init(&db, 1024, 1);\n\nThis opens and closes the DB 1,000,000 times. is this intended?\n\n>+        if (init_result != 1) {\n>+            fprintf(stderr, \"Failed to initialize nostrdb\\n\");\n>+            continue;\n>+        }\n>+        int result = ndb_process_event(db, (const char *)buf, len);\n>+        if (result == 0) {\n>+            if (len >= 32) {\n>+                struct ndb_note *note = ndb_get_note_by_id(db, buf);\n>+                if (note != NULL) {\n>+                }\n>+            }\n>+        } else {\n>+        }\n\nWhy only lookup after failure to process the event? Confused by this logic.\n\n>+        ndb_destroy(db);\n>+    }\n>+    return 0;\n>+}\n\nWe should probably have a Makefile entry for building this.\n"
   2966     }
   2967   },
   2968   {
   2969     "issue": {
   2970       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/14",
   2971       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   2972       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/labels{/name}",
   2973       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/comments",
   2974       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/events",
   2975       "html_url": "https://github.com/damus-io/nostrdb/pull/14",
   2976       "id": 1874256307,
   2977       "node_id": "PR_kwDOJ9k5Is5ZK80y",
   2978       "number": 14,
   2979       "title": "Update LICENSE",
   2980       "user": {
   2981         "login": "punterwantsawhalepass",
   2982         "id": 103547087,
   2983         "node_id": "U_kgDOBiwAzw",
   2984         "avatar_url": "https://avatars.githubusercontent.com/u/103547087?v=4",
   2985         "gravatar_id": "",
   2986         "url": "https://api.github.com/users/punterwantsawhalepass",
   2987         "html_url": "https://github.com/punterwantsawhalepass",
   2988         "followers_url": "https://api.github.com/users/punterwantsawhalepass/followers",
   2989         "following_url": "https://api.github.com/users/punterwantsawhalepass/following{/other_user}",
   2990         "gists_url": "https://api.github.com/users/punterwantsawhalepass/gists{/gist_id}",
   2991         "starred_url": "https://api.github.com/users/punterwantsawhalepass/starred{/owner}{/repo}",
   2992         "subscriptions_url": "https://api.github.com/users/punterwantsawhalepass/subscriptions",
   2993         "organizations_url": "https://api.github.com/users/punterwantsawhalepass/orgs",
   2994         "repos_url": "https://api.github.com/users/punterwantsawhalepass/repos",
   2995         "events_url": "https://api.github.com/users/punterwantsawhalepass/events{/privacy}",
   2996         "received_events_url": "https://api.github.com/users/punterwantsawhalepass/received_events",
   2997         "type": "User",
   2998         "site_admin": false
   2999       },
   3000       "labels": [],
   3001       "state": "closed",
   3002       "locked": false,
   3003       "assignee": null,
   3004       "assignees": [],
   3005       "milestone": null,
   3006       "comments": 0,
   3007       "created_at": "2023-08-30T19:34:40Z",
   3008       "updated_at": "2023-12-01T18:42:46Z",
   3009       "closed_at": "2023-12-01T18:42:46Z",
   3010       "author_association": "NONE",
   3011       "active_lock_reason": null,
   3012       "draft": false,
   3013       "pull_request": {
   3014         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/14",
   3015         "html_url": "https://github.com/damus-io/nostrdb/pull/14",
   3016         "diff_url": "https://github.com/damus-io/nostrdb/pull/14.diff",
   3017         "patch_url": "https://github.com/damus-io/nostrdb/pull/14.patch",
   3018         "merged_at": null
   3019       },
   3020       "body": null,
   3021       "reactions": {
   3022         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/reactions",
   3023         "total_count": 0,
   3024         "+1": 0,
   3025         "-1": 0,
   3026         "laugh": 0,
   3027         "hooray": 0,
   3028         "confused": 0,
   3029         "heart": 0,
   3030         "rocket": 0,
   3031         "eyes": 0
   3032       },
   3033       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/14/timeline",
   3034       "performed_via_github_app": null,
   3035       "state_reason": null
   3036     }
   3037   },
   3038   {
   3039     "issue": {
   3040       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13",
   3041       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3042       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/labels{/name}",
   3043       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/comments",
   3044       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/events",
   3045       "html_url": "https://github.com/damus-io/nostrdb/issues/13",
   3046       "id": 1856826372,
   3047       "node_id": "I_kwDOJ9k5Is5urOwE",
   3048       "number": 13,
   3049       "title": "arm64: bench-many-ingest fails",
   3050       "user": {
   3051         "login": "IngwiePhoenix",
   3052         "id": 2893716,
   3053         "node_id": "MDQ6VXNlcjI4OTM3MTY=",
   3054         "avatar_url": "https://avatars.githubusercontent.com/u/2893716?v=4",
   3055         "gravatar_id": "",
   3056         "url": "https://api.github.com/users/IngwiePhoenix",
   3057         "html_url": "https://github.com/IngwiePhoenix",
   3058         "followers_url": "https://api.github.com/users/IngwiePhoenix/followers",
   3059         "following_url": "https://api.github.com/users/IngwiePhoenix/following{/other_user}",
   3060         "gists_url": "https://api.github.com/users/IngwiePhoenix/gists{/gist_id}",
   3061         "starred_url": "https://api.github.com/users/IngwiePhoenix/starred{/owner}{/repo}",
   3062         "subscriptions_url": "https://api.github.com/users/IngwiePhoenix/subscriptions",
   3063         "organizations_url": "https://api.github.com/users/IngwiePhoenix/orgs",
   3064         "repos_url": "https://api.github.com/users/IngwiePhoenix/repos",
   3065         "events_url": "https://api.github.com/users/IngwiePhoenix/events{/privacy}",
   3066         "received_events_url": "https://api.github.com/users/IngwiePhoenix/received_events",
   3067         "type": "User",
   3068         "site_admin": false
   3069       },
   3070       "labels": [],
   3071       "state": "open",
   3072       "locked": false,
   3073       "assignee": null,
   3074       "assignees": [],
   3075       "milestone": null,
   3076       "comments": 1,
   3077       "created_at": "2023-08-18T14:33:08Z",
   3078       "updated_at": "2023-08-18T15:11:36Z",
   3079       "closed_at": null,
   3080       "author_association": "NONE",
   3081       "active_lock_reason": null,
   3082       "body": "This is the full output I get from GDB:\r\n\r\n```\r\nroot@FriendlyWrt /u/o/nostrdb (master)# ./bench-ingest-many\r\nfish: Job 1, './bench-ingest-many' terminated by signal SIGSEGV (Address boundary error)\r\nroot@FriendlyWrt /u/o/nostrdb (master) [SIGSEGV]# gdb ./bench-ingest-many\r\nGNU gdb (GDB) 11.2\r\nCopyright (C) 2022 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.\r\nType \"show copying\" and \"show warranty\" for details.\r\nThis GDB was configured as \"aarch64-openwrt-linux\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n<https://www.gnu.org/software/gdb/bugs/>.\r\nFind the GDB manual and other documentation resources online at:\r\n    <http://www.gnu.org/software/gdb/documentation/>.\r\n\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\"...\r\nReading symbols from ./bench-ingest-many...\r\n(gdb) r\r\nStarting program: /usb/opt/nostrdb/bench-ingest-many\r\n[New LWP 31045]\r\n[New LWP 31046]\r\n[New LWP 31047]\r\n\r\nThread 2 \"bench-ingest-ma\" received signal SIGSEGV, Segmentation fault.\r\n[Switching to LWP 31045]\r\nprot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n186             pthread_mutex_lock(&q->mutex);\r\n(gdb) bt\r\n#0  prot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n#1  0x0000000000404778 in ndb_writer_thread (data=0xfffff7ffff48) at nostrdb.c:569\r\n#2  0x0000fffff7f9f124 in ?? () from /lib/ld-musl-aarch64.so.1\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) q\r\n```\r\n\r\nI built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\r\n\r\nI am on OpenWrt, ARM64 (RK3588).\r\n\r\nIs there something I can do to further dig into this?\r\n\r\nThanks!",
   3083       "reactions": {
   3084         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/reactions",
   3085         "total_count": 0,
   3086         "+1": 0,
   3087         "-1": 0,
   3088         "laugh": 0,
   3089         "hooray": 0,
   3090         "confused": 0,
   3091         "heart": 0,
   3092         "rocket": 0,
   3093         "eyes": 0
   3094       },
   3095       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/timeline",
   3096       "performed_via_github_app": null,
   3097       "state_reason": null
   3098     }
   3099   },
   3100   {
   3101     "issue": {
   3102       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13",
   3103       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3104       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/labels{/name}",
   3105       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/comments",
   3106       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/events",
   3107       "html_url": "https://github.com/damus-io/nostrdb/issues/13",
   3108       "id": 1856826372,
   3109       "node_id": "I_kwDOJ9k5Is5urOwE",
   3110       "number": 13,
   3111       "title": "arm64: bench-many-ingest fails",
   3112       "user": {
   3113         "login": "IngwiePhoenix",
   3114         "id": 2893716,
   3115         "node_id": "MDQ6VXNlcjI4OTM3MTY=",
   3116         "avatar_url": "https://avatars.githubusercontent.com/u/2893716?v=4",
   3117         "gravatar_id": "",
   3118         "url": "https://api.github.com/users/IngwiePhoenix",
   3119         "html_url": "https://github.com/IngwiePhoenix",
   3120         "followers_url": "https://api.github.com/users/IngwiePhoenix/followers",
   3121         "following_url": "https://api.github.com/users/IngwiePhoenix/following{/other_user}",
   3122         "gists_url": "https://api.github.com/users/IngwiePhoenix/gists{/gist_id}",
   3123         "starred_url": "https://api.github.com/users/IngwiePhoenix/starred{/owner}{/repo}",
   3124         "subscriptions_url": "https://api.github.com/users/IngwiePhoenix/subscriptions",
   3125         "organizations_url": "https://api.github.com/users/IngwiePhoenix/orgs",
   3126         "repos_url": "https://api.github.com/users/IngwiePhoenix/repos",
   3127         "events_url": "https://api.github.com/users/IngwiePhoenix/events{/privacy}",
   3128         "received_events_url": "https://api.github.com/users/IngwiePhoenix/received_events",
   3129         "type": "User",
   3130         "site_admin": false
   3131       },
   3132       "labels": [],
   3133       "state": "open",
   3134       "locked": false,
   3135       "assignee": null,
   3136       "assignees": [],
   3137       "milestone": null,
   3138       "comments": 1,
   3139       "created_at": "2023-08-18T14:33:08Z",
   3140       "updated_at": "2023-08-18T15:11:36Z",
   3141       "closed_at": null,
   3142       "author_association": "NONE",
   3143       "active_lock_reason": null,
   3144       "body": "This is the full output I get from GDB:\r\n\r\n```\r\nroot@FriendlyWrt /u/o/nostrdb (master)# ./bench-ingest-many\r\nfish: Job 1, './bench-ingest-many' terminated by signal SIGSEGV (Address boundary error)\r\nroot@FriendlyWrt /u/o/nostrdb (master) [SIGSEGV]# gdb ./bench-ingest-many\r\nGNU gdb (GDB) 11.2\r\nCopyright (C) 2022 Free Software Foundation, Inc.\r\nLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\r\nThis is free software: you are free to change and redistribute it.\r\nThere is NO WARRANTY, to the extent permitted by law.\r\nType \"show copying\" and \"show warranty\" for details.\r\nThis GDB was configured as \"aarch64-openwrt-linux\".\r\nType \"show configuration\" for configuration details.\r\nFor bug reporting instructions, please see:\r\n<https://www.gnu.org/software/gdb/bugs/>.\r\nFind the GDB manual and other documentation resources online at:\r\n    <http://www.gnu.org/software/gdb/documentation/>.\r\n\r\nFor help, type \"help\".\r\nType \"apropos word\" to search for commands related to \"word\"...\r\nReading symbols from ./bench-ingest-many...\r\n(gdb) r\r\nStarting program: /usb/opt/nostrdb/bench-ingest-many\r\n[New LWP 31045]\r\n[New LWP 31046]\r\n[New LWP 31047]\r\n\r\nThread 2 \"bench-ingest-ma\" received signal SIGSEGV, Segmentation fault.\r\n[Switching to LWP 31045]\r\nprot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n186             pthread_mutex_lock(&q->mutex);\r\n(gdb) bt\r\n#0  prot_queue_pop_all (q=0xfffff7ffff68, q@entry=0xfffffffff1c0, dest=dest@entry=0xffff785c7a00, max_items=4096) at /usb/opt/nostrdb/protected_queue.h:186\r\n#1  0x0000000000404778 in ndb_writer_thread (data=0xfffff7ffff48) at nostrdb.c:569\r\n#2  0x0000fffff7f9f124 in ?? () from /lib/ld-musl-aarch64.so.1\r\nBacktrace stopped: previous frame identical to this frame (corrupt stack?)\r\n(gdb) q\r\n```\r\n\r\nI built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\r\n\r\nI am on OpenWrt, ARM64 (RK3588).\r\n\r\nIs there something I can do to further dig into this?\r\n\r\nThanks!",
   3145       "reactions": {
   3146         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/reactions",
   3147         "total_count": 0,
   3148         "+1": 0,
   3149         "-1": 0,
   3150         "laugh": 0,
   3151         "hooray": 0,
   3152         "confused": 0,
   3153         "heart": 0,
   3154         "rocket": 0,
   3155         "eyes": 0
   3156       },
   3157       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/13/timeline",
   3158       "performed_via_github_app": null,
   3159       "state_reason": null
   3160     },
   3161     "comment": {
   3162       "user": "jb55",
   3163       "created_at": "2023-08-18T15:11:36Z",
   3164       "updated_at": "2023-08-18T15:11:36Z",
   3165       "body": "On Fri, Aug 18, 2023 at 07:33:20AM -0700, Ingwie Phoenix wrote:\n>This is the full output I get from GDB:\n>I built with \"make\", then \"make bench-ingest-many\" to build the binary, from a fully fresh and just-pulled (`git rev-parse HEAD: 1b389a869f8836af4cf80f5fe4c884817dfe47c3`) repo.\n>\n>I am on OpenWrt, ARM64 (RK3588).\n>\n>Is there something I can do to further dig into this?\n\nnot sure, this codebase is very new and uses lots of untested\ncomponents. I haven't run into this one.\n"
   3166     }
   3167   },
   3168   {
   3169     "issue": {
   3170       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12",
   3171       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3172       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}",
   3173       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments",
   3174       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events",
   3175       "html_url": "https://github.com/damus-io/nostrdb/issues/12",
   3176       "id": 1848708029,
   3177       "node_id": "I_kwDOJ9k5Is5uMQu9",
   3178       "number": 12,
   3179       "title": "Assertion Failure in nostrdb.c at Line 611",
   3180       "user": {
   3181         "login": "geeknik",
   3182         "id": 466878,
   3183         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3184         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3185         "gravatar_id": "",
   3186         "url": "https://api.github.com/users/geeknik",
   3187         "html_url": "https://github.com/geeknik",
   3188         "followers_url": "https://api.github.com/users/geeknik/followers",
   3189         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3190         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3191         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3192         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3193         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3194         "repos_url": "https://api.github.com/users/geeknik/repos",
   3195         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3196         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3197         "type": "User",
   3198         "site_admin": false
   3199       },
   3200       "labels": [],
   3201       "state": "closed",
   3202       "locked": false,
   3203       "assignee": null,
   3204       "assignees": [],
   3205       "milestone": null,
   3206       "comments": 3,
   3207       "created_at": "2023-08-13T19:17:41Z",
   3208       "updated_at": "2023-12-01T18:40:24Z",
   3209       "closed_at": "2023-12-01T18:40:24Z",
   3210       "author_association": "CONTRIBUTOR",
   3211       "active_lock_reason": null,
   3212       "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```",
   3213       "reactions": {
   3214         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions",
   3215         "total_count": 0,
   3216         "+1": 0,
   3217         "-1": 0,
   3218         "laugh": 0,
   3219         "hooray": 0,
   3220         "confused": 0,
   3221         "heart": 0,
   3222         "rocket": 0,
   3223         "eyes": 0
   3224       },
   3225       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline",
   3226       "performed_via_github_app": null,
   3227       "state_reason": "completed"
   3228     }
   3229   },
   3230   {
   3231     "issue": {
   3232       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12",
   3233       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3234       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}",
   3235       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments",
   3236       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events",
   3237       "html_url": "https://github.com/damus-io/nostrdb/issues/12",
   3238       "id": 1848708029,
   3239       "node_id": "I_kwDOJ9k5Is5uMQu9",
   3240       "number": 12,
   3241       "title": "Assertion Failure in nostrdb.c at Line 611",
   3242       "user": {
   3243         "login": "geeknik",
   3244         "id": 466878,
   3245         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3246         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3247         "gravatar_id": "",
   3248         "url": "https://api.github.com/users/geeknik",
   3249         "html_url": "https://github.com/geeknik",
   3250         "followers_url": "https://api.github.com/users/geeknik/followers",
   3251         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3252         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3253         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3254         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3255         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3256         "repos_url": "https://api.github.com/users/geeknik/repos",
   3257         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3258         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3259         "type": "User",
   3260         "site_admin": false
   3261       },
   3262       "labels": [],
   3263       "state": "closed",
   3264       "locked": false,
   3265       "assignee": null,
   3266       "assignees": [],
   3267       "milestone": null,
   3268       "comments": 3,
   3269       "created_at": "2023-08-13T19:17:41Z",
   3270       "updated_at": "2023-12-01T18:40:24Z",
   3271       "closed_at": "2023-12-01T18:40:24Z",
   3272       "author_association": "CONTRIBUTOR",
   3273       "active_lock_reason": null,
   3274       "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```",
   3275       "reactions": {
   3276         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions",
   3277         "total_count": 0,
   3278         "+1": 0,
   3279         "-1": 0,
   3280         "laugh": 0,
   3281         "hooray": 0,
   3282         "confused": 0,
   3283         "heart": 0,
   3284         "rocket": 0,
   3285         "eyes": 0
   3286       },
   3287       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline",
   3288       "performed_via_github_app": null,
   3289       "state_reason": "completed"
   3290     },
   3291     "comment": {
   3292       "user": "jb55",
   3293       "created_at": "2023-08-16T17:22:18Z",
   3294       "updated_at": "2023-08-16T17:22:18Z",
   3295       "body": "On Sun, Aug 13, 2023 at 12:17:51PM -0700, geeknik wrote:\n>While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\n>\n>```\n>writer thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\n>Aborted\n>```\n>\n>**Input File (test0000):**\n>```\n>[\"EVENT\"\"\"{\"content\"\"created_at\":0\n>\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\n>```\n>\n>Encoded in Base64, the above input is:\n>```\n>WyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\n>NTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\n>InB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\n>NGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\n>ODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\n>ZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\n>```\n\nawesome! thanks. will add a test case for this\n"
   3296     }
   3297   },
   3298   {
   3299     "issue": {
   3300       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12",
   3301       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3302       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}",
   3303       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments",
   3304       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events",
   3305       "html_url": "https://github.com/damus-io/nostrdb/issues/12",
   3306       "id": 1848708029,
   3307       "node_id": "I_kwDOJ9k5Is5uMQu9",
   3308       "number": 12,
   3309       "title": "Assertion Failure in nostrdb.c at Line 611",
   3310       "user": {
   3311         "login": "geeknik",
   3312         "id": 466878,
   3313         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3314         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3315         "gravatar_id": "",
   3316         "url": "https://api.github.com/users/geeknik",
   3317         "html_url": "https://github.com/geeknik",
   3318         "followers_url": "https://api.github.com/users/geeknik/followers",
   3319         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3320         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3321         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3322         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3323         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3324         "repos_url": "https://api.github.com/users/geeknik/repos",
   3325         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3326         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3327         "type": "User",
   3328         "site_admin": false
   3329       },
   3330       "labels": [],
   3331       "state": "closed",
   3332       "locked": false,
   3333       "assignee": null,
   3334       "assignees": [],
   3335       "milestone": null,
   3336       "comments": 3,
   3337       "created_at": "2023-08-13T19:17:41Z",
   3338       "updated_at": "2023-12-01T18:40:24Z",
   3339       "closed_at": "2023-12-01T18:40:24Z",
   3340       "author_association": "CONTRIBUTOR",
   3341       "active_lock_reason": null,
   3342       "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```",
   3343       "reactions": {
   3344         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions",
   3345         "total_count": 0,
   3346         "+1": 0,
   3347         "-1": 0,
   3348         "laugh": 0,
   3349         "hooray": 0,
   3350         "confused": 0,
   3351         "heart": 0,
   3352         "rocket": 0,
   3353         "eyes": 0
   3354       },
   3355       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline",
   3356       "performed_via_github_app": null,
   3357       "state_reason": "completed"
   3358     },
   3359     "comment": {
   3360       "user": "jb55",
   3361       "created_at": "2023-08-21T21:38:44Z",
   3362       "updated_at": "2023-08-21T21:38:44Z",
   3363       "body": "I can't seem to reproduce this. I added a test below but it passes\nwithout a crash.\n\n From be06e3d1a622e436050a66df1b200f7441242c07 Mon Sep 17 00:00:00 2001\nFrom: William Casarin ***@***.***>\nDate: Mon, 21 Aug 2023 14:36:55 -0700\nSubject: [PATCH] test: add test for fuzz crash\n\nSigned-off-by: William Casarin ***@***.***>\n---\n  test.c | 9 +++++++++\n  1 file changed, 9 insertions(+)\n\ndiff --git a/test.c b/test.c\nindex 279e415a012d..7dffe3d9bbe5 100644\n--- a/test.c\n+++ b/test.c\n@@ -47,6 +47,14 @@ static void test_load_profiles()\n  \tfree(buf);\n  }\n  \n+static void test_fuzz_events() {\n+\tstruct ndb *ndb;\n+\tconst char *str = \"[\\\"EVENT\\\"\\\"\\\"{\\\"content\\\"\\\"created_at\\\":0 \\\"id\\\"\\\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\\\"\\\"kind\\\":0 \\\"pubkey\\\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \\\"sig\\\"\\\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153 ea93cf5\\\"\\\"tags\\\"[[][\\\"\\\"]]}]\";\n+\n+\tndb_init(&ndb, 1024 * 1024, 1);\n+\tndb_process_event(ndb, str, strlen(str));\n+\tndb_destroy(ndb);\n+}\n  \n  static void test_basic_event() {\n  \tunsigned char buf[512];\n@@ -538,6 +546,7 @@ int main(int argc, const char *argv[]) {\n  \ttest_tce_eose();\n  \ttest_tce_command_result_empty_msg();\n  \ttest_content_len();\n+\ttest_fuzz_events();\n  \n  \t// protected queue tests\n  \ttest_queue_init_pop_push();\n-- \n2.39.2 (Apple Git-144)\n\n\n"
   3364     }
   3365   },
   3366   {
   3367     "issue": {
   3368       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12",
   3369       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3370       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/labels{/name}",
   3371       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/comments",
   3372       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/events",
   3373       "html_url": "https://github.com/damus-io/nostrdb/issues/12",
   3374       "id": 1848708029,
   3375       "node_id": "I_kwDOJ9k5Is5uMQu9",
   3376       "number": 12,
   3377       "title": "Assertion Failure in nostrdb.c at Line 611",
   3378       "user": {
   3379         "login": "geeknik",
   3380         "id": 466878,
   3381         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3382         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3383         "gravatar_id": "",
   3384         "url": "https://api.github.com/users/geeknik",
   3385         "html_url": "https://github.com/geeknik",
   3386         "followers_url": "https://api.github.com/users/geeknik/followers",
   3387         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3388         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3389         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3390         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3391         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3392         "repos_url": "https://api.github.com/users/geeknik/repos",
   3393         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3394         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3395         "type": "User",
   3396         "site_admin": false
   3397       },
   3398       "labels": [],
   3399       "state": "closed",
   3400       "locked": false,
   3401       "assignee": null,
   3402       "assignees": [],
   3403       "milestone": null,
   3404       "comments": 3,
   3405       "created_at": "2023-08-13T19:17:41Z",
   3406       "updated_at": "2023-12-01T18:40:24Z",
   3407       "closed_at": "2023-12-01T18:40:24Z",
   3408       "author_association": "CONTRIBUTOR",
   3409       "active_lock_reason": null,
   3410       "body": "While executing the 'fuzzer' program, an assertion failed in the file 'nostrdb.c' at line 611. This occurred during a transaction commit on the writer thread, causing the program to abort.\r\n\r\n```\r\nwriter thread txn commit failedfuzzer: nostrdb.c:611: void *ndb_writer_thread(void *): Assertion `false' failed.\r\nAborted\r\n```\r\n\r\n**Input File (test0000):**\r\n```\r\n[\"EVENT\"\"\"{\"content\"\"created_at\":0\r\n\"id\"\"5086a8f76fe1da7fb56a25d1bebbafd70fca62e36a72c6263f900ff49b8f8604\"\"kind\":0 \"pubkey\":9c87f94bcbe2a837adc28d46c34eeaab8fc2e1cdf94fe19d4b99ae6a5e6acedc \"sig\"\"27374975879c94658412469cee6db73d538971d21a7b580726a407329a4cafc677fb56b946994cea59c3d9e118fef27e4e61de9d2c46ac0a65df14153ea93cf5\"\"tags\"[[][\"\"]]}]\r\n```\r\n\r\nEncoded in Base64, the above input is:\r\n```\r\nWyJFVkVOVCIiInsiY29udGVudCIiY3JlYXRlZF9hdCI6MAoiaWQiIjUwODZhOGY3NmZlMWRhN2Zi\r\nNTZhMjVkMWJlYmJhZmQ3MGZjYTYyZTM2YTcyYzYyNjNmOTAwZmY0OWI4Zjg2MDQiImtpbmQiOjAg\r\nInB1YmtleSI6OWM4N2Y5NGJjYmUyYTgzN2FkYzI4ZDQ2YzM0ZWVhYWI4ZmMyZTFjZGY5NGZlMTlk\r\nNGI5OWFlNmE1ZTZhY2VkYyAic2lnIiIyNzM3NDk3NTg3OWM5NDY1ODQxMjQ2OWNlZTZkYjczZDUz\r\nODk3MWQyMWE3YjU4MDcyNmE0MDczMjlhNGNhZmM2NzdmYjU2Yjk0Njk5NGNlYTU5YzNkOWUxMThm\r\nZWYyN2U0ZTYxZGU5ZDJjNDZhYzBhNjVkZjE0MTUzZWE5M2NmNSIidGFncyJbW11bIiJdXX1d\r\n```",
   3411       "reactions": {
   3412         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/reactions",
   3413         "total_count": 0,
   3414         "+1": 0,
   3415         "-1": 0,
   3416         "laugh": 0,
   3417         "hooray": 0,
   3418         "confused": 0,
   3419         "heart": 0,
   3420         "rocket": 0,
   3421         "eyes": 0
   3422       },
   3423       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/12/timeline",
   3424       "performed_via_github_app": null,
   3425       "state_reason": "completed"
   3426     },
   3427     "comment": {
   3428       "user": "geeknik",
   3429       "created_at": "2023-09-02T00:55:46Z",
   3430       "updated_at": "2023-09-02T00:55:46Z",
   3431       "body": "I guess we can ignore this for now, I can no longer reproduce it. #heisenbug"
   3432     }
   3433   },
   3434   {
   3435     "issue": {
   3436       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11",
   3437       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3438       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}",
   3439       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments",
   3440       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events",
   3441       "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3442       "id": 1848619150,
   3443       "node_id": "PR_kwDOJ9k5Is5X0kl7",
   3444       "number": 11,
   3445       "title": "Update hex.h",
   3446       "user": {
   3447         "login": "geeknik",
   3448         "id": 466878,
   3449         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3450         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3451         "gravatar_id": "",
   3452         "url": "https://api.github.com/users/geeknik",
   3453         "html_url": "https://github.com/geeknik",
   3454         "followers_url": "https://api.github.com/users/geeknik/followers",
   3455         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3456         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3457         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3458         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3459         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3460         "repos_url": "https://api.github.com/users/geeknik/repos",
   3461         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3462         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3463         "type": "User",
   3464         "site_admin": false
   3465       },
   3466       "labels": [],
   3467       "state": "open",
   3468       "locked": false,
   3469       "assignee": null,
   3470       "assignees": [],
   3471       "milestone": null,
   3472       "comments": 2,
   3473       "created_at": "2023-08-13T14:35:46Z",
   3474       "updated_at": "2023-12-04T22:39:25Z",
   3475       "closed_at": null,
   3476       "author_association": "CONTRIBUTOR",
   3477       "active_lock_reason": null,
   3478       "draft": false,
   3479       "pull_request": {
   3480         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11",
   3481         "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3482         "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff",
   3483         "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch",
   3484         "merged_at": null
   3485       },
   3486       "body": "Probably fixes #10 ",
   3487       "reactions": {
   3488         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions",
   3489         "total_count": 0,
   3490         "+1": 0,
   3491         "-1": 0,
   3492         "laugh": 0,
   3493         "hooray": 0,
   3494         "confused": 0,
   3495         "heart": 0,
   3496         "rocket": 0,
   3497         "eyes": 0
   3498       },
   3499       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline",
   3500       "performed_via_github_app": null,
   3501       "state_reason": null
   3502     }
   3503   },
   3504   {
   3505     "issue": {
   3506       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11",
   3507       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3508       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}",
   3509       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments",
   3510       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events",
   3511       "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3512       "id": 1848619150,
   3513       "node_id": "PR_kwDOJ9k5Is5X0kl7",
   3514       "number": 11,
   3515       "title": "Update hex.h",
   3516       "user": {
   3517         "login": "geeknik",
   3518         "id": 466878,
   3519         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3520         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3521         "gravatar_id": "",
   3522         "url": "https://api.github.com/users/geeknik",
   3523         "html_url": "https://github.com/geeknik",
   3524         "followers_url": "https://api.github.com/users/geeknik/followers",
   3525         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3526         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3527         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3528         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3529         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3530         "repos_url": "https://api.github.com/users/geeknik/repos",
   3531         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3532         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3533         "type": "User",
   3534         "site_admin": false
   3535       },
   3536       "labels": [],
   3537       "state": "open",
   3538       "locked": false,
   3539       "assignee": null,
   3540       "assignees": [],
   3541       "milestone": null,
   3542       "comments": 2,
   3543       "created_at": "2023-08-13T14:35:46Z",
   3544       "updated_at": "2023-12-04T22:39:25Z",
   3545       "closed_at": null,
   3546       "author_association": "CONTRIBUTOR",
   3547       "active_lock_reason": null,
   3548       "draft": false,
   3549       "pull_request": {
   3550         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11",
   3551         "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3552         "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff",
   3553         "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch",
   3554         "merged_at": null
   3555       },
   3556       "body": "Probably fixes #10 ",
   3557       "reactions": {
   3558         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions",
   3559         "total_count": 0,
   3560         "+1": 0,
   3561         "-1": 0,
   3562         "laugh": 0,
   3563         "hooray": 0,
   3564         "confused": 0,
   3565         "heart": 0,
   3566         "rocket": 0,
   3567         "eyes": 0
   3568       },
   3569       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline",
   3570       "performed_via_github_app": null,
   3571       "state_reason": null
   3572     },
   3573     "comment": {
   3574       "user": "geeknik",
   3575       "created_at": "2023-08-13T14:51:23Z",
   3576       "updated_at": "2023-08-13T14:51:23Z",
   3577       "body": "Confirmed locally this fixes the crashes I was seeing. 🤙🏻"
   3578     }
   3579   },
   3580   {
   3581     "issue": {
   3582       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11",
   3583       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3584       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/labels{/name}",
   3585       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/comments",
   3586       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/events",
   3587       "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3588       "id": 1848619150,
   3589       "node_id": "PR_kwDOJ9k5Is5X0kl7",
   3590       "number": 11,
   3591       "title": "Update hex.h",
   3592       "user": {
   3593         "login": "geeknik",
   3594         "id": 466878,
   3595         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3596         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3597         "gravatar_id": "",
   3598         "url": "https://api.github.com/users/geeknik",
   3599         "html_url": "https://github.com/geeknik",
   3600         "followers_url": "https://api.github.com/users/geeknik/followers",
   3601         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3602         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3603         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3604         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3605         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3606         "repos_url": "https://api.github.com/users/geeknik/repos",
   3607         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3608         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3609         "type": "User",
   3610         "site_admin": false
   3611       },
   3612       "labels": [],
   3613       "state": "open",
   3614       "locked": false,
   3615       "assignee": null,
   3616       "assignees": [],
   3617       "milestone": null,
   3618       "comments": 2,
   3619       "created_at": "2023-08-13T14:35:46Z",
   3620       "updated_at": "2023-12-04T22:39:25Z",
   3621       "closed_at": null,
   3622       "author_association": "CONTRIBUTOR",
   3623       "active_lock_reason": null,
   3624       "draft": false,
   3625       "pull_request": {
   3626         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/11",
   3627         "html_url": "https://github.com/damus-io/nostrdb/pull/11",
   3628         "diff_url": "https://github.com/damus-io/nostrdb/pull/11.diff",
   3629         "patch_url": "https://github.com/damus-io/nostrdb/pull/11.patch",
   3630         "merged_at": null
   3631       },
   3632       "body": "Probably fixes #10 ",
   3633       "reactions": {
   3634         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/reactions",
   3635         "total_count": 0,
   3636         "+1": 0,
   3637         "-1": 0,
   3638         "laugh": 0,
   3639         "hooray": 0,
   3640         "confused": 0,
   3641         "heart": 0,
   3642         "rocket": 0,
   3643         "eyes": 0
   3644       },
   3645       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/11/timeline",
   3646       "performed_via_github_app": null,
   3647       "state_reason": null
   3648     },
   3649     "comment": {
   3650       "user": "jb55",
   3651       "created_at": "2023-08-16T17:22:52Z",
   3652       "updated_at": "2023-08-16T17:22:52Z",
   3653       "body": "On Sun, Aug 13, 2023 at 07:51:33AM -0700, geeknik wrote:\n>Confirmed locally this fixes the crashes I was seeing. 🤙🏻\n\ngreat catch\n"
   3654     }
   3655   },
   3656   {
   3657     "issue": {
   3658       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/10",
   3659       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3660       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/labels{/name}",
   3661       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/comments",
   3662       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/events",
   3663       "html_url": "https://github.com/damus-io/nostrdb/issues/10",
   3664       "id": 1848617435,
   3665       "node_id": "I_kwDOJ9k5Is5uL6nb",
   3666       "number": 10,
   3667       "title": "Global buffer overflow in char_to_hex()",
   3668       "user": {
   3669         "login": "geeknik",
   3670         "id": 466878,
   3671         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3672         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3673         "gravatar_id": "",
   3674         "url": "https://api.github.com/users/geeknik",
   3675         "html_url": "https://github.com/geeknik",
   3676         "followers_url": "https://api.github.com/users/geeknik/followers",
   3677         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3678         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3679         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3680         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3681         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3682         "repos_url": "https://api.github.com/users/geeknik/repos",
   3683         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3684         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3685         "type": "User",
   3686         "site_admin": false
   3687       },
   3688       "labels": [],
   3689       "state": "closed",
   3690       "locked": false,
   3691       "assignee": null,
   3692       "assignees": [],
   3693       "milestone": null,
   3694       "comments": 0,
   3695       "created_at": "2023-08-13T14:31:14Z",
   3696       "updated_at": "2023-08-18T15:42:15Z",
   3697       "closed_at": "2023-08-18T15:42:15Z",
   3698       "author_association": "CONTRIBUTOR",
   3699       "active_lock_reason": null,
   3700       "body": "This error is occurring because the hex_table array is being accessed with an index that is outside its bounds.\r\n\r\n```\r\n==34840==ERROR: AddressSanitizer: global-buffer-overflow on address 0x00000038f47f at pc 0x000000512353 bp 0x7ff980f5b050 sp 0x7ff980f5b048\r\nREAD of size 1 at 0x00000038f47f thread T2\r\n    #0 0x512352 in char_to_hex /root/nostrdb/./hex.h:18:6\r\n    #1 0x512352 in hex_decode /root/nostrdb/./hex.h:31:37\r\n    #2 0x512352 in ndb_ingester_json_controller /root/nostrdb/nostrdb.c:317:2\r\n    #3 0x512cf1 in ndb_json_parser_parse /root/nostrdb/nostrdb.c:1046:11\r\n    #4 0x512cf1 in ndb_ws_event_from_json /root/nostrdb/nostrdb.c:1621:13\r\n    #5 0x500597 in ndb_ingester_process_event /root/nostrdb/nostrdb.c:386:3\r\n    #6 0x500597 in ndb_ingester_thread /root/nostrdb/nostrdb.c:673:9\r\n    #7 0x7ff98926c608 in start_thread /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8\r\n    #8 0x7ff989017132 in clone /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95\r\n\r\n0x00000038f47f is located 1 bytes to the left of global variable 'hex_table' defined in './hex.h:7:19' (0x38f480) of size 256\r\n0x00000038f47f is located 60 bytes to the right of global variable '<string literal>' defined in 'nostrdb.c:1091:48' (0x38f440) of size 3\r\n  '<string literal>' is ascii string '\\t'\r\nSUMMARY: AddressSanitizer: global-buffer-overflow /root/nostrdb/./hex.h:18:6 in char_to_hex\r\n```\r\n\r\n```\r\nstatic inline int char_to_hex(unsigned char *val, int c)\r\n{\r\n\tif (hex_table[(int)c] || c == '0') {\r\n\t\t*val = hex_table[c];\r\n\t\treturn 1;\r\n\t}\r\n\treturn 0;\r\n}\r\n```\r\n\r\nIf I'm reading the code correctly, `c` is being used as an index into `hex_table`, but there is no guarantee that `c` is within the valid range of indices for `hex_table`. Since `hex_table` has 256 elements, valid indices are in the range `[0, 255]`. If `c` is outside this range, it will result in undefined behavior, such as the buffer overflow indicated above.\r\n\r\nHere's a base64 representation of the bad data which triggers this:\r\n```\r\nImlkIiIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDD/MDAwMDAw\r\nMDAwMDAwMDAwMDAwIg==\r\n```\r\n",
   3701       "reactions": {
   3702         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/reactions",
   3703         "total_count": 0,
   3704         "+1": 0,
   3705         "-1": 0,
   3706         "laugh": 0,
   3707         "hooray": 0,
   3708         "confused": 0,
   3709         "heart": 0,
   3710         "rocket": 0,
   3711         "eyes": 0
   3712       },
   3713       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/10/timeline",
   3714       "performed_via_github_app": null,
   3715       "state_reason": "completed"
   3716     }
   3717   },
   3718   {
   3719     "issue": {
   3720       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9",
   3721       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3722       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}",
   3723       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments",
   3724       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events",
   3725       "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3726       "id": 1848332833,
   3727       "node_id": "PR_kwDOJ9k5Is5XzpO5",
   3728       "number": 9,
   3729       "title": "Update threadpool.h",
   3730       "user": {
   3731         "login": "geeknik",
   3732         "id": 466878,
   3733         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3734         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3735         "gravatar_id": "",
   3736         "url": "https://api.github.com/users/geeknik",
   3737         "html_url": "https://github.com/geeknik",
   3738         "followers_url": "https://api.github.com/users/geeknik/followers",
   3739         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3740         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3741         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3742         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3743         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3744         "repos_url": "https://api.github.com/users/geeknik/repos",
   3745         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3746         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3747         "type": "User",
   3748         "site_admin": false
   3749       },
   3750       "labels": [],
   3751       "state": "closed",
   3752       "locked": false,
   3753       "assignee": null,
   3754       "assignees": [],
   3755       "milestone": null,
   3756       "comments": 2,
   3757       "created_at": "2023-08-13T01:07:14Z",
   3758       "updated_at": "2023-12-01T22:04:04Z",
   3759       "closed_at": "2023-12-01T22:04:04Z",
   3760       "author_association": "CONTRIBUTOR",
   3761       "active_lock_reason": null,
   3762       "draft": false,
   3763       "pull_request": {
   3764         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9",
   3765         "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3766         "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff",
   3767         "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch",
   3768         "merged_at": null
   3769       },
   3770       "body": "Prevent creation of a thread pool with zero threads",
   3771       "reactions": {
   3772         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions",
   3773         "total_count": 0,
   3774         "+1": 0,
   3775         "-1": 0,
   3776         "laugh": 0,
   3777         "hooray": 0,
   3778         "confused": 0,
   3779         "heart": 0,
   3780         "rocket": 0,
   3781         "eyes": 0
   3782       },
   3783       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline",
   3784       "performed_via_github_app": null,
   3785       "state_reason": null
   3786     }
   3787   },
   3788   {
   3789     "issue": {
   3790       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9",
   3791       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3792       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}",
   3793       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments",
   3794       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events",
   3795       "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3796       "id": 1848332833,
   3797       "node_id": "PR_kwDOJ9k5Is5XzpO5",
   3798       "number": 9,
   3799       "title": "Update threadpool.h",
   3800       "user": {
   3801         "login": "geeknik",
   3802         "id": 466878,
   3803         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3804         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3805         "gravatar_id": "",
   3806         "url": "https://api.github.com/users/geeknik",
   3807         "html_url": "https://github.com/geeknik",
   3808         "followers_url": "https://api.github.com/users/geeknik/followers",
   3809         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3810         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3811         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3812         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3813         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3814         "repos_url": "https://api.github.com/users/geeknik/repos",
   3815         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3816         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3817         "type": "User",
   3818         "site_admin": false
   3819       },
   3820       "labels": [],
   3821       "state": "closed",
   3822       "locked": false,
   3823       "assignee": null,
   3824       "assignees": [],
   3825       "milestone": null,
   3826       "comments": 2,
   3827       "created_at": "2023-08-13T01:07:14Z",
   3828       "updated_at": "2023-12-01T22:04:04Z",
   3829       "closed_at": "2023-12-01T22:04:04Z",
   3830       "author_association": "CONTRIBUTOR",
   3831       "active_lock_reason": null,
   3832       "draft": false,
   3833       "pull_request": {
   3834         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9",
   3835         "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3836         "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff",
   3837         "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch",
   3838         "merged_at": null
   3839       },
   3840       "body": "Prevent creation of a thread pool with zero threads",
   3841       "reactions": {
   3842         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions",
   3843         "total_count": 0,
   3844         "+1": 0,
   3845         "-1": 0,
   3846         "laugh": 0,
   3847         "hooray": 0,
   3848         "confused": 0,
   3849         "heart": 0,
   3850         "rocket": 0,
   3851         "eyes": 0
   3852       },
   3853       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline",
   3854       "performed_via_github_app": null,
   3855       "state_reason": null
   3856     },
   3857     "comment": {
   3858       "user": "jb55",
   3859       "created_at": "2023-08-16T17:24:13Z",
   3860       "updated_at": "2023-08-16T17:24:13Z",
   3861       "body": "On Sat, Aug 12, 2023 at 06:07:26PM -0700, geeknik wrote:\n>Prevent creation of a thread pool with zero threads\n>You can view, comment on, or merge this pull request online at:\n\nmakes sense\n"
   3862     }
   3863   },
   3864   {
   3865     "issue": {
   3866       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9",
   3867       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3868       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/labels{/name}",
   3869       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/comments",
   3870       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/events",
   3871       "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3872       "id": 1848332833,
   3873       "node_id": "PR_kwDOJ9k5Is5XzpO5",
   3874       "number": 9,
   3875       "title": "Update threadpool.h",
   3876       "user": {
   3877         "login": "geeknik",
   3878         "id": 466878,
   3879         "node_id": "MDQ6VXNlcjQ2Njg3OA==",
   3880         "avatar_url": "https://avatars.githubusercontent.com/u/466878?v=4",
   3881         "gravatar_id": "",
   3882         "url": "https://api.github.com/users/geeknik",
   3883         "html_url": "https://github.com/geeknik",
   3884         "followers_url": "https://api.github.com/users/geeknik/followers",
   3885         "following_url": "https://api.github.com/users/geeknik/following{/other_user}",
   3886         "gists_url": "https://api.github.com/users/geeknik/gists{/gist_id}",
   3887         "starred_url": "https://api.github.com/users/geeknik/starred{/owner}{/repo}",
   3888         "subscriptions_url": "https://api.github.com/users/geeknik/subscriptions",
   3889         "organizations_url": "https://api.github.com/users/geeknik/orgs",
   3890         "repos_url": "https://api.github.com/users/geeknik/repos",
   3891         "events_url": "https://api.github.com/users/geeknik/events{/privacy}",
   3892         "received_events_url": "https://api.github.com/users/geeknik/received_events",
   3893         "type": "User",
   3894         "site_admin": false
   3895       },
   3896       "labels": [],
   3897       "state": "closed",
   3898       "locked": false,
   3899       "assignee": null,
   3900       "assignees": [],
   3901       "milestone": null,
   3902       "comments": 2,
   3903       "created_at": "2023-08-13T01:07:14Z",
   3904       "updated_at": "2023-12-01T22:04:04Z",
   3905       "closed_at": "2023-12-01T22:04:04Z",
   3906       "author_association": "CONTRIBUTOR",
   3907       "active_lock_reason": null,
   3908       "draft": false,
   3909       "pull_request": {
   3910         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/9",
   3911         "html_url": "https://github.com/damus-io/nostrdb/pull/9",
   3912         "diff_url": "https://github.com/damus-io/nostrdb/pull/9.diff",
   3913         "patch_url": "https://github.com/damus-io/nostrdb/pull/9.patch",
   3914         "merged_at": null
   3915       },
   3916       "body": "Prevent creation of a thread pool with zero threads",
   3917       "reactions": {
   3918         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/reactions",
   3919         "total_count": 0,
   3920         "+1": 0,
   3921         "-1": 0,
   3922         "laugh": 0,
   3923         "hooray": 0,
   3924         "confused": 0,
   3925         "heart": 0,
   3926         "rocket": 0,
   3927         "eyes": 0
   3928       },
   3929       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/9/timeline",
   3930       "performed_via_github_app": null,
   3931       "state_reason": null
   3932     },
   3933     "comment": {
   3934       "user": "geeknik",
   3935       "created_at": "2023-08-18T17:21:22Z",
   3936       "updated_at": "2023-08-18T17:21:22Z",
   3937       "body": "Interesting. The FPE (division by zero) error went away after I added my check. "
   3938     }
   3939   },
   3940   {
   3941     "issue": {
   3942       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/8",
   3943       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   3944       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/labels{/name}",
   3945       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/comments",
   3946       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/events",
   3947       "html_url": "https://github.com/damus-io/nostrdb/issues/8",
   3948       "id": 1842131935,
   3949       "node_id": "I_kwDOJ9k5Is5tzLPf",
   3950       "number": 8,
   3951       "title": "Threadpool",
   3952       "user": {
   3953         "login": "jb55",
   3954         "id": 45598,
   3955         "node_id": "MDQ6VXNlcjQ1NTk4",
   3956         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   3957         "gravatar_id": "",
   3958         "url": "https://api.github.com/users/jb55",
   3959         "html_url": "https://github.com/jb55",
   3960         "followers_url": "https://api.github.com/users/jb55/followers",
   3961         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   3962         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   3963         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   3964         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   3965         "organizations_url": "https://api.github.com/users/jb55/orgs",
   3966         "repos_url": "https://api.github.com/users/jb55/repos",
   3967         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   3968         "received_events_url": "https://api.github.com/users/jb55/received_events",
   3969         "type": "User",
   3970         "site_admin": false
   3971       },
   3972       "labels": [],
   3973       "state": "closed",
   3974       "locked": false,
   3975       "assignee": null,
   3976       "assignees": [],
   3977       "milestone": null,
   3978       "comments": 0,
   3979       "created_at": "2023-08-08T21:32:56Z",
   3980       "updated_at": "2023-08-10T15:04:37Z",
   3981       "closed_at": "2023-08-10T15:04:37Z",
   3982       "author_association": "CONTRIBUTOR",
   3983       "active_lock_reason": null,
   3984       "body": "ingester threadpool... why not! let's go fasttt",
   3985       "reactions": {
   3986         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/reactions",
   3987         "total_count": 0,
   3988         "+1": 0,
   3989         "-1": 0,
   3990         "laugh": 0,
   3991         "hooray": 0,
   3992         "confused": 0,
   3993         "heart": 0,
   3994         "rocket": 0,
   3995         "eyes": 0
   3996       },
   3997       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/8/timeline",
   3998       "performed_via_github_app": null,
   3999       "state_reason": "completed"
   4000     }
   4001   },
   4002   {
   4003     "issue": {
   4004       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/7",
   4005       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4006       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/labels{/name}",
   4007       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/comments",
   4008       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/events",
   4009       "html_url": "https://github.com/damus-io/nostrdb/issues/7",
   4010       "id": 1837247926,
   4011       "node_id": "I_kwDOJ9k5Is5tgi22",
   4012       "number": 7,
   4013       "title": "Initial LMDB integration",
   4014       "user": {
   4015         "login": "jb55",
   4016         "id": 45598,
   4017         "node_id": "MDQ6VXNlcjQ1NTk4",
   4018         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4019         "gravatar_id": "",
   4020         "url": "https://api.github.com/users/jb55",
   4021         "html_url": "https://github.com/jb55",
   4022         "followers_url": "https://api.github.com/users/jb55/followers",
   4023         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4024         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4025         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4026         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4027         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4028         "repos_url": "https://api.github.com/users/jb55/repos",
   4029         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4030         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4031         "type": "User",
   4032         "site_admin": false
   4033       },
   4034       "labels": [],
   4035       "state": "closed",
   4036       "locked": false,
   4037       "assignee": null,
   4038       "assignees": [],
   4039       "milestone": null,
   4040       "comments": 0,
   4041       "created_at": "2023-08-04T19:36:42Z",
   4042       "updated_at": "2023-08-04T19:38:24Z",
   4043       "closed_at": "2023-08-04T19:38:24Z",
   4044       "author_association": "CONTRIBUTOR",
   4045       "active_lock_reason": null,
   4046       "body": "\r\n```[tasklist]\r\n- [ ] #4 \r\n```",
   4047       "reactions": {
   4048         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/reactions",
   4049         "total_count": 0,
   4050         "+1": 0,
   4051         "-1": 0,
   4052         "laugh": 0,
   4053         "hooray": 0,
   4054         "confused": 0,
   4055         "heart": 0,
   4056         "rocket": 0,
   4057         "eyes": 0
   4058       },
   4059       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/7/timeline",
   4060       "performed_via_github_app": null,
   4061       "state_reason": "completed"
   4062     }
   4063   },
   4064   {
   4065     "issue": {
   4066       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6",
   4067       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4068       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/labels{/name}",
   4069       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/comments",
   4070       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/events",
   4071       "html_url": "https://github.com/damus-io/nostrdb/issues/6",
   4072       "id": 1837230169,
   4073       "node_id": "I_kwDOJ9k5Is5tgehZ",
   4074       "number": 6,
   4075       "title": "Clustered created_at indices",
   4076       "user": {
   4077         "login": "jb55",
   4078         "id": 45598,
   4079         "node_id": "MDQ6VXNlcjQ1NTk4",
   4080         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4081         "gravatar_id": "",
   4082         "url": "https://api.github.com/users/jb55",
   4083         "html_url": "https://github.com/jb55",
   4084         "followers_url": "https://api.github.com/users/jb55/followers",
   4085         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4086         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4087         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4088         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4089         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4090         "repos_url": "https://api.github.com/users/jb55/repos",
   4091         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4092         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4093         "type": "User",
   4094         "site_admin": false
   4095       },
   4096       "labels": [],
   4097       "state": "closed",
   4098       "locked": false,
   4099       "assignee": null,
   4100       "assignees": [],
   4101       "milestone": {
   4102         "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1",
   4103         "html_url": "https://github.com/damus-io/nostrdb/milestone/1",
   4104         "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels",
   4105         "id": 9744457,
   4106         "node_id": "MI_kwDOJ9k5Is4AlLBJ",
   4107         "number": 1,
   4108         "title": "Initial LMDB Database",
   4109         "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.",
   4110         "creator": {
   4111           "login": "jb55",
   4112           "id": 45598,
   4113           "node_id": "MDQ6VXNlcjQ1NTk4",
   4114           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4115           "gravatar_id": "",
   4116           "url": "https://api.github.com/users/jb55",
   4117           "html_url": "https://github.com/jb55",
   4118           "followers_url": "https://api.github.com/users/jb55/followers",
   4119           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4120           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4121           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4122           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4123           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4124           "repos_url": "https://api.github.com/users/jb55/repos",
   4125           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4126           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4127           "type": "User",
   4128           "site_admin": false
   4129         },
   4130         "open_issues": 0,
   4131         "closed_issues": 2,
   4132         "state": "open",
   4133         "created_at": "2023-08-04T19:16:58Z",
   4134         "updated_at": "2023-08-31T19:50:55Z",
   4135         "due_on": null,
   4136         "closed_at": null
   4137       },
   4138       "comments": 1,
   4139       "created_at": "2023-08-04T19:19:29Z",
   4140       "updated_at": "2023-08-31T19:50:56Z",
   4141       "closed_at": "2023-08-31T19:50:55Z",
   4142       "author_association": "CONTRIBUTOR",
   4143       "active_lock_reason": null,
   4144       "body": "For efficient since/until scans\r\n\r\nLMDB stores keys in an ordered fashion, so if we cluster keys like <created_at><id> and <id> then we can do quick lookups by date and id.",
   4145       "reactions": {
   4146         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/reactions",
   4147         "total_count": 0,
   4148         "+1": 0,
   4149         "-1": 0,
   4150         "laugh": 0,
   4151         "hooray": 0,
   4152         "confused": 0,
   4153         "heart": 0,
   4154         "rocket": 0,
   4155         "eyes": 0
   4156       },
   4157       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/timeline",
   4158       "performed_via_github_app": null,
   4159       "state_reason": "completed"
   4160     }
   4161   },
   4162   {
   4163     "issue": {
   4164       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6",
   4165       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4166       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/labels{/name}",
   4167       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/comments",
   4168       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/events",
   4169       "html_url": "https://github.com/damus-io/nostrdb/issues/6",
   4170       "id": 1837230169,
   4171       "node_id": "I_kwDOJ9k5Is5tgehZ",
   4172       "number": 6,
   4173       "title": "Clustered created_at indices",
   4174       "user": {
   4175         "login": "jb55",
   4176         "id": 45598,
   4177         "node_id": "MDQ6VXNlcjQ1NTk4",
   4178         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4179         "gravatar_id": "",
   4180         "url": "https://api.github.com/users/jb55",
   4181         "html_url": "https://github.com/jb55",
   4182         "followers_url": "https://api.github.com/users/jb55/followers",
   4183         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4184         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4185         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4186         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4187         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4188         "repos_url": "https://api.github.com/users/jb55/repos",
   4189         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4190         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4191         "type": "User",
   4192         "site_admin": false
   4193       },
   4194       "labels": [],
   4195       "state": "closed",
   4196       "locked": false,
   4197       "assignee": null,
   4198       "assignees": [],
   4199       "milestone": {
   4200         "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1",
   4201         "html_url": "https://github.com/damus-io/nostrdb/milestone/1",
   4202         "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels",
   4203         "id": 9744457,
   4204         "node_id": "MI_kwDOJ9k5Is4AlLBJ",
   4205         "number": 1,
   4206         "title": "Initial LMDB Database",
   4207         "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.",
   4208         "creator": {
   4209           "login": "jb55",
   4210           "id": 45598,
   4211           "node_id": "MDQ6VXNlcjQ1NTk4",
   4212           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4213           "gravatar_id": "",
   4214           "url": "https://api.github.com/users/jb55",
   4215           "html_url": "https://github.com/jb55",
   4216           "followers_url": "https://api.github.com/users/jb55/followers",
   4217           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4218           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4219           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4220           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4221           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4222           "repos_url": "https://api.github.com/users/jb55/repos",
   4223           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4224           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4225           "type": "User",
   4226           "site_admin": false
   4227         },
   4228         "open_issues": 0,
   4229         "closed_issues": 2,
   4230         "state": "open",
   4231         "created_at": "2023-08-04T19:16:58Z",
   4232         "updated_at": "2023-08-31T19:50:55Z",
   4233         "due_on": null,
   4234         "closed_at": null
   4235       },
   4236       "comments": 1,
   4237       "created_at": "2023-08-04T19:19:29Z",
   4238       "updated_at": "2023-08-31T19:50:56Z",
   4239       "closed_at": "2023-08-31T19:50:55Z",
   4240       "author_association": "CONTRIBUTOR",
   4241       "active_lock_reason": null,
   4242       "body": "For efficient since/until scans\r\n\r\nLMDB stores keys in an ordered fashion, so if we cluster keys like <created_at><id> and <id> then we can do quick lookups by date and id.",
   4243       "reactions": {
   4244         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/reactions",
   4245         "total_count": 0,
   4246         "+1": 0,
   4247         "-1": 0,
   4248         "laugh": 0,
   4249         "hooray": 0,
   4250         "confused": 0,
   4251         "heart": 0,
   4252         "rocket": 0,
   4253         "eyes": 0
   4254       },
   4255       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/6/timeline",
   4256       "performed_via_github_app": null,
   4257       "state_reason": "completed"
   4258     },
   4259     "comment": {
   4260       "user": "jb55",
   4261       "created_at": "2023-08-31T19:50:55Z",
   4262       "updated_at": "2023-08-31T19:50:55Z",
   4263       "body": "should be done now (this is the tsid thing)"
   4264     }
   4265   },
   4266   {
   4267     "issue": {
   4268       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/5",
   4269       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4270       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/labels{/name}",
   4271       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/comments",
   4272       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/events",
   4273       "html_url": "https://github.com/damus-io/nostrdb/issues/5",
   4274       "id": 1837220692,
   4275       "node_id": "I_kwDOJ9k5Is5tgcNU",
   4276       "number": 5,
   4277       "title": "Initial LMDB integration",
   4278       "user": {
   4279         "login": "jb55",
   4280         "id": 45598,
   4281         "node_id": "MDQ6VXNlcjQ1NTk4",
   4282         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4283         "gravatar_id": "",
   4284         "url": "https://api.github.com/users/jb55",
   4285         "html_url": "https://github.com/jb55",
   4286         "followers_url": "https://api.github.com/users/jb55/followers",
   4287         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4288         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4289         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4290         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4291         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4292         "repos_url": "https://api.github.com/users/jb55/repos",
   4293         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4294         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4295         "type": "User",
   4296         "site_admin": false
   4297       },
   4298       "labels": [],
   4299       "state": "closed",
   4300       "locked": false,
   4301       "assignee": null,
   4302       "assignees": [],
   4303       "milestone": null,
   4304       "comments": 0,
   4305       "created_at": "2023-08-04T19:09:42Z",
   4306       "updated_at": "2023-08-04T19:17:07Z",
   4307       "closed_at": "2023-08-04T19:17:07Z",
   4308       "author_association": "CONTRIBUTOR",
   4309       "active_lock_reason": null,
   4310       "body": "Setup `struct ndb` to hold db environment.\r\n\r\nInsert data\r\n\r\nGet data out\r\n\r\nyada yada",
   4311       "reactions": {
   4312         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/reactions",
   4313         "total_count": 0,
   4314         "+1": 0,
   4315         "-1": 0,
   4316         "laugh": 0,
   4317         "hooray": 0,
   4318         "confused": 0,
   4319         "heart": 0,
   4320         "rocket": 0,
   4321         "eyes": 0
   4322       },
   4323       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/5/timeline",
   4324       "performed_via_github_app": null,
   4325       "state_reason": "completed"
   4326     }
   4327   },
   4328   {
   4329     "issue": {
   4330       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4",
   4331       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4332       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/labels{/name}",
   4333       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/comments",
   4334       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/events",
   4335       "html_url": "https://github.com/damus-io/nostrdb/issues/4",
   4336       "id": 1837189285,
   4337       "node_id": "I_kwDOJ9k5Is5tgUil",
   4338       "number": 4,
   4339       "title": "Safe queue implementation",
   4340       "user": {
   4341         "login": "jb55",
   4342         "id": 45598,
   4343         "node_id": "MDQ6VXNlcjQ1NTk4",
   4344         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4345         "gravatar_id": "",
   4346         "url": "https://api.github.com/users/jb55",
   4347         "html_url": "https://github.com/jb55",
   4348         "followers_url": "https://api.github.com/users/jb55/followers",
   4349         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4350         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4351         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4352         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4353         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4354         "repos_url": "https://api.github.com/users/jb55/repos",
   4355         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4356         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4357         "type": "User",
   4358         "site_admin": false
   4359       },
   4360       "labels": [],
   4361       "state": "closed",
   4362       "locked": false,
   4363       "assignee": {
   4364         "login": "jb55",
   4365         "id": 45598,
   4366         "node_id": "MDQ6VXNlcjQ1NTk4",
   4367         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4368         "gravatar_id": "",
   4369         "url": "https://api.github.com/users/jb55",
   4370         "html_url": "https://github.com/jb55",
   4371         "followers_url": "https://api.github.com/users/jb55/followers",
   4372         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4373         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4374         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4375         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4376         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4377         "repos_url": "https://api.github.com/users/jb55/repos",
   4378         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4379         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4380         "type": "User",
   4381         "site_admin": false
   4382       },
   4383       "assignees": [
   4384         {
   4385           "login": "jb55",
   4386           "id": 45598,
   4387           "node_id": "MDQ6VXNlcjQ1NTk4",
   4388           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4389           "gravatar_id": "",
   4390           "url": "https://api.github.com/users/jb55",
   4391           "html_url": "https://github.com/jb55",
   4392           "followers_url": "https://api.github.com/users/jb55/followers",
   4393           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4394           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4395           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4396           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4397           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4398           "repos_url": "https://api.github.com/users/jb55/repos",
   4399           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4400           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4401           "type": "User",
   4402           "site_admin": false
   4403         }
   4404       ],
   4405       "milestone": {
   4406         "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1",
   4407         "html_url": "https://github.com/damus-io/nostrdb/milestone/1",
   4408         "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels",
   4409         "id": 9744457,
   4410         "node_id": "MI_kwDOJ9k5Is4AlLBJ",
   4411         "number": 1,
   4412         "title": "Initial LMDB Database",
   4413         "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.",
   4414         "creator": {
   4415           "login": "jb55",
   4416           "id": 45598,
   4417           "node_id": "MDQ6VXNlcjQ1NTk4",
   4418           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4419           "gravatar_id": "",
   4420           "url": "https://api.github.com/users/jb55",
   4421           "html_url": "https://github.com/jb55",
   4422           "followers_url": "https://api.github.com/users/jb55/followers",
   4423           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4424           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4425           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4426           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4427           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4428           "repos_url": "https://api.github.com/users/jb55/repos",
   4429           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4430           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4431           "type": "User",
   4432           "site_admin": false
   4433         },
   4434         "open_issues": 0,
   4435         "closed_issues": 2,
   4436         "state": "open",
   4437         "created_at": "2023-08-04T19:16:58Z",
   4438         "updated_at": "2023-08-31T19:50:55Z",
   4439         "due_on": null,
   4440         "closed_at": null
   4441       },
   4442       "comments": 1,
   4443       "created_at": "2023-08-04T18:38:53Z",
   4444       "updated_at": "2023-08-04T23:45:56Z",
   4445       "closed_at": "2023-08-04T23:45:55Z",
   4446       "author_association": "CONTRIBUTOR",
   4447       "active_lock_reason": null,
   4448       "body": "We're going to use the same parallellism/concurrency model as strfry, so let's build a protected queue in C",
   4449       "reactions": {
   4450         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/reactions",
   4451         "total_count": 0,
   4452         "+1": 0,
   4453         "-1": 0,
   4454         "laugh": 0,
   4455         "hooray": 0,
   4456         "confused": 0,
   4457         "heart": 0,
   4458         "rocket": 0,
   4459         "eyes": 0
   4460       },
   4461       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/timeline",
   4462       "performed_via_github_app": null,
   4463       "state_reason": "completed"
   4464     }
   4465   },
   4466   {
   4467     "issue": {
   4468       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4",
   4469       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4470       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/labels{/name}",
   4471       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/comments",
   4472       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/events",
   4473       "html_url": "https://github.com/damus-io/nostrdb/issues/4",
   4474       "id": 1837189285,
   4475       "node_id": "I_kwDOJ9k5Is5tgUil",
   4476       "number": 4,
   4477       "title": "Safe queue implementation",
   4478       "user": {
   4479         "login": "jb55",
   4480         "id": 45598,
   4481         "node_id": "MDQ6VXNlcjQ1NTk4",
   4482         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4483         "gravatar_id": "",
   4484         "url": "https://api.github.com/users/jb55",
   4485         "html_url": "https://github.com/jb55",
   4486         "followers_url": "https://api.github.com/users/jb55/followers",
   4487         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4488         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4489         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4490         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4491         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4492         "repos_url": "https://api.github.com/users/jb55/repos",
   4493         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4494         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4495         "type": "User",
   4496         "site_admin": false
   4497       },
   4498       "labels": [],
   4499       "state": "closed",
   4500       "locked": false,
   4501       "assignee": {
   4502         "login": "jb55",
   4503         "id": 45598,
   4504         "node_id": "MDQ6VXNlcjQ1NTk4",
   4505         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4506         "gravatar_id": "",
   4507         "url": "https://api.github.com/users/jb55",
   4508         "html_url": "https://github.com/jb55",
   4509         "followers_url": "https://api.github.com/users/jb55/followers",
   4510         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4511         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4512         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4513         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4514         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4515         "repos_url": "https://api.github.com/users/jb55/repos",
   4516         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4517         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4518         "type": "User",
   4519         "site_admin": false
   4520       },
   4521       "assignees": [
   4522         {
   4523           "login": "jb55",
   4524           "id": 45598,
   4525           "node_id": "MDQ6VXNlcjQ1NTk4",
   4526           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4527           "gravatar_id": "",
   4528           "url": "https://api.github.com/users/jb55",
   4529           "html_url": "https://github.com/jb55",
   4530           "followers_url": "https://api.github.com/users/jb55/followers",
   4531           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4532           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4533           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4534           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4535           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4536           "repos_url": "https://api.github.com/users/jb55/repos",
   4537           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4538           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4539           "type": "User",
   4540           "site_admin": false
   4541         }
   4542       ],
   4543       "milestone": {
   4544         "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1",
   4545         "html_url": "https://github.com/damus-io/nostrdb/milestone/1",
   4546         "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/1/labels",
   4547         "id": 9744457,
   4548         "node_id": "MI_kwDOJ9k5Is4AlLBJ",
   4549         "number": 1,
   4550         "title": "Initial LMDB Database",
   4551         "description": "The initial implementation of the nostrdb database. Implement LMDB and get some basic queries working.",
   4552         "creator": {
   4553           "login": "jb55",
   4554           "id": 45598,
   4555           "node_id": "MDQ6VXNlcjQ1NTk4",
   4556           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4557           "gravatar_id": "",
   4558           "url": "https://api.github.com/users/jb55",
   4559           "html_url": "https://github.com/jb55",
   4560           "followers_url": "https://api.github.com/users/jb55/followers",
   4561           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4562           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4563           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4564           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4565           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4566           "repos_url": "https://api.github.com/users/jb55/repos",
   4567           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4568           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4569           "type": "User",
   4570           "site_admin": false
   4571         },
   4572         "open_issues": 0,
   4573         "closed_issues": 2,
   4574         "state": "open",
   4575         "created_at": "2023-08-04T19:16:58Z",
   4576         "updated_at": "2023-08-31T19:50:55Z",
   4577         "due_on": null,
   4578         "closed_at": null
   4579       },
   4580       "comments": 1,
   4581       "created_at": "2023-08-04T18:38:53Z",
   4582       "updated_at": "2023-08-04T23:45:56Z",
   4583       "closed_at": "2023-08-04T23:45:55Z",
   4584       "author_association": "CONTRIBUTOR",
   4585       "active_lock_reason": null,
   4586       "body": "We're going to use the same parallellism/concurrency model as strfry, so let's build a protected queue in C",
   4587       "reactions": {
   4588         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/reactions",
   4589         "total_count": 0,
   4590         "+1": 0,
   4591         "-1": 0,
   4592         "laugh": 0,
   4593         "hooray": 0,
   4594         "confused": 0,
   4595         "heart": 0,
   4596         "rocket": 0,
   4597         "eyes": 0
   4598       },
   4599       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/4/timeline",
   4600       "performed_via_github_app": null,
   4601       "state_reason": "completed"
   4602     },
   4603     "comment": {
   4604       "user": "jb55",
   4605       "created_at": "2023-08-04T23:45:55Z",
   4606       "updated_at": "2023-08-04T23:45:55Z",
   4607       "body": "804df0bdf801c583e2f935361ab18edfb4f5261a"
   4608     }
   4609   },
   4610   {
   4611     "issue": {
   4612       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/3",
   4613       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4614       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/labels{/name}",
   4615       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/comments",
   4616       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/events",
   4617       "html_url": "https://github.com/damus-io/nostrdb/issues/3",
   4618       "id": 1828766007,
   4619       "node_id": "I_kwDOJ9k5Is5tAME3",
   4620       "number": 3,
   4621       "title": "Negentropy sync",
   4622       "user": {
   4623         "login": "jb55",
   4624         "id": 45598,
   4625         "node_id": "MDQ6VXNlcjQ1NTk4",
   4626         "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4627         "gravatar_id": "",
   4628         "url": "https://api.github.com/users/jb55",
   4629         "html_url": "https://github.com/jb55",
   4630         "followers_url": "https://api.github.com/users/jb55/followers",
   4631         "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4632         "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4633         "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4634         "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4635         "organizations_url": "https://api.github.com/users/jb55/orgs",
   4636         "repos_url": "https://api.github.com/users/jb55/repos",
   4637         "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4638         "received_events_url": "https://api.github.com/users/jb55/received_events",
   4639         "type": "User",
   4640         "site_admin": false
   4641       },
   4642       "labels": [],
   4643       "state": "open",
   4644       "locked": false,
   4645       "assignee": null,
   4646       "assignees": [],
   4647       "milestone": {
   4648         "url": "https://api.github.com/repos/damus-io/nostrdb/milestones/2",
   4649         "html_url": "https://github.com/damus-io/nostrdb/milestone/2",
   4650         "labels_url": "https://api.github.com/repos/damus-io/nostrdb/milestones/2/labels",
   4651         "id": 9744460,
   4652         "node_id": "MI_kwDOJ9k5Is4AlLBM",
   4653         "number": 2,
   4654         "title": "Negentropy",
   4655         "description": "",
   4656         "creator": {
   4657           "login": "jb55",
   4658           "id": 45598,
   4659           "node_id": "MDQ6VXNlcjQ1NTk4",
   4660           "avatar_url": "https://avatars.githubusercontent.com/u/45598?v=4",
   4661           "gravatar_id": "",
   4662           "url": "https://api.github.com/users/jb55",
   4663           "html_url": "https://github.com/jb55",
   4664           "followers_url": "https://api.github.com/users/jb55/followers",
   4665           "following_url": "https://api.github.com/users/jb55/following{/other_user}",
   4666           "gists_url": "https://api.github.com/users/jb55/gists{/gist_id}",
   4667           "starred_url": "https://api.github.com/users/jb55/starred{/owner}{/repo}",
   4668           "subscriptions_url": "https://api.github.com/users/jb55/subscriptions",
   4669           "organizations_url": "https://api.github.com/users/jb55/orgs",
   4670           "repos_url": "https://api.github.com/users/jb55/repos",
   4671           "events_url": "https://api.github.com/users/jb55/events{/privacy}",
   4672           "received_events_url": "https://api.github.com/users/jb55/received_events",
   4673           "type": "User",
   4674           "site_admin": false
   4675         },
   4676         "open_issues": 1,
   4677         "closed_issues": 0,
   4678         "state": "open",
   4679         "created_at": "2023-08-04T19:17:35Z",
   4680         "updated_at": "2023-08-04T19:17:42Z",
   4681         "due_on": null,
   4682         "closed_at": null
   4683       },
   4684       "comments": 0,
   4685       "created_at": "2023-07-31T09:20:56Z",
   4686       "updated_at": "2023-08-04T19:34:58Z",
   4687       "closed_at": null,
   4688       "author_association": "CONTRIBUTOR",
   4689       "active_lock_reason": null,
   4690       "body": "Implement negentropy so that we have efficient queries with strfry instances\r\n\r\n```[tasklist]\r\n- [ ] Research\r\n```",
   4691       "reactions": {
   4692         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/reactions",
   4693         "total_count": 1,
   4694         "+1": 0,
   4695         "-1": 0,
   4696         "laugh": 0,
   4697         "hooray": 0,
   4698         "confused": 0,
   4699         "heart": 0,
   4700         "rocket": 1,
   4701         "eyes": 0
   4702       },
   4703       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/3/timeline",
   4704       "performed_via_github_app": null,
   4705       "state_reason": null
   4706     }
   4707   },
   4708   {
   4709     "issue": {
   4710       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2",
   4711       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4712       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}",
   4713       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments",
   4714       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events",
   4715       "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4716       "id": 1823339429,
   4717       "node_id": "PR_kwDOJ9k5Is5Wfdqi",
   4718       "number": 2,
   4719       "title": "Add secp256k1 as dependency library",
   4720       "user": {
   4721         "login": "pedro-vicente",
   4722         "id": 6119070,
   4723         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   4724         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   4725         "gravatar_id": "",
   4726         "url": "https://api.github.com/users/pedro-vicente",
   4727         "html_url": "https://github.com/pedro-vicente",
   4728         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   4729         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   4730         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   4731         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   4732         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   4733         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   4734         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   4735         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   4736         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   4737         "type": "User",
   4738         "site_admin": false
   4739       },
   4740       "labels": [],
   4741       "state": "closed",
   4742       "locked": false,
   4743       "assignee": null,
   4744       "assignees": [],
   4745       "milestone": null,
   4746       "comments": 4,
   4747       "created_at": "2023-07-26T23:12:40Z",
   4748       "updated_at": "2024-03-18T06:00:46Z",
   4749       "closed_at": "2024-03-18T06:00:46Z",
   4750       "author_association": "CONTRIBUTOR",
   4751       "active_lock_reason": null,
   4752       "draft": false,
   4753       "pull_request": {
   4754         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2",
   4755         "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4756         "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff",
   4757         "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch",
   4758         "merged_at": null
   4759       },
   4760       "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n",
   4761       "reactions": {
   4762         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions",
   4763         "total_count": 0,
   4764         "+1": 0,
   4765         "-1": 0,
   4766         "laugh": 0,
   4767         "hooray": 0,
   4768         "confused": 0,
   4769         "heart": 0,
   4770         "rocket": 0,
   4771         "eyes": 0
   4772       },
   4773       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline",
   4774       "performed_via_github_app": null,
   4775       "state_reason": null
   4776     }
   4777   },
   4778   {
   4779     "issue": {
   4780       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2",
   4781       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4782       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}",
   4783       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments",
   4784       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events",
   4785       "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4786       "id": 1823339429,
   4787       "node_id": "PR_kwDOJ9k5Is5Wfdqi",
   4788       "number": 2,
   4789       "title": "Add secp256k1 as dependency library",
   4790       "user": {
   4791         "login": "pedro-vicente",
   4792         "id": 6119070,
   4793         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   4794         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   4795         "gravatar_id": "",
   4796         "url": "https://api.github.com/users/pedro-vicente",
   4797         "html_url": "https://github.com/pedro-vicente",
   4798         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   4799         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   4800         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   4801         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   4802         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   4803         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   4804         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   4805         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   4806         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   4807         "type": "User",
   4808         "site_admin": false
   4809       },
   4810       "labels": [],
   4811       "state": "closed",
   4812       "locked": false,
   4813       "assignee": null,
   4814       "assignees": [],
   4815       "milestone": null,
   4816       "comments": 4,
   4817       "created_at": "2023-07-26T23:12:40Z",
   4818       "updated_at": "2024-03-18T06:00:46Z",
   4819       "closed_at": "2024-03-18T06:00:46Z",
   4820       "author_association": "CONTRIBUTOR",
   4821       "active_lock_reason": null,
   4822       "draft": false,
   4823       "pull_request": {
   4824         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2",
   4825         "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4826         "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff",
   4827         "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch",
   4828         "merged_at": null
   4829       },
   4830       "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n",
   4831       "reactions": {
   4832         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions",
   4833         "total_count": 0,
   4834         "+1": 0,
   4835         "-1": 0,
   4836         "laugh": 0,
   4837         "hooray": 0,
   4838         "confused": 0,
   4839         "heart": 0,
   4840         "rocket": 0,
   4841         "eyes": 0
   4842       },
   4843       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline",
   4844       "performed_via_github_app": null,
   4845       "state_reason": null
   4846     },
   4847     "comment": {
   4848       "user": "jb55",
   4849       "created_at": "2023-07-26T23:21:45Z",
   4850       "updated_at": "2023-07-26T23:21:45Z",
   4851       "body": "great! thank you"
   4852     }
   4853   },
   4854   {
   4855     "issue": {
   4856       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2",
   4857       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4858       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}",
   4859       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments",
   4860       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events",
   4861       "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4862       "id": 1823339429,
   4863       "node_id": "PR_kwDOJ9k5Is5Wfdqi",
   4864       "number": 2,
   4865       "title": "Add secp256k1 as dependency library",
   4866       "user": {
   4867         "login": "pedro-vicente",
   4868         "id": 6119070,
   4869         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   4870         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   4871         "gravatar_id": "",
   4872         "url": "https://api.github.com/users/pedro-vicente",
   4873         "html_url": "https://github.com/pedro-vicente",
   4874         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   4875         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   4876         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   4877         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   4878         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   4879         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   4880         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   4881         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   4882         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   4883         "type": "User",
   4884         "site_admin": false
   4885       },
   4886       "labels": [],
   4887       "state": "closed",
   4888       "locked": false,
   4889       "assignee": null,
   4890       "assignees": [],
   4891       "milestone": null,
   4892       "comments": 4,
   4893       "created_at": "2023-07-26T23:12:40Z",
   4894       "updated_at": "2024-03-18T06:00:46Z",
   4895       "closed_at": "2024-03-18T06:00:46Z",
   4896       "author_association": "CONTRIBUTOR",
   4897       "active_lock_reason": null,
   4898       "draft": false,
   4899       "pull_request": {
   4900         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2",
   4901         "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4902         "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff",
   4903         "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch",
   4904         "merged_at": null
   4905       },
   4906       "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n",
   4907       "reactions": {
   4908         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions",
   4909         "total_count": 0,
   4910         "+1": 0,
   4911         "-1": 0,
   4912         "laugh": 0,
   4913         "hooray": 0,
   4914         "confused": 0,
   4915         "heart": 0,
   4916         "rocket": 0,
   4917         "eyes": 0
   4918       },
   4919       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline",
   4920       "performed_via_github_app": null,
   4921       "state_reason": null
   4922     },
   4923     "comment": {
   4924       "user": "pedro-vicente",
   4925       "created_at": "2023-07-27T16:43:37Z",
   4926       "updated_at": "2023-07-27T16:43:37Z",
   4927       "body": "The cmake usage is\r\n\r\n```\r\ncmake -S . -B build \r\ncd build\r\ncmake --build .\r\n```\r\n\r\nand this builds target 'configurator' needed to generate 'config.h'\r\n\r\n```\r\nConsolidate compiler generated dependencies of target configurator\r\n[  4%] Linking C executable configurator\r\n```\r\n\r\n\r\nBut for some reason, on Mac, this target is not built\r\nSo, a solution , is to call it manually , like this\r\n\r\n\r\n```\r\ncmake -S . -B build \r\ncd build\r\ncmake --build . --target configurator\r\ncmake --build .\r\n```\r\n\r\nThis could be put on a README.md file "
   4928     }
   4929   },
   4930   {
   4931     "issue": {
   4932       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2",
   4933       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   4934       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}",
   4935       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments",
   4936       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events",
   4937       "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4938       "id": 1823339429,
   4939       "node_id": "PR_kwDOJ9k5Is5Wfdqi",
   4940       "number": 2,
   4941       "title": "Add secp256k1 as dependency library",
   4942       "user": {
   4943         "login": "pedro-vicente",
   4944         "id": 6119070,
   4945         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   4946         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   4947         "gravatar_id": "",
   4948         "url": "https://api.github.com/users/pedro-vicente",
   4949         "html_url": "https://github.com/pedro-vicente",
   4950         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   4951         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   4952         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   4953         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   4954         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   4955         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   4956         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   4957         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   4958         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   4959         "type": "User",
   4960         "site_admin": false
   4961       },
   4962       "labels": [],
   4963       "state": "closed",
   4964       "locked": false,
   4965       "assignee": null,
   4966       "assignees": [],
   4967       "milestone": null,
   4968       "comments": 4,
   4969       "created_at": "2023-07-26T23:12:40Z",
   4970       "updated_at": "2024-03-18T06:00:46Z",
   4971       "closed_at": "2024-03-18T06:00:46Z",
   4972       "author_association": "CONTRIBUTOR",
   4973       "active_lock_reason": null,
   4974       "draft": false,
   4975       "pull_request": {
   4976         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2",
   4977         "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   4978         "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff",
   4979         "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch",
   4980         "merged_at": null
   4981       },
   4982       "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n",
   4983       "reactions": {
   4984         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions",
   4985         "total_count": 0,
   4986         "+1": 0,
   4987         "-1": 0,
   4988         "laugh": 0,
   4989         "hooray": 0,
   4990         "confused": 0,
   4991         "heart": 0,
   4992         "rocket": 0,
   4993         "eyes": 0
   4994       },
   4995       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline",
   4996       "performed_via_github_app": null,
   4997       "state_reason": null
   4998     },
   4999     "comment": {
   5000       "user": "jb55",
   5001       "created_at": "2023-08-21T21:49:29Z",
   5002       "updated_at": "2023-08-21T21:49:29Z",
   5003       "body": "Looks like all these patches touch the same file, let's just squash them together\n\nAlso, I added LMDB, that might need support as well.\n\n\nOn Wed, Jul 26, 2023 at 09:17:58PM -0400, pvn wrote:\n>\n>Closes: https://github.com/damus-io/nostrdb/pull/2\n>---\n> CMakeLists.txt | 2 +-\n> 1 file changed, 1 insertion(+), 1 deletion(-)\n>\n>diff --git a/CMakeLists.txt b/CMakeLists.txt\n>index a65265b..35c2d8d 100644\n>--- a/CMakeLists.txt\n>+++ b/CMakeLists.txt\n>@@ -1,5 +1,6 @@\n> # cmake -S . -B build\n> # cd build\n>+# cmake --build . --target configurator\n> # cmake --build .\n> # Pedro Vicente\n>\n>@@ -13,7 +14,6 @@ project (nostrdb C)\n>\n> set(CMAKE_FIND_LIBRARY_SUFFIXES \".a\")\n> set(BUILD_SHARED_LIBS OFF)\n>-set(CMAKE_EXE_LINKER_FLAGS \"-static\")\n>\n> include_directories(${CMAKE_SOURCE_DIR}/deps/secp256k1/include)\n> add_subdirectory(${CMAKE_SOURCE_DIR}/deps/secp256k1)\n"
   5004     }
   5005   },
   5006   {
   5007     "issue": {
   5008       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2",
   5009       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   5010       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/labels{/name}",
   5011       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/comments",
   5012       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/events",
   5013       "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   5014       "id": 1823339429,
   5015       "node_id": "PR_kwDOJ9k5Is5Wfdqi",
   5016       "number": 2,
   5017       "title": "Add secp256k1 as dependency library",
   5018       "user": {
   5019         "login": "pedro-vicente",
   5020         "id": 6119070,
   5021         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   5022         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   5023         "gravatar_id": "",
   5024         "url": "https://api.github.com/users/pedro-vicente",
   5025         "html_url": "https://github.com/pedro-vicente",
   5026         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   5027         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   5028         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   5029         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   5030         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   5031         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   5032         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   5033         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   5034         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   5035         "type": "User",
   5036         "site_admin": false
   5037       },
   5038       "labels": [],
   5039       "state": "closed",
   5040       "locked": false,
   5041       "assignee": null,
   5042       "assignees": [],
   5043       "milestone": null,
   5044       "comments": 4,
   5045       "created_at": "2023-07-26T23:12:40Z",
   5046       "updated_at": "2024-03-18T06:00:46Z",
   5047       "closed_at": "2024-03-18T06:00:46Z",
   5048       "author_association": "CONTRIBUTOR",
   5049       "active_lock_reason": null,
   5050       "draft": false,
   5051       "pull_request": {
   5052         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/2",
   5053         "html_url": "https://github.com/damus-io/nostrdb/pull/2",
   5054         "diff_url": "https://github.com/damus-io/nostrdb/pull/2.diff",
   5055         "patch_url": "https://github.com/damus-io/nostrdb/pull/2.patch",
   5056         "merged_at": null
   5057       },
   5058       "body": "Add secp256k1 as dependency library\r\nAdd target configurator to generate 'config.h'\r\nNote: renamed target 'bench' to 'benchmark', to avoid conflict with target 'bench' of secp256k1\r\n\r\n",
   5059       "reactions": {
   5060         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/reactions",
   5061         "total_count": 0,
   5062         "+1": 0,
   5063         "-1": 0,
   5064         "laugh": 0,
   5065         "hooray": 0,
   5066         "confused": 0,
   5067         "heart": 0,
   5068         "rocket": 0,
   5069         "eyes": 0
   5070       },
   5071       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/2/timeline",
   5072       "performed_via_github_app": null,
   5073       "state_reason": null
   5074     },
   5075     "comment": {
   5076       "user": "pedro-vicente",
   5077       "created_at": "2023-08-22T05:49:43Z",
   5078       "updated_at": "2023-08-22T05:49:43Z",
   5079       "body": ">>> Looks like all these patches touch the same file, let's just squash them together\r\n\r\nYes, it is only 1 file for now, CMakeLists.txt, it seems I did changes in several commits. \r\nI am not that good with GitHub , it seems if you merge the pull request, that's all that is needed to merge.\r\n\r\nOr do I have to do something on my end?\r\n\r\nThanks\r\n"
   5080     }
   5081   },
   5082   {
   5083     "issue": {
   5084       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1",
   5085       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   5086       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/labels{/name}",
   5087       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/comments",
   5088       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/events",
   5089       "html_url": "https://github.com/damus-io/nostrdb/pull/1",
   5090       "id": 1819199828,
   5091       "node_id": "PR_kwDOJ9k5Is5WRe5B",
   5092       "number": 1,
   5093       "title": "Add a CMake script. Tested in Ubuntu Linux 22.04",
   5094       "user": {
   5095         "login": "pedro-vicente",
   5096         "id": 6119070,
   5097         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   5098         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   5099         "gravatar_id": "",
   5100         "url": "https://api.github.com/users/pedro-vicente",
   5101         "html_url": "https://github.com/pedro-vicente",
   5102         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   5103         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   5104         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   5105         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   5106         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   5107         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   5108         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   5109         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   5110         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   5111         "type": "User",
   5112         "site_admin": false
   5113       },
   5114       "labels": [],
   5115       "state": "closed",
   5116       "locked": false,
   5117       "assignee": null,
   5118       "assignees": [],
   5119       "milestone": null,
   5120       "comments": 1,
   5121       "created_at": "2023-07-24T21:51:35Z",
   5122       "updated_at": "2023-07-25T16:19:23Z",
   5123       "closed_at": "2023-07-25T16:19:22Z",
   5124       "author_association": "CONTRIBUTOR",
   5125       "active_lock_reason": null,
   5126       "draft": false,
   5127       "pull_request": {
   5128         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/1",
   5129         "html_url": "https://github.com/damus-io/nostrdb/pull/1",
   5130         "diff_url": "https://github.com/damus-io/nostrdb/pull/1.diff",
   5131         "patch_url": "https://github.com/damus-io/nostrdb/pull/1.patch",
   5132         "merged_at": null
   5133       },
   5134       "body": null,
   5135       "reactions": {
   5136         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/reactions",
   5137         "total_count": 0,
   5138         "+1": 0,
   5139         "-1": 0,
   5140         "laugh": 0,
   5141         "hooray": 0,
   5142         "confused": 0,
   5143         "heart": 0,
   5144         "rocket": 0,
   5145         "eyes": 0
   5146       },
   5147       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/timeline",
   5148       "performed_via_github_app": null,
   5149       "state_reason": null
   5150     }
   5151   },
   5152   {
   5153     "issue": {
   5154       "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1",
   5155       "repository_url": "https://api.github.com/repos/damus-io/nostrdb",
   5156       "labels_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/labels{/name}",
   5157       "comments_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/comments",
   5158       "events_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/events",
   5159       "html_url": "https://github.com/damus-io/nostrdb/pull/1",
   5160       "id": 1819199828,
   5161       "node_id": "PR_kwDOJ9k5Is5WRe5B",
   5162       "number": 1,
   5163       "title": "Add a CMake script. Tested in Ubuntu Linux 22.04",
   5164       "user": {
   5165         "login": "pedro-vicente",
   5166         "id": 6119070,
   5167         "node_id": "MDQ6VXNlcjYxMTkwNzA=",
   5168         "avatar_url": "https://avatars.githubusercontent.com/u/6119070?v=4",
   5169         "gravatar_id": "",
   5170         "url": "https://api.github.com/users/pedro-vicente",
   5171         "html_url": "https://github.com/pedro-vicente",
   5172         "followers_url": "https://api.github.com/users/pedro-vicente/followers",
   5173         "following_url": "https://api.github.com/users/pedro-vicente/following{/other_user}",
   5174         "gists_url": "https://api.github.com/users/pedro-vicente/gists{/gist_id}",
   5175         "starred_url": "https://api.github.com/users/pedro-vicente/starred{/owner}{/repo}",
   5176         "subscriptions_url": "https://api.github.com/users/pedro-vicente/subscriptions",
   5177         "organizations_url": "https://api.github.com/users/pedro-vicente/orgs",
   5178         "repos_url": "https://api.github.com/users/pedro-vicente/repos",
   5179         "events_url": "https://api.github.com/users/pedro-vicente/events{/privacy}",
   5180         "received_events_url": "https://api.github.com/users/pedro-vicente/received_events",
   5181         "type": "User",
   5182         "site_admin": false
   5183       },
   5184       "labels": [],
   5185       "state": "closed",
   5186       "locked": false,
   5187       "assignee": null,
   5188       "assignees": [],
   5189       "milestone": null,
   5190       "comments": 1,
   5191       "created_at": "2023-07-24T21:51:35Z",
   5192       "updated_at": "2023-07-25T16:19:23Z",
   5193       "closed_at": "2023-07-25T16:19:22Z",
   5194       "author_association": "CONTRIBUTOR",
   5195       "active_lock_reason": null,
   5196       "draft": false,
   5197       "pull_request": {
   5198         "url": "https://api.github.com/repos/damus-io/nostrdb/pulls/1",
   5199         "html_url": "https://github.com/damus-io/nostrdb/pull/1",
   5200         "diff_url": "https://github.com/damus-io/nostrdb/pull/1.diff",
   5201         "patch_url": "https://github.com/damus-io/nostrdb/pull/1.patch",
   5202         "merged_at": null
   5203       },
   5204       "body": null,
   5205       "reactions": {
   5206         "url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/reactions",
   5207         "total_count": 0,
   5208         "+1": 0,
   5209         "-1": 0,
   5210         "laugh": 0,
   5211         "hooray": 0,
   5212         "confused": 0,
   5213         "heart": 0,
   5214         "rocket": 0,
   5215         "eyes": 0
   5216       },
   5217       "timeline_url": "https://api.github.com/repos/damus-io/nostrdb/issues/1/timeline",
   5218       "performed_via_github_app": null,
   5219       "state_reason": null
   5220     },
   5221     "comment": {
   5222       "user": "jb55",
   5223       "created_at": "2023-07-25T15:00:29Z",
   5224       "updated_at": "2023-07-25T15:00:29Z",
   5225       "body": "thanks! "
   5226     }
   5227   }
   5228 ]