@spotsdev/sdk 1.0.0 → 1.2.0

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.
Files changed (74) hide show
  1. package/dist/api/client.d.ts +1 -1
  2. package/dist/api/client.js +7 -3
  3. package/dist/api/entities.d.ts +318 -0
  4. package/dist/api/entities.js +9 -0
  5. package/dist/api/mutations/clubs.d.ts +6 -6
  6. package/dist/api/mutations/clubs.js +12 -10
  7. package/dist/api/mutations/conversations.d.ts +7 -7
  8. package/dist/api/mutations/conversations.js +17 -13
  9. package/dist/api/mutations/index.js +1 -1
  10. package/dist/api/mutations/notifications.d.ts +4 -4
  11. package/dist/api/mutations/notifications.js +7 -7
  12. package/dist/api/mutations/orders.d.ts +7 -7
  13. package/dist/api/mutations/orders.js +11 -13
  14. package/dist/api/mutations/posts.d.ts +13 -13
  15. package/dist/api/mutations/posts.js +41 -29
  16. package/dist/api/mutations/products.d.ts +5 -5
  17. package/dist/api/mutations/products.js +9 -13
  18. package/dist/api/mutations/spots.d.ts +42 -8
  19. package/dist/api/mutations/spots.js +51 -13
  20. package/dist/api/mutations/users.d.ts +12 -10
  21. package/dist/api/mutations/users.js +20 -18
  22. package/dist/api/queries/auth.d.ts +5 -5
  23. package/dist/api/queries/auth.js +7 -7
  24. package/dist/api/queries/clubs.d.ts +7 -7
  25. package/dist/api/queries/clubs.js +11 -11
  26. package/dist/api/queries/conversations.d.ts +5 -5
  27. package/dist/api/queries/conversations.js +7 -7
  28. package/dist/api/queries/index.js +1 -1
  29. package/dist/api/queries/misc.d.ts +8 -32
  30. package/dist/api/queries/misc.js +28 -66
  31. package/dist/api/queries/notifications.d.ts +4 -4
  32. package/dist/api/queries/notifications.js +5 -5
  33. package/dist/api/queries/orders.d.ts +4 -4
  34. package/dist/api/queries/orders.js +7 -7
  35. package/dist/api/queries/posts.d.ts +44 -7
  36. package/dist/api/queries/posts.js +118 -15
  37. package/dist/api/queries/products.d.ts +6 -10
  38. package/dist/api/queries/products.js +7 -9
  39. package/dist/api/queries/spots.d.ts +31 -16
  40. package/dist/api/queries/spots.js +113 -31
  41. package/dist/api/queries/templates.d.ts +6 -9
  42. package/dist/api/queries/templates.js +8 -13
  43. package/dist/api/queries/users.d.ts +25 -11
  44. package/dist/api/queries/users.js +75 -27
  45. package/dist/api/types.d.ts +36 -33
  46. package/dist/api/types.js +6 -7
  47. package/dist/index.d.ts +1 -2
  48. package/dist/index.js +1 -8
  49. package/package.json +6 -21
  50. package/src/api/client.ts +45 -30
  51. package/src/api/entities.ts +424 -0
  52. package/src/api/mutations/clubs.ts +73 -40
  53. package/src/api/mutations/conversations.ts +91 -47
  54. package/src/api/mutations/index.ts +8 -8
  55. package/src/api/mutations/notifications.ts +48 -25
  56. package/src/api/mutations/orders.ts +101 -70
  57. package/src/api/mutations/posts.ts +229 -118
  58. package/src/api/mutations/products.ts +120 -81
  59. package/src/api/mutations/spots.ts +167 -55
  60. package/src/api/mutations/users.ts +109 -76
  61. package/src/api/queries/auth.ts +49 -24
  62. package/src/api/queries/clubs.ts +53 -38
  63. package/src/api/queries/conversations.ts +48 -30
  64. package/src/api/queries/index.ts +21 -21
  65. package/src/api/queries/misc.ts +53 -82
  66. package/src/api/queries/notifications.ts +32 -21
  67. package/src/api/queries/orders.ts +59 -42
  68. package/src/api/queries/posts.ts +203 -48
  69. package/src/api/queries/products.ts +51 -44
  70. package/src/api/queries/spots.ts +216 -85
  71. package/src/api/queries/templates.ts +39 -32
  72. package/src/api/queries/users.ts +157 -64
  73. package/src/api/types.ts +72 -118
  74. package/src/index.ts +5 -11
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * TanStack Query hooks for order-related operations.
5
5
  */
6
- import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
6
+ import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
7
  import type { Order, OrderItem, Product, Spot, OrderStatus, PaginatedResponse } from '../types';
8
8
  export declare const orderKeys: {
9
9
  all: readonly ["orders"];
@@ -28,18 +28,18 @@ export interface OrderFilters {
28
28
  /**
29
29
  * Get current user's orders (purchases)
30
30
  *
31
- * @endpoint GET /api/v1/users/me/orders
31
+ * @endpoint GET /users/me/orders
32
32
  */
33
33
  export declare function useMyOrders(params?: OrderFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OrderWithDetails>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OrderWithDetails>>;
34
34
  /**
35
35
  * Get a single order by ID
36
36
  *
37
- * @endpoint GET /api/v1/orders/{orderId}
37
+ * @endpoint GET /orders/{orderId}
38
38
  */
39
39
  export declare function useOrder(orderId: string, options?: Omit<UseQueryOptions<OrderWithDetails>, 'queryKey' | 'queryFn'>): UseQueryResult<OrderWithDetails>;
40
40
  /**
41
41
  * Get orders for a spot (seller view)
42
42
  *
43
- * @endpoint GET /api/v1/seller/spots/{spotId}/orders
43
+ * @endpoint GET /seller/spots/{spotId}/orders
44
44
  */
45
45
  export declare function useSpotOrders(spotId: string, params?: OrderFilters, options?: Omit<UseQueryOptions<PaginatedResponse<OrderWithDetails>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<OrderWithDetails>>;
@@ -29,7 +29,7 @@ exports.orderKeys = {
29
29
  /**
30
30
  * Get current user's orders (purchases)
31
31
  *
32
- * @endpoint GET /api/v1/users/me/orders
32
+ * @endpoint GET /users/me/orders
33
33
  */
34
34
  function useMyOrders(params, options) {
35
35
  return (0, react_query_1.useQuery)({
@@ -43,7 +43,7 @@ function useMyOrders(params, options) {
43
43
  queryParams.set('limit', String(params.limit));
44
44
  if (params?.page)
45
45
  queryParams.set('page', String(params.page));
46
- const response = await client.get(`/api/v1/users/me/orders?${queryParams}`);
46
+ const response = await client.get(`/users/me/orders?${queryParams}`);
47
47
  return response.data.data;
48
48
  },
49
49
  ...options,
@@ -52,14 +52,14 @@ function useMyOrders(params, options) {
52
52
  /**
53
53
  * Get a single order by ID
54
54
  *
55
- * @endpoint GET /api/v1/orders/{orderId}
55
+ * @endpoint GET /orders/{orderId}
56
56
  */
57
57
  function useOrder(orderId, options) {
58
58
  return (0, react_query_1.useQuery)({
59
59
  queryKey: exports.orderKeys.detail(orderId),
60
60
  queryFn: async () => {
61
61
  const client = (0, client_1.getApiClient)();
62
- const response = await client.get(`/api/v1/orders/${orderId}`);
62
+ const response = await client.get(`/orders/${orderId}`);
63
63
  return response.data.data;
64
64
  },
65
65
  enabled: !!orderId,
@@ -69,7 +69,7 @@ function useOrder(orderId, options) {
69
69
  /**
70
70
  * Get orders for a spot (seller view)
71
71
  *
72
- * @endpoint GET /api/v1/seller/spots/{spotId}/orders
72
+ * @endpoint GET /seller/spots/{spotId}/orders
73
73
  */
74
74
  function useSpotOrders(spotId, params, options) {
75
75
  return (0, react_query_1.useQuery)({
@@ -83,11 +83,11 @@ function useSpotOrders(spotId, params, options) {
83
83
  queryParams.set('limit', String(params.limit));
84
84
  if (params?.page)
85
85
  queryParams.set('page', String(params.page));
86
- const response = await client.get(`/api/v1/seller/spots/${spotId}/orders?${queryParams}`);
86
+ const response = await client.get(`/seller/spots/${spotId}/orders?${queryParams}`);
87
87
  return response.data.data;
88
88
  },
89
89
  enabled: !!spotId,
90
90
  ...options,
91
91
  });
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9xdWVyaWVzL29yZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBOENILGtDQW1CQztBQU9ELDRCQWNDO0FBT0Qsc0NBcUJDO0FBaEhELHVEQUFrRjtBQUNsRixzQ0FBeUM7QUFHekMsK0VBQStFO0FBQy9FLGFBQWE7QUFDYiwrRUFBK0U7QUFFbEUsUUFBQSxTQUFTLEdBQUc7SUFDdkIsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFVO0lBQ3hCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFVO0lBQ2hELElBQUksRUFBRSxDQUFDLE9BQWlDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxpQkFBUyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBVTtJQUNyRixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBVTtJQUNwRCxNQUFNLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxpQkFBUyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBVTtJQUM3RCxRQUFRLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBVTtJQUNqRCxVQUFVLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxpQkFBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFVO0NBQzVFLENBQUM7QUFtQkYsK0VBQStFO0FBQy9FLGNBQWM7QUFDZCwrRUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsTUFBcUIsRUFDckIsT0FBNEY7SUFFNUYsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFD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Y2VzQ29udGVudCI6WyIvKipcbiAqIE9yZGVycyBRdWVyeSBIb29rc1xuICpcbiAqIFRhblN0YWNrIFF1ZXJ5IGhvb2tzIGZvciBvcmRlci1yZWxhdGVkIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHsgdXNlUXVlcnksIFVzZVF1ZXJ5T3B0aW9ucywgVXNlUXVlcnlSZXN1bHQgfSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknO1xuaW1wb3J0IHsgZ2V0QXBpQ2xpZW50IH0gZnJvbSAnLi4vY2xpZW50JztcbmltcG9ydCB0eXBlIHsgT3JkZXIsIE9yZGVySXRlbSwgUHJvZHVjdCwgU3BvdCwgT3JkZXJTdGF0dXMsIEFwaVJlc3BvbnNlLCBQYWdpbmF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3Qgb3JkZXJLZXlzID0ge1xuICBhbGw6IFsnb3JkZXJzJ10gYXMgY29uc3QsXG4gIGxpc3RzOiAoKSA9PiBbLi4ub3JkZXJLZXlzLmFsbCwgJ2xpc3QnXSBhcyBjb25zdCxcbiAgbGlzdDogKGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gWy4uLm9yZGVyS2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLm9yZGVyS2V5cy5hbGwsICdkZXRhaWwnXSBhcyBjb25zdCxcbiAgZGV0YWlsOiAoaWQ6IHN0cmluZykgPT4gWy4uLm9yZGVyS2V5cy5kZXRhaWxzKCksIGlkXSBhcyBjb25zdCxcbiAgbXlPcmRlcnM6ICgpID0+IFsuLi5vcmRlcktleXMuYWxsLCAnbXknXSBhcyBjb25zdCxcbiAgc3BvdE9yZGVyczogKHNwb3RJZDogc3RyaW5nKSA9PiBbLi4ub3JkZXJLZXlzLmFsbCwgJ3Nwb3QnLCBzcG90SWRdIGFzIGNvbnN0LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlcldpdGhEZXRhaWxzIGV4dGVuZHMgT3JkZXIge1xuICBpdGVtczogKE9yZGVySXRlbSAmIHtcbiAgICBwcm9kdWN0OiBQaWNrPFByb2R1Y3QsICdpZCcgfCAnbmFtZScgfCAnc2x1ZycgfCAndHlwZScgfCAnaW1hZ2VVcmwnPjtcbiAgfSlbXTtcbiAgc3BvdDogUGljazxTcG90LCAnaWQnIHwgJ25hbWUnIHwgJ3NsdWcnPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlckZpbHRlcnMge1xuICBzdGF0dXM/OiBPcmRlclN0YXR1cztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHBhZ2U/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGN1cnJlbnQgdXNlcidzIG9yZGVycyAocHVyY2hhc2VzKVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS91c2Vycy9tZS9vcmRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU15T3JkZXJzKFxuICBwYXJhbXM/OiBPcmRlckZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pOiBVc2VRdWVyeVJlc3VsdDxQYWdpbmF0ZWRSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBvcmRlcktleXMubGlzdCh7IC4uLnBhcmFtcywgbXk6IHRydWUgfSksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICBpZiAocGFyYW1zPy5zdGF0dXMpIHF1ZXJ5UGFyYW1zLnNldCgnc3RhdHVzJywgcGFyYW1zLnN0YXR1cyk7XG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKTtcbiAgICAgIGlmIChwYXJhbXM/LnBhZ2UpIHF1ZXJ5UGFyYW1zLnNldCgncGFnZScsIFN0cmluZyhwYXJhbXMucGFnZSkpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFBhZ2luYXRlZFJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+Pj4oXG4gICAgICAgIGAvYXBpL3YxL3VzZXJzL21lL29yZGVycz8ke3F1ZXJ5UGFyYW1zfWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgc2luZ2xlIG9yZGVyIGJ5IElEXG4gKlxuICogQGVuZHBvaW50IEdFVCAvYXBpL3YxL29yZGVycy97b3JkZXJJZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZU9yZGVyKFxuICBvcmRlcklkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxPcmRlcldpdGhEZXRhaWxzPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PE9yZGVyV2l0aERldGFpbHM+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogb3JkZXJLZXlzLmRldGFpbChvcmRlcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxPcmRlcldpdGhEZXRhaWxzPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj4oYC9hcGkvdjEvb3JkZXJzLyR7b3JkZXJJZH1gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIW9yZGVySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IG9yZGVycyBmb3IgYSBzcG90IChzZWxsZXIgdmlldylcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9hcGkvdjEvc2VsbGVyL3Nwb3RzL3tzcG90SWR9L29yZGVyc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdE9yZGVycyhcbiAgc3BvdElkOiBzdHJpbmcsXG4gIHBhcmFtcz86IE9yZGVyRmlsdGVycyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBhZ2luYXRlZFJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFBhZ2luYXRlZFJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IG9yZGVyS2V5cy5zcG90T3JkZXJzKHNwb3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICBpZiAocGFyYW1zPy5zdGF0dXMpIHF1ZXJ5UGFyYW1zLnNldCgnc3RhdHVzJywgcGFyYW1zLnN0YXR1cyk7XG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKTtcbiAgICAgIGlmIChwYXJhbXM/LnBhZ2UpIHF1ZXJ5UGFyYW1zLnNldCgncGFnZScsIFN0cmluZyhwYXJhbXMucGFnZSkpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFBhZ2luYXRlZFJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+Pj4oXG4gICAgICAgIGAvYXBpL3YxL3NlbGxlci9zcG90cy8ke3Nwb3RJZH0vb3JkZXJzPyR7cXVlcnlQYXJhbXN9YFxuICAgICAgKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNwb3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9xdWVyaWVzL29yZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBdURILGtDQXNCQztBQU9ELDRCQWdCQztBQU9ELHNDQXdCQztBQWpJRCx1REFBeUY7QUFDekYsc0NBQXNDO0FBV3RDLCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBRWxFLFFBQUEsU0FBUyxHQUFHO0lBQ3ZCLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBVTtJQUN4QixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBVTtJQUNoRCxJQUFJLEVBQUUsQ0FBQyxPQUFpQyxFQUFFLEVBQUUsQ0FDMUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQzFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFVO0lBQ3BELE1BQU0sRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFVO0lBQzdELFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsaUJBQVMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFVO0lBQ2pELFVBQVUsRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVU7Q0FDNUUsQ0FBQTtBQW1CRCwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0IsV0FBVyxDQUN6QixNQUFxQixFQUNyQixPQUdDO0lBRUQsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFD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b250ZW50IjpbIi8qKlxuICogT3JkZXJzIFF1ZXJ5IEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgaG9va3MgZm9yIG9yZGVyLXJlbGF0ZWQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge3VzZVF1ZXJ5LCB0eXBlIFVzZVF1ZXJ5T3B0aW9ucywgdHlwZSBVc2VRdWVyeVJlc3VsdH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5J1xuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB0eXBlIHtcbiAgT3JkZXIsXG4gIE9yZGVySXRlbSxcbiAgUHJvZHVjdCxcbiAgU3BvdCxcbiAgT3JkZXJTdGF0dXMsXG4gIEFwaVJlc3BvbnNlLFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IG9yZGVyS2V5cyA9IHtcbiAgYWxsOiBbJ29yZGVycyddIGFzIGNvbnN0LFxuICBsaXN0czogKCkgPT4gWy4uLm9yZGVyS2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+XG4gICAgWy4uLm9yZGVyS2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLm9yZGVyS2V5cy5hbGwsICdkZXRhaWwnXSBhcyBjb25zdCxcbiAgZGV0YWlsOiAoaWQ6IHN0cmluZykgPT4gWy4uLm9yZGVyS2V5cy5kZXRhaWxzKCksIGlkXSBhcyBjb25zdCxcbiAgbXlPcmRlcnM6ICgpID0+IFsuLi5vcmRlcktleXMuYWxsLCAnbXknXSBhcyBjb25zdCxcbiAgc3BvdE9yZGVyczogKHNwb3RJZDogc3RyaW5nKSA9PiBbLi4ub3JkZXJLZXlzLmFsbCwgJ3Nwb3QnLCBzcG90SWRdIGFzIGNvbnN0LFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyV2l0aERldGFpbHMgZXh0ZW5kcyBPcmRlciB7XG4gIGl0ZW1zOiAoT3JkZXJJdGVtICYge1xuICAgIHByb2R1Y3Q6IFBpY2s8UHJvZHVjdCwgJ2lkJyB8ICduYW1lJyB8ICdzbHVnJyB8ICd0eXBlJyB8ICdpbWFnZVVybCc+XG4gIH0pW11cbiAgc3BvdDogUGljazxTcG90LCAnaWQnIHwgJ25hbWUnIHwgJ3NsdWcnPlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyRmlsdGVycyB7XG4gIHN0YXR1cz86IE9yZGVyU3RhdHVzXG4gIGxpbWl0PzogbnVtYmVyXG4gIHBhZ2U/OiBudW1iZXJcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgY3VycmVudCB1c2VyJ3Mgb3JkZXJzIChwdXJjaGFzZXMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvdXNlcnMvbWUvb3JkZXJzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNeU9yZGVycyhcbiAgcGFyYW1zPzogT3JkZXJGaWx0ZXJzLFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+LFxuICAgICdxdWVyeUtleScgfCAncXVlcnlGbidcbiAgPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFBhZ2luYXRlZFJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IG9yZGVyS2V5cy5saXN0KHsuLi5wYXJhbXMsIG15OiB0cnVlfSksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8uc3RhdHVzKSBxdWVyeVBhcmFtcy5zZXQoJ3N0YXR1cycsIHBhcmFtcy5zdGF0dXMpXG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKVxuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxcbiAgICAgICAgQXBpUmVzcG9uc2U8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+XG4gICAgICA+KGAvdXNlcnMvbWUvb3JkZXJzPyR7cXVlcnlQYXJhbXN9YClcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGFcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGEgc2luZ2xlIG9yZGVyIGJ5IElEXG4gKlxuICogQGVuZHBvaW50IEdFVCAvb3JkZXJzL3tvcmRlcklkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlT3JkZXIoXG4gIG9yZGVySWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPE9yZGVyV2l0aERldGFpbHM+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PE9yZGVyV2l0aERldGFpbHM+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogb3JkZXJLZXlzLmRldGFpbChvcmRlcklkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxPcmRlcldpdGhEZXRhaWxzPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPE9yZGVyV2l0aERldGFpbHM+PihcbiAgICAgICAgYC9vcmRlcnMvJHtvcmRlcklkfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICBlbmFibGVkOiAhIW9yZGVySWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgb3JkZXJzIGZvciBhIHNwb3QgKHNlbGxlciB2aWV3KVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3NlbGxlci9zcG90cy97c3BvdElkfS9vcmRlcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNwb3RPcmRlcnMoXG4gIHNwb3RJZDogc3RyaW5nLFxuICBwYXJhbXM/OiBPcmRlckZpbHRlcnMsXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZVF1ZXJ5T3B0aW9uczxQYWdpbmF0ZWRSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj4sXG4gICAgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJ1xuICA+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UGFnaW5hdGVkUmVzcG9uc2U8T3JkZXJXaXRoRGV0YWlscz4+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogb3JkZXJLZXlzLnNwb3RPcmRlcnMoc3BvdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICBpZiAocGFyYW1zPy5zdGF0dXMpIHF1ZXJ5UGFyYW1zLnNldCgnc3RhdHVzJywgcGFyYW1zLnN0YXR1cylcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFxuICAgICAgICBBcGlSZXNwb25zZTxQYWdpbmF0ZWRSZXNwb25zZTxPcmRlcldpdGhEZXRhaWxzPj5cbiAgICAgID4oYC9zZWxsZXIvc3BvdHMvJHtzcG90SWR9L29yZGVycz8ke3F1ZXJ5UGFyYW1zfWApXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNwb3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuIl19
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * TanStack Query hooks for post/board operations.
5
5
  */
6
- import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
7
- import type { Post, PostResponse, PostStatusDto } from '../types';
6
+ import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
+ import { type Post, type PostResponse, type PostStatusDto, type PostUpvotesResponse } from '../types';
8
8
  export declare const postKeys: {
9
9
  all: readonly ["posts"];
10
10
  lists: () => readonly ["posts", "list"];
@@ -14,11 +14,18 @@ export declare const postKeys: {
14
14
  detail: (id: string) => readonly ["posts", "detail", string];
15
15
  responses: (postId: string) => readonly ["posts", "detail", string, "responses"];
16
16
  status: (postId: string) => readonly ["posts", "detail", string, "status"];
17
+ upvotes: (postId: string, filters?: {
18
+ limit?: number;
19
+ offset?: number;
20
+ }) => readonly ["posts", "detail", string, "upvotes", {
21
+ limit?: number;
22
+ offset?: number;
23
+ } | undefined];
17
24
  };
18
25
  /**
19
26
  * Get posts for a spot
20
27
  *
21
- * @endpoint GET /api/v1/spots/{spotId}/posts
28
+ * @endpoint GET /spots/{spotId}/posts
22
29
  */
23
30
  export declare function useSpotPosts(spotId: string, params?: {
24
31
  postType?: string;
@@ -29,19 +36,19 @@ export declare function useSpotPosts(spotId: string, params?: {
29
36
  /**
30
37
  * Get a single post by ID
31
38
  *
32
- * @endpoint GET /api/v1/posts/{postId}
39
+ * @endpoint GET /posts/{postId}
33
40
  */
34
41
  export declare function usePost(postId: string, options?: Omit<UseQueryOptions<Post>, 'queryKey' | 'queryFn'>): UseQueryResult<Post>;
35
42
  /**
36
43
  * Get responses for a post
37
44
  *
38
- * @endpoint GET /api/v1/posts/{postId}/responses
45
+ * @endpoint GET /posts/{postId}/responses
39
46
  */
40
47
  export declare function usePostResponses(postId: string, options?: Omit<UseQueryOptions<PostResponse[]>, 'queryKey' | 'queryFn'>): UseQueryResult<PostResponse[]>;
41
48
  /**
42
49
  * Get all posts (with filters)
43
50
  *
44
- * @endpoint GET /api/v1/posts
51
+ * @endpoint GET /posts
45
52
  */
46
53
  export declare function usePosts(params?: {
47
54
  postType?: string;
@@ -50,6 +57,36 @@ export declare function usePosts(params?: {
50
57
  /**
51
58
  * Get user's status for a post (read/hidden/pinned)
52
59
  *
53
- * @endpoint GET /api/v1/posts/{postId}/status
60
+ * @endpoint GET /posts/{postId}/status
54
61
  */
55
62
  export declare function usePostStatus(postId: string, options?: Omit<UseQueryOptions<PostStatusDto>, 'queryKey' | 'queryFn'>): UseQueryResult<PostStatusDto>;
63
+ /**
64
+ * Get upvotes for a post (list of users who upvoted)
65
+ *
66
+ * @endpoint GET /posts/{postId}/upvotes
67
+ */
68
+ export declare function usePostUpvotes(postId: string, params?: {
69
+ limit?: number;
70
+ offset?: number;
71
+ }, options?: Omit<UseQueryOptions<PostUpvotesResponse>, 'queryKey' | 'queryFn'>): UseQueryResult<PostUpvotesResponse>;
72
+ /**
73
+ * Get nearby posts feed
74
+ *
75
+ * @endpoint GET /posts/feed
76
+ */
77
+ export declare function usePostsFeed(params: {
78
+ lat: number;
79
+ lng: number;
80
+ radius?: number;
81
+ postType?: string;
82
+ cursor?: string;
83
+ limit?: number;
84
+ }, options?: Omit<UseQueryOptions<{
85
+ posts: Post[];
86
+ hasMore: boolean;
87
+ nextCursor?: string;
88
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
89
+ posts: Post[];
90
+ hasMore: boolean;
91
+ nextCursor?: string;
92
+ }>;
@@ -11,9 +11,54 @@ exports.usePost = usePost;
11
11
  exports.usePostResponses = usePostResponses;
12
12
  exports.usePosts = usePosts;
13
13
  exports.usePostStatus = usePostStatus;
14
+ exports.usePostUpvotes = usePostUpvotes;
15
+ exports.usePostsFeed = usePostsFeed;
14
16
  const react_query_1 = require("@tanstack/react-query");
15
17
  const client_1 = require("../client");
16
18
  // ============================================================================
19
+ // HELPER FUNCTIONS
20
+ // ============================================================================
21
+ /**
22
+ * Extract array data from API response
23
+ * API returns { success, data: { data: [...], meta: {...} } } or { success, data: [...] }
24
+ */
25
+ function extractArrayData(data) {
26
+ // If already an array, return it
27
+ if (Array.isArray(data)) {
28
+ return data;
29
+ }
30
+ // If it's an object with nested data property, extract it
31
+ if (data && typeof data === 'object' && 'data' in data) {
32
+ const nested = data.data;
33
+ if (Array.isArray(nested)) {
34
+ return nested;
35
+ }
36
+ }
37
+ return [];
38
+ }
39
+ /**
40
+ * Extract single object data from API response
41
+ * API returns { success, data: { data: {...} } } or { success, data: {...} }
42
+ */
43
+ function extractObjectData(data) {
44
+ // If it's an object with nested data property (not an array), extract it
45
+ if (data &&
46
+ typeof data === 'object' &&
47
+ 'data' in data &&
48
+ !Array.isArray(data)) {
49
+ const nested = data.data;
50
+ // Check if nested also has a data property (double-wrapped)
51
+ if (nested &&
52
+ typeof nested === 'object' &&
53
+ 'data' in nested &&
54
+ !Array.isArray(nested)) {
55
+ return nested.data;
56
+ }
57
+ return nested;
58
+ }
59
+ return data;
60
+ }
61
+ // ============================================================================
17
62
  // QUERY KEYS
18
63
  // ============================================================================
19
64
  exports.postKeys = {
@@ -25,6 +70,7 @@ exports.postKeys = {
25
70
  detail: (id) => [...exports.postKeys.details(), id],
26
71
  responses: (postId) => [...exports.postKeys.detail(postId), 'responses'],
27
72
  status: (postId) => [...exports.postKeys.detail(postId), 'status'],
73
+ upvotes: (postId, filters) => [...exports.postKeys.detail(postId), 'upvotes', filters],
28
74
  };
29
75
  // ============================================================================
30
76
  // QUERY HOOKS
@@ -32,7 +78,7 @@ exports.postKeys = {
32
78
  /**
33
79
  * Get posts for a spot
34
80
  *
35
- * @endpoint GET /api/v1/spots/{spotId}/posts
81
+ * @endpoint GET /spots/{spotId}/posts
36
82
  */
37
83
  function useSpotPosts(spotId, params, options) {
38
84
  return (0, react_query_1.useQuery)({
@@ -48,8 +94,8 @@ function useSpotPosts(spotId, params, options) {
48
94
  queryParams.set('page', String(params.page));
49
95
  if (params?.limit)
50
96
  queryParams.set('limit', String(params.limit));
51
- const response = await client.get(`/api/v1/spots/${spotId}/posts?${queryParams}`);
52
- return response.data.data;
97
+ const response = await client.get(`/spots/${spotId}/posts?${queryParams}`);
98
+ return extractArrayData(response.data.data);
53
99
  },
54
100
  enabled: !!spotId,
55
101
  ...options,
@@ -58,15 +104,15 @@ function useSpotPosts(spotId, params, options) {
58
104
  /**
59
105
  * Get a single post by ID
60
106
  *
61
- * @endpoint GET /api/v1/posts/{postId}
107
+ * @endpoint GET /posts/{postId}
62
108
  */
63
109
  function usePost(postId, options) {
64
110
  return (0, react_query_1.useQuery)({
65
111
  queryKey: exports.postKeys.detail(postId),
66
112
  queryFn: async () => {
67
113
  const client = (0, client_1.getApiClient)();
68
- const response = await client.get(`/api/v1/posts/${postId}`);
69
- return response.data.data;
114
+ const response = await client.get(`/posts/${postId}`);
115
+ return extractObjectData(response.data.data);
70
116
  },
71
117
  enabled: !!postId,
72
118
  ...options,
@@ -75,15 +121,15 @@ function usePost(postId, options) {
75
121
  /**
76
122
  * Get responses for a post
77
123
  *
78
- * @endpoint GET /api/v1/posts/{postId}/responses
124
+ * @endpoint GET /posts/{postId}/responses
79
125
  */
80
126
  function usePostResponses(postId, options) {
81
127
  return (0, react_query_1.useQuery)({
82
128
  queryKey: exports.postKeys.responses(postId),
83
129
  queryFn: async () => {
84
130
  const client = (0, client_1.getApiClient)();
85
- const response = await client.get(`/api/v1/posts/${postId}/responses`);
86
- return response.data.data;
131
+ const response = await client.get(`/posts/${postId}/responses`);
132
+ return extractArrayData(response.data.data);
87
133
  },
88
134
  enabled: !!postId,
89
135
  ...options,
@@ -92,7 +138,7 @@ function usePostResponses(postId, options) {
92
138
  /**
93
139
  * Get all posts (with filters)
94
140
  *
95
- * @endpoint GET /api/v1/posts
141
+ * @endpoint GET /posts
96
142
  */
97
143
  function usePosts(params, options) {
98
144
  return (0, react_query_1.useQuery)({
@@ -104,8 +150,8 @@ function usePosts(params, options) {
104
150
  queryParams.set('postType', params.postType);
105
151
  if (params?.limit)
106
152
  queryParams.set('limit', String(params.limit));
107
- const response = await client.get(`/api/v1/posts?${queryParams}`);
108
- return response.data.data;
153
+ const response = await client.get(`/posts?${queryParams}`);
154
+ return extractArrayData(response.data.data);
109
155
  },
110
156
  ...options,
111
157
  });
@@ -113,18 +159,75 @@ function usePosts(params, options) {
113
159
  /**
114
160
  * Get user's status for a post (read/hidden/pinned)
115
161
  *
116
- * @endpoint GET /api/v1/posts/{postId}/status
162
+ * @endpoint GET /posts/{postId}/status
117
163
  */
118
164
  function usePostStatus(postId, options) {
119
165
  return (0, react_query_1.useQuery)({
120
166
  queryKey: exports.postKeys.status(postId),
121
167
  queryFn: async () => {
122
168
  const client = (0, client_1.getApiClient)();
123
- const response = await client.get(`/api/v1/posts/${postId}/status`);
169
+ const response = await client.get(`/posts/${postId}/status`);
170
+ return extractObjectData(response.data.data);
171
+ },
172
+ enabled: !!postId,
173
+ ...options,
174
+ });
175
+ }
176
+ /**
177
+ * Get upvotes for a post (list of users who upvoted)
178
+ *
179
+ * @endpoint GET /posts/{postId}/upvotes
180
+ */
181
+ function usePostUpvotes(postId, params, options) {
182
+ return (0, react_query_1.useQuery)({
183
+ queryKey: exports.postKeys.upvotes(postId, params),
184
+ queryFn: async () => {
185
+ const client = (0, client_1.getApiClient)();
186
+ const queryParams = new URLSearchParams();
187
+ if (params?.limit)
188
+ queryParams.set('limit', String(params.limit));
189
+ if (params?.offset)
190
+ queryParams.set('offset', String(params.offset));
191
+ const queryString = queryParams.toString();
192
+ const response = await client.get(`/posts/${postId}/upvotes${queryString ? `?${queryString}` : ''}`);
193
+ // Response structure: { success, data: { data: [...], meta: {...} } }
124
194
  return response.data.data;
125
195
  },
126
196
  enabled: !!postId,
127
197
  ...options,
128
198
  });
129
199
  }
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcG9zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQThCSCxvQ0FvQkM7QUFPRCwwQkFjQztBQU9ELDRDQWNDO0FBT0QsNEJBZ0JDO0FBUUQsc0NBY0M7QUF2SUQsdURBQWtGO0FBQ2xGLHNDQUF5QztBQUd6QywrRUFBK0U7QUFDL0UsYUFBYTtBQUNiLCtFQUErRTtBQUVsRSxRQUFBLFFBQVEsR0FBRztJQUN0QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQVU7SUFDdkIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVU7SUFDL0MsSUFBSSxFQUFFLENBQUMsT0FBaUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQ3BGLE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxPQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQVU7SUFDbEgsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQVU7SUFDbkQsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQVU7SUFDNUQsU0FBUyxFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFVO0lBQ2pGLE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsTUFB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Q0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUG9zdHMgUXVlcnkgSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBob29rcyBmb3IgcG9zdC9ib2FyZCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMsIFVzZVF1ZXJ5UmVzdWx0IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IFBvc3QsIFBvc3RSZXNwb25zZSwgQXBpUmVzcG9uc2UsIFBvc3RTdGF0dXNEdG8gfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IHBvc3RLZXlzID0ge1xuICBhbGw6IFsncG9zdHMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5wb3N0S2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFsuLi5wb3N0S2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgYnlTcG90OiAoc3BvdElkOiBzdHJpbmcsIGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gWy4uLnBvc3RLZXlzLmFsbCwgJ3Nwb3QnLCBzcG90SWQsIGZpbHRlcnNdIGFzIGNvbnN0LFxuICBkZXRhaWxzOiAoKSA9PiBbLi4ucG9zdEtleXMuYWxsLCAnZGV0YWlsJ10gYXMgY29uc3QsXG4gIGRldGFpbDogKGlkOiBzdHJpbmcpID0+IFsuLi5wb3N0S2V5cy5kZXRhaWxzKCksIGlkXSBhcyBjb25zdCxcbiAgcmVzcG9uc2VzOiAocG9zdElkOiBzdHJpbmcpID0+IFsuLi5wb3N0S2V5cy5kZXRhaWwocG9zdElkKSwgJ3Jlc3BvbnNlcyddIGFzIGNvbnN0LFxuICBzdGF0dXM6IChwb3N0SWQ6IHN0cmluZykgPT4gWy4uLnBvc3RLZXlzLmRldGFpbChwb3N0SWQpLCAnc3RhdHVzJ10gYXMgY29uc3QsXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBIT09LU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEdldCBwb3N0cyBmb3IgYSBzcG90XG4gKlxuICogQGVuZHBvaW50IEdFVCAvYXBpL3YxL3Nwb3RzL3tzcG90SWR9L3Bvc3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90UG9zdHMoXG4gIHNwb3RJZDogc3RyaW5nLFxuICBwYXJhbXM/OiB7IHBvc3RUeXBlPzogc3RyaW5nOyBzdGF0dXM/OiBzdHJpbmc7IHBhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyIH0sXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQb3N0W10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLmJ5U3BvdChzcG90SWQsIHBhcmFtcyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UG9zdFtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgaWYgKHBhcmFtcz8ucG9zdFR5cGUpIHF1ZXJ5UGFyYW1zLnNldCgncG9zdFR5cGUnLCBwYXJhbXMucG9zdFR5cGUpO1xuICAgICAgaWYgKHBhcmFtcz8uc3RhdHVzKSBxdWVyeVBhcmFtcy5zZXQoJ3N0YXR1cycsIHBhcmFtcy5zdGF0dXMpO1xuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSk7XG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQb3N0W10+PihgL2FwaS92MS9zcG90cy8ke3Nwb3RJZH0vcG9zdHM/JHtxdWVyeVBhcmFtc31gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNwb3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLyoqXG4gKiBHZXQgYSBzaW5nbGUgcG9zdCBieSBJRFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9wb3N0cy97cG9zdElkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9zdChcbiAgcG9zdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQb3N0PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFBvc3Q+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcG9zdEtleXMuZGV0YWlsKHBvc3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UG9zdD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8UG9zdD4+KGAvYXBpL3YxL3Bvc3RzLyR7cG9zdElkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhcG9zdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCByZXNwb25zZXMgZm9yIGEgcG9zdFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9wb3N0cy97cG9zdElkfS9yZXNwb25zZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvc3RSZXNwb25zZXMoXG4gIHBvc3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UG9zdFJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFJlc3BvbnNlW10+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcG9zdEtleXMucmVzcG9uc2VzKHBvc3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UG9zdFJlc3BvbnNlW10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFBvc3RSZXNwb25zZVtdPj4oYC9hcGkvdjEvcG9zdHMvJHtwb3N0SWR9L3Jlc3BvbnNlc2ApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhcG9zdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhbGwgcG9zdHMgKHdpdGggZmlsdGVycylcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9hcGkvdjEvcG9zdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvc3RzKFxuICBwYXJhbXM/OiB7IHBvc3RUeXBlPzogc3RyaW5nOyBsaW1pdD86IG51bWJlciB9LFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UG9zdFtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFBvc3RbXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwb3N0S2V5cy5saXN0KHBhcmFtcyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UG9zdFtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgaWYgKHBhcmFtcz8ucG9zdFR5cGUpIHF1ZXJ5UGFyYW1zLnNldCgncG9zdFR5cGUnLCBwYXJhbXMucG9zdFR5cGUpO1xuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8UG9zdFtdPj4oYC9hcGkvdjEvcG9zdHM/JHtxdWVyeVBhcmFtc31gKTtcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGE7XG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuXG4vKipcbiAqIEdldCB1c2VyJ3Mgc3RhdHVzIGZvciBhIHBvc3QgKHJlYWQvaGlkZGVuL3Bpbm5lZClcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9hcGkvdjEvcG9zdHMve3Bvc3RJZH0vc3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3N0U3RhdHVzKFxuICBwb3N0SWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBvc3RTdGF0dXNEdG8+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFN0YXR1c0R0bz4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwb3N0S2V5cy5zdGF0dXMocG9zdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQb3N0U3RhdHVzRHRvPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQb3N0U3RhdHVzRHRvPj4oYC9hcGkvdjEvcG9zdHMvJHtwb3N0SWR9L3N0YXR1c2ApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhcG9zdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
200
+ /**
201
+ * Get nearby posts feed
202
+ *
203
+ * @endpoint GET /posts/feed
204
+ */
205
+ function usePostsFeed(params, options) {
206
+ return (0, react_query_1.useQuery)({
207
+ queryKey: [...exports.postKeys.lists(), 'feed', params],
208
+ queryFn: async () => {
209
+ const client = (0, client_1.getApiClient)();
210
+ const queryParams = new URLSearchParams();
211
+ queryParams.set('lat', String(params.lat));
212
+ queryParams.set('lng', String(params.lng));
213
+ if (params.radius)
214
+ queryParams.set('radius', String(params.radius));
215
+ if (params.postType)
216
+ queryParams.set('postType', params.postType);
217
+ if (params.cursor)
218
+ queryParams.set('cursor', params.cursor);
219
+ if (params.limit)
220
+ queryParams.set('limit', String(params.limit));
221
+ const response = await client.get(`/posts/feed?${queryParams}`);
222
+ const data = response.data.data;
223
+ return {
224
+ posts: data.posts ?? extractArrayData(data),
225
+ hasMore: data.hasMore ?? false,
226
+ nextCursor: data.nextCursor,
227
+ };
228
+ },
229
+ enabled: params.lat !== 0 && params.lng !== 0,
230
+ ...options,
231
+ });
232
+ }
233
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcG9zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQWdHSCxvQ0FzQkM7QUFPRCwwQkFnQkM7QUFPRCw0Q0FnQkM7QUFPRCw0QkFrQkM7QUFPRCxzQ0FnQkM7QUFPRCx3Q0FzQkM7QUFPRCxvQ0E0Q0M7QUFsU0QsdURBSThCO0FBRTlCLHNDQUFzQztBQVN0QywrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7O0dBR0c7QUFDSCxTQUFTLGdCQUFnQixDQUFJLElBQWE7SUFDeEMsaUNBQWlDO0lBQ2pDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUNELDBEQUEwRDtJQUMxRCxJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZELE1BQU0sTUFBTSxHQUFJLElBQXdCLENBQUMsSUFBSSxDQUFBO1FBQzdDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sTUFBTSxDQUFBO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFTLGlCQUFpQixDQUFJLElBQWE7SUFDekMseUVBQXlFO0lBQ3pFLElBQ0UsSUFBSTtRQUNKLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsTUFBTSxJQUFJLElBQUk7UUFDZCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3BCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBSSxJQUF3QixDQUFDLElBQUksQ0FBQTtRQUM3Qyw0REFBNEQ7UUFDNUQsSUFDRSxNQUFN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Q0FFL0IsZUFBZSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1lBRS9CLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO1lBQy9CLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksZ0JBQWdCLENBQU8sSUFBSSxDQUFDO2dCQUNqRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLO2dCQUM5QixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDNUIsQ0FBQTtRQUNILENBQUM7UUFDRCxPQUFPLEVBQUUsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQzdDLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBvc3RzIFF1ZXJ5IEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgaG9va3MgZm9yIHBvc3QvYm9hcmQgb3BlcmF0aW9ucy5cbiAqL1xuXG5pbXBvcnQge1xuICB1c2VRdWVyeSxcbiAgdHlwZSBVc2VRdWVyeU9wdGlvbnMsXG4gIHR5cGUgVXNlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7XG4gIHR5cGUgQXBpUmVzcG9uc2UsXG4gIHR5cGUgUG9zdCxcbiAgdHlwZSBQb3N0UmVzcG9uc2UsXG4gIHR5cGUgUG9zdFN0YXR1c0R0byxcbiAgdHlwZSBQb3N0VXB2b3Rlc1Jlc3BvbnNlLFxufSBmcm9tICcuLi90eXBlcydcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEV4dHJhY3QgYXJyYXkgZGF0YSBmcm9tIEFQSSByZXNwb25zZVxuICogQVBJIHJldHVybnMgeyBzdWNjZXNzLCBkYXRhOiB7IGRhdGE6IFsuLi5dLCBtZXRhOiB7Li4ufSB9IH0gb3IgeyBzdWNjZXNzLCBkYXRhOiBbLi4uXSB9XG4gKi9cbmZ1bmN0aW9uIGV4dHJhY3RBcnJheURhdGE8VD4oZGF0YTogdW5rbm93bik6IFRbXSB7XG4gIC8vIElmIGFscmVhZHkgYW4gYXJyYXksIHJldHVybiBpdFxuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgLy8gSWYgaXQncyBhbiBvYmplY3Qgd2l0aCBuZXN0ZWQgZGF0YSBwcm9wZXJ0eSwgZXh0cmFjdCBpdFxuICBpZiAoZGF0YSAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGRhdGEpIHtcbiAgICBjb25zdCBuZXN0ZWQgPSAoZGF0YSBhcyB7ZGF0YTogdW5rbm93bn0pLmRhdGFcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXN0ZWQpKSB7XG4gICAgICByZXR1cm4gbmVzdGVkXG4gICAgfVxuICB9XG4gIHJldHVybiBbXVxufVxuXG4vKipcbiAqIEV4dHJhY3Qgc2luZ2xlIG9iamVjdCBkYXRhIGZyb20gQVBJIHJlc3BvbnNlXG4gKiBBUEkgcmV0dXJucyB7IHN1Y2Nlc3MsIGRhdGE6IHsgZGF0YTogey4uLn0gfSB9IG9yIHsgc3VjY2VzcywgZGF0YTogey4uLn0gfVxuICovXG5mdW5jdGlvbiBleHRyYWN0T2JqZWN0RGF0YTxUPihkYXRhOiB1bmtub3duKTogVCB7XG4gIC8vIElmIGl0J3MgYW4gb2JqZWN0IHdpdGggbmVzdGVkIGRhdGEgcHJvcGVydHkgKG5vdCBhbiBhcnJheSksIGV4dHJhY3QgaXRcbiAgaWYgKFxuICAgIGRhdGEgJiZcbiAgICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgICAnZGF0YScgaW4gZGF0YSAmJlxuICAgICFBcnJheS5pc0FycmF5KGRhdGEpXG4gICkge1xuICAgIGNvbnN0IG5lc3RlZCA9IChkYXRhIGFzIHtkYXRhOiB1bmtub3dufSkuZGF0YVxuICAgIC8vIENoZWNrIGlmIG5lc3RlZCBhbHNvIGhhcyBhIGRhdGEgcHJvcGVydHkgKGRvdWJsZS13cmFwcGVkKVxuICAgIGlmIChcbiAgICAgIG5lc3RlZCAmJlxuICAgICAgdHlwZW9mIG5lc3RlZCA9PT0gJ29iamVjdCcgJiZcbiAgICAgICdkYXRhJyBpbiBuZXN0ZWQgJiZcbiAgICAgICFBcnJheS5pc0FycmF5KG5lc3RlZClcbiAgICApIHtcbiAgICAgIHJldHVybiAobmVzdGVkIGFzIHtkYXRhOiBUfSkuZGF0YVxuICAgIH1cbiAgICByZXR1cm4gbmVzdGVkIGFzIFRcbiAgfVxuICByZXR1cm4gZGF0YSBhcyBUXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IHBvc3RLZXlzID0ge1xuICBhbGw6IFsncG9zdHMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5wb3N0S2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+XG4gICAgWy4uLnBvc3RLZXlzLmxpc3RzKCksIGZpbHRlcnNdIGFzIGNvbnN0LFxuICBieVNwb3Q6IChzcG90SWQ6IHN0cmluZywgZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgIFsuLi5wb3N0S2V5cy5hbGwsICdzcG90Jywgc3BvdElkLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLnBvc3RLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4ucG9zdEtleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIHJlc3BvbnNlczogKHBvc3RJZDogc3RyaW5nKSA9PlxuICAgIFsuLi5wb3N0S2V5cy5kZXRhaWwocG9zdElkKSwgJ3Jlc3BvbnNlcyddIGFzIGNvbnN0LFxuICBzdGF0dXM6IChwb3N0SWQ6IHN0cmluZykgPT4gWy4uLnBvc3RLZXlzLmRldGFpbChwb3N0SWQpLCAnc3RhdHVzJ10gYXMgY29uc3QsXG4gIHVwdm90ZXM6IChwb3N0SWQ6IHN0cmluZywgZmlsdGVycz86IHtsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyfSkgPT5cbiAgICBbLi4ucG9zdEtleXMuZGV0YWlsKHBvc3RJZCksICd1cHZvdGVzJywgZmlsdGVyc10gYXMgY29uc3QsXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IHBvc3RzIGZvciBhIHNwb3RcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9zcG90cy97c3BvdElkfS9wb3N0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdFBvc3RzKFxuICBzcG90SWQ6IHN0cmluZyxcbiAgcGFyYW1zPzoge3Bvc3RUeXBlPzogc3RyaW5nOyBzdGF0dXM/OiBzdHJpbmc7IHBhZ2U/OiBudW1iZXI7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBvc3RbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLmJ5U3BvdChzcG90SWQsIHBhcmFtcyksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UG9zdFtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgIGlmIChwYXJhbXM/LnBvc3RUeXBlKSBxdWVyeVBhcmFtcy5zZXQoJ3Bvc3RUeXBlJywgcGFyYW1zLnBvc3RUeXBlKVxuICAgICAgaWYgKHBhcmFtcz8uc3RhdHVzKSBxdWVyeVBhcmFtcy5zZXQoJ3N0YXR1cycsIHBhcmFtcy5zdGF0dXMpXG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvc3BvdHMvJHtzcG90SWR9L3Bvc3RzPyR7cXVlcnlQYXJhbXN9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFBvc3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGEgc2luZ2xlIHBvc3QgYnkgSURcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9wb3N0cy97cG9zdElkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9zdChcbiAgcG9zdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQb3N0PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxQb3N0PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLmRldGFpbChwb3N0SWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBvc3Q+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICBgL3Bvc3RzLyR7cG9zdElkfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdE9iamVjdERhdGE8UG9zdD4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFwb3N0SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgcmVzcG9uc2VzIGZvciBhIHBvc3RcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9wb3N0cy97cG9zdElkfS9yZXNwb25zZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvc3RSZXNwb25zZXMoXG4gIHBvc3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UG9zdFJlc3BvbnNlW10+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFBvc3RSZXNwb25zZVtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLnJlc3BvbnNlcyhwb3N0SWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBvc3RSZXNwb25zZVtdPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC9wb3N0cy8ke3Bvc3RJZH0vcmVzcG9uc2VzYCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFBvc3RSZXNwb25zZT4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFwb3N0SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgYWxsIHBvc3RzICh3aXRoIGZpbHRlcnMpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvcG9zdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvc3RzKFxuICBwYXJhbXM/OiB7cG9zdFR5cGU/OiBzdHJpbmc7IGxpbWl0PzogbnVtYmVyfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBvc3RbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLmxpc3QocGFyYW1zKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQb3N0W10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ucG9zdFR5cGUpIHF1ZXJ5UGFyYW1zLnNldCgncG9zdFR5cGUnLCBwYXJhbXMucG9zdFR5cGUpXG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC9wb3N0cz8ke3F1ZXJ5UGFyYW1zfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxQb3N0PihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCB1c2VyJ3Mgc3RhdHVzIGZvciBhIHBvc3QgKHJlYWQvaGlkZGVuL3Bpbm5lZClcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9wb3N0cy97cG9zdElkfS9zdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVBvc3RTdGF0dXMoXG4gIHBvc3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UG9zdFN0YXR1c0R0bz4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UG9zdFN0YXR1c0R0bz4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwb3N0S2V5cy5zdGF0dXMocG9zdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQb3N0U3RhdHVzRHRvPiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC9wb3N0cy8ke3Bvc3RJZH0vc3RhdHVzYCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0T2JqZWN0RGF0YTxQb3N0U3RhdHVzRHRvPihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXBvc3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCB1cHZvdGVzIGZvciBhIHBvc3QgKGxpc3Qgb2YgdXNlcnMgd2hvIHVwdm90ZWQpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvcG9zdHMve3Bvc3RJZH0vdXB2b3Rlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUG9zdFVwdm90ZXMoXG4gIHBvc3RJZDogc3RyaW5nLFxuICBwYXJhbXM/OiB7bGltaXQ/OiBudW1iZXI7IG9mZnNldD86IG51bWJlcn0sXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQb3N0VXB2b3Rlc1Jlc3BvbnNlPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxQb3N0VXB2b3Rlc1Jlc3BvbnNlPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHBvc3RLZXlzLnVwdm90ZXMocG9zdElkLCBwYXJhbXMpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBvc3RVcHZvdGVzUmVzcG9uc2U+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGlmIChwYXJhbXM/Lm9mZnNldCkgcXVlcnlQYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcocGFyYW1zLm9mZnNldCkpXG4gICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHF1ZXJ5UGFyYW1zLnRvU3RyaW5nKClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQb3N0VXB2b3Rlc1Jlc3BvbnNlPj4oXG4gICAgICAgIGAvcG9zdHMvJHtwb3N0SWR9L3Vwdm90ZXMke3F1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ31gLFxuICAgICAgKVxuICAgICAgLy8gUmVzcG9uc2Ugc3RydWN0dXJlOiB7IHN1Y2Nlc3MsIGRhdGE6IHsgZGF0YTogWy4uLl0sIG1ldGE6IHsuLi59IH0gfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFwb3N0SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgbmVhcmJ5IHBvc3RzIGZlZWRcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9wb3N0cy9mZWVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VQb3N0c0ZlZWQoXG4gIHBhcmFtczoge1xuICAgIGxhdDogbnVtYmVyXG4gICAgbG5nOiBudW1iZXJcbiAgICByYWRpdXM/OiBudW1iZXJcbiAgICBwb3N0VHlwZT86IHN0cmluZ1xuICAgIGN1cnNvcj86IHN0cmluZ1xuICAgIGxpbWl0PzogbnVtYmVyXG4gIH0sXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZVF1ZXJ5T3B0aW9uczx7cG9zdHM6IFBvc3RbXTsgaGFzTW9yZTogYm9vbGVhbjsgbmV4dEN1cnNvcj86IHN0cmluZ30+LFxuICAgICdxdWVyeUtleScgfCAncXVlcnlGbidcbiAgPixcbik6IFVzZVF1ZXJ5UmVzdWx0PHtwb3N0czogUG9zdFtdOyBoYXNNb3JlOiBib29sZWFuOyBuZXh0Q3Vyc29yPzogc3RyaW5nfT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbLi4ucG9zdEtleXMubGlzdHMoKSwgJ2ZlZWQnLCBwYXJhbXNdIGFzIGNvbnN0LFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPHtcbiAgICAgIHBvc3RzOiBQb3N0W11cbiAgICAgIGhhc01vcmU6IGJvb2xlYW5cbiAgICAgIG5leHRDdXJzb3I/OiBzdHJpbmdcbiAgICB9PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgIHF1ZXJ5UGFyYW1zLnNldCgnbGF0JywgU3RyaW5nKHBhcmFtcy5sYXQpKVxuICAgICAgcXVlcnlQYXJhbXMuc2V0KCdsbmcnLCBTdHJpbmcocGFyYW1zLmxuZykpXG4gICAgICBpZiAocGFyYW1zLnJhZGl1cykgcXVlcnlQYXJhbXMuc2V0KCdyYWRpdXMnLCBTdHJpbmcocGFyYW1zLnJhZGl1cykpXG4gICAgICBpZiAocGFyYW1zLnBvc3RUeXBlKSBxdWVyeVBhcmFtcy5zZXQoJ3Bvc3RUeXBlJywgcGFyYW1zLnBvc3RUeXBlKVxuICAgICAgaWYgKHBhcmFtcy5jdXJzb3IpIHF1ZXJ5UGFyYW1zLnNldCgnY3Vyc29yJywgcGFyYW1zLmN1cnNvcilcbiAgICAgIGlmIChwYXJhbXMubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PFxuICAgICAgICBBcGlSZXNwb25zZTx7cG9zdHM6IFBvc3RbXTsgaGFzTW9yZTogYm9vbGVhbjsgbmV4dEN1cnNvcj86IHN0cmluZ30+XG4gICAgICA+KGAvcG9zdHMvZmVlZD8ke3F1ZXJ5UGFyYW1zfWApXG5cbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGFcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBvc3RzOiBkYXRhLnBvc3RzID8/IGV4dHJhY3RBcnJheURhdGE8UG9zdD4oZGF0YSksXG4gICAgICAgIGhhc01vcmU6IGRhdGEuaGFzTW9yZSA/PyBmYWxzZSxcbiAgICAgICAgbmV4dEN1cnNvcjogZGF0YS5uZXh0Q3Vyc29yLFxuICAgICAgfVxuICAgIH0sXG4gICAgZW5hYmxlZDogcGFyYW1zLmxhdCAhPT0gMCAmJiBwYXJhbXMubG5nICE9PSAwLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * TanStack Query hooks for product-related operations.
5
5
  */
6
- import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
7
- import type { Product, PaginatedResponse, ProductType, ProductStatus } from '../types';
6
+ import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
+ import type { Product, PaginatedResponse, ProductType, ProductStatus, Spot } from '../types';
8
8
  export declare const productKeys: {
9
9
  all: readonly ["products"];
10
10
  lists: () => readonly ["products", "list"];
@@ -22,16 +22,12 @@ export interface ProductFilters {
22
22
  page?: number;
23
23
  }
24
24
  export interface ProductWithSpot extends Product {
25
- spot: {
26
- id: string;
27
- name: string;
28
- slug: string;
29
- };
25
+ spot: Pick<Spot, 'id' | 'name' | 'slug'>;
30
26
  }
31
27
  /**
32
28
  * Get products for a spot (public browse)
33
29
  *
34
- * @endpoint GET /api/v1/spots/{spotId}/products
30
+ * @endpoint GET /spots/{spotId}/products
35
31
  */
36
32
  export declare function useSpotProducts(spotId: string, params?: {
37
33
  type?: ProductType;
@@ -41,12 +37,12 @@ export declare function useSpotProducts(spotId: string, params?: {
41
37
  /**
42
38
  * Get a product by ID
43
39
  *
44
- * @endpoint GET /api/v1/products/{productId}
40
+ * @endpoint GET /products/{productId}
45
41
  */
46
42
  export declare function useProduct(productId: string, options?: Omit<UseQueryOptions<ProductWithSpot>, 'queryKey' | 'queryFn'>): UseQueryResult<ProductWithSpot>;
47
43
  /**
48
44
  * Get a product by slug (within a spot)
49
45
  *
50
- * @endpoint GET /api/v1/spots/{spotId}/products/slug/{slug}
46
+ * @endpoint GET /spots/{spotId}/products/slug/{slug}
51
47
  */
52
48
  export declare function useProductBySlug(spotId: string, slug: string, options?: Omit<UseQueryOptions<ProductWithSpot>, 'queryKey' | 'queryFn'>): UseQueryResult<ProductWithSpot>;