Compare commits

...

2 Commits

8 changed files with 6797 additions and 8117 deletions

View File

@ -6,8 +6,10 @@ class SegmentRouter implements Router
public function add(string $method, string $route, callable $handler): Router
{
// Expand the route into segments
$segments = explode('/', trim($route, '/'));
// Expand the route into segments and make dynamic segments into a common placeholder
$segments = array_map(function($segment) {
return str_starts_with($segment, ':') ? ':x' : $segment;
}, explode('/', trim($route, '/')));
// Push each segment into the routes array as a node
$node = &$this->routes;
@ -28,37 +30,37 @@ class SegmentRouter implements Router
// Traverse the routes array to find the handler
foreach ($uriSegments as $segment) {
// Check if the segment exists in the node, or if there's a dynamic segment
if (!isset($node[$segment])) {
$dynamicSegment = $this->matchDynamicSegment($node, $segment);
if ($dynamicSegment) {
// Check if the segment exists in the node
if (isset($node[$segment])) {
$node = $node[$segment];
} else {
// Handle dynamic segments (starting with ":")
$dynamicSegment = null;
// Loop through the node and find the first dynamic segment
foreach ($node as $k => $v) {
if (str_starts_with($k, ':')) {
$dynamicSegment = $k;
break; // Break early as we only need one match
}
}
// If no dynamic segment was found, return 404
if ($dynamicSegment === null) return 404;
// Otherwise, store the parameter and move to the dynamic node
$params[] = $segment;
$node = $node[$dynamicSegment];
} else {
return 404;
}
} else {
$node = $node[$segment];
}
}
// If the HTTP method is not supported, return 405
// Check if the HTTP method is supported
if (!isset($node[$method])) return 405;
// Return the handler
// Return the handler and parameters
return [$node[$method] , $params];
}
// Look through a node to find a dynamic segment
private function matchDynamicSegment(array $node, string $segment): string|false
{
foreach (array_keys($node) as $key) {
// If the key starts with a :, it's a dynamic segment
if (strpos($key, ':') === 0) return $key;
}
return false;
}
public function clear(): Router
{

View File

@ -8,7 +8,10 @@ class TrieRouter implements Router
public function add(string $method, string $route, callable $handler): Router
{
$node = &$this->root[$method];
$segments = explode('/', trim($route, '/'));
// Expand the route into segments and make dynamic segments into a common placeholder
$segments = array_map(function($segment) {
return str_starts_with($segment, ':') ? ':x' : $segment;
}, explode('/', trim($route, '/')));
foreach ($segments as $segment) {
if (!isset($node[$segment])) {

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +1,10 @@
/
├── /
│ └── GET
├── :slug
├── :x
│ └── GET
├── tags
│ └── GET
└── tag
└── :tag
└── :x
└── GET

View File

@ -1,22 +1,22 @@
/
├── authorizations
│ ├── GET
│ ├── :id
│ ├── :x
│ │ ├── GET
│ │ └── DELETE
│ └── POST
├── applications
│ └── :client_id
│ └── :x
│ └── tokens
│ ├── :access_token
│ ├── :x
│ │ ├── GET
│ │ └── DELETE
│ └── DELETE
├── events
│ └── GET
├── repos
│ └── :owner
│ └── :repo
│ └── :x
│ └── :x
│ ├── events
│ │ └── GET
│ ├── notifications
@ -32,27 +32,27 @@
│ │ └── DELETE
│ ├── git
│ │ ├── blobs
│ │ │ ├── :sha
│ │ │ ├── :x
│ │ │ │ └── GET
│ │ │ └── POST
│ │ ├── commits
│ │ │ ├── :sha
│ │ │ ├── :x
│ │ │ │ └── GET
│ │ │ └── POST
│ │ ├── refs
│ │ │ ├── GET
│ │ │ └── POST
│ │ ├── tags
│ │ │ ├── :sha
│ │ │ ├── :x
│ │ │ │ └── GET
│ │ │ └── POST
│ │ └── trees
│ │ ├── :sha
│ │ ├── :x
│ │ │ └── GET
│ │ └── POST
│ ├── issues
│ │ ├── GET
│ │ ├── :number
│ │ ├── :x
│ │ │ ├── GET
│ │ │ ├── comments
│ │ │ │ ├── GET
@ -62,23 +62,23 @@
│ │ │ └── labels
│ │ │ ├── GET
│ │ │ ├── POST
│ │ │ ├── :name
│ │ │ ├── :x
│ │ │ │ └── DELETE
│ │ │ ├── PUT
│ │ │ └── DELETE
│ │ └── POST
│ ├── assignees
│ │ ├── GET
│ │ └── :assignee
│ │ └── :x
│ │ └── GET
│ ├── labels
│ │ ├── GET
│ │ ├── :name
│ │ ├── :x
│ │ │ ├── GET
│ │ │ └── DELETE
│ │ └── POST
│ ├── milestones
│ │ ├── :number
│ │ ├── :x
│ │ │ ├── labels
│ │ │ │ └── GET
│ │ │ ├── GET
@ -87,7 +87,7 @@
│ │ └── POST
│ ├── pulls
│ │ ├── GET
│ │ ├── :number
│ │ ├── :x
│ │ │ ├── GET
│ │ │ ├── commits
│ │ │ │ └── GET
@ -111,22 +111,22 @@
│ │ └── GET
│ ├── branches
│ │ ├── GET
│ │ └── :branch
│ │ └── :x
│ │ └── GET
│ ├── DELETE
│ ├── collaborators
│ │ ├── GET
│ │ └── :user
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
│ ├── comments
│ │ ├── GET
│ │ └── :id
│ │ └── :x
│ │ ├── GET
│ │ └── DELETE
│ ├── commits
│ │ ├── :sha
│ │ ├── :x
│ │ │ ├── comments
│ │ │ │ ├── GET
│ │ │ │ └── POST
@ -136,13 +136,13 @@
│ │ └── GET
│ ├── keys
│ │ ├── GET
│ │ ├── :id
│ │ ├── :x
│ │ │ ├── GET
│ │ │ └── DELETE
│ │ └── POST
│ ├── downloads
│ │ ├── GET
│ │ └── :id
│ │ └── :x
│ │ ├── GET
│ │ └── DELETE
│ ├── forks
@ -150,7 +150,7 @@
│ │ └── POST
│ ├── hooks
│ │ ├── GET
│ │ ├── :id
│ │ ├── :x
│ │ │ ├── GET
│ │ │ ├── tests
│ │ │ │ └── POST
@ -160,7 +160,7 @@
│ │ └── POST
│ ├── releases
│ │ ├── GET
│ │ ├── :id
│ │ ├── :x
│ │ │ ├── GET
│ │ │ ├── DELETE
│ │ │ └── assets
@ -178,16 +178,16 @@
│ │ └── punch_card
│ │ └── GET
│ └── statuses
│ └── :ref
│ └── :x
│ ├── GET
│ └── POST
├── networks
│ └── :owner
│ └── :repo
│ └── :x
│ └── :x
│ └── events
│ └── GET
├── orgs
│ └── :org
│ └── :x
│ ├── events
│ │ └── GET
│ ├── issues
@ -195,12 +195,12 @@
│ ├── GET
│ ├── members
│ │ ├── GET
│ │ └── :user
│ │ └── :x
│ │ ├── GET
│ │ └── DELETE
│ ├── public_members
│ │ ├── GET
│ │ └── :user
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
@ -211,7 +211,7 @@
│ ├── GET
│ └── POST
├── users
│ ├── :user
│ ├── :x
│ │ ├── received_events
│ │ │ ├── GET
│ │ │ └── public
@ -221,7 +221,7 @@
│ │ │ ├── public
│ │ │ │ └── GET
│ │ │ └── orgs
│ │ │ └── :org
│ │ │ └── :x
│ │ │ └── GET
│ │ ├── starred
│ │ │ └── GET
@ -238,7 +238,7 @@
│ │ │ └── GET
│ │ ├── following
│ │ │ ├── GET
│ │ │ └── :target_user
│ │ │ └── :x
│ │ │ └── GET
│ │ └── keys
│ │ └── GET
@ -249,7 +249,7 @@
│ ├── GET
│ ├── PUT
│ └── threads
│ └── :id
│ └── :x
│ ├── GET
│ └── subscription
│ ├── GET
@ -258,15 +258,15 @@
├── user
│ ├── starred
│ │ ├── GET
│ │ └── :owner
│ │ └── :repo
│ │ └── :x
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
│ ├── subscriptions
│ │ ├── GET
│ │ └── :owner
│ │ └── :repo
│ │ └── :x
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
@ -288,19 +288,19 @@
│ │ └── GET
│ ├── following
│ │ ├── GET
│ │ └── :user
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
│ └── keys
│ ├── GET
│ ├── :id
│ ├── :x
│ │ ├── GET
│ │ └── DELETE
│ └── POST
├── gists
│ ├── GET
│ ├── :id
│ ├── :x
│ │ ├── GET
│ │ ├── star
│ │ │ ├── PUT
@ -317,7 +317,7 @@
├── gitignore
│ └── templates
│ ├── GET
│ └── :name
│ └── :x
│ └── GET
├── markdown
│ ├── POST
@ -328,19 +328,19 @@
├── rate_limit
│ └── GET
├── teams
│ └── :id
│ └── :x
│ ├── GET
│ ├── DELETE
│ ├── members
│ │ ├── GET
│ │ └── :user
│ │ └── :x
│ │ ├── GET
│ │ ├── PUT
│ │ └── DELETE
│ └── repos
│ ├── GET
│ └── :owner
│ └── :repo
│ └── :x
│ └── :x
│ ├── GET
│ ├── PUT
│ └── DELETE
@ -358,19 +358,19 @@
└── legacy
├── issues
│ └── search
│ └── :owner
│ └── :repository
│ └── :state
│ └── :keyword
│ └── :x
│ └── :x
│ └── :x
│ └── :x
│ └── GET
├── repos
│ └── search
│ └── :keyword
│ └── :x
│ └── GET
└── user
├── search
│ └── :keyword
│ └── :x
│ └── GET
└── email
└── :email
└── :x
└── GET

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@
│ ├── _children
│ │ └── _handler
│ └── _handler
├── :slug
├── :x
│ ├── _children
│ │ └── _handler
│ └── _handler
@ -14,7 +14,7 @@
│ └── _handler
└── tag
├── _children
│ └── :tag
│ └── :x
│ ├── _children
│ │ └── _handler
│ └── _handler

View File

@ -3,18 +3,18 @@
│ ├── authorizations
│ │ ├── _children
│ │ │ ├── _handler
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── _handler
│ │ │ └── _handler
│ │ └── _handler
│ ├── applications
│ │ ├── _children
│ │ │ └── :client_id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── tokens
│ │ │ │ ├── _children
│ │ │ │ │ └── :access_token
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -27,9 +27,9 @@
│ │ └── _handler
│ ├── repos
│ │ ├── _children
│ │ │ └── :owner
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── :repo
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ ├── events
│ │ │ │ │ │ ├── _children
@ -55,14 +55,14 @@
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── blobs
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── :sha
│ │ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ ├── commits
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── :sha
│ │ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ │ └── _handler
@ -73,14 +73,14 @@
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ ├── tags
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── :sha
│ │ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── trees
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── :sha
│ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ └── _handler
@ -89,7 +89,7 @@
│ │ │ │ │ ├── issues
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :number
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ │ ├── comments
@ -109,7 +109,7 @@
│ │ │ │ │ ├── assignees
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :assignee
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -117,14 +117,14 @@
│ │ │ │ │ ├── labels
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :name
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── milestones
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── :number
│ │ │ │ │ │ │ ├── :x
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ ├── labels
│ │ │ │ │ │ │ │ │ │ ├── _children
@ -137,7 +137,7 @@
│ │ │ │ │ ├── pulls
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :number
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ │ ├── commits
@ -178,7 +178,7 @@
│ │ │ │ │ ├── branches
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :branch
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -186,7 +186,7 @@
│ │ │ │ │ ├── collaborators
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :user
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -194,14 +194,14 @@
│ │ │ │ │ ├── comments
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── commits
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── :sha
│ │ │ │ │ │ │ ├── :x
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ ├── comments
│ │ │ │ │ │ │ │ │ │ ├── _children
@ -218,7 +218,7 @@
│ │ │ │ │ ├── keys
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -226,7 +226,7 @@
│ │ │ │ │ ├── downloads
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -238,7 +238,7 @@
│ │ │ │ │ ├── hooks
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -246,7 +246,7 @@
│ │ │ │ │ ├── releases
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ │ └── assets
@ -280,7 +280,7 @@
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── statuses
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :ref
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -290,9 +290,9 @@
│ │ └── _handler
│ ├── networks
│ │ ├── _children
│ │ │ └── :owner
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── :repo
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── events
│ │ │ │ │ ├── _children
@ -303,7 +303,7 @@
│ │ └── _handler
│ ├── orgs
│ │ ├── _children
│ │ │ └── :org
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── events
│ │ │ │ │ ├── _children
@ -317,7 +317,7 @@
│ │ │ │ ├── members
│ │ │ │ │ ├── _children
│ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ └── :user
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -325,7 +325,7 @@
│ │ │ │ ├── public_members
│ │ │ │ │ ├── _children
│ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ └── :user
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -342,7 +342,7 @@
│ │ └── _handler
│ ├── users
│ │ ├── _children
│ │ │ ├── :user
│ │ │ ├── :x
│ │ │ │ ├── _children
│ │ │ │ │ ├── received_events
│ │ │ │ │ │ ├── _children
@ -361,7 +361,7 @@
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── orgs
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── :org
│ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ └── _handler
@ -395,7 +395,7 @@
│ │ │ │ │ ├── following
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :target_user
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -416,7 +416,7 @@
│ │ │ ├── _handler
│ │ │ └── threads
│ │ │ ├── _children
│ │ │ │ └── :id
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── subscription
@ -431,9 +431,9 @@
│ │ │ ├── starred
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repo
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -442,9 +442,9 @@
│ │ │ ├── subscriptions
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repo
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -478,7 +478,7 @@
│ │ │ ├── following
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── :user
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -486,7 +486,7 @@
│ │ │ └── keys
│ │ │ ├── _children
│ │ │ │ ├── _handler
│ │ │ │ └── :id
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
@ -495,7 +495,7 @@
│ ├── gists
│ │ ├── _children
│ │ │ ├── _handler
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── _handler
│ │ │ │ └── star
@ -517,7 +517,7 @@
│ │ │ └── templates
│ │ │ ├── _children
│ │ │ │ ├── _handler
│ │ │ │ └── :name
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
@ -533,13 +533,13 @@
│ │ └── _handler
│ ├── teams
│ │ ├── _children
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── _handler
│ │ │ │ ├── members
│ │ │ │ │ ├── _children
│ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ └── :user
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -547,9 +547,9 @@
│ │ │ │ └── repos
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repo
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -586,13 +586,13 @@
│ │ │ ├── _children
│ │ │ │ └── search
│ │ │ │ ├── _children
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repository
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :state
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── :keyword
│ │ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ └── _handler
@ -605,7 +605,7 @@
│ │ │ ├── _children
│ │ │ │ └── search
│ │ │ │ ├── _children
│ │ │ │ │ └── :keyword
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -615,14 +615,14 @@
│ │ ├── _children
│ │ │ ├── search
│ │ │ │ ├── _children
│ │ │ │ │ └── :keyword
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
│ │ │ └── email
│ │ │ ├── _children
│ │ │ │ └── :email
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
@ -637,7 +637,7 @@
│ ├── gists
│ │ ├── _children
│ │ │ ├── _handler
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── forks
│ │ │ │ ├── _children
@ -647,9 +647,9 @@
│ │ └── _handler
│ ├── repos
│ │ ├── _children
│ │ │ └── :owner
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── :repo
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ ├── git
│ │ │ │ │ │ ├── _children
@ -677,7 +677,7 @@
│ │ │ │ │ ├── issues
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :number
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ ├── comments
│ │ │ │ │ │ │ │ │ ├── _children
@ -703,7 +703,7 @@
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── commits
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :sha
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── comments
│ │ │ │ │ │ │ │ ├── _children
@ -722,7 +722,7 @@
│ │ │ │ │ ├── hooks
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── _handler
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── tests
│ │ │ │ │ │ │ │ ├── _children
@ -740,7 +740,7 @@
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── statuses
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :ref
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -758,7 +758,7 @@
│ │ └── _handler
│ ├── orgs
│ │ ├── _children
│ │ │ └── :org
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── teams
│ │ │ │ │ ├── _children
@ -788,19 +788,19 @@
├── DELETE
│ ├── authorizations
│ │ ├── _children
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── _handler
│ │ │ └── _handler
│ │ └── _handler
│ ├── applications
│ │ ├── _children
│ │ │ └── :client_id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── tokens
│ │ │ │ ├── _children
│ │ │ │ │ ├── _handler
│ │ │ │ │ └── :access_token
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -811,7 +811,7 @@
│ │ ├── _children
│ │ │ └── threads
│ │ │ ├── _children
│ │ │ │ └── :id
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── subscription
│ │ │ │ │ ├── _children
@ -824,9 +824,9 @@
│ │ ├── _children
│ │ │ ├── starred
│ │ │ │ ├── _children
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repo
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -834,9 +834,9 @@
│ │ │ │ └── _handler
│ │ │ ├── subscriptions
│ │ │ │ ├── _children
│ │ │ │ │ └── :owner
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :repo
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -848,14 +848,14 @@
│ │ │ │ └── _handler
│ │ │ ├── following
│ │ │ │ ├── _children
│ │ │ │ │ └── :user
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
│ │ │ └── keys
│ │ │ ├── _children
│ │ │ │ └── :id
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
@ -863,9 +863,9 @@
│ │ └── _handler
│ ├── repos
│ │ ├── _children
│ │ │ └── :owner
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── :repo
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ ├── subscription
│ │ │ │ │ │ ├── _children
@ -873,18 +873,18 @@
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── labels
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :name
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── issues
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :number
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── labels
│ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ ├── :name
│ │ │ │ │ │ │ │ │ ├── :x
│ │ │ │ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ │ │ │ └── _handler
@ -894,7 +894,7 @@
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── milestones
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :number
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
@ -902,42 +902,42 @@
│ │ │ │ │ ├── _handler
│ │ │ │ │ ├── collaborators
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :user
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── comments
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── keys
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── downloads
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ ├── hooks
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── :id
│ │ │ │ │ │ │ └── :x
│ │ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── releases
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :id
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
@ -947,7 +947,7 @@
│ │ └── _handler
│ ├── gists
│ │ ├── _children
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── star
│ │ │ │ │ ├── _children
@ -958,18 +958,18 @@
│ │ └── _handler
│ ├── orgs
│ │ ├── _children
│ │ │ └── :org
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── members
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :user
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── _handler
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
│ │ │ │ └── public_members
│ │ │ │ ├── _children
│ │ │ │ │ └── :user
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -978,21 +978,21 @@
│ │ └── _handler
│ └── teams
│ ├── _children
│ │ └── :id
│ │ └── :x
│ │ ├── _children
│ │ │ ├── _handler
│ │ │ ├── members
│ │ │ │ ├── _children
│ │ │ │ │ └── :user
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
│ │ │ └── repos
│ │ │ ├── _children
│ │ │ │ └── :owner
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── :repo
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -1006,7 +1006,7 @@
│ │ ├── _handler
│ │ └── threads
│ │ ├── _children
│ │ │ └── :id
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── subscription
│ │ │ │ ├── _children
@ -1017,9 +1017,9 @@
│ └── _handler
├── repos
│ ├── _children
│ │ └── :owner
│ │ └── :x
│ │ ├── _children
│ │ │ └── :repo
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ ├── notifications
│ │ │ │ │ ├── _children
@ -1031,7 +1031,7 @@
│ │ │ │ │ └── _handler
│ │ │ │ ├── issues
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :number
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ └── labels
│ │ │ │ │ │ │ ├── _children
@ -1041,7 +1041,7 @@
│ │ │ │ │ └── _handler
│ │ │ │ ├── pulls
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── :number
│ │ │ │ │ │ └── :x
│ │ │ │ │ │ ├── _children
│ │ │ │ │ │ │ ├── merge
│ │ │ │ │ │ │ │ ├── _children
@ -1055,7 +1055,7 @@
│ │ │ │ │ └── _handler
│ │ │ │ └── collaborators
│ │ │ │ ├── _children
│ │ │ │ │ └── :user
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -1067,9 +1067,9 @@
│ ├── _children
│ │ ├── starred
│ │ │ ├── _children
│ │ │ │ └── :owner
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── :repo
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -1077,9 +1077,9 @@
│ │ │ └── _handler
│ │ ├── subscriptions
│ │ │ ├── _children
│ │ │ │ └── :owner
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── :repo
│ │ │ │ │ └── :x
│ │ │ │ │ ├── _children
│ │ │ │ │ │ └── _handler
│ │ │ │ │ └── _handler
@ -1087,7 +1087,7 @@
│ │ │ └── _handler
│ │ └── following
│ │ ├── _children
│ │ │ └── :user
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── _handler
│ │ │ └── _handler
@ -1095,7 +1095,7 @@
│ └── _handler
├── gists
│ ├── _children
│ │ └── :id
│ │ └── :x
│ │ ├── _children
│ │ │ └── star
│ │ │ ├── _children
@ -1105,11 +1105,11 @@
│ └── _handler
├── orgs
│ ├── _children
│ │ └── :org
│ │ └── :x
│ │ ├── _children
│ │ │ └── public_members
│ │ │ ├── _children
│ │ │ │ └── :user
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
@ -1118,20 +1118,20 @@
│ └── _handler
└── teams
├── _children
│ └── :id
│ └── :x
│ ├── _children
│ │ ├── members
│ │ │ ├── _children
│ │ │ │ └── :user
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler
│ │ │ └── _handler
│ │ └── repos
│ │ ├── _children
│ │ │ └── :owner
│ │ │ └── :x
│ │ │ ├── _children
│ │ │ │ └── :repo
│ │ │ │ └── :x
│ │ │ │ ├── _children
│ │ │ │ │ └── _handler
│ │ │ │ └── _handler