@growsober/sdk 1.0.31 → 1.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,11 @@
1
+ <claude-mem-context>
2
+ # Recent Activity
3
+
4
+ <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
+
6
+ ### Jan 25, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #1208 | 3:28 AM | 🔵 | UserResponse data structure includes comprehensive profile and notification settings | ~580 |
11
+ </claude-mem-context>
@@ -27,6 +27,8 @@ function createApiClient(sdkConfig) {
27
27
  'Content-Type': 'application/json',
28
28
  },
29
29
  });
30
+ // Track ongoing refresh to avoid duplicate calls
31
+ let refreshPromise = null;
30
32
  // Request interceptor - add auth token
31
33
  client.interceptors.request.use(async (requestConfig) => {
32
34
  const token = await sdkConfig.getAccessToken();
@@ -44,17 +46,26 @@ function createApiClient(sdkConfig) {
44
46
  }
45
47
  return response;
46
48
  }, async (error) => {
47
- if (error.response?.status === 401) {
49
+ const originalRequest = error.config;
50
+ if (error.response?.status === 401 && originalRequest && !originalRequest._retry) {
51
+ originalRequest._retry = true;
48
52
  if (sdkConfig.refreshAccessToken) {
49
53
  try {
50
- const newToken = await sdkConfig.refreshAccessToken();
51
- if (newToken && error.config) {
52
- error.config.headers.Authorization = `Bearer ${newToken}`;
53
- return client.request(error.config);
54
+ // Deduplicate concurrent refresh calls
55
+ if (!refreshPromise) {
56
+ refreshPromise = sdkConfig.refreshAccessToken().finally(() => {
57
+ refreshPromise = null;
58
+ });
59
+ }
60
+ const newToken = await refreshPromise;
61
+ if (newToken) {
62
+ originalRequest.headers.Authorization = `Bearer ${newToken}`;
63
+ return client.request(originalRequest);
54
64
  }
55
65
  }
56
66
  catch {
57
67
  sdkConfig.onUnauthorized?.();
68
+ return Promise.reject(error);
58
69
  }
59
70
  }
60
71
  else {
@@ -65,4 +76,4 @@ function createApiClient(sdkConfig) {
65
76
  });
66
77
  return client;
67
78
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBWUEsb0NBR0M7QUFFRCxvQ0FLQztBQXRCRCxrREFBcUY7QUFTckYsSUFBSSxNQUFNLEdBQXFCLElBQUksQ0FBQztBQUNwQyxJQUFJLFNBQVMsR0FBeUIsSUFBSSxDQUFDO0FBbUVsQyw4QkFBUztBQWpFbEIsU0FBZ0IsWUFBWSxDQUFDLFNBQW9CO0lBQy9DLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkIsb0JBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBZ0IsWUFBWTtJQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxTQUFvQjtJQUMzQyxNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsa0JBQWtCO1NBQ25DO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsdUNBQXVDO0lBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDN0IsS0FBSyxFQUFFLGFBQXlDLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUFDO0lBRUYsNERBQTREO0lBQzVELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNYLHNEQUFzRDtRQUN0RCx5Q0FBeUM7UUFDekMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRixRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQ0QsS0FBSyxFQUFFLEtBQWlCLEVBQUUsRUFBRTtRQUMxQixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ25DLElBQUksU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQztvQkFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUN0RCxJQUFJLFFBQVEsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQzdCLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxVQUFVLFFBQVEsRUFBRSxDQUFDO3dCQUMxRCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7Z0JBQUMsTUFBTSxDQUFDO29CQUNQLFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO2dCQUMvQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQy9CLENBQUMsQ0FDRixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBheGlvcywgeyBBeGlvc0luc3RhbmNlLCBBeGlvc0Vycm9yLCBJbnRlcm5hbEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcblxuZXhwb3J0IGludGVyZmFjZSBTREtDb25maWcge1xuICBiYXNlVVJMOiBzdHJpbmc7XG4gIGdldEFjY2Vzc1Rva2VuOiAoKSA9PiBzdHJpbmcgfCBudWxsIHwgUHJvbWlzZTxzdHJpbmcgfCBudWxsPjtcbiAgcmVmcmVzaEFjY2Vzc1Rva2VuPzogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICBvblVuYXV0aG9yaXplZD86ICgpID0+IHZvaWQ7XG59XG5cbmxldCBjb25maWc6IFNES0NvbmZpZyB8IG51bGwgPSBudWxsO1xubGV0IGFwaUNsaWVudDogQXhpb3NJbnN0YW5jZSB8IG51bGwgPSBudWxsO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlU0RLKHNka0NvbmZpZzogU0RLQ29uZmlnKTogdm9pZCB7XG4gIGNvbmZpZyA9IHNka0NvbmZpZztcbiAgYXBpQ2xpZW50ID0gY3JlYXRlQXBpQ2xpZW50KHNka0NvbmZpZyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRBcGlDbGllbnQoKTogQXhpb3NJbnN0YW5jZSB7XG4gIGlmICghYXBpQ2xpZW50KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdTREsgbm90IGNvbmZpZ3VyZWQuIENhbGwgY29uZmlndXJlU0RLKCkgZmlyc3QuJyk7XG4gIH1cbiAgcmV0dXJuIGFwaUNsaWVudDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQXBpQ2xpZW50KHNka0NvbmZpZzogU0RLQ29uZmlnKTogQXhpb3NJbnN0YW5jZSB7XG4gIGNvbnN0IGNsaWVudCA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgYmFzZVVSTDogc2RrQ29uZmlnLmJhc2VVUkwsXG4gICAgaGVhZGVyczoge1xuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICB9LFxuICB9KTtcblxuICAvLyBSZXF1ZXN0IGludGVyY2VwdG9yIC0gYWRkIGF1dGggdG9rZW5cbiAgY2xpZW50LmludGVyY2VwdG9ycy5yZXF1ZXN0LnVzZShcbiAgICBhc3luYyAocmVxdWVzdENvbmZpZzogSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWcpID0+IHtcbiAgICAgIGNvbnN0IHRva2VuID0gYXdhaXQgc2RrQ29uZmlnLmdldEFjY2Vzc1Rva2VuKCk7XG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgcmVxdWVzdENvbmZpZy5oZWFkZXJzLkF1dGhvcml6YXRpb24gPSBgQmVhcmVyICR7dG9rZW59YDtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXF1ZXN0Q29uZmlnO1xuICAgIH0sXG4gICAgKGVycm9yKSA9PiBQcm9taXNlLnJlamVjdChlcnJvcilcbiAgKTtcblxuICAvLyBSZXNwb25zZSBpbnRlcmNlcHRvciAtIHVud3JhcCBBUEkgcmVzcG9uc2UgYW5kIGhhbmRsZSA0MDFcbiAgY2xpZW50LmludGVyY2VwdG9ycy5yZXNwb25zZS51c2UoXG4gICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAvLyBBUEkgd3JhcHMgYWxsIHJlc3BvbnNlcyBpbiB7ZGF0YTogLi4uLCBtZXRhOiB7Li4ufX1cbiAgICAgIC8vIFVud3JhcCB0byByZXR1cm4ganVzdCB0aGUgZGF0YSBwb3J0aW9uXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSAmJiB0eXBlb2YgcmVzcG9uc2UuZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIHJlc3BvbnNlLmRhdGEpIHtcbiAgICAgICAgcmVzcG9uc2UuZGF0YSA9IHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNwb25zZTtcbiAgICB9LFxuICAgIGFzeW5jIChlcnJvcjogQXhpb3NFcnJvcikgPT4ge1xuICAgICAgaWYgKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMSkge1xuICAgICAgICBpZiAoc2RrQ29uZmlnLnJlZnJlc2hBY2Nlc3NUb2tlbikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBuZXdUb2tlbiA9IGF3YWl0IHNka0NvbmZpZy5yZWZyZXNoQWNjZXNzVG9rZW4oKTtcbiAgICAgICAgICAgIGlmIChuZXdUb2tlbiAmJiBlcnJvci5jb25maWcpIHtcbiAgICAgICAgICAgICAgZXJyb3IuY29uZmlnLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHtuZXdUb2tlbn1gO1xuICAgICAgICAgICAgICByZXR1cm4gY2xpZW50LnJlcXVlc3QoZXJyb3IuY29uZmlnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHNka0NvbmZpZy5vblVuYXV0aG9yaXplZD8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNka0NvbmZpZy5vblVuYXV0aG9yaXplZD8uKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnJvcik7XG4gICAgfVxuICApO1xuXG4gIHJldHVybiBjbGllbnQ7XG59XG5cbmV4cG9ydCB7IGFwaUNsaWVudCB9O1xuIl19
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBWUEsb0NBR0M7QUFFRCxvQ0FLQztBQXRCRCxrREFBcUY7QUFTckYsSUFBSSxNQUFNLEdBQXFCLElBQUksQ0FBQztBQUNwQyxJQUFJLFNBQVMsR0FBeUIsSUFBSSxDQUFDO0FBa0ZsQyw4QkFBUztBQWhGbEIsU0FBZ0IsWUFBWSxDQUFDLFNBQW9CO0lBQy9DLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDbkIsb0JBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQsU0FBZ0IsWUFBWTtJQUMxQixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFTLGVBQWUsQ0FBQyxTQUFvQjtJQUMzQyxNQUFNLE1BQU0sR0FBRyxlQUFLLENBQUMsTUFBTSxDQUFDO1FBQzFCLE9BQU8sRUFBRSxTQUFTLENBQUMsT0FBTztRQUMxQixPQUFPLEVBQUU7WUFDUCxjQUFjLEVBQUUsa0JBQWtCO1NBQ25DO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsaURBQWlEO0lBQ2pELElBQUksY0FBYyxHQUEyQixJQUFJLENBQUM7SUFFbEQsdUNBQXVDO0lBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDN0IsS0FBSyxFQUFFLGFBQXlDLEVBQUUsRUFBRTtRQUNsRCxNQUFNLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMvQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxLQUFLLEVBQUUsQ0FBQztRQUMxRCxDQUFDO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUNqQyxDQUFDO0lBRUYsNERBQTREO0lBQzVELE1BQU0sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FDOUIsQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUNYLHNEQUFzRDtRQUN0RCx5Q0FBeUM7UUFDekMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLE9BQU8sUUFBUSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsRixRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDLEVBQ0QsS0FBSyxFQUFFLEtBQWlCLEVBQUUsRUFBRTtRQUMxQixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBMkQsQ0FBQztRQUUxRixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUUsTUFBTSxLQUFLLEdBQUcsSUFBSSxlQUFlLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakYsZUFBZSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFFOUIsSUFBSSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDakMsSUFBSSxDQUFDO29CQUNILHVDQUF1QztvQkFDdkMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO3dCQUNwQixjQUFjLEdBQUcsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRTs0QkFDM0QsY0FBYyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQztvQkFDRCxNQUFNLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQztvQkFFdEMsSUFBSSxRQUFRLEVBQUUsQ0FBQzt3QkFDYixlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxVQUFVLFFBQVEsRUFBRSxDQUFDO3dCQUM3RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7b0JBQ3pDLENBQUM7Z0JBQ0gsQ0FBQztnQkFBQyxNQUFNLENBQUM7b0JBQ1AsU0FBUyxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUM7b0JBQzdCLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDLENBQ0YsQ0FBQztJQUVGLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXhpb3MsIHsgQXhpb3NJbnN0YW5jZSwgQXhpb3NFcnJvciwgSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWcgfSBmcm9tICdheGlvcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU0RLQ29uZmlnIHtcbiAgYmFzZVVSTDogc3RyaW5nO1xuICBnZXRBY2Nlc3NUb2tlbjogKCkgPT4gc3RyaW5nIHwgbnVsbCB8IFByb21pc2U8c3RyaW5nIHwgbnVsbD47XG4gIHJlZnJlc2hBY2Nlc3NUb2tlbj86ICgpID0+IFByb21pc2U8c3RyaW5nPjtcbiAgb25VbmF1dGhvcml6ZWQ/OiAoKSA9PiB2b2lkO1xufVxuXG5sZXQgY29uZmlnOiBTREtDb25maWcgfCBudWxsID0gbnVsbDtcbmxldCBhcGlDbGllbnQ6IEF4aW9zSW5zdGFuY2UgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZVNESyhzZGtDb25maWc6IFNES0NvbmZpZyk6IHZvaWQge1xuICBjb25maWcgPSBzZGtDb25maWc7XG4gIGFwaUNsaWVudCA9IGNyZWF0ZUFwaUNsaWVudChzZGtDb25maWcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpQ2xpZW50KCk6IEF4aW9zSW5zdGFuY2Uge1xuICBpZiAoIWFwaUNsaWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcignU0RLIG5vdCBjb25maWd1cmVkLiBDYWxsIGNvbmZpZ3VyZVNESygpIGZpcnN0LicpO1xuICB9XG4gIHJldHVybiBhcGlDbGllbnQ7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUFwaUNsaWVudChzZGtDb25maWc6IFNES0NvbmZpZyk6IEF4aW9zSW5zdGFuY2Uge1xuICBjb25zdCBjbGllbnQgPSBheGlvcy5jcmVhdGUoe1xuICAgIGJhc2VVUkw6IHNka0NvbmZpZy5iYXNlVVJMLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gVHJhY2sgb25nb2luZyByZWZyZXNoIHRvIGF2b2lkIGR1cGxpY2F0ZSBjYWxsc1xuICBsZXQgcmVmcmVzaFByb21pc2U6IFByb21pc2U8c3RyaW5nPiB8IG51bGwgPSBudWxsO1xuXG4gIC8vIFJlcXVlc3QgaW50ZXJjZXB0b3IgLSBhZGQgYXV0aCB0b2tlblxuICBjbGllbnQuaW50ZXJjZXB0b3JzLnJlcXVlc3QudXNlKFxuICAgIGFzeW5jIChyZXF1ZXN0Q29uZmlnOiBJbnRlcm5hbEF4aW9zUmVxdWVzdENvbmZpZykgPT4ge1xuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBzZGtDb25maWcuZ2V0QWNjZXNzVG9rZW4oKTtcbiAgICAgIGlmICh0b2tlbikge1xuICAgICAgICByZXF1ZXN0Q29uZmlnLmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHt0b2tlbn1gO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcXVlc3RDb25maWc7XG4gICAgfSxcbiAgICAoZXJyb3IpID0+IFByb21pc2UucmVqZWN0KGVycm9yKVxuICApO1xuXG4gIC8vIFJlc3BvbnNlIGludGVyY2VwdG9yIC0gdW53cmFwIEFQSSByZXNwb25zZSBhbmQgaGFuZGxlIDQwMVxuICBjbGllbnQuaW50ZXJjZXB0b3JzLnJlc3BvbnNlLnVzZShcbiAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgIC8vIEFQSSB3cmFwcyBhbGwgcmVzcG9uc2VzIGluIHtkYXRhOiAuLi4sIG1ldGE6IHsuLi59fVxuICAgICAgLy8gVW53cmFwIHRvIHJldHVybiBqdXN0IHRoZSBkYXRhIHBvcnRpb25cbiAgICAgIGlmIChyZXNwb25zZS5kYXRhICYmIHR5cGVvZiByZXNwb25zZS5kYXRhID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICByZXNwb25zZS5kYXRhID0gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH0sXG4gICAgYXN5bmMgKGVycm9yOiBBeGlvc0Vycm9yKSA9PiB7XG4gICAgICBjb25zdCBvcmlnaW5hbFJlcXVlc3QgPSBlcnJvci5jb25maWcgYXMgSW50ZXJuYWxBeGlvc1JlcXVlc3RDb25maWcgJiB7IF9yZXRyeT86IGJvb2xlYW4gfTtcblxuICAgICAgaWYgKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT09IDQwMSAmJiBvcmlnaW5hbFJlcXVlc3QgJiYgIW9yaWdpbmFsUmVxdWVzdC5fcmV0cnkpIHtcbiAgICAgICAgb3JpZ2luYWxSZXF1ZXN0Ll9yZXRyeSA9IHRydWU7XG5cbiAgICAgICAgaWYgKHNka0NvbmZpZy5yZWZyZXNoQWNjZXNzVG9rZW4pIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gRGVkdXBsaWNhdGUgY29uY3VycmVudCByZWZyZXNoIGNhbGxzXG4gICAgICAgICAgICBpZiAoIXJlZnJlc2hQcm9taXNlKSB7XG4gICAgICAgICAgICAgIHJlZnJlc2hQcm9taXNlID0gc2RrQ29uZmlnLnJlZnJlc2hBY2Nlc3NUb2tlbigpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlZnJlc2hQcm9taXNlID0gbnVsbDtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBuZXdUb2tlbiA9IGF3YWl0IHJlZnJlc2hQcm9taXNlO1xuXG4gICAgICAgICAgICBpZiAobmV3VG9rZW4pIHtcbiAgICAgICAgICAgICAgb3JpZ2luYWxSZXF1ZXN0LmhlYWRlcnMuQXV0aG9yaXphdGlvbiA9IGBCZWFyZXIgJHtuZXdUb2tlbn1gO1xuICAgICAgICAgICAgICByZXR1cm4gY2xpZW50LnJlcXVlc3Qob3JpZ2luYWxSZXF1ZXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgIHNka0NvbmZpZy5vblVuYXV0aG9yaXplZD8uKCk7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZGtDb25maWcub25VbmF1dGhvcml6ZWQ/LigpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZXJyb3IpO1xuICAgIH1cbiAgKTtcblxuICByZXR1cm4gY2xpZW50O1xufVxuXG5leHBvcnQgeyBhcGlDbGllbnQgfTtcbiJdfQ==
@@ -183,10 +183,11 @@ function useUpdateCreatorReward(creatorId, options) {
183
183
  const response = await client.patch(`/api/v1/creators/${creatorId}/rewards/${id}`, data);
184
184
  return response.data;
185
185
  },
186
- onSuccess: () => {
186
+ ...options,
187
+ onSuccess: (...args) => {
187
188
  queryClient.invalidateQueries({ queryKey: creators_1.creatorKeys.all });
189
+ options?.onSuccess?.(...args);
188
190
  },
189
- ...options,
190
191
  });
191
192
  }
192
193
  /**
@@ -206,10 +207,11 @@ function useDeleteCreatorReward(creatorId, options) {
206
207
  const client = (0, client_1.getApiClient)();
207
208
  await client.delete(`/api/v1/creators/${creatorId}/rewards/${rewardId}`);
208
209
  },
209
- onSuccess: () => {
210
+ ...options,
211
+ onSuccess: (...args) => {
210
212
  queryClient.invalidateQueries({ queryKey: creators_1.creatorKeys.all });
213
+ options?.onSuccess?.(...args);
211
214
  },
212
- ...options,
213
215
  });
214
216
  }
215
217
  // ============================================================================
@@ -352,4 +354,4 @@ function useGenerateGatheringTypeSuggestions(creatorId) {
352
354
  },
353
355
  });
354
356
  }
355
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9jcmVhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSw0Q0FnQkM7QUFlRCw0Q0FvQkM7QUFxQkQsOERBNkJDO0FBZUQsb0VBd0JDO0FBdURELHdEQWFDO0FBZUQsd0RBb0JDO0FBWUQsd0RBZ0JDO0FBd0JELHdEQWFDO0FBaUJELHdEQW9CQztBQWNELDBEQWdCQztBQWNELHdEQWFDO0FBZUQsa0ZBYUM7QUEvY0QsdURBQXdGO0FBQ3hGLHNDQUF5QztBQUN6QyxrREFBa0Q7QUFZbEQsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsT0FBOEY7SUFFOUYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUEwQixFQUE0QixFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE9BR0M7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRC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LE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsU0FBUywyQkFBMkIsQ0FBQyxDQUFDO1lBQzdGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQztRQUN2QixDQUFDO1FBQ0QsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNkLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxzQkFBVyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDckYsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNdXRhdGlvbiwgdXNlUXVlcnlDbGllbnQsIFVzZU11dGF0aW9uT3B0aW9ucyB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHsgY3JlYXRvcktleXMgfSBmcm9tICcuLi9xdWVyaWVzL2NyZWF0b3JzJztcbmltcG9ydCB0eXBlIHtcbiAgQ3JlYXRvclJlc3BvbnNlLFxuICBDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gIENyZWF0ZUNyZWF0b3JSZXF1ZXN0LFxuICBVcGRhdGVDcmVhdG9yUmVxdWVzdCxcbiAgQ3JlYXRlQXZhaWxhYmlsaXR5UmVxdWVzdCxcbiAgR2F0aGVyaW5nVHlwZVJlc3BvbnNlLFxuICBDcmVhdGVHYXRoZXJpbmdUeXBlUmVxdWVzdCxcbiAgVXBkYXRlR2F0aGVyaW5nVHlwZVJlcXVlc3QsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTVVUQVRJT04gSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgY3JlYXRvciBwcm9maWxlIGZvciB0aGUgY3VycmVudCB1c2VyXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGVBc3luYzogY3JlYXRlQ3JlYXRvciB9ID0gdXNlQ3JlYXRlQ3JlYXRvcigpO1xuICpcbiAqIGF3YWl0IGNyZWF0ZUNyZWF0b3Ioe1xuICogICBzbHVnOiAnam9obi1kb2UnLFxuICogICBkaXNwbGF5TmFtZTogJ0pvaG4gRG9lJyxcbiAqICAgYmlvOiAnV2VsbG5lc3MgZmFjaWxpdGF0b3InLFxuICogICBjYW5GYWNpbGl0YXRlOiB0cnVlLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0ZUNyZWF0b3IoXG4gIG9wdGlvbnM/OiBPbWl0PFVzZU11dGF0aW9uT3B0aW9uczxDcmVhdG9yUmVzcG9uc2UsIEVycm9yLCBDcmVhdGVDcmVhdG9yUmVxdWVzdD4sICdtdXRhdGlvbkZuJz5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlQ3JlYXRvclJlcXVlc3QpOiBQcm9taXNlPENyZWF0b3JSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KCcvYXBpL3YxL2NyZWF0b3JzJywgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYWxsIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogVXBkYXRlIGEgY3JlYXRvciBwcm9maWxlXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGVBc3luYzogdXBkYXRlQ3JlYXRvciB9ID0gdXNlVXBkYXRlQ3JlYXRvcigpO1xuICpcbiAqIGF3YWl0IHVwZGF0ZUNyZWF0b3Ioe1xuICogICBpZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgZGF0YTogeyBiaW86ICdVcGRhdGVkIGJpbycgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVDcmVhdG9yKFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8Q3JlYXRvclJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVDcmVhdG9yUmVxdWVzdCB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7IGlkLCBkYXRhIH06IHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlQ3JlYXRvclJlcXVlc3QgfSk6IFByb21pc2U8Q3JlYXRvclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBhdGNoKGAvYXBpL3YxL2NyZWF0b3JzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZGV0YWlsKHZhcmlhYmxlcy5pZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5tZSgpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogQWRkIGFuIGF2YWlsYWJpbGl0eSBzbG90IGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZUFzeW5jOiBhZGRBdmFpbGFiaWxpdHkgfSA9IHVzZUFkZENyZWF0b3JBdmFpbGFiaWxpdHkoKTtcbiAqXG4gKiBhd2FpdCBhZGRBdmFpbGFiaWxpdHkoe1xuICogICBjcmVhdG9ySWQ6ICdjcmVhdG9yLTEyMycsXG4gKiAgIGRhdGE6IHtcbiAqICAgICBkYXlPZldlZWs6IDEsIC8vIE1vbmRheVxuICogICAgIHN0YXJ0VGltZTogJzA5OjAwJyxcbiAqICAgICBlbmRUaW1lOiAnMTc6MDAnLFxuICogICAgIHRpbWV6b25lOiAnRXVyb3BlL0xvbmRvbicsXG4gKiAgICAgaXNSZWN1cnJpbmc6IHRydWUsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQWRkQ3JlYXRvckF2YWlsYWJpbGl0eShcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPFxuICAgICAgQ3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlLFxuICAgICAgRXJyb3IsXG4gICAgICB7IGNyZWF0b3JJZDogc3RyaW5nOyBkYXRhOiBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0IH1cbiAgICA+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGNyZWF0b3JJZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgY3JlYXRvcklkOiBzdHJpbmc7XG4gICAgICBkYXRhOiBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPENyZWF0b3JBdmFpbGFiaWxpdHlSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9hdmFpbGFiaWxpdHlgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hdmFpbGFiaWxpdHkodmFyaWFibGVzLmNyZWF0b3JJZCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgYW4gYXZhaWxhYmlsaXR5IHNsb3QgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlQXN5bmM6IHJlbW92ZUF2YWlsYWJpbGl0eSB9ID0gdXNlUmVtb3ZlQ3JlYXRvckF2YWlsYWJpbGl0eSgpO1xuICpcbiAqIGF3YWl0IHJlbW92ZUF2YWlsYWJpbGl0eSh7XG4gKiAgIGNyZWF0b3JJZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgYXZhaWxhYmlsaXR5SWQ6ICdhdmFpbGFiaWxpdHktNDU2JyxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VSZW1vdmVDcmVhdG9yQXZhaWxhYmlsaXR5KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHsgY3JlYXRvcklkOiBzdHJpbmc7IGF2YWlsYWJpbGl0eUlkOiBzdHJpbmcgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgY3JlYXRvcklkLFxuICAgICAgYXZhaWxhYmlsaXR5SWQsXG4gICAgfToge1xuICAgICAgY3JlYXRvcklkOiBzdHJpbmc7XG4gICAgICBhdmFpbGFiaWxpdHlJZDogc3RyaW5nO1xuICAgIH0pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vYXZhaWxhYmlsaXR5LyR7YXZhaWxhYmlsaXR5SWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJpbGl0eSh2YXJpYWJsZXMuY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDUkVBVE9SIFJFV0FSRFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDcmVhdG9yUmV3YXJkUmVxdWVzdCB7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicgfCAnT05MSU5FJyB8ICdCT1RIJztcbiAgY29kZT86IHN0cmluZztcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRvclJld2FyZFJlc3BvbnNlIHtcbiAgaWQ6IHN0cmluZztcbiAgY3JlYXRvcklkOiBzdHJpbmc7XG4gIGJhZGdlSWQ6IHN0cmluZztcbiAgdGl0bGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicgfCAnT05MSU5FJyB8ICdCT1RIJztcbiAgY29kZT86IHN0cmluZztcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB1cGRhdGVkQXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDcmVhdG9yUmV3YXJkUmVxdWVzdCB7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVkZWVtVHlwZT86ICdJTl9QRVJTT04nIHwgJ09OTElORScgfCAnQk9USCc7XG4gIGNvZGU/OiBzdHJpbmc7XG4gIG1heFJlZGVtcHRpb25zPzogbnVtYmVyO1xuICB2YWxpZFVudGlsPzogc3RyaW5nO1xuICBpc0FjdGl2ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IHJld2FyZCBmb3IgYSBjcmVhdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgY3JlYXRlUmV3YXJkID0gdXNlQ3JlYXRlQ3JlYXRvclJld2FyZChjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IGNyZWF0ZVJld2FyZC5tdXRhdGVBc3luYyh7XG4gKiAgIGJhZGdlSWQ6ICdiYWRnZS0xMjMnLFxuICogICB0aXRsZTogJ0ZyZWUgU2Vzc2lvbicsXG4gKiAgIGRlc2NyaXB0aW9uOiAnR2V0IGEgZnJlZSAzMC1taW51dGUgc2Vzc2lvbicsXG4gKiAgIHJlZGVlbVR5cGU6ICdJTl9QRVJTT04nLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0ZUNyZWF0b3JSZXdhcmQoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZUNyZWF0b3JSZXdhcmRSZXF1ZXN0KTogUHJvbWlzZTxDcmVhdG9yUmV3YXJkUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcmV3YXJkc2AsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFsbCB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYW4gZXhpc3RpbmcgcmV3YXJkIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1cGRhdGVSZXdhcmQgPSB1c2VVcGRhdGVDcmVhdG9yUmV3YXJkKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgdXBkYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgaWQ6ICdyZXdhcmQtMTIzJyxcbiAqICAgZGF0YTogeyBpc0FjdGl2ZTogZmFsc2UgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVDcmVhdG9yUmV3YXJkKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8XG4gICAgVXNlTXV0YXRpb25PcHRpb25zPENyZWF0b3JSZXdhcmRSZXNwb25zZSwgRXJyb3IsIHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlQ3JlYXRvclJld2FyZFJlcXVlc3QgfT4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoeyBpZCwgZGF0YSB9OiB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUNyZWF0b3JSZXdhcmRSZXF1ZXN0IH0pOiBQcm9taXNlPENyZWF0b3JSZXdhcmRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wYXRjaChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcmV3YXJkcy8ke2lkfWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFsbCB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBhIHJld2FyZCBmb3IgYSBjcmVhdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgZGVsZXRlUmV3YXJkID0gdXNlRGVsZXRlQ3JlYXRvclJld2FyZChjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IGRlbGV0ZVJld2FyZC5tdXRhdGVBc3luYygncmV3YXJkLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWxldGVDcmVhdG9yUmV3YXJkKFxuICBjcmVhdG9ySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPHZvaWQsIEVycm9yLCBzdHJpbmc+LCAnbXV0YXRpb25Gbic+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHJld2FyZElkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgYXdhaXQgY2xpZW50LmRlbGV0ZShgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vcmV3YXJkcy8ke3Jld2FyZElkfWApO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hbGwgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gR0FUSEVSSU5HIFRZUEUgTVVUQVRJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGdhdGhlcmluZyB0eXBlIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGNyZWF0ZUdhdGhlcmluZ1R5cGUgPSB1c2VDcmVhdGVHYXRoZXJpbmdUeXBlKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgY3JlYXRlR2F0aGVyaW5nVHlwZS5tdXRhdGVBc3luYyh7XG4gKiAgIG5hbWU6ICdNb3JuaW5nIFlvZ2EgaW4gdGhlIFBhcmsnLFxuICogICBkZXNjcmlwdGlvbjogJ0dlbnRsZSA0NS1taW51dGUgeW9nYSBzZXNzaW9uJyxcbiAqICAgZHVyYXRpb246IDQ1LFxuICogICB2aWJlczogWydNaW5kZnVsJywgJ0NoaWxsJ10sXG4gKiAgIGNhdGVnb3J5OiAnTU9WRU1FTlQnLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNyZWF0ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGRhdGE6IENyZWF0ZUdhdGhlcmluZ1R5cGVSZXF1ZXN0KTogUHJvbWlzZTxHYXRoZXJpbmdUeXBlUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzYCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZ2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBnYXRoZXJpbmcgdHlwZVxuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgdXBkYXRlR2F0aGVyaW5nVHlwZSA9IHVzZVVwZGF0ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkKTtcbiAqXG4gKiBhd2FpdCB1cGRhdGVHYXRoZXJpbmdUeXBlLm11dGF0ZUFzeW5jKHtcbiAqICAgaWQ6ICdnYXRoZXJpbmctdHlwZS0xMjMnLFxuICogICBkYXRhOiB7IGRlc2NyaXB0aW9uOiAnVXBkYXRlZCBkZXNjcmlwdGlvbicgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VVcGRhdGVHYXRoZXJpbmdUeXBlKGNyZWF0b3JJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBpZCxcbiAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgaWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IFVwZGF0ZUdhdGhlcmluZ1R5cGVSZXF1ZXN0O1xuICAgIH0pOiBQcm9taXNlPEdhdGhlcmluZ1R5cGVSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2dhdGhlcmluZy10eXBlcy8ke2lkfWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hcHByb3ZlZEdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogQXBwcm92ZSBhIGdhdGhlcmluZyB0eXBlIChmb3IgQUktc3VnZ2VzdGVkIHR5cGVzKVxuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgYXBwcm92ZUdhdGhlcmluZ1R5cGUgPSB1c2VBcHByb3ZlR2F0aGVyaW5nVHlwZShjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IGFwcHJvdmVHYXRoZXJpbmdUeXBlLm11dGF0ZUFzeW5jKCdnYXRoZXJpbmctdHlwZS0xMjMnKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQXBwcm92ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGdhdGhlcmluZ1R5cGVJZDogc3RyaW5nKTogUHJvbWlzZTxHYXRoZXJpbmdUeXBlUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucHV0KFxuICAgICAgICBgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzLyR7Z2F0aGVyaW5nVHlwZUlkfS9hcHByb3ZlYFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5nYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpIH0pO1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYXBwcm92ZWRHYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIERlbGV0ZSBhIGdhdGhlcmluZyB0eXBlXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBkZWxldGVHYXRoZXJpbmdUeXBlID0gdXNlRGVsZXRlR2F0aGVyaW5nVHlwZShjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IGRlbGV0ZUdhdGhlcmluZ1R5cGUubXV0YXRlQXN5bmMoJ2dhdGhlcmluZy10eXBlLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VEZWxldGVHYXRoZXJpbmdUeXBlKGNyZWF0b3JJZDogc3RyaW5nKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChnYXRoZXJpbmdUeXBlSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQuZGVsZXRlKGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9nYXRoZXJpbmctdHlwZXMvJHtnYXRoZXJpbmdUeXBlSWR9YCk7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hcHByb3ZlZEdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgQUkgc3VnZ2VzdGlvbnMgZm9yIGdhdGhlcmluZyB0eXBlcyBiYXNlZCBvbiBmYWNpbGl0YXRvciBwcm9maWxlXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBnZW5lcmF0ZVN1Z2dlc3Rpb25zID0gdXNlR2VuZXJhdGVHYXRoZXJpbmdUeXBlU3VnZ2VzdGlvbnMoY3JlYXRvcklkKTtcbiAqXG4gKiBhd2FpdCBnZW5lcmF0ZVN1Z2dlc3Rpb25zLm11dGF0ZUFzeW5jKCk7XG4gKiAvLyBSZXR1cm5zIHRoZSBuZXdseSBjcmVhdGVkICh1bmFwcHJvdmVkKSBnYXRoZXJpbmcgdHlwZXNcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlR2VuZXJhdGVHYXRoZXJpbmdUeXBlU3VnZ2VzdGlvbnMoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKCk6IFByb21pc2U8R2F0aGVyaW5nVHlwZVJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucG9zdChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzL2dlbmVyYXRlYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZ2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRvcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL211dGF0aW9ucy9jcmVhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlDQSw0Q0FnQkM7QUFlRCw0Q0FvQkM7QUFxQkQsOERBNkJDO0FBZUQsb0VBd0JDO0FBdURELHdEQWFDO0FBZUQsd0RBcUJDO0FBWUQsd0RBaUJDO0FBd0JELHdEQWFDO0FBaUJELHdEQW9CQztBQWNELDBEQWdCQztBQWNELHdEQWFDO0FBZUQsa0ZBYUM7QUFqZEQsdURBQXdGO0FBQ3hGLHNDQUF5QztBQUN6QyxrREFBa0Q7QUFZbEQsK0VBQStFO0FBQy9FLGlCQUFpQjtBQUNqQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsT0FBOEY7SUFFOUYsTUFBTSxXQUFXLEdBQUcsSUFBQSw0QkFBYyxHQUFFLENBQUM7SUFFckMsT0FBTyxJQUFBLHlCQUFXLEVBQUM7UUFDakIsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUEwQixFQUE0QixFQUFFO1lBQ3pFLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM3RCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDZCxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE9BR0M7SUFFRCxNQUFNLFdBQVcsR0FBRyxJQUFBLDRC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QUNILFNBQWdCLG1DQUFtQyxDQUFDLFNBQWlCO0lBQ25FLE1BQU0sV0FBVyxHQUFHLElBQUEsNEJBQWMsR0FBRSxDQUFDO0lBRXJDLE9BQU8sSUFBQSx5QkFBVyxFQUFDO1FBQ2pCLFVBQVUsRUFBRSxLQUFLLElBQXNDLEVBQUU7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixTQUFTLDJCQUEyQixDQUFDLENBQUM7WUFDN0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ2QsV0FBVyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsUUFBUSxFQUFFLHNCQUFXLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNyRixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZU11dGF0aW9uLCB1c2VRdWVyeUNsaWVudCwgVXNlTXV0YXRpb25PcHRpb25zIH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgeyBjcmVhdG9yS2V5cyB9IGZyb20gJy4uL3F1ZXJpZXMvY3JlYXRvcnMnO1xuaW1wb3J0IHR5cGUge1xuICBDcmVhdG9yUmVzcG9uc2UsXG4gIENyZWF0b3JBdmFpbGFiaWxpdHlSZXNwb25zZSxcbiAgQ3JlYXRlQ3JlYXRvclJlcXVlc3QsXG4gIFVwZGF0ZUNyZWF0b3JSZXF1ZXN0LFxuICBDcmVhdGVBdmFpbGFiaWxpdHlSZXF1ZXN0LFxuICBHYXRoZXJpbmdUeXBlUmVzcG9uc2UsXG4gIENyZWF0ZUdhdGhlcmluZ1R5cGVSZXF1ZXN0LFxuICBVcGRhdGVHYXRoZXJpbmdUeXBlUmVxdWVzdCxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNVVRBVElPTiBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBjcmVhdG9yIHByb2ZpbGUgZm9yIHRoZSBjdXJyZW50IHVzZXJcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZUFzeW5jOiBjcmVhdGVDcmVhdG9yIH0gPSB1c2VDcmVhdGVDcmVhdG9yKCk7XG4gKlxuICogYXdhaXQgY3JlYXRlQ3JlYXRvcih7XG4gKiAgIHNsdWc6ICdqb2huLWRvZScsXG4gKiAgIGRpc3BsYXlOYW1lOiAnSm9obiBEb2UnLFxuICogICBiaW86ICdXZWxsbmVzcyBmYWNpbGl0YXRvcicsXG4gKiAgIGNhbkZhY2lsaXRhdGU6IHRydWUsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlQ3JlYXRvcihcbiAgb3B0aW9ucz86IE9taXQ8VXNlTXV0YXRpb25PcHRpb25zPENyZWF0b3JSZXNwb25zZSwgRXJyb3IsIENyZWF0ZUNyZWF0b3JSZXF1ZXN0PiwgJ211dGF0aW9uRm4nPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jIChkYXRhOiBDcmVhdGVDcmVhdG9yUmVxdWVzdCk6IFByb21pc2U8Q3JlYXRvclJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoJy9hcGkvdjEvY3JlYXRvcnMnLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hbGwgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgYSBjcmVhdG9yIHByb2ZpbGVcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB7IG11dGF0ZUFzeW5jOiB1cGRhdGVDcmVhdG9yIH0gPSB1c2VVcGRhdGVDcmVhdG9yKCk7XG4gKlxuICogYXdhaXQgdXBkYXRlQ3JlYXRvcih7XG4gKiAgIGlkOiAnY3JlYXRvci0xMjMnLFxuICogICBkYXRhOiB7IGJpbzogJ1VwZGF0ZWQgYmlvJyB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUNyZWF0b3IoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczxDcmVhdG9yUmVzcG9uc2UsIEVycm9yLCB7IGlkOiBzdHJpbmc7IGRhdGE6IFVwZGF0ZUNyZWF0b3JSZXF1ZXN0IH0+LFxuICAgICdtdXRhdGlvbkZuJ1xuICA+XG4pIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHsgaWQsIGRhdGEgfTogeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVDcmVhdG9yUmVxdWVzdCB9KTogUHJvbWlzZTxDcmVhdG9yUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQucGF0Y2goYC9hcGkvdjEvY3JlYXRvcnMvJHtpZH1gLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoXywgdmFyaWFibGVzKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5kZXRhaWwodmFyaWFibGVzLmlkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLm1lKCkgfSk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBBZGQgYW4gYXZhaWxhYmlsaXR5IHNsb3QgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHsgbXV0YXRlQXN5bmM6IGFkZEF2YWlsYWJpbGl0eSB9ID0gdXNlQWRkQ3JlYXRvckF2YWlsYWJpbGl0eSgpO1xuICpcbiAqIGF3YWl0IGFkZEF2YWlsYWJpbGl0eSh7XG4gKiAgIGNyZWF0b3JJZDogJ2NyZWF0b3ItMTIzJyxcbiAqICAgZGF0YToge1xuICogICAgIGRheU9mV2VlazogMSwgLy8gTW9uZGF5XG4gKiAgICAgc3RhcnRUaW1lOiAnMDk6MDAnLFxuICogICAgIGVuZFRpbWU6ICcxNzowMCcsXG4gKiAgICAgdGltZXpvbmU6ICdFdXJvcGUvTG9uZG9uJyxcbiAqICAgICBpc1JlY3VycmluZzogdHJ1ZSxcbiAqICAgfSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBZGRDcmVhdG9yQXZhaWxhYmlsaXR5KFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8XG4gICAgICBDcmVhdG9yQXZhaWxhYmlsaXR5UmVzcG9uc2UsXG4gICAgICBFcnJvcixcbiAgICAgIHsgY3JlYXRvcklkOiBzdHJpbmc7IGRhdGE6IENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3QgfVxuICAgID4sXG4gICAgJ211dGF0aW9uRm4nXG4gID5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoe1xuICAgICAgY3JlYXRvcklkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIGRhdGE6IENyZWF0ZUF2YWlsYWJpbGl0eVJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8Q3JlYXRvckF2YWlsYWJpbGl0eVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBvc3QoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2F2YWlsYWJpbGl0eWAsIGRhdGEpO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6IChfLCB2YXJpYWJsZXMpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmF2YWlsYWJpbGl0eSh2YXJpYWJsZXMuY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhbiBhdmFpbGFiaWxpdHkgc2xvdCBmb3IgYSBjcmVhdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgeyBtdXRhdGVBc3luYzogcmVtb3ZlQXZhaWxhYmlsaXR5IH0gPSB1c2VSZW1vdmVDcmVhdG9yQXZhaWxhYmlsaXR5KCk7XG4gKlxuICogYXdhaXQgcmVtb3ZlQXZhaWxhYmlsaXR5KHtcbiAqICAgY3JlYXRvcklkOiAnY3JlYXRvci0xMjMnLFxuICogICBhdmFpbGFiaWxpdHlJZDogJ2F2YWlsYWJpbGl0eS00NTYnLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVJlbW92ZUNyZWF0b3JBdmFpbGFiaWxpdHkoXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZU11dGF0aW9uT3B0aW9uczx2b2lkLCBFcnJvciwgeyBjcmVhdG9ySWQ6IHN0cmluZzsgYXZhaWxhYmlsaXR5SWQ6IHN0cmluZyB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7XG4gICAgICBjcmVhdG9ySWQsXG4gICAgICBhdmFpbGFiaWxpdHlJZCxcbiAgICB9OiB7XG4gICAgICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgICAgIGF2YWlsYWJpbGl0eUlkOiBzdHJpbmc7XG4gICAgfSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQuZGVsZXRlKGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9hdmFpbGFiaWxpdHkvJHthdmFpbGFiaWxpdHlJZH1gKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKF8sIHZhcmlhYmxlcykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYXZhaWxhYmlsaXR5KHZhcmlhYmxlcy5jcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENSRUFUT1IgUkVXQVJEU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZUNyZWF0b3JSZXdhcmRSZXF1ZXN0IHtcbiAgYmFkZ2VJZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWRlZW1UeXBlOiAnSU5fUEVSU09OJyB8ICdPTkxJTkUnIHwgJ0JPVEgnO1xuICBjb2RlPzogc3RyaW5nO1xuICBtYXhSZWRlbXB0aW9ucz86IG51bWJlcjtcbiAgdmFsaWRVbnRpbD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdG9yUmV3YXJkUmVzcG9uc2Uge1xuICBpZDogc3RyaW5nO1xuICBjcmVhdG9ySWQ6IHN0cmluZztcbiAgYmFkZ2VJZDogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICByZWRlZW1UeXBlOiAnSU5fUEVSU09OJyB8ICdPTkxJTkUnIHwgJ0JPVEgnO1xuICBjb2RlPzogc3RyaW5nO1xuICBtYXhSZWRlbXB0aW9ucz86IG51bWJlcjtcbiAgdmFsaWRVbnRpbD86IHN0cmluZztcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNyZWF0b3JSZXdhcmRSZXF1ZXN0IHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICByZWRlZW1UeXBlPzogJ0lOX1BFUlNPTicgfCAnT05MSU5FJyB8ICdCT1RIJztcbiAgY29kZT86IHN0cmluZztcbiAgbWF4UmVkZW1wdGlvbnM/OiBudW1iZXI7XG4gIHZhbGlkVW50aWw/OiBzdHJpbmc7XG4gIGlzQWN0aXZlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgcmV3YXJkIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBjcmVhdGVSZXdhcmQgPSB1c2VDcmVhdGVDcmVhdG9yUmV3YXJkKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgY3JlYXRlUmV3YXJkLm11dGF0ZUFzeW5jKHtcbiAqICAgYmFkZ2VJZDogJ2JhZGdlLTEyMycsXG4gKiAgIHRpdGxlOiAnRnJlZSBTZXNzaW9uJyxcbiAqICAgZGVzY3JpcHRpb246ICdHZXQgYSBmcmVlIDMwLW1pbnV0ZSBzZXNzaW9uJyxcbiAqICAgcmVkZWVtVHlwZTogJ0lOX1BFUlNPTicsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlQ3JlYXRvclJld2FyZChjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlQ3JlYXRvclJld2FyZFJlcXVlc3QpOiBQcm9taXNlPENyZWF0b3JSZXdhcmRSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9yZXdhcmRzYCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYWxsIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhbiBleGlzdGluZyByZXdhcmQgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVwZGF0ZVJld2FyZCA9IHVzZVVwZGF0ZUNyZWF0b3JSZXdhcmQoY3JlYXRvcklkKTtcbiAqXG4gKiBhd2FpdCB1cGRhdGVSZXdhcmQubXV0YXRlQXN5bmMoe1xuICogICBpZDogJ3Jld2FyZC0xMjMnLFxuICogICBkYXRhOiB7IGlzQWN0aXZlOiBmYWxzZSB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUNyZWF0b3JSZXdhcmQoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VNdXRhdGlvbk9wdGlvbnM8Q3JlYXRvclJld2FyZFJlc3BvbnNlLCBFcnJvciwgeyBpZDogc3RyaW5nOyBkYXRhOiBVcGRhdGVDcmVhdG9yUmV3YXJkUmVxdWVzdCB9PixcbiAgICAnbXV0YXRpb25GbidcbiAgPlxuKSB7XG4gIGNvbnN0IHF1ZXJ5Q2xpZW50ID0gdXNlUXVlcnlDbGllbnQoKTtcblxuICByZXR1cm4gdXNlTXV0YXRpb24oe1xuICAgIG11dGF0aW9uRm46IGFzeW5jICh7IGlkLCBkYXRhIH06IHsgaWQ6IHN0cmluZzsgZGF0YTogVXBkYXRlQ3JlYXRvclJld2FyZFJlcXVlc3QgfSk6IFByb21pc2U8Q3JlYXRvclJld2FyZFJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnBhdGNoKGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9yZXdhcmRzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gICAgb25TdWNjZXNzOiAoLi4uYXJncykgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuYWxsIH0pO1xuICAgICAgb3B0aW9ucz8ub25TdWNjZXNzPy4oLi4uYXJncyk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGEgcmV3YXJkIGZvciBhIGNyZWF0b3JcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBkZWxldGVSZXdhcmQgPSB1c2VEZWxldGVDcmVhdG9yUmV3YXJkKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgZGVsZXRlUmV3YXJkLm11dGF0ZUFzeW5jKCdyZXdhcmQtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlbGV0ZUNyZWF0b3JSZXdhcmQoXG4gIGNyZWF0b3JJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VNdXRhdGlvbk9wdGlvbnM8dm9pZCwgRXJyb3IsIHN0cmluZz4sICdtdXRhdGlvbkZuJz5cbikge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAocmV3YXJkSWQ6IHN0cmluZyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBhd2FpdCBjbGllbnQuZGVsZXRlKGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9yZXdhcmRzLyR7cmV3YXJkSWR9YCk7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICAgIG9uU3VjY2VzczogKC4uLmFyZ3MpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFsbCB9KTtcbiAgICAgIG9wdGlvbnM/Lm9uU3VjY2Vzcz8uKC4uLmFyZ3MpO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHQVRIRVJJTkcgVFlQRSBNVVRBVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgZ2F0aGVyaW5nIHR5cGUgZm9yIGEgY3JlYXRvclxuICpcbiAqIEBwYXJhbSBjcmVhdG9ySWQgLSBDcmVhdG9yIElEXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogY29uc3QgY3JlYXRlR2F0aGVyaW5nVHlwZSA9IHVzZUNyZWF0ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkKTtcbiAqXG4gKiBhd2FpdCBjcmVhdGVHYXRoZXJpbmdUeXBlLm11dGF0ZUFzeW5jKHtcbiAqICAgbmFtZTogJ01vcm5pbmcgWW9nYSBpbiB0aGUgUGFyaycsXG4gKiAgIGRlc2NyaXB0aW9uOiAnR2VudGxlIDQ1LW1pbnV0ZSB5b2dhIHNlc3Npb24nLFxuICogICBkdXJhdGlvbjogNDUsXG4gKiAgIHZpYmVzOiBbJ01pbmRmdWwnLCAnQ2hpbGwnXSxcbiAqICAgY2F0ZWdvcnk6ICdNT1ZFTUVOVCcsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ3JlYXRlR2F0aGVyaW5nVHlwZShjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZGF0YTogQ3JlYXRlR2F0aGVyaW5nVHlwZVJlcXVlc3QpOiBQcm9taXNlPEdhdGhlcmluZ1R5cGVSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9nYXRoZXJpbmctdHlwZXNgLCBkYXRhKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5nYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFVwZGF0ZSBhIGdhdGhlcmluZyB0eXBlXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCB1cGRhdGVHYXRoZXJpbmdUeXBlID0gdXNlVXBkYXRlR2F0aGVyaW5nVHlwZShjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IHVwZGF0ZUdhdGhlcmluZ1R5cGUubXV0YXRlQXN5bmMoe1xuICogICBpZDogJ2dhdGhlcmluZy10eXBlLTEyMycsXG4gKiAgIGRhdGE6IHsgZGVzY3JpcHRpb246ICdVcGRhdGVkIGRlc2NyaXB0aW9uJyB9LFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVVwZGF0ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKHtcbiAgICAgIGlkLFxuICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICBpZDogc3RyaW5nO1xuICAgICAgZGF0YTogVXBkYXRlR2F0aGVyaW5nVHlwZVJlcXVlc3Q7XG4gICAgfSk6IFByb21pc2U8R2F0aGVyaW5nVHlwZVJlc3BvbnNlPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LnB1dChgL2FwaS92MS9jcmVhdG9ycy8ke2NyZWF0b3JJZH0vZ2F0aGVyaW5nLXR5cGVzLyR7aWR9YCwgZGF0YSk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZ2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFwcHJvdmVkR2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBBcHByb3ZlIGEgZ2F0aGVyaW5nIHR5cGUgKGZvciBBSS1zdWdnZXN0ZWQgdHlwZXMpXG4gKlxuICogQHBhcmFtIGNyZWF0b3JJZCAtIENyZWF0b3IgSURcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBjb25zdCBhcHByb3ZlR2F0aGVyaW5nVHlwZSA9IHVzZUFwcHJvdmVHYXRoZXJpbmdUeXBlKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgYXBwcm92ZUdhdGhlcmluZ1R5cGUubXV0YXRlQXN5bmMoJ2dhdGhlcmluZy10eXBlLTEyMycpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VBcHByb3ZlR2F0aGVyaW5nVHlwZShjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoZ2F0aGVyaW5nVHlwZUlkOiBzdHJpbmcpOiBQcm9taXNlPEdhdGhlcmluZ1R5cGVSZXNwb25zZT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wdXQoXG4gICAgICAgIGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9nYXRoZXJpbmctdHlwZXMvJHtnYXRoZXJpbmdUeXBlSWR9L2FwcHJvdmVgXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGE7XG4gICAgfSxcbiAgICBvblN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5hcHByb3ZlZEdhdGhlcmluZ1R5cGVzKGNyZWF0b3JJZCkgfSk7XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogRGVsZXRlIGEgZ2F0aGVyaW5nIHR5cGVcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGRlbGV0ZUdhdGhlcmluZ1R5cGUgPSB1c2VEZWxldGVHYXRoZXJpbmdUeXBlKGNyZWF0b3JJZCk7XG4gKlxuICogYXdhaXQgZGVsZXRlR2F0aGVyaW5nVHlwZS5tdXRhdGVBc3luYygnZ2F0aGVyaW5nLXR5cGUtMTIzJyk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURlbGV0ZUdhdGhlcmluZ1R5cGUoY3JlYXRvcklkOiBzdHJpbmcpIHtcbiAgY29uc3QgcXVlcnlDbGllbnQgPSB1c2VRdWVyeUNsaWVudCgpO1xuXG4gIHJldHVybiB1c2VNdXRhdGlvbih7XG4gICAgbXV0YXRpb25GbjogYXN5bmMgKGdhdGhlcmluZ1R5cGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGF3YWl0IGNsaWVudC5kZWxldGUoYC9hcGkvdjEvY3JlYXRvcnMvJHtjcmVhdG9ySWR9L2dhdGhlcmluZy10eXBlcy8ke2dhdGhlcmluZ1R5cGVJZH1gKTtcbiAgICB9LFxuICAgIG9uU3VjY2VzczogKCkgPT4ge1xuICAgICAgcXVlcnlDbGllbnQuaW52YWxpZGF0ZVF1ZXJpZXMoeyBxdWVyeUtleTogY3JlYXRvcktleXMuZ2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICAgIHF1ZXJ5Q2xpZW50LmludmFsaWRhdGVRdWVyaWVzKHsgcXVlcnlLZXk6IGNyZWF0b3JLZXlzLmFwcHJvdmVkR2F0aGVyaW5nVHlwZXMoY3JlYXRvcklkKSB9KTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZSBBSSBzdWdnZXN0aW9ucyBmb3IgZ2F0aGVyaW5nIHR5cGVzIGJhc2VkIG9uIGZhY2lsaXRhdG9yIHByb2ZpbGVcbiAqXG4gKiBAcGFyYW0gY3JlYXRvcklkIC0gQ3JlYXRvciBJRFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IGdlbmVyYXRlU3VnZ2VzdGlvbnMgPSB1c2VHZW5lcmF0ZUdhdGhlcmluZ1R5cGVTdWdnZXN0aW9ucyhjcmVhdG9ySWQpO1xuICpcbiAqIGF3YWl0IGdlbmVyYXRlU3VnZ2VzdGlvbnMubXV0YXRlQXN5bmMoKTtcbiAqIC8vIFJldHVybnMgdGhlIG5ld2x5IGNyZWF0ZWQgKHVuYXBwcm92ZWQpIGdhdGhlcmluZyB0eXBlc1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VHZW5lcmF0ZUdhdGhlcmluZ1R5cGVTdWdnZXN0aW9ucyhjcmVhdG9ySWQ6IHN0cmluZykge1xuICBjb25zdCBxdWVyeUNsaWVudCA9IHVzZVF1ZXJ5Q2xpZW50KCk7XG5cbiAgcmV0dXJuIHVzZU11dGF0aW9uKHtcbiAgICBtdXRhdGlvbkZuOiBhc3luYyAoKTogUHJvbWlzZTxHYXRoZXJpbmdUeXBlUmVzcG9uc2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5wb3N0KGAvYXBpL3YxL2NyZWF0b3JzLyR7Y3JlYXRvcklkfS9nYXRoZXJpbmctdHlwZXMvZ2VuZXJhdGVgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhO1xuICAgIH0sXG4gICAgb25TdWNjZXNzOiAoKSA9PiB7XG4gICAgICBxdWVyeUNsaWVudC5pbnZhbGlkYXRlUXVlcmllcyh7IHF1ZXJ5S2V5OiBjcmVhdG9yS2V5cy5nYXRoZXJpbmdUeXBlcyhjcmVhdG9ySWQpIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growsober/sdk",
3
- "version": "1.0.31",
3
+ "version": "1.0.33",
4
4
  "description": "Shared TypeScript SDK for GrowSober API - TanStack Query hooks, API client, and utilities",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
package/src/api/CLAUDE.md CHANGED
@@ -3,10 +3,19 @@
3
3
 
4
4
  <!-- This section is auto-generated by claude-mem. Edit content outside the tags. -->
5
5
 
6
+ ### Jan 24, 2026
7
+
8
+ | ID | Time | T | Title | Read |
9
+ |----|------|---|-------|------|
10
+ | #921 | 11:42 AM | 🟣 | Added Creator Community Management to SDK | ~466 |
11
+ | #920 | " | 🟣 | Creator Community SDK Hooks Added | ~445 |
12
+ | #583 | 8:25 AM | ✅ | DTO Renaming for Message Type Clarity | ~318 |
13
+
6
14
  ### Jan 25, 2026
7
15
 
8
16
  | ID | Time | T | Title | Read |
9
17
  |----|------|---|-------|------|
18
+ | #1778 | 12:19 PM | 🔵 | SDK Client Architecture with Token Management and Response Unwrapping | ~561 |
10
19
  | #1712 | 11:42 AM | 🟣 | Product Checkout Flow with Stripe Payment Integration Completed | ~536 |
11
20
  | #1208 | 3:28 AM | 🔵 | UserResponse data structure includes comprehensive profile and notification settings | ~580 |
12
21
  </claude-mem-context>
package/src/api/client.ts CHANGED
@@ -30,6 +30,9 @@ function createApiClient(sdkConfig: SDKConfig): AxiosInstance {
30
30
  },
31
31
  });
32
32
 
33
+ // Track ongoing refresh to avoid duplicate calls
34
+ let refreshPromise: Promise<string> | null = null;
35
+
33
36
  // Request interceptor - add auth token
34
37
  client.interceptors.request.use(
35
38
  async (requestConfig: InternalAxiosRequestConfig) => {
@@ -53,16 +56,28 @@ function createApiClient(sdkConfig: SDKConfig): AxiosInstance {
53
56
  return response;
54
57
  },
55
58
  async (error: AxiosError) => {
56
- if (error.response?.status === 401) {
59
+ const originalRequest = error.config as InternalAxiosRequestConfig & { _retry?: boolean };
60
+
61
+ if (error.response?.status === 401 && originalRequest && !originalRequest._retry) {
62
+ originalRequest._retry = true;
63
+
57
64
  if (sdkConfig.refreshAccessToken) {
58
65
  try {
59
- const newToken = await sdkConfig.refreshAccessToken();
60
- if (newToken && error.config) {
61
- error.config.headers.Authorization = `Bearer ${newToken}`;
62
- return client.request(error.config);
66
+ // Deduplicate concurrent refresh calls
67
+ if (!refreshPromise) {
68
+ refreshPromise = sdkConfig.refreshAccessToken().finally(() => {
69
+ refreshPromise = null;
70
+ });
71
+ }
72
+ const newToken = await refreshPromise;
73
+
74
+ if (newToken) {
75
+ originalRequest.headers.Authorization = `Bearer ${newToken}`;
76
+ return client.request(originalRequest);
63
77
  }
64
78
  } catch {
65
79
  sdkConfig.onUnauthorized?.();
80
+ return Promise.reject(error);
66
81
  }
67
82
  } else {
68
83
  sdkConfig.onUnauthorized?.();
@@ -269,10 +269,11 @@ export function useUpdateCreatorReward(
269
269
  const response = await client.patch(`/api/v1/creators/${creatorId}/rewards/${id}`, data);
270
270
  return response.data;
271
271
  },
272
- onSuccess: () => {
272
+ ...options,
273
+ onSuccess: (...args) => {
273
274
  queryClient.invalidateQueries({ queryKey: creatorKeys.all });
275
+ options?.onSuccess?.(...args);
274
276
  },
275
- ...options,
276
277
  });
277
278
  }
278
279
 
@@ -297,10 +298,11 @@ export function useDeleteCreatorReward(
297
298
  const client = getApiClient();
298
299
  await client.delete(`/api/v1/creators/${creatorId}/rewards/${rewardId}`);
299
300
  },
300
- onSuccess: () => {
301
+ ...options,
302
+ onSuccess: (...args) => {
301
303
  queryClient.invalidateQueries({ queryKey: creatorKeys.all });
304
+ options?.onSuccess?.(...args);
302
305
  },
303
- ...options,
304
306
  });
305
307
  }
306
308