github.com/nektos/act@v0.2.63/pkg/runner/testdata/actions/node16/node_modules/@octokit/plugin-paginate-rest/dist-node/index.js (about)

     1  'use strict';
     2  
     3  Object.defineProperty(exports, '__esModule', { value: true });
     4  
     5  const VERSION = "2.21.3";
     6  
     7  function ownKeys(object, enumerableOnly) {
     8    var keys = Object.keys(object);
     9  
    10    if (Object.getOwnPropertySymbols) {
    11      var symbols = Object.getOwnPropertySymbols(object);
    12      enumerableOnly && (symbols = symbols.filter(function (sym) {
    13        return Object.getOwnPropertyDescriptor(object, sym).enumerable;
    14      })), keys.push.apply(keys, symbols);
    15    }
    16  
    17    return keys;
    18  }
    19  
    20  function _objectSpread2(target) {
    21    for (var i = 1; i < arguments.length; i++) {
    22      var source = null != arguments[i] ? arguments[i] : {};
    23      i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {
    24        _defineProperty(target, key, source[key]);
    25      }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {
    26        Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
    27      });
    28    }
    29  
    30    return target;
    31  }
    32  
    33  function _defineProperty(obj, key, value) {
    34    if (key in obj) {
    35      Object.defineProperty(obj, key, {
    36        value: value,
    37        enumerable: true,
    38        configurable: true,
    39        writable: true
    40      });
    41    } else {
    42      obj[key] = value;
    43    }
    44  
    45    return obj;
    46  }
    47  
    48  /**
    49   * Some “list” response that can be paginated have a different response structure
    50   *
    51   * They have a `total_count` key in the response (search also has `incomplete_results`,
    52   * /installation/repositories also has `repository_selection`), as well as a key with
    53   * the list of the items which name varies from endpoint to endpoint.
    54   *
    55   * Octokit normalizes these responses so that paginated results are always returned following
    56   * the same structure. One challenge is that if the list response has only one page, no Link
    57   * header is provided, so this header alone is not sufficient to check wether a response is
    58   * paginated or not.
    59   *
    60   * We check if a "total_count" key is present in the response data, but also make sure that
    61   * a "url" property is not, as the "Get the combined status for a specific ref" endpoint would
    62   * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref
    63   */
    64  function normalizePaginatedListResponse(response) {
    65    // endpoints can respond with 204 if repository is empty
    66    if (!response.data) {
    67      return _objectSpread2(_objectSpread2({}, response), {}, {
    68        data: []
    69      });
    70    }
    71  
    72    const responseNeedsNormalization = "total_count" in response.data && !("url" in response.data);
    73    if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way
    74    // to retrieve the same information.
    75  
    76    const incompleteResults = response.data.incomplete_results;
    77    const repositorySelection = response.data.repository_selection;
    78    const totalCount = response.data.total_count;
    79    delete response.data.incomplete_results;
    80    delete response.data.repository_selection;
    81    delete response.data.total_count;
    82    const namespaceKey = Object.keys(response.data)[0];
    83    const data = response.data[namespaceKey];
    84    response.data = data;
    85  
    86    if (typeof incompleteResults !== "undefined") {
    87      response.data.incomplete_results = incompleteResults;
    88    }
    89  
    90    if (typeof repositorySelection !== "undefined") {
    91      response.data.repository_selection = repositorySelection;
    92    }
    93  
    94    response.data.total_count = totalCount;
    95    return response;
    96  }
    97  
    98  function iterator(octokit, route, parameters) {
    99    const options = typeof route === "function" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);
   100    const requestMethod = typeof route === "function" ? route : octokit.request;
   101    const method = options.method;
   102    const headers = options.headers;
   103    let url = options.url;
   104    return {
   105      [Symbol.asyncIterator]: () => ({
   106        async next() {
   107          if (!url) return {
   108            done: true
   109          };
   110  
   111          try {
   112            const response = await requestMethod({
   113              method,
   114              url,
   115              headers
   116            });
   117            const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:
   118            // '<https://api.github.com/users/aseemk/followers?page=2>; rel="next", <https://api.github.com/users/aseemk/followers?page=2>; rel="last"'
   119            // sets `url` to undefined if "next" URL is not present or `link` header is not set
   120  
   121            url = ((normalizedResponse.headers.link || "").match(/<([^>]+)>;\s*rel="next"/) || [])[1];
   122            return {
   123              value: normalizedResponse
   124            };
   125          } catch (error) {
   126            if (error.status !== 409) throw error;
   127            url = "";
   128            return {
   129              value: {
   130                status: 200,
   131                headers: {},
   132                data: []
   133              }
   134            };
   135          }
   136        }
   137  
   138      })
   139    };
   140  }
   141  
   142  function paginate(octokit, route, parameters, mapFn) {
   143    if (typeof parameters === "function") {
   144      mapFn = parameters;
   145      parameters = undefined;
   146    }
   147  
   148    return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);
   149  }
   150  
   151  function gather(octokit, results, iterator, mapFn) {
   152    return iterator.next().then(result => {
   153      if (result.done) {
   154        return results;
   155      }
   156  
   157      let earlyExit = false;
   158  
   159      function done() {
   160        earlyExit = true;
   161      }
   162  
   163      results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);
   164  
   165      if (earlyExit) {
   166        return results;
   167      }
   168  
   169      return gather(octokit, results, iterator, mapFn);
   170    });
   171  }
   172  
   173  const composePaginateRest = Object.assign(paginate, {
   174    iterator
   175  });
   176  
   177  const paginatingEndpoints = ["GET /app/hook/deliveries", "GET /app/installations", "GET /applications/grants", "GET /authorizations", "GET /enterprises/{enterprise}/actions/permissions/organizations", "GET /enterprises/{enterprise}/actions/runner-groups", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations", "GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners", "GET /enterprises/{enterprise}/actions/runners", "GET /enterprises/{enterprise}/audit-log", "GET /enterprises/{enterprise}/secret-scanning/alerts", "GET /enterprises/{enterprise}/settings/billing/advanced-security", "GET /events", "GET /gists", "GET /gists/public", "GET /gists/starred", "GET /gists/{gist_id}/comments", "GET /gists/{gist_id}/commits", "GET /gists/{gist_id}/forks", "GET /installation/repositories", "GET /issues", "GET /licenses", "GET /marketplace_listing/plans", "GET /marketplace_listing/plans/{plan_id}/accounts", "GET /marketplace_listing/stubbed/plans", "GET /marketplace_listing/stubbed/plans/{plan_id}/accounts", "GET /networks/{owner}/{repo}/events", "GET /notifications", "GET /organizations", "GET /orgs/{org}/actions/cache/usage-by-repository", "GET /orgs/{org}/actions/permissions/repositories", "GET /orgs/{org}/actions/runner-groups", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories", "GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners", "GET /orgs/{org}/actions/runners", "GET /orgs/{org}/actions/secrets", "GET /orgs/{org}/actions/secrets/{secret_name}/repositories", "GET /orgs/{org}/audit-log", "GET /orgs/{org}/blocks", "GET /orgs/{org}/code-scanning/alerts", "GET /orgs/{org}/codespaces", "GET /orgs/{org}/credential-authorizations", "GET /orgs/{org}/dependabot/secrets", "GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories", "GET /orgs/{org}/events", "GET /orgs/{org}/external-groups", "GET /orgs/{org}/failed_invitations", "GET /orgs/{org}/hooks", "GET /orgs/{org}/hooks/{hook_id}/deliveries", "GET /orgs/{org}/installations", "GET /orgs/{org}/invitations", "GET /orgs/{org}/invitations/{invitation_id}/teams", "GET /orgs/{org}/issues", "GET /orgs/{org}/members", "GET /orgs/{org}/migrations", "GET /orgs/{org}/migrations/{migration_id}/repositories", "GET /orgs/{org}/outside_collaborators", "GET /orgs/{org}/packages", "GET /orgs/{org}/packages/{package_type}/{package_name}/versions", "GET /orgs/{org}/projects", "GET /orgs/{org}/public_members", "GET /orgs/{org}/repos", "GET /orgs/{org}/secret-scanning/alerts", "GET /orgs/{org}/settings/billing/advanced-security", "GET /orgs/{org}/team-sync/groups", "GET /orgs/{org}/teams", "GET /orgs/{org}/teams/{team_slug}/discussions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions", "GET /orgs/{org}/teams/{team_slug}/invitations", "GET /orgs/{org}/teams/{team_slug}/members", "GET /orgs/{org}/teams/{team_slug}/projects", "GET /orgs/{org}/teams/{team_slug}/repos", "GET /orgs/{org}/teams/{team_slug}/teams", "GET /projects/columns/{column_id}/cards", "GET /projects/{project_id}/collaborators", "GET /projects/{project_id}/columns", "GET /repos/{owner}/{repo}/actions/artifacts", "GET /repos/{owner}/{repo}/actions/caches", "GET /repos/{owner}/{repo}/actions/runners", "GET /repos/{owner}/{repo}/actions/runs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs", "GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs", "GET /repos/{owner}/{repo}/actions/secrets", "GET /repos/{owner}/{repo}/actions/workflows", "GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs", "GET /repos/{owner}/{repo}/assignees", "GET /repos/{owner}/{repo}/branches", "GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations", "GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs", "GET /repos/{owner}/{repo}/code-scanning/alerts", "GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances", "GET /repos/{owner}/{repo}/code-scanning/analyses", "GET /repos/{owner}/{repo}/codespaces", "GET /repos/{owner}/{repo}/codespaces/devcontainers", "GET /repos/{owner}/{repo}/codespaces/secrets", "GET /repos/{owner}/{repo}/collaborators", "GET /repos/{owner}/{repo}/comments", "GET /repos/{owner}/{repo}/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/commits", "GET /repos/{owner}/{repo}/commits/{commit_sha}/comments", "GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls", "GET /repos/{owner}/{repo}/commits/{ref}/check-runs", "GET /repos/{owner}/{repo}/commits/{ref}/check-suites", "GET /repos/{owner}/{repo}/commits/{ref}/status", "GET /repos/{owner}/{repo}/commits/{ref}/statuses", "GET /repos/{owner}/{repo}/contributors", "GET /repos/{owner}/{repo}/dependabot/secrets", "GET /repos/{owner}/{repo}/deployments", "GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses", "GET /repos/{owner}/{repo}/environments", "GET /repos/{owner}/{repo}/events", "GET /repos/{owner}/{repo}/forks", "GET /repos/{owner}/{repo}/git/matching-refs/{ref}", "GET /repos/{owner}/{repo}/hooks", "GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries", "GET /repos/{owner}/{repo}/invitations", "GET /repos/{owner}/{repo}/issues", "GET /repos/{owner}/{repo}/issues/comments", "GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/issues/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/comments", "GET /repos/{owner}/{repo}/issues/{issue_number}/events", "GET /repos/{owner}/{repo}/issues/{issue_number}/labels", "GET /repos/{owner}/{repo}/issues/{issue_number}/reactions", "GET /repos/{owner}/{repo}/issues/{issue_number}/timeline", "GET /repos/{owner}/{repo}/keys", "GET /repos/{owner}/{repo}/labels", "GET /repos/{owner}/{repo}/milestones", "GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels", "GET /repos/{owner}/{repo}/notifications", "GET /repos/{owner}/{repo}/pages/builds", "GET /repos/{owner}/{repo}/projects", "GET /repos/{owner}/{repo}/pulls", "GET /repos/{owner}/{repo}/pulls/comments", "GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions", "GET /repos/{owner}/{repo}/pulls/{pull_number}/comments", "GET /repos/{owner}/{repo}/pulls/{pull_number}/commits", "GET /repos/{owner}/{repo}/pulls/{pull_number}/files", "GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews", "GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments", "GET /repos/{owner}/{repo}/releases", "GET /repos/{owner}/{repo}/releases/{release_id}/assets", "GET /repos/{owner}/{repo}/releases/{release_id}/reactions", "GET /repos/{owner}/{repo}/secret-scanning/alerts", "GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations", "GET /repos/{owner}/{repo}/stargazers", "GET /repos/{owner}/{repo}/subscribers", "GET /repos/{owner}/{repo}/tags", "GET /repos/{owner}/{repo}/teams", "GET /repos/{owner}/{repo}/topics", "GET /repositories", "GET /repositories/{repository_id}/environments/{environment_name}/secrets", "GET /search/code", "GET /search/commits", "GET /search/issues", "GET /search/labels", "GET /search/repositories", "GET /search/topics", "GET /search/users", "GET /teams/{team_id}/discussions", "GET /teams/{team_id}/discussions/{discussion_number}/comments", "GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions", "GET /teams/{team_id}/discussions/{discussion_number}/reactions", "GET /teams/{team_id}/invitations", "GET /teams/{team_id}/members", "GET /teams/{team_id}/projects", "GET /teams/{team_id}/repos", "GET /teams/{team_id}/teams", "GET /user/blocks", "GET /user/codespaces", "GET /user/codespaces/secrets", "GET /user/emails", "GET /user/followers", "GET /user/following", "GET /user/gpg_keys", "GET /user/installations", "GET /user/installations/{installation_id}/repositories", "GET /user/issues", "GET /user/keys", "GET /user/marketplace_purchases", "GET /user/marketplace_purchases/stubbed", "GET /user/memberships/orgs", "GET /user/migrations", "GET /user/migrations/{migration_id}/repositories", "GET /user/orgs", "GET /user/packages", "GET /user/packages/{package_type}/{package_name}/versions", "GET /user/public_emails", "GET /user/repos", "GET /user/repository_invitations", "GET /user/starred", "GET /user/subscriptions", "GET /user/teams", "GET /users", "GET /users/{username}/events", "GET /users/{username}/events/orgs/{org}", "GET /users/{username}/events/public", "GET /users/{username}/followers", "GET /users/{username}/following", "GET /users/{username}/gists", "GET /users/{username}/gpg_keys", "GET /users/{username}/keys", "GET /users/{username}/orgs", "GET /users/{username}/packages", "GET /users/{username}/projects", "GET /users/{username}/received_events", "GET /users/{username}/received_events/public", "GET /users/{username}/repos", "GET /users/{username}/starred", "GET /users/{username}/subscriptions"];
   178  
   179  function isPaginatingEndpoint(arg) {
   180    if (typeof arg === "string") {
   181      return paginatingEndpoints.includes(arg);
   182    } else {
   183      return false;
   184    }
   185  }
   186  
   187  /**
   188   * @param octokit Octokit instance
   189   * @param options Options passed to Octokit constructor
   190   */
   191  
   192  function paginateRest(octokit) {
   193    return {
   194      paginate: Object.assign(paginate.bind(null, octokit), {
   195        iterator: iterator.bind(null, octokit)
   196      })
   197    };
   198  }
   199  paginateRest.VERSION = VERSION;
   200  
   201  exports.composePaginateRest = composePaginateRest;
   202  exports.isPaginatingEndpoint = isPaginatingEndpoint;
   203  exports.paginateRest = paginateRest;
   204  exports.paginatingEndpoints = paginatingEndpoints;
   205  //# sourceMappingURL=index.js.map