{"size": 927, "ext": "js", "max_stars_repo_path": "flow-typed/Blocklist.js", "max_stars_repo_name": "iamflorencejay/odysee-frontend", "max_stars_repo_stars_event_min_datetime": "2021-10-07T08:38:23.000Z", "max_stars_repo_stars_event_max_datetime": "2022-03-31T08:22:57.000Z", "max_issues_repo_path": "flow-typed/Blocklist.js", "max_issues_repo_name": "iamflorencejay/odysee-frontend", "max_issues_repo_issues_event_min_datetime": "2021-10-06T17:36:31.000Z", "max_issues_repo_issues_event_max_datetime": "2022-03-31T19:58:11.000Z", "max_forks_repo_path": "flow-typed/Blocklist.js", "max_forks_repo_name": "iamflorencejay/odysee-frontend", "max_forks_repo_forks_event_min_datetime": "2021-10-17T01:33:31.000Z", "max_forks_repo_forks_event_max_datetime": "2022-03-29T15:53:25.000Z"}
{"max_stars_count": 70, "max_issues_count": 687, "max_forks_count": 27, "avg_line_length": 23.7692307692, "max_line_length": 79, "alphanum_fraction": 0.4433656958}
declare type BlocklistState = {
  blockedChannels: Array<string>,
  geoBlockedList: ?GBL,
};

declare type BlocklistAction = {
  type: string,
  data: {
    uri: string,
  },
};

// ****************************************************************************
// Geo-blocked list (GBL)
// ****************************************************************************

declare type GeoChannelId = string;

declare type GeoRestriction = {
  id: string,
  trigger?: string,
  reason?: string,
  message?: string,
};

declare type GeoConfig = {
  countries?: Array<GeoRestriction>,
  continents?: Array<GeoRestriction>,
  specials?: Array<GeoRestriction>,
};

declare type GBL = {
  livestreams?: { [GeoChannelId]: GeoConfig },
  videos?: { [GeoChannelId]: GeoConfig }
};

// ****************************************************************************
// ****************************************************************************
