{
  "version": 3,
  "sources": ["../dist-src/index.js", "../dist-src/version.js", "../dist-src/wrap-request.js", "../dist-src/generated/triggers-notification-paths.js", "../dist-src/route-matcher.js"],
  "sourcesContent": ["import BottleneckLight from \"bottleneck/light\";\nimport { Octokit } from \"@octokit/core\";\nimport { VERSION } from \"./version\";\nimport { wrapRequest } from \"./wrap-request\";\nimport triggersNotificationPaths from \"./generated/triggers-notification-paths\";\nimport { routeMatcher } from \"./route-matcher\";\nconst regex = routeMatcher(triggersNotificationPaths);\nconst triggersNotification = regex.test.bind(regex);\nconst groups = {};\nconst createGroups = function(Bottleneck, common) {\n  groups.global = new Bottleneck.Group({\n    id: \"octokit-global\",\n    maxConcurrent: 10,\n    ...common\n  });\n  groups.search = new Bottleneck.Group({\n    id: \"octokit-search\",\n    maxConcurrent: 1,\n    minTime: 2e3,\n    ...common\n  });\n  groups.write = new Bottleneck.Group({\n    id: \"octokit-write\",\n    maxConcurrent: 1,\n    minTime: 1e3,\n    ...common\n  });\n  groups.notifications = new Bottleneck.Group({\n    id: \"octokit-notifications\",\n    maxConcurrent: 1,\n    minTime: 3e3,\n    ...common\n  });\n};\nfunction throttling(octokit, octokitOptions) {\n  const {\n    enabled = true,\n    Bottleneck = BottleneckLight,\n    id = \"no-id\",\n    timeout = 1e3 * 60 * 2,\n    // Redis TTL: 2 minutes\n    connection\n  } = octokitOptions.throttle || {};\n  if (!enabled) {\n    return {};\n  }\n  const common = { connection, timeout };\n  if (groups.global == null) {\n    createGroups(Bottleneck, common);\n  }\n  const state = Object.assign(\n    {\n      clustering: connection != null,\n      triggersNotification,\n      fallbackSecondaryRateRetryAfter: 60,\n      retryAfterBaseValue: 1e3,\n      retryLimiter: new Bottleneck(),\n      id,\n      ...groups\n    },\n    octokitOptions.throttle\n  );\n  if (typeof state.onSecondaryRateLimit !== \"function\" || typeof state.onRateLimit !== \"function\") {\n    throw new Error(`octokit/plugin-throttling error:\n        You must pass the onSecondaryRateLimit and onRateLimit error handlers.\n        See https://octokit.github.io/rest.js/#throttling\n\n        const octokit = new Octokit({\n          throttle: {\n            onSecondaryRateLimit: (retryAfter, options) => {/* ... */},\n            onRateLimit: (retryAfter, options) => {/* ... */}\n          }\n        })\n    `);\n  }\n  const events = {};\n  const emitter = new Bottleneck.Events(events);\n  events.on(\"secondary-limit\", state.onSecondaryRateLimit);\n  events.on(\"rate-limit\", state.onRateLimit);\n  events.on(\n    \"error\",\n    (e) => octokit.log.warn(\"Error in throttling-plugin limit handler\", e)\n  );\n  state.retryLimiter.on(\"failed\", async function(error, info) {\n    const [state2, request, options] = info.args;\n    const { pathname } = new URL(options.url, \"http://github.test\");\n    const shouldRetryGraphQL = pathname.startsWith(\"/graphql\") && error.status !== 401;\n    if (!(shouldRetryGraphQL || error.status === 403)) {\n      return;\n    }\n    const retryCount = ~~request.retryCount;\n    request.retryCount = retryCount;\n    options.request.retryCount = retryCount;\n    const { wantRetry, retryAfter = 0 } = await async function() {\n      if (/\\bsecondary rate\\b/i.test(error.message)) {\n        const retryAfter2 = Number(error.response.headers[\"retry-after\"]) || state2.fallbackSecondaryRateRetryAfter;\n        const wantRetry2 = await emitter.trigger(\n          \"secondary-limit\",\n          retryAfter2,\n          options,\n          octokit,\n          retryCount\n        );\n        return { wantRetry: wantRetry2, retryAfter: retryAfter2 };\n      }\n      if (error.response.headers != null && error.response.headers[\"x-ratelimit-remaining\"] === \"0\" || (error.response.data?.errors ?? []).some(\n        (error2) => error2.type === \"RATE_LIMITED\"\n      )) {\n        const rateLimitReset = new Date(\n          ~~error.response.headers[\"x-ratelimit-reset\"] * 1e3\n        ).getTime();\n        const retryAfter2 = Math.max(\n          // Add one second so we retry _after_ the reset time\n          // https://docs.github.com/en/rest/overview/resources-in-the-rest-api?apiVersion=2022-11-28#exceeding-the-rate-limit\n          Math.ceil((rateLimitReset - Date.now()) / 1e3) + 1,\n          0\n        );\n        const wantRetry2 = await emitter.trigger(\n          \"rate-limit\",\n          retryAfter2,\n          options,\n          octokit,\n          retryCount\n        );\n        return { wantRetry: wantRetry2, retryAfter: retryAfter2 };\n      }\n      return {};\n    }();\n    if (wantRetry) {\n      request.retryCount++;\n      return retryAfter * state2.retryAfterBaseValue;\n    }\n  });\n  octokit.hook.wrap(\"request\", wrapRequest.bind(null, state));\n  return {};\n}\nthrottling.VERSION = VERSION;\nthrottling.triggersNotification = triggersNotification;\nexport {\n  throttling\n};\n", "const VERSION = \"8.1.3\";\nexport {\n  VERSION\n};\n", "const noop = () => Promise.resolve();\nfunction wrapRequest(state, request, options) {\n  return state.retryLimiter.schedule(doRequest, state, request, options);\n}\nasync function doRequest(state, request, options) {\n  const isWrite = options.method !== \"GET\" && options.method !== \"HEAD\";\n  const { pathname } = new URL(options.url, \"http://github.test\");\n  const isSearch = options.method === \"GET\" && pathname.startsWith(\"/search/\");\n  const isGraphQL = pathname.startsWith(\"/graphql\");\n  const retryCount = ~~request.retryCount;\n  const jobOptions = retryCount > 0 ? { priority: 0, weight: 0 } : {};\n  if (state.clustering) {\n    jobOptions.expiration = 1e3 * 60;\n  }\n  if (isWrite || isGraphQL) {\n    await state.write.key(state.id).schedule(jobOptions, noop);\n  }\n  if (isWrite && state.triggersNotification(pathname)) {\n    await state.notifications.key(state.id).schedule(jobOptions, noop);\n  }\n  if (isSearch) {\n    await state.search.key(state.id).schedule(jobOptions, noop);\n  }\n  const req = state.global.key(state.id).schedule(\n    jobOptions,\n    request,\n    options\n  );\n  if (isGraphQL) {\n    const res = await req;\n    if (res.data.errors != null && res.data.errors.some((error) => error.type === \"RATE_LIMITED\")) {\n      const error = Object.assign(new Error(\"GraphQL Rate Limit Exceeded\"), {\n        response: res,\n        data: res.data\n      });\n      throw error;\n    }\n  }\n  return req;\n}\nexport {\n  wrapRequest\n};\n", "var triggers_notification_paths_default = [\n  \"/orgs/{org}/invitations\",\n  \"/orgs/{org}/invitations/{invitation_id}\",\n  \"/orgs/{org}/teams/{team_slug}/discussions\",\n  \"/orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n  \"/repos/{owner}/{repo}/collaborators/{username}\",\n  \"/repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n  \"/repos/{owner}/{repo}/issues\",\n  \"/repos/{owner}/{repo}/issues/{issue_number}/comments\",\n  \"/repos/{owner}/{repo}/pulls\",\n  \"/repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n  \"/repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\",\n  \"/repos/{owner}/{repo}/pulls/{pull_number}/merge\",\n  \"/repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\",\n  \"/repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n  \"/repos/{owner}/{repo}/releases\",\n  \"/teams/{team_id}/discussions\",\n  \"/teams/{team_id}/discussions/{discussion_number}/comments\"\n];\nexport {\n  triggers_notification_paths_default as default\n};\n", "function routeMatcher(paths) {\n  const regexes = paths.map(\n    (path) => path.split(\"/\").map((c) => c.startsWith(\"{\") ? \"(?:.+?)\" : c).join(\"/\")\n  );\n  const regex = `^(?:${regexes.map((r) => `(?:${r})`).join(\"|\")})[^/]*$`;\n  return new RegExp(regex, \"i\");\n}\nexport {\n  routeMatcher\n};\n"],
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4B;AAC5B,kBAAwB;;;ACDxB,IAAM,UAAU;;;ACAhB,IAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,SAAS,YAAY,OAAO,SAAS,SAAS;AAC5C,SAAO,MAAM,aAAa,SAAS,WAAW,OAAO,SAAS,OAAO;AACvE;AACA,eAAe,UAAU,OAAO,SAAS,SAAS;AAChD,QAAM,UAAU,QAAQ,WAAW,SAAS,QAAQ,WAAW;AAC/D,QAAM,EAAE,SAAS,IAAI,IAAI,IAAI,QAAQ,KAAK,oBAAoB;AAC9D,QAAM,WAAW,QAAQ,WAAW,SAAS,SAAS,WAAW,UAAU;AAC3E,QAAM,YAAY,SAAS,WAAW,UAAU;AAChD,QAAM,aAAa,CAAC,CAAC,QAAQ;AAC7B,QAAM,aAAa,aAAa,IAAI,EAAE,UAAU,GAAG,QAAQ,EAAE,IAAI,CAAC;AAClE,MAAI,MAAM,YAAY;AACpB,eAAW,aAAa,MAAM;AAAA,EAChC;AACA,MAAI,WAAW,WAAW;AACxB,UAAM,MAAM,MAAM,IAAI,MAAM,EAAE,EAAE,SAAS,YAAY,IAAI;AAAA,EAC3D;AACA,MAAI,WAAW,MAAM,qBAAqB,QAAQ,GAAG;AACnD,UAAM,MAAM,cAAc,IAAI,MAAM,EAAE,EAAE,SAAS,YAAY,IAAI;AAAA,EACnE;AACA,MAAI,UAAU;AACZ,UAAM,MAAM,OAAO,IAAI,MAAM,EAAE,EAAE,SAAS,YAAY,IAAI;AAAA,EAC5D;AACA,QAAM,MAAM,MAAM,OAAO,IAAI,MAAM,EAAE,EAAE;AAAA,IACrC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,WAAW;AACb,UAAM,MAAM,MAAM;AAClB,QAAI,IAAI,KAAK,UAAU,QAAQ,IAAI,KAAK,OAAO,KAAK,CAAC,UAAU,MAAM,SAAS,cAAc,GAAG;AAC7F,YAAM,QAAQ,OAAO,OAAO,IAAI,MAAM,6BAA6B,GAAG;AAAA,QACpE,UAAU;AAAA,QACV,MAAM,IAAI;AAAA,MACZ,CAAC;AACD,YAAM;AAAA,IACR;AAAA,EACF;AACA,SAAO;AACT;;;ACvCA,IAAI,sCAAsC;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AClBA,SAAS,aAAa,OAAO;AAC3B,QAAM,UAAU,MAAM;AAAA,IACpB,CAAC,SAAS,KAAK,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,YAAY,CAAC,EAAE,KAAK,GAAG;AAAA,EAClF;AACA,QAAMA,SAAQ,OAAO,QAAQ,IAAI,CAAC,MAAM,MAAM,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC;AAC7D,SAAO,IAAI,OAAOA,QAAO,GAAG;AAC9B;;;AJAA,IAAM,QAAQ,aAAa,mCAAyB;AACpD,IAAM,uBAAuB,MAAM,KAAK,KAAK,KAAK;AAClD,IAAM,SAAS,CAAC;AAChB,IAAM,eAAe,SAAS,YAAY,QAAQ;AAChD,SAAO,SAAS,IAAI,WAAW,MAAM;AAAA,IACnC,IAAI;AAAA,IACJ,eAAe;AAAA,IACf,GAAG;AAAA,EACL,CAAC;AACD,SAAO,SAAS,IAAI,WAAW,MAAM;AAAA,IACnC,IAAI;AAAA,IACJ,eAAe;AAAA,IACf,SAAS;AAAA,IACT,GAAG;AAAA,EACL,CAAC;AACD,SAAO,QAAQ,IAAI,WAAW,MAAM;AAAA,IAClC,IAAI;AAAA,IACJ,eAAe;AAAA,IACf,SAAS;AAAA,IACT,GAAG;AAAA,EACL,CAAC;AACD,SAAO,gBAAgB,IAAI,WAAW,MAAM;AAAA,IAC1C,IAAI;AAAA,IACJ,eAAe;AAAA,IACf,SAAS;AAAA,IACT,GAAG;AAAA,EACL,CAAC;AACH;AACA,SAAS,WAAW,SAAS,gBAAgB;AAC3C,QAAM;AAAA,IACJ,UAAU;AAAA,IACV,aAAa,aAAAC;AAAA,IACb,KAAK;AAAA,IACL,UAAU,MAAM,KAAK;AAAA;AAAA,IAErB;AAAA,EACF,IAAI,eAAe,YAAY,CAAC;AAChC,MAAI,CAAC,SAAS;AACZ,WAAO,CAAC;AAAA,EACV;AACA,QAAM,SAAS,EAAE,YAAY,QAAQ;AACrC,MAAI,OAAO,UAAU,MAAM;AACzB,iBAAa,YAAY,MAAM;AAAA,EACjC;AACA,QAAM,QAAQ,OAAO;AAAA,IACnB;AAAA,MACE,YAAY,cAAc;AAAA,MAC1B;AAAA,MACA,iCAAiC;AAAA,MACjC,qBAAqB;AAAA,MACrB,cAAc,IAAI,WAAW;AAAA,MAC7B;AAAA,MACA,GAAG;AAAA,IACL;AAAA,IACA,eAAe;AAAA,EACjB;AACA,MAAI,OAAO,MAAM,yBAAyB,cAAc,OAAO,MAAM,gBAAgB,YAAY;AAC/F,UAAM,IAAI,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAUf;AAAA,EACH;AACA,QAAM,SAAS,CAAC;AAChB,QAAM,UAAU,IAAI,WAAW,OAAO,MAAM;AAC5C,SAAO,GAAG,mBAAmB,MAAM,oBAAoB;AACvD,SAAO,GAAG,cAAc,MAAM,WAAW;AACzC,SAAO;AAAA,IACL;AAAA,IACA,CAAC,MAAM,QAAQ,IAAI,KAAK,4CAA4C,CAAC;AAAA,EACvE;AACA,QAAM,aAAa,GAAG,UAAU,eAAe,OAAO,MAAM;AAC1D,UAAM,CAAC,QAAQ,SAAS,OAAO,IAAI,KAAK;AACxC,UAAM,EAAE,SAAS,IAAI,IAAI,IAAI,QAAQ,KAAK,oBAAoB;AAC9D,UAAM,qBAAqB,SAAS,WAAW,UAAU,KAAK,MAAM,WAAW;AAC/E,QAAI,EAAE,sBAAsB,MAAM,WAAW,MAAM;AACjD;AAAA,IACF;AACA,UAAM,aAAa,CAAC,CAAC,QAAQ;AAC7B,YAAQ,aAAa;AACrB,YAAQ,QAAQ,aAAa;AAC7B,UAAM,EAAE,WAAW,aAAa,EAAE,IAAI,MAAM,iBAAiB;AAC3D,UAAI,sBAAsB,KAAK,MAAM,OAAO,GAAG;AAC7C,cAAM,cAAc,OAAO,MAAM,SAAS,QAAQ,aAAa,CAAC,KAAK,OAAO;AAC5E,cAAM,aAAa,MAAM,QAAQ;AAAA,UAC/B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,eAAO,EAAE,WAAW,YAAY,YAAY,YAAY;AAAA,MAC1D;AACA,UAAI,MAAM,SAAS,WAAW,QAAQ,MAAM,SAAS,QAAQ,uBAAuB,MAAM,QAAQ,MAAM,SAAS,MAAM,UAAU,CAAC,GAAG;AAAA,QACnI,CAAC,WAAW,OAAO,SAAS;AAAA,MAC9B,GAAG;AACD,cAAM,iBAAiB,IAAI;AAAA,UACzB,CAAC,CAAC,MAAM,SAAS,QAAQ,mBAAmB,IAAI;AAAA,QAClD,EAAE,QAAQ;AACV,cAAM,cAAc,KAAK;AAAA;AAAA;AAAA,UAGvB,KAAK,MAAM,iBAAiB,KAAK,IAAI,KAAK,GAAG,IAAI;AAAA,UACjD;AAAA,QACF;AACA,cAAM,aAAa,MAAM,QAAQ;AAAA,UAC/B;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AACA,eAAO,EAAE,WAAW,YAAY,YAAY,YAAY;AAAA,MAC1D;AACA,aAAO,CAAC;AAAA,IACV,EAAE;AACF,QAAI,WAAW;AACb,cAAQ;AACR,aAAO,aAAa,OAAO;AAAA,IAC7B;AAAA,EACF,CAAC;AACD,UAAQ,KAAK,KAAK,WAAW,YAAY,KAAK,MAAM,KAAK,CAAC;AAC1D,SAAO,CAAC;AACV;AACA,WAAW,UAAU;AACrB,WAAW,uBAAuB;",
  "names": ["regex", "BottleneckLight"]
}
