@spotsdev/sdk 1.0.0 → 1.1.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 +316 -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 +420 -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
@@ -29,7 +29,7 @@ exports.productKeys = {
29
29
  /**
30
30
  * Get products for a spot (public browse)
31
31
  *
32
- * @endpoint GET /api/v1/spots/{spotId}/products
32
+ * @endpoint GET /spots/{spotId}/products
33
33
  */
34
34
  function useSpotProducts(spotId, params, options) {
35
35
  return (0, react_query_1.useQuery)({
@@ -43,7 +43,7 @@ function useSpotProducts(spotId, params, options) {
43
43
  queryParams.set('page', String(params.page));
44
44
  if (params?.type)
45
45
  queryParams.set('type', params.type);
46
- const response = await client.get(`/api/v1/spots/${spotId}/products?${queryParams}`);
46
+ const response = await client.get(`/spots/${spotId}/products?${queryParams}`);
47
47
  return response.data.data;
48
48
  },
49
49
  enabled: !!spotId,
@@ -53,14 +53,14 @@ function useSpotProducts(spotId, params, options) {
53
53
  /**
54
54
  * Get a product by ID
55
55
  *
56
- * @endpoint GET /api/v1/products/{productId}
56
+ * @endpoint GET /products/{productId}
57
57
  */
58
58
  function useProduct(productId, options) {
59
59
  return (0, react_query_1.useQuery)({
60
60
  queryKey: exports.productKeys.detail(productId),
61
61
  queryFn: async () => {
62
62
  const client = (0, client_1.getApiClient)();
63
- const response = await client.get(`/api/v1/products/${productId}`);
63
+ const response = await client.get(`/products/${productId}`);
64
64
  return response.data.data;
65
65
  },
66
66
  enabled: !!productId,
@@ -70,20 +70,18 @@ function useProduct(productId, options) {
70
70
  /**
71
71
  * Get a product by slug (within a spot)
72
72
  *
73
- * @endpoint GET /api/v1/spots/{spotId}/products/slug/{slug}
73
+ * @endpoint GET /spots/{spotId}/products/slug/{slug}
74
74
  */
75
75
  function useProductBySlug(spotId, slug, options) {
76
76
  return (0, react_query_1.useQuery)({
77
77
  queryKey: exports.productKeys.bySlug(spotId, slug),
78
78
  queryFn: async () => {
79
79
  const client = (0, client_1.getApiClient)();
80
- const response = await client.get(`/api/v1/spots/${spotId}/products/slug/${slug}`);
80
+ const response = await client.get(`/spots/${spotId}/products/slug/${slug}`);
81
81
  return response.data.data;
82
82
  },
83
83
  enabled: !!spotId && !!slug,
84
84
  ...options,
85
85
  });
86
86
  }
87
- // Note: To list products as a seller, use useSpotProducts with your spot ID.
88
- // There is no cross-spot product listing endpoint currently.
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQWlESCwwQ0FxQkM7QUFPRCxnQ0FjQztBQU9ELDRDQWlCQztBQWpIRCx1REFBa0Y7QUFDbEYsc0NBQXlDO0FBR3pDLCtFQUErRTtBQUMvRSxhQUFhO0FBQ2IsK0VBQStFO0FBRWxFLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLEdBQUcsRUFBRSxDQUFDLFVBQVUsQ0FBVTtJQUMxQixLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBVTtJQUNsRCxJQUFJLEVBQUUsQ0FBQyxPQUFpQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQVU7SUFDdkYsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQVU7SUFDdEQsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsbUJBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQVU7SUFDL0QsTUFBTSxFQUFFLENBQUMsTUFBYyxFQUFFLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFVO0lBQzdGLE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVU7Q0FDMUUsQ0FBQztBQXNCRiwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixNQUFjLEVBQ2QsTUFBOEQsRUFDOUQsT0FBbUY7SUFFbkYsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsbUJBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ3BDLE9BQU8sRUFBRSxLQUFLLElBQXlDLEVBQUU7WUFDdkQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUM7WUFDOUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUMxQyxJQUFJLE1BQU0sRUFBRSxLQUFLO2dCQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNsRSxJQUFJLE1BQU0sRUFBRSxJQUFJO2dCQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvRCxJQUFJLE1BQU0sRUFBRSxJQUFJO2dCQUFFLFdBQVcsQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQy9CLGlCQUFpQixNQUFNLGFBQWEsV0FBVyxFQUFFLENBQ2xELENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDakIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixVQUFVLENBQ3hCLFNBQWlCLEVBQ2pCLE9BQXdFO0lBRXhFLE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLG1CQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUN2QyxPQUFPLEVBQUUsS0FBSyxJQUE4QixFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBK0Isb0JBQW9CLFNBQVMsRUFBRSxDQUFDLENBQUM7WUFDakcsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTO1FBQ3BCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxJQUFZLEVBQ1osT0FBd0U7SUFFeEUsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsbUJBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUMxQyxPQUFPLEVBQUUsS0FBSyxJQUE4QixFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFDO1lBQzlCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsaUJBQWlCLE1BQU0sa0JBQWtCLElBQUksRUFBRSxDQUNoRCxDQUFDO1lBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1QixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLElBQUk7UUFDM0IsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELDZFQUE2RTtBQUM3RSw2REFBNkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RzIFF1ZXJ5IEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgaG9va3MgZm9yIHByb2R1Y3QtcmVsYXRlZCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IHVzZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMsIFVzZVF1ZXJ5UmVzdWx0IH0gZnJvbSAnQHRhbnN0YWNrL3JlYWN0LXF1ZXJ5JztcbmltcG9ydCB7IGdldEFwaUNsaWVudCB9IGZyb20gJy4uL2NsaWVudCc7XG5pbXBvcnQgdHlwZSB7IFByb2R1Y3QsIEFwaVJlc3BvbnNlLCBQYWdpbmF0ZWRSZXNwb25zZSwgUHJvZHVjdFR5cGUsIFByb2R1Y3RTdGF0dXMgfSBmcm9tICcuLi90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEtFWVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IHByb2R1Y3RLZXlzID0ge1xuICBhbGw6IFsncHJvZHVjdHMnXSBhcyBjb25zdCxcbiAgbGlzdHM6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdsaXN0J10gYXMgY29uc3QsXG4gIGxpc3Q6IChmaWx0ZXJzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IFsuLi5wcm9kdWN0S2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLnByb2R1Y3RLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4ucHJvZHVjdEtleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIGJ5U2x1ZzogKHNwb3RJZDogc3RyaW5nLCBzbHVnOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdzbHVnJywgc3BvdElkLCBzbHVnXSBhcyBjb25zdCxcbiAgYnlTcG90OiAoc3BvdElkOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdzcG90Jywgc3BvdElkXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdEZpbHRlcnMge1xuICBzcG90SWQ/OiBzdHJpbmc7XG4gIHR5cGU/OiBQcm9kdWN0VHlwZTtcbiAgc3RhdHVzPzogUHJvZHVjdFN0YXR1cztcbiAgbGltaXQ/OiBudW1iZXI7XG4gIHBhZ2U/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFdpdGhTcG90IGV4dGVuZHMgUHJvZHVjdCB7XG4gIHNwb3Q6IHtcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzbHVnOiBzdHJpbmc7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IHByb2R1Y3RzIGZvciBhIHNwb3QgKHB1YmxpYyBicm93c2UpXG4gKlxuICogQGVuZHBvaW50IEdFVCAvYXBpL3YxL3Nwb3RzL3tzcG90SWR9L3Byb2R1Y3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90UHJvZHVjdHMoXG4gIHNwb3RJZDogc3RyaW5nLFxuICBwYXJhbXM/OiB7IHR5cGU/OiBQcm9kdWN0VHlwZTsgbGltaXQ/OiBudW1iZXI7IHBhZ2U/OiBudW1iZXIgfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJ5U3BvdChzcG90SWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSk7XG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKTtcbiAgICAgIGlmIChwYXJhbXM/LnR5cGUpIHF1ZXJ5UGFyYW1zLnNldCgndHlwZScsIHBhcmFtcy50eXBlKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQYWdpbmF0ZWRSZXNwb25zZTxQcm9kdWN0Pj4+KFxuICAgICAgICBgL2FwaS92MS9zcG90cy8ke3Nwb3RJZH0vcHJvZHVjdHM/JHtxdWVyeVBhcmFtc31gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHByb2R1Y3QgYnkgSURcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9hcGkvdjEvcHJvZHVjdHMve3Byb2R1Y3RJZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3QoXG4gIHByb2R1Y3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UHJvZHVjdFdpdGhTcG90PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFByb2R1Y3RXaXRoU3BvdD4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBwcm9kdWN0S2V5cy5kZXRhaWwocHJvZHVjdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQcm9kdWN0V2l0aFNwb3Q+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFByb2R1Y3RXaXRoU3BvdD4+KGAvYXBpL3YxL3Byb2R1Y3RzLyR7cHJvZHVjdElkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhcHJvZHVjdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHByb2R1Y3QgYnkgc2x1ZyAod2l0aGluIGEgc3BvdClcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9hcGkvdjEvc3BvdHMve3Nwb3RJZH0vcHJvZHVjdHMvc2x1Zy97c2x1Z31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3RCeVNsdWcoXG4gIHNwb3RJZDogc3RyaW5nLFxuICBzbHVnOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxQcm9kdWN0V2l0aFNwb3Q+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPlxuKTogVXNlUXVlcnlSZXN1bHQ8UHJvZHVjdFdpdGhTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJ5U2x1ZyhzcG90SWQsIHNsdWcpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFByb2R1Y3RXaXRoU3BvdD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8UHJvZHVjdFdpdGhTcG90Pj4oXG4gICAgICAgIGAvYXBpL3YxL3Nwb3RzLyR7c3BvdElkfS9wcm9kdWN0cy9zbHVnLyR7c2x1Z31gXG4gICAgICApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkICYmICEhc2x1ZyxcbiAgICAuLi5vcHRpb25zLFxuICB9KTtcbn1cblxuLy8gTm90ZTogVG8gbGlzdCBwcm9kdWN0cyBhcyBhIHNlbGxlciwgdXNlIHVzZVNwb3RQcm9kdWN0cyB3aXRoIHlvdXIgc3BvdCBJRC5cbi8vIFRoZXJlIGlzIG5vIGNyb3NzLXNwb3QgcHJvZHVjdCBsaXN0aW5nIGVuZHBvaW50IGN1cnJlbnRseS5cbiJdfQ==
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvcHJvZHVjdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQXNESCwwQ0F3QkM7QUFPRCxnQ0FnQkM7QUFPRCw0Q0FpQkM7QUEzSEQsdURBQXlGO0FBQ3pGLHNDQUFzQztBQVV0QywrRUFBK0U7QUFDL0UsYUFBYTtBQUNiLCtFQUErRTtBQUVsRSxRQUFBLFdBQVcsR0FBRztJQUN6QixHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQVU7SUFDMUIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVU7SUFDbEQsSUFBSSxFQUFFLENBQUMsT0FBaUMsRUFBRSxFQUFFLENBQzFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sQ0FBVTtJQUM1QyxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBVTtJQUN0RCxNQUFNLEVBQUUsQ0FBQyxFQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxtQkFBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBVTtJQUMvRCxNQUFNLEVBQUUsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FDdkMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFVO0lBQ3JELE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLG1CQUFXLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQVU7Q0FDMUUsQ0FBQTtBQWtCRCwrRUFBK0U7QUFDL0UsY0FBYztBQUNkLCtFQUErRTtBQUUvRTs7OztHQUlHO0FBQ0gsU0FBZ0IsZUFBZSxDQUM3QixNQUFjLEVBQ2QsTUFBNEQsRUFDNUQsT0FHQztJQUVELE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLG1CQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxPQUFPLEVBQUUsS0FBSyxJQUF5QyxFQUFFO1lBQ3ZELE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7WUFDekMsSUFBSSxNQUFNLEVBQUUsS0FBSztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDakUsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDOUQsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixVQUFVLE1BQU0sYUFBYSxXQUFXLEVBQUUsQ0FDM0MsQ0FBQTtZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDM0IsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTTtRQUNqQixHQUFHLE9BQU87S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFVBQVUsQ0FDeEIsU0FBaUIsRUFDakIsT0FBd0U7SUFFeEUsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsbUJBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLE9BQU8sRUFBRSxLQUFLLElBQThCLEVBQUU7WUFDNUMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixhQUFhLFNBQVMsRUFBRSxDQUN6QixDQUFBO1lBQ0QsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtRQUMzQixDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTO1FBQ3BCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLE1BQWMsRUFDZCxJQUFZLEVBQ1osT0FBd0U7SUFFeEUsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsbUJBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztRQUMxQyxPQUFPLEVBQUUsS0FBSyxJQUE4QixFQUFFO1lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsVUFBVSxNQUFNLGtCQUFrQixJQUFJLEVBQUUsQ0FDekMsQ0FBQTtZQUNELE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUE7UUFDM0IsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJO1FBQzNCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFByb2R1Y3RzIFF1ZXJ5IEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgaG9va3MgZm9yIHByb2R1Y3QtcmVsYXRlZCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7dXNlUXVlcnksIHR5cGUgVXNlUXVlcnlPcHRpb25zLCB0eXBlIFVzZVF1ZXJ5UmVzdWx0fSBmcm9tICdAdGFuc3RhY2svcmVhY3QtcXVlcnknXG5pbXBvcnQge2dldEFwaUNsaWVudH0gZnJvbSAnLi4vY2xpZW50J1xuaW1wb3J0IHR5cGUge1xuICBQcm9kdWN0LFxuICBBcGlSZXNwb25zZSxcbiAgUGFnaW5hdGVkUmVzcG9uc2UsXG4gIFByb2R1Y3RUeXBlLFxuICBQcm9kdWN0U3RhdHVzLFxuICBTcG90LFxufSBmcm9tICcuLi90eXBlcydcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3QgcHJvZHVjdEtleXMgPSB7XG4gIGFsbDogWydwcm9kdWN0cyddIGFzIGNvbnN0LFxuICBsaXN0czogKCkgPT4gWy4uLnByb2R1Y3RLZXlzLmFsbCwgJ2xpc3QnXSBhcyBjb25zdCxcbiAgbGlzdDogKGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT5cbiAgICBbLi4ucHJvZHVjdEtleXMubGlzdHMoKSwgZmlsdGVyc10gYXMgY29uc3QsXG4gIGRldGFpbHM6ICgpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdkZXRhaWwnXSBhcyBjb25zdCxcbiAgZGV0YWlsOiAoaWQ6IHN0cmluZykgPT4gWy4uLnByb2R1Y3RLZXlzLmRldGFpbHMoKSwgaWRdIGFzIGNvbnN0LFxuICBieVNsdWc6IChzcG90SWQ6IHN0cmluZywgc2x1Zzogc3RyaW5nKSA9PlxuICAgIFsuLi5wcm9kdWN0S2V5cy5hbGwsICdzbHVnJywgc3BvdElkLCBzbHVnXSBhcyBjb25zdCxcbiAgYnlTcG90OiAoc3BvdElkOiBzdHJpbmcpID0+IFsuLi5wcm9kdWN0S2V5cy5hbGwsICdzcG90Jywgc3BvdElkXSBhcyBjb25zdCxcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0RmlsdGVycyB7XG4gIHNwb3RJZD86IHN0cmluZ1xuICB0eXBlPzogUHJvZHVjdFR5cGVcbiAgc3RhdHVzPzogUHJvZHVjdFN0YXR1c1xuICBsaW1pdD86IG51bWJlclxuICBwYWdlPzogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFdpdGhTcG90IGV4dGVuZHMgUHJvZHVjdCB7XG4gIHNwb3Q6IFBpY2s8U3BvdCwgJ2lkJyB8ICduYW1lJyB8ICdzbHVnJz5cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBHZXQgcHJvZHVjdHMgZm9yIGEgc3BvdCAocHVibGljIGJyb3dzZSlcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9zcG90cy97c3BvdElkfS9wcm9kdWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdFByb2R1Y3RzKFxuICBzcG90SWQ6IHN0cmluZyxcbiAgcGFyYW1zPzoge3R5cGU/OiBQcm9kdWN0VHlwZTsgbGltaXQ/OiBudW1iZXI7IHBhZ2U/OiBudW1iZXJ9LFxuICBvcHRpb25zPzogT21pdDxcbiAgICBVc2VRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUmVzcG9uc2U8UHJvZHVjdD4+LFxuICAgICdxdWVyeUtleScgfCAncXVlcnlGbidcbiAgPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJ5U3BvdChzcG90SWQpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFByb2R1Y3Q+PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpXG4gICAgICBpZiAocGFyYW1zPy5wYWdlKSBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFyYW1zLnBhZ2UpKVxuICAgICAgaWYgKHBhcmFtcz8udHlwZSkgcXVlcnlQYXJhbXMuc2V0KCd0eXBlJywgcGFyYW1zLnR5cGUpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8UGFnaW5hdGVkUmVzcG9uc2U8UHJvZHVjdD4+PihcbiAgICAgICAgYC9zcG90cy8ke3Nwb3RJZH0vcHJvZHVjdHM/JHtxdWVyeVBhcmFtc31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFzcG90SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLyoqXG4gKiBHZXQgYSBwcm9kdWN0IGJ5IElEXG4gKlxuICogQGVuZHBvaW50IEdFVCAvcHJvZHVjdHMve3Byb2R1Y3RJZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVByb2R1Y3QoXG4gIHByb2R1Y3RJZDogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8UHJvZHVjdFdpdGhTcG90PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxQcm9kdWN0V2l0aFNwb3Q+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogcHJvZHVjdEtleXMuZGV0YWlsKHByb2R1Y3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8UHJvZHVjdFdpdGhTcG90PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFByb2R1Y3RXaXRoU3BvdD4+KFxuICAgICAgICBgL3Byb2R1Y3RzLyR7cHJvZHVjdElkfWAsXG4gICAgICApXG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhXG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXByb2R1Y3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBhIHByb2R1Y3QgYnkgc2x1ZyAod2l0aGluIGEgc3BvdClcbiAqXG4gKiBAZW5kcG9pbnQgR0VUIC9zcG90cy97c3BvdElkfS9wcm9kdWN0cy9zbHVnL3tzbHVnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUHJvZHVjdEJ5U2x1ZyhcbiAgc3BvdElkOiBzdHJpbmcsXG4gIHNsdWc6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFByb2R1Y3RXaXRoU3BvdD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8UHJvZHVjdFdpdGhTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHByb2R1Y3RLZXlzLmJ5U2x1ZyhzcG90SWQsIHNsdWcpLFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPFByb2R1Y3RXaXRoU3BvdD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQcm9kdWN0V2l0aFNwb3Q+PihcbiAgICAgICAgYC9zcG90cy8ke3Nwb3RJZH0vcHJvZHVjdHMvc2x1Zy8ke3NsdWd9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiByZXNwb25zZS5kYXRhLmRhdGFcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkICYmICEhc2x1ZyxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuIl19
@@ -3,8 +3,8 @@
3
3
  *
4
4
  * TanStack Query hooks for spot-related operations.
5
5
  */
6
- import { UseQueryOptions, UseQueryResult, UseInfiniteQueryOptions, UseInfiniteQueryResult } from '@tanstack/react-query';
7
- import type { Spot, SpotImage, PaginatedResponse } from '../types';
6
+ import { type UseQueryOptions, type UseQueryResult, type UseInfiniteQueryOptions, type UseInfiniteQueryResult } from '@tanstack/react-query';
7
+ import { type PaginatedResponse, type Spot, type SpotImage } from '../types';
8
8
  export declare const spotKeys: {
9
9
  all: readonly ["spots"];
10
10
  lists: () => readonly ["spots", "list"];
@@ -16,49 +16,58 @@ export declare const spotKeys: {
16
16
  images: (spotId: string) => readonly ["spots", "detail", string, "images"];
17
17
  };
18
18
  /**
19
- * Get all spots (paginated)
19
+ * Get all spots
20
20
  *
21
- * @endpoint GET /api/v1/spots
22
- * @returns PaginatedResponse with spots array and meta
21
+ * @endpoint GET /spots
23
22
  */
24
23
  export declare function useSpots(params?: {
25
24
  limit?: number;
26
- page?: number;
27
25
  city?: string;
28
26
  type?: string;
29
- templateSlugs?: string[];
30
- vibeIds?: string[];
27
+ lat?: number;
28
+ lng?: number;
29
+ radius?: number;
31
30
  search?: string;
32
- }, options?: Omit<UseQueryOptions<PaginatedResponse<Spot>>, 'queryKey' | 'queryFn'>): UseQueryResult<PaginatedResponse<Spot>>;
31
+ vibes?: string;
32
+ cityId?: string;
33
+ page?: number;
34
+ }, options?: Omit<UseQueryOptions<Spot[]>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot[]>;
33
35
  /**
34
36
  * Get a spot by ID
35
37
  *
36
- * @endpoint GET /api/v1/spots/{spotId}
38
+ * @endpoint GET /spots/{spotId}
37
39
  */
38
40
  export declare function useSpot(spotId: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
39
41
  /**
40
42
  * Get a spot by slug
41
43
  *
42
- * @endpoint GET /api/v1/spots/slug/{slug}
44
+ * @endpoint GET /spots/slug/{slug}
43
45
  */
44
46
  export declare function useSpotBySlug(slug: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
45
47
  /**
46
48
  * Get a spot by QR code
47
49
  *
48
- * @endpoint GET /api/v1/spots/qr/{qrCode}
50
+ * @endpoint GET /spots/qr/{qrCode}
49
51
  */
50
52
  export declare function useSpotByQR(qrCode: string, options?: Omit<UseQueryOptions<Spot>, 'queryKey' | 'queryFn'>): UseQueryResult<Spot>;
51
53
  /**
52
54
  * Get images for a spot
53
55
  *
54
- * @endpoint GET /api/v1/spots/{spotId}/images
56
+ * @endpoint GET /spots/{spotId}/images
55
57
  */
56
58
  export declare function useSpotImages(spotId: string, options?: Omit<UseQueryOptions<SpotImage[]>, 'queryKey' | 'queryFn'>): UseQueryResult<SpotImage[]>;
57
59
  /**
58
- * Infinite scroll query for spots
60
+ * Check if a spot is favorited by the current user
59
61
  *
60
- * @endpoint GET /api/v1/spots (paginated)
61
- * @returns Infinite query with pages of spots
62
+ * @endpoint GET /spots/{spotId}/favorite
63
+ */
64
+ export declare function useSpotFavoriteStatus(spotId: string, options?: Omit<UseQueryOptions<{
65
+ isFavorite: boolean;
66
+ }>, 'queryKey' | 'queryFn'>): UseQueryResult<{
67
+ isFavorite: boolean;
68
+ }>;
69
+ /**
70
+ * Params for infinite spots query
62
71
  */
63
72
  export interface InfiniteSpotsParams {
64
73
  limit?: number;
@@ -69,6 +78,12 @@ export interface InfiniteSpotsParams {
69
78
  vibeIds?: string[];
70
79
  search?: string;
71
80
  }
81
+ /**
82
+ * Infinite scroll query for spots
83
+ *
84
+ * @endpoint GET /spots (paginated)
85
+ * @returns Infinite query with pages of spots
86
+ */
72
87
  export declare function useInfiniteSpots(params?: InfiniteSpotsParams, options?: Omit<UseInfiniteQueryOptions<PaginatedResponse<Spot>, Error, {
73
88
  pages: PaginatedResponse<Spot>[];
74
89
  pageParams: number[];
@@ -11,10 +11,49 @@ exports.useSpot = useSpot;
11
11
  exports.useSpotBySlug = useSpotBySlug;
12
12
  exports.useSpotByQR = useSpotByQR;
13
13
  exports.useSpotImages = useSpotImages;
14
+ exports.useSpotFavoriteStatus = useSpotFavoriteStatus;
14
15
  exports.useInfiniteSpots = useInfiniteSpots;
15
16
  const react_query_1 = require("@tanstack/react-query");
16
17
  const client_1 = require("../client");
17
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 (Array.isArray(data)) {
27
+ return data;
28
+ }
29
+ if (data && typeof data === 'object' && 'data' in data) {
30
+ const nested = data.data;
31
+ if (Array.isArray(nested)) {
32
+ return nested;
33
+ }
34
+ }
35
+ return [];
36
+ }
37
+ /**
38
+ * Extract single object data from API response
39
+ */
40
+ function extractObjectData(data) {
41
+ if (data &&
42
+ typeof data === 'object' &&
43
+ 'data' in data &&
44
+ !Array.isArray(data)) {
45
+ const nested = data.data;
46
+ if (nested &&
47
+ typeof nested === 'object' &&
48
+ 'data' in nested &&
49
+ !Array.isArray(nested)) {
50
+ return nested.data;
51
+ }
52
+ return nested;
53
+ }
54
+ return data;
55
+ }
56
+ // ============================================================================
18
57
  // QUERY KEYS
19
58
  // ============================================================================
20
59
  exports.spotKeys = {
@@ -31,10 +70,9 @@ exports.spotKeys = {
31
70
  // QUERY HOOKS
32
71
  // ============================================================================
33
72
  /**
34
- * Get all spots (paginated)
73
+ * Get all spots
35
74
  *
36
- * @endpoint GET /api/v1/spots
37
- * @returns PaginatedResponse with spots array and meta
75
+ * @endpoint GET /spots
38
76
  */
39
77
  function useSpots(params, options) {
40
78
  return (0, react_query_1.useQuery)({
@@ -44,22 +82,26 @@ function useSpots(params, options) {
44
82
  const queryParams = new URLSearchParams();
45
83
  if (params?.limit)
46
84
  queryParams.set('limit', String(params.limit));
47
- if (params?.page)
48
- queryParams.set('page', String(params.page));
49
85
  if (params?.city)
50
86
  queryParams.set('city', params.city);
51
87
  if (params?.type)
52
88
  queryParams.set('type', params.type);
89
+ if (params?.lat)
90
+ queryParams.set('lat', String(params.lat));
91
+ if (params?.lng)
92
+ queryParams.set('lng', String(params.lng));
93
+ if (params?.radius)
94
+ queryParams.set('radius', String(params.radius));
53
95
  if (params?.search)
54
96
  queryParams.set('search', params.search);
55
- if (params?.templateSlugs) {
56
- params.templateSlugs.forEach(slug => queryParams.append('templateSlugs', slug));
57
- }
58
- if (params?.vibeIds) {
59
- params.vibeIds.forEach(id => queryParams.append('vibeIds', id));
60
- }
61
- const response = await client.get(`/api/v1/spots?${queryParams}`);
62
- return response.data.data;
97
+ if (params?.vibes)
98
+ queryParams.set('vibeIds', params.vibes);
99
+ if (params?.cityId)
100
+ queryParams.set('cityId', params.cityId);
101
+ if (params?.page)
102
+ queryParams.set('page', String(params.page));
103
+ const response = await client.get(`/spots?${queryParams}`);
104
+ return extractArrayData(response.data.data);
63
105
  },
64
106
  ...options,
65
107
  });
@@ -67,15 +109,15 @@ function useSpots(params, options) {
67
109
  /**
68
110
  * Get a spot by ID
69
111
  *
70
- * @endpoint GET /api/v1/spots/{spotId}
112
+ * @endpoint GET /spots/{spotId}
71
113
  */
72
114
  function useSpot(spotId, options) {
73
115
  return (0, react_query_1.useQuery)({
74
116
  queryKey: exports.spotKeys.detail(spotId),
75
117
  queryFn: async () => {
76
118
  const client = (0, client_1.getApiClient)();
77
- const response = await client.get(`/api/v1/spots/${spotId}`);
78
- return response.data.data;
119
+ const response = await client.get(`/spots/${spotId}`);
120
+ return extractObjectData(response.data.data);
79
121
  },
80
122
  enabled: !!spotId,
81
123
  ...options,
@@ -84,15 +126,15 @@ function useSpot(spotId, options) {
84
126
  /**
85
127
  * Get a spot by slug
86
128
  *
87
- * @endpoint GET /api/v1/spots/slug/{slug}
129
+ * @endpoint GET /spots/slug/{slug}
88
130
  */
89
131
  function useSpotBySlug(slug, options) {
90
132
  return (0, react_query_1.useQuery)({
91
133
  queryKey: exports.spotKeys.bySlug(slug),
92
134
  queryFn: async () => {
93
135
  const client = (0, client_1.getApiClient)();
94
- const response = await client.get(`/api/v1/spots/slug/${slug}`);
95
- return response.data.data;
136
+ const response = await client.get(`/spots/slug/${slug}`);
137
+ return extractObjectData(response.data.data);
96
138
  },
97
139
  enabled: !!slug,
98
140
  ...options,
@@ -101,15 +143,15 @@ function useSpotBySlug(slug, options) {
101
143
  /**
102
144
  * Get a spot by QR code
103
145
  *
104
- * @endpoint GET /api/v1/spots/qr/{qrCode}
146
+ * @endpoint GET /spots/qr/{qrCode}
105
147
  */
106
148
  function useSpotByQR(qrCode, options) {
107
149
  return (0, react_query_1.useQuery)({
108
150
  queryKey: exports.spotKeys.byQR(qrCode),
109
151
  queryFn: async () => {
110
152
  const client = (0, client_1.getApiClient)();
111
- const response = await client.get(`/api/v1/spots/qr/${qrCode}`);
112
- return response.data.data;
153
+ const response = await client.get(`/spots/qr/${qrCode}`);
154
+ return extractObjectData(response.data.data);
113
155
  },
114
156
  enabled: !!qrCode,
115
157
  ...options,
@@ -118,24 +160,47 @@ function useSpotByQR(qrCode, options) {
118
160
  /**
119
161
  * Get images for a spot
120
162
  *
121
- * @endpoint GET /api/v1/spots/{spotId}/images
163
+ * @endpoint GET /spots/{spotId}/images
122
164
  */
123
165
  function useSpotImages(spotId, options) {
124
166
  return (0, react_query_1.useQuery)({
125
167
  queryKey: exports.spotKeys.images(spotId),
126
168
  queryFn: async () => {
127
169
  const client = (0, client_1.getApiClient)();
128
- const response = await client.get(`/api/v1/spots/${spotId}/images`);
129
- return response.data.data;
170
+ const response = await client.get(`/spots/${spotId}/images`);
171
+ return extractArrayData(response.data.data);
172
+ },
173
+ enabled: !!spotId,
174
+ ...options,
175
+ });
176
+ }
177
+ /**
178
+ * Check if a spot is favorited by the current user
179
+ *
180
+ * @endpoint GET /spots/{spotId}/favorite
181
+ */
182
+ function useSpotFavoriteStatus(spotId, options) {
183
+ return (0, react_query_1.useQuery)({
184
+ queryKey: [...exports.spotKeys.detail(spotId), 'favorite'],
185
+ queryFn: async () => {
186
+ const client = (0, client_1.getApiClient)();
187
+ const response = await client.get(`/spots/${spotId}/favorite`);
188
+ return extractObjectData(response.data.data);
130
189
  },
131
190
  enabled: !!spotId,
132
191
  ...options,
133
192
  });
134
193
  }
194
+ /**
195
+ * Infinite scroll query for spots
196
+ *
197
+ * @endpoint GET /spots (paginated)
198
+ * @returns Infinite query with pages of spots
199
+ */
135
200
  function useInfiniteSpots(params, options) {
136
201
  return (0, react_query_1.useInfiniteQuery)({
137
202
  queryKey: [...exports.spotKeys.lists(), 'infinite', params],
138
- queryFn: async ({ pageParam }) => {
203
+ queryFn: async ({ pageParam = 1 }) => {
139
204
  const client = (0, client_1.getApiClient)();
140
205
  const queryParams = new URLSearchParams();
141
206
  queryParams.set('page', String(pageParam));
@@ -150,13 +215,30 @@ function useInfiniteSpots(params, options) {
150
215
  if (params?.search?.trim())
151
216
  queryParams.set('search', params.search.trim());
152
217
  if (params?.templateSlugs) {
153
- params.templateSlugs.forEach(slug => queryParams.append('templateSlugs', slug));
218
+ params.templateSlugs.forEach((slug) => queryParams.append('templateSlugs', slug));
154
219
  }
155
220
  if (params?.vibeIds) {
156
- params.vibeIds.forEach(id => queryParams.append('vibeIds', id));
221
+ params.vibeIds.forEach((id) => queryParams.append('vibeIds', id));
222
+ }
223
+ const response = await client.get(`/spots?${queryParams}`);
224
+ // Handle nested response structure
225
+ const data = response.data.data;
226
+ if (data && typeof data === 'object' && 'data' in data) {
227
+ return data;
157
228
  }
158
- const response = await client.get(`/api/v1/spots?${queryParams}`);
159
- return response.data.data;
229
+ // Fallback for array response
230
+ const page = pageParam;
231
+ return {
232
+ data: extractArrayData(data),
233
+ meta: {
234
+ total: 0,
235
+ page,
236
+ limit: params?.limit || 20,
237
+ totalPages: 1,
238
+ hasNextPage: false,
239
+ hasPreviousPage: page > 1,
240
+ },
241
+ };
160
242
  },
161
243
  initialPageParam: 1,
162
244
  getNextPageParam: (lastPage) => {
@@ -165,4 +247,4 @@ function useInfiniteSpots(params, options) {
165
247
  ...options,
166
248
  });
167
249
  }
168
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvc3BvdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQStCSCw0QkFpQ0M7QUFPRCwwQkFjQztBQU9ELHNDQWNDO0FBT0Qsa0NBY0M7QUFPRCxzQ0FjQztBQWtCRCw0Q0E4QkM7QUFsTUQsdURBQXFKO0FBQ3JKLHNDQUF5QztBQUd6QywrRUFBK0U7QUFDL0UsYUFBYTtBQUNiLCtFQUErRTtBQUVsRSxRQUFBLFFBQVEsR0FBRztJQUN0QixHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQVU7SUFDdkIsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQVU7SUFDL0MsSUFBSSxFQUFFLENBQUMsT0FBaUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxDQUFVO0lBQ3BGLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFVO0lBQ25ELE1BQU0sRUFBRSxDQUFDLEVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxDQUFVO0lBQzVELE1BQU0sRUFBRSxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQVU7SUFDbEUsSUFBSSxFQUFFLENBQUMsTUFBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBVTtJQUNsRSxNQUFNLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENB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QkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDNUUsSUFBSSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUM7Z0JBQzFCLE1BQU0sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNsRixDQUFDO1lBQ0QsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNsRSxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUF1QyxpQkFBaUIsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUN4RyxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQzVCLENBQUM7UUFDRCxnQkFBZ0IsRUFBRSxDQUFDO1FBQ25CLGdCQUFnQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDN0IsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDeEUsQ0FBQztRQUNELEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNwb3RzIFF1ZXJ5IEhvb2tzXG4gKlxuICogVGFuU3RhY2sgUXVlcnkgaG9va3MgZm9yIHNwb3QtcmVsYXRlZCBvcGVyYXRpb25zLlxuICovXG5cbmltcG9ydCB7IHVzZVF1ZXJ5LCB1c2VJbmZpbml0ZVF1ZXJ5LCBVc2VRdWVyeU9wdGlvbnMsIFVzZVF1ZXJ5UmVzdWx0LCBVc2VJbmZpbml0ZVF1ZXJ5T3B0aW9ucywgVXNlSW5maW5pdGVRdWVyeVJlc3VsdCB9IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSc7XG5pbXBvcnQgeyBnZXRBcGlDbGllbnQgfSBmcm9tICcuLi9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBTcG90LCBTcG90SW1hZ2UsIEFwaVJlc3BvbnNlLCBQYWdpbmF0ZWRSZXNwb25zZSB9IGZyb20gJy4uL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUVVFUlkgS0VZU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgY29uc3Qgc3BvdEtleXMgPSB7XG4gIGFsbDogWydzcG90cyddIGFzIGNvbnN0LFxuICBsaXN0czogKCkgPT4gWy4uLnNwb3RLZXlzLmFsbCwgJ2xpc3QnXSBhcyBjb25zdCxcbiAgbGlzdDogKGZpbHRlcnM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gWy4uLnNwb3RLZXlzLmxpc3RzKCksIGZpbHRlcnNdIGFzIGNvbnN0LFxuICBkZXRhaWxzOiAoKSA9PiBbLi4uc3BvdEtleXMuYWxsLCAnZGV0YWlsJ10gYXMgY29uc3QsXG4gIGRldGFpbDogKGlkOiBzdHJpbmcpID0+IFsuLi5zcG90S2V5cy5kZXRhaWxzKCksIGlkXSBhcyBjb25zdCxcbiAgYnlTbHVnOiAoc2x1Zzogc3RyaW5nKSA9PiBbLi4uc3BvdEtleXMuYWxsLCAnc2x1ZycsIHNsdWddIGFzIGNvbnN0LFxuICBieVFSOiAocXJDb2RlOiBzdHJpbmcpID0+IFsuLi5zcG90S2V5cy5hbGwsICdxcicsIHFyQ29kZV0gYXMgY29uc3QsXG4gIGltYWdlczogKHNwb3RJZDogc3RyaW5nKSA9PiBbLi4uc3BvdEtleXMuZGV0YWlsKHNwb3RJZCksICdpbWFnZXMnXSBhcyBjb25zdCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGFsbCBzcG90cyAocGFnaW5hdGVkKVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9zcG90c1xuICogQHJldHVybnMgUGFnaW5hdGVkUmVzcG9uc2Ugd2l0aCBzcG90cyBhcnJheSBhbmQgbWV0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdHMoXG4gIHBhcmFtcz86IHtcbiAgICBsaW1pdD86IG51bWJlcjtcbiAgICBwYWdlPzogbnVtYmVyO1xuICAgIGNpdHk/OiBzdHJpbmc7XG4gICAgdHlwZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZVNsdWdzPzogc3RyaW5nW107XG4gICAgdmliZUlkcz86IHN0cmluZ1tdO1xuICAgIHNlYXJjaD86IHN0cmluZztcbiAgfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFBhZ2luYXRlZFJlc3BvbnNlPFNwb3Q+PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFBhZ2luYXRlZFJlc3BvbnNlPFNwb3Q+PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmxpc3QocGFyYW1zKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxQYWdpbmF0ZWRSZXNwb25zZTxTcG90Pj4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICAgIGlmIChwYXJhbXM/LmxpbWl0KSBxdWVyeVBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKHBhcmFtcy5saW1pdCkpO1xuICAgICAgaWYgKHBhcmFtcz8ucGFnZSkgcXVlcnlQYXJhbXMuc2V0KCdwYWdlJywgU3RyaW5nKHBhcmFtcy5wYWdlKSk7XG4gICAgICBpZiAocGFyYW1zPy5jaXR5KSBxdWVyeVBhcmFtcy5zZXQoJ2NpdHknLCBwYXJhbXMuY2l0eSk7XG4gICAgICBpZiAocGFyYW1zPy50eXBlKSBxdWVyeVBhcmFtcy5zZXQoJ3R5cGUnLCBwYXJhbXMudHlwZSk7XG4gICAgICBpZiAocGFyYW1zPy5zZWFyY2gpIHF1ZXJ5UGFyYW1zLnNldCgnc2VhcmNoJywgcGFyYW1zLnNlYXJjaCk7XG4gICAgICBpZiAocGFyYW1zPy50ZW1wbGF0ZVNsdWdzKSB7XG4gICAgICAgIHBhcmFtcy50ZW1wbGF0ZVNsdWdzLmZvckVhY2goc2x1ZyA9PiBxdWVyeVBhcmFtcy5hcHBlbmQoJ3RlbXBsYXRlU2x1Z3MnLCBzbHVnKSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zPy52aWJlSWRzKSB7XG4gICAgICAgIHBhcmFtcy52aWJlSWRzLmZvckVhY2goaWQgPT4gcXVlcnlQYXJhbXMuYXBwZW5kKCd2aWJlSWRzJywgaWQpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQYWdpbmF0ZWRSZXNwb25zZTxTcG90Pj4+KGAvYXBpL3YxL3Nwb3RzPyR7cXVlcnlQYXJhbXN9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGEgc3BvdCBieSBJRFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9zcG90cy97c3BvdElkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdChcbiAgc3BvdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz5cbik6IFVzZVF1ZXJ5UmVzdWx0PFNwb3Q+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogc3BvdEtleXMuZGV0YWlsKHNwb3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8U3BvdD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8U3BvdD4+KGAvYXBpL3YxL3Nwb3RzLyR7c3BvdElkfWApO1xuICAgICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEuZGF0YTtcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHNwb3QgYnkgc2x1Z1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9zcG90cy9zbHVnL3tzbHVnfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdEJ5U2x1ZyhcbiAgc2x1Zzogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8U3BvdD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmJ5U2x1ZyhzbHVnKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxTcG90Pj4oYC9hcGkvdjEvc3BvdHMvc2x1Zy8ke3NsdWd9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFzbHVnLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBhIHNwb3QgYnkgUVIgY29kZVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9zcG90cy9xci97cXJDb2RlfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdEJ5UVIoXG4gIHFyQ29kZTogc3RyaW5nLFxuICBvcHRpb25zPzogT21pdDxVc2VRdWVyeU9wdGlvbnM8U3BvdD4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmJ5UVIocXJDb2RlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxTcG90Pj4oYC9hcGkvdjEvc3BvdHMvcXIvJHtxckNvZGV9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFxckNvZGUsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGltYWdlcyBmb3IgYSBzcG90XG4gKlxuICogQGVuZHBvaW50IEdFVCAvYXBpL3YxL3Nwb3RzL3tzcG90SWR9L2ltYWdlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlU3BvdEltYWdlcyhcbiAgc3BvdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90SW1hZ2VbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+XG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90SW1hZ2VbXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBzcG90S2V5cy5pbWFnZXMoc3BvdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90SW1hZ2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KCk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8U3BvdEltYWdlW10+PihgL2FwaS92MS9zcG90cy8ke3Nwb3RJZH0vaW1hZ2VzYCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgZW5hYmxlZDogISFzcG90SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSk7XG59XG5cbi8qKlxuICogSW5maW5pdGUgc2Nyb2xsIHF1ZXJ5IGZvciBzcG90c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL2FwaS92MS9zcG90cyAocGFnaW5hdGVkKVxuICogQHJldHVybnMgSW5maW5pdGUgcXVlcnkgd2l0aCBwYWdlcyBvZiBzcG90c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZmluaXRlU3BvdHNQYXJhbXMge1xuICBsaW1pdD86IG51bWJlcjtcbiAgY2l0eT86IHN0cmluZztcbiAgY2l0eUlkPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICB0ZW1wbGF0ZVNsdWdzPzogc3RyaW5nW107XG4gIHZpYmVJZHM/OiBzdHJpbmdbXTtcbiAgc2VhcmNoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlSW5maW5pdGVTcG90cyhcbiAgcGFyYW1zPzogSW5maW5pdGVTcG90c1BhcmFtcyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlSW5maW5pdGVRdWVyeU9wdGlvbnM8UGFnaW5hdGVkUmVzcG9uc2U8U3BvdD4sIEVycm9yLCB7IHBhZ2VzOiBQYWdpbmF0ZWRSZXNwb25zZTxTcG90PltdOyBwYWdlUGFyYW1zOiBudW1iZXJbXSB9PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJyB8ICdnZXROZXh0UGFnZVBhcmFtJyB8ICdpbml0aWFsUGFnZVBhcmFtJz5cbik6IFVzZUluZmluaXRlUXVlcnlSZXN1bHQ8eyBwYWdlczogUGFnaW5hdGVkUmVzcG9uc2U8U3BvdD5bXTsgcGFnZVBhcmFtczogbnVtYmVyW10gfSwgRXJyb3I+IHtcbiAgcmV0dXJuIHVzZUluZmluaXRlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbLi4uc3BvdEtleXMubGlzdHMoKSwgJ2luZmluaXRlJywgcGFyYW1zXSBhcyBjb25zdCxcbiAgICBxdWVyeUZuOiBhc3luYyAoeyBwYWdlUGFyYW0gfSk6IFByb21pc2U8UGFnaW5hdGVkUmVzcG9uc2U8U3BvdD4+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpO1xuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgICBxdWVyeVBhcmFtcy5zZXQoJ3BhZ2UnLCBTdHJpbmcocGFnZVBhcmFtKSk7XG4gICAgICBpZiAocGFyYW1zPy5saW1pdCkgcXVlcnlQYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhwYXJhbXMubGltaXQpKTtcbiAgICAgIGlmIChwYXJhbXM/LmNpdHkpIHF1ZXJ5UGFyYW1zLnNldCgnY2l0eScsIHBhcmFtcy5jaXR5KTtcbiAgICAgIGlmIChwYXJhbXM/LmNpdHlJZCkgcXVlcnlQYXJhbXMuc2V0KCdjaXR5SWQnLCBwYXJhbXMuY2l0eUlkKTtcbiAgICAgIGlmIChwYXJhbXM/LnR5cGUgJiYgcGFyYW1zLnR5cGUgIT09ICdBbGwnKSBxdWVyeVBhcmFtcy5zZXQoJ3R5cGUnLCBwYXJhbXMudHlwZSk7XG4gICAgICBpZiAocGFyYW1zPy5zZWFyY2g/LnRyaW0oKSkgcXVlcnlQYXJhbXMuc2V0KCdzZWFyY2gnLCBwYXJhbXMuc2VhcmNoLnRyaW0oKSk7XG4gICAgICBpZiAocGFyYW1zPy50ZW1wbGF0ZVNsdWdzKSB7XG4gICAgICAgIHBhcmFtcy50ZW1wbGF0ZVNsdWdzLmZvckVhY2goc2x1ZyA9PiBxdWVyeVBhcmFtcy5hcHBlbmQoJ3RlbXBsYXRlU2x1Z3MnLCBzbHVnKSk7XG4gICAgICB9XG4gICAgICBpZiAocGFyYW1zPy52aWJlSWRzKSB7XG4gICAgICAgIHBhcmFtcy52aWJlSWRzLmZvckVhY2goaWQgPT4gcXVlcnlQYXJhbXMuYXBwZW5kKCd2aWJlSWRzJywgaWQpKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTxQYWdpbmF0ZWRSZXNwb25zZTxTcG90Pj4+KGAvYXBpL3YxL3Nwb3RzPyR7cXVlcnlQYXJhbXN9YCk7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5kYXRhO1xuICAgIH0sXG4gICAgaW5pdGlhbFBhZ2VQYXJhbTogMSxcbiAgICBnZXROZXh0UGFnZVBhcmFtOiAobGFzdFBhZ2UpID0+IHtcbiAgICAgIHJldHVybiBsYXN0UGFnZS5tZXRhLmhhc05leHRQYWdlID8gbGFzdFBhZ2UubWV0YS5wYWdlICsgMSA6IHVuZGVmaW5lZDtcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pO1xufVxuIl19
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3F1ZXJpZXMvc3BvdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQW9GSCw0QkFxQ0M7QUFPRCwwQkFnQkM7QUFPRCxzQ0FnQkM7QUFPRCxrQ0FnQkM7QUFPRCxzQ0FnQkM7QUFPRCxzREFtQkM7QUF5QkQsNENBK0RDO0FBclVELHVEQU84QjtBQUU5QixzQ0FBc0M7QUFHdEMsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7OztHQUdHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBSSxJQUFhO0lBQ3hDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUNELElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUksSUFBd0IsQ0FBQyxJQUFJLENBQUE7UUFDN0MsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxNQUFNLENBQUE7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBSSxJQUFhO0lBQ3pDLElBQ0UsSUFBSTtRQUNKLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFDeEIsTUFBTSxJQUFJLElBQUk7UUFDZCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQ3BCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBSSxJQUF3QixDQUFDLElBQUksQ0FBQTtRQUM3QyxJQUNFLE1BQU07WUFDTixPQUFPLE1BQU0sS0FBSyxRQUFRO1lBQzFCLE1BQU0sSUFBSSxNQUFNO1lBQ2hCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFDdEIsQ0FBQztZQUNELE9BQVEsTUFBb0IsQ0FBQyxJQUFJLENBQUE7UUFDbkMsQ0FBQztRQUNELE9BQU8sTUFBVyxDQUFBO0lBQ3BCLENBQUM7SUFDRCxPQUFPLElBQVMsQ0FBQTtBQUNsQixDQUFDO0FBRUQsK0VBQStFO0FBQy9FLGFBQWE7QUFDYiwrRUFBK0U7QUFFbEUsUUFBQSxRQUFRLEdBQUc7SUFDdEIsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFVO0lBQ3ZCLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFVO0lBQy9DLElBQUksRUFBRSxDQUFDLE9BQWlDLEVBQUUsRUFBRSxDQUMxQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLENBQVU7SUFDekMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQVU7SUFDbkQsTUFBTSxFQUFFLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQVU7SUFDNUQsTUFBTSxFQUFFLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBVTtJQUNsRSxJQUFJLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxnQkFBUSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFVO0lBQ2xFLE1BQU0sRUFBRSxDQUFDLE1BQWMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGdCQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBVTtDQUM1RSxDQUFBO0FBRUQsK0VBQStFO0FBQy9FLGNBQWM7QUFDZCwrRUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNILFNBQWdCLFFBQVEsQ0FDdEIsTUFXQyxFQUNELE9BQStEO0lBRS9ELE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixPQUFPLEVBQUUsS0FBSyxJQUFxQixFQUFFO1lBQ25DLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7WUFDekMsSUFBSSxNQUFNLEVBQUUsS0FBSztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDakUsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEQsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEQsSUFBSSxNQUFNLEVBQUUsR0FBRztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDM0QsSUFBSSxNQUFNLEVBQUUsR0FBRztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDM0QsSUFBSSxNQUFNLEVBQUUsTUFBTTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFDcEUsSUFBSSxNQUFNLEVBQUUsTUFBTTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUQsSUFBSSxNQUFNLEVBQUUsS0FBSztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDM0QsSUFBSSxNQUFNLEVBQUUsTUFBTTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUQsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7WUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixVQUFVLFdBQVcsRUFBRSxDQUN4QixDQUFBO1lBQ0QsT0FBTyxnQkFBZ0IsQ0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELENBQUM7UUFDRCxHQUFHLE9BQU87S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FDckIsTUFBYyxFQUNkLE9BQTZEO0lBRTdELE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNqQyxPQUFPLEVBQUUsS0FBSyxJQUFtQixFQUFFO1lBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsVUFBVSxNQUFNLEVBQUUsQ0FDbkIsQ0FBQTtZQUNELE9BQU8saUJBQWlCLENBQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixJQUFZLEVBQ1osT0FBNkQ7SUFFN0QsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQy9CLE9BQU8sRUFBRSxLQUFLLElBQW1CLEVBQUU7WUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixlQUFlLElBQUksRUFBRSxDQUN0QixDQUFBO1lBQ0QsT0FBTyxpQkFBaUIsQ0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BELENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDZixHQUFHLE9BQU87S0FDWCxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLFdBQVcsQ0FDekIsTUFBYyxFQUNkLE9BQTZEO0lBRTdELE9BQU8sSUFBQSxzQkFBUSxFQUFDO1FBQ2QsUUFBUSxFQUFFLGdCQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixPQUFPLEVBQUUsS0FBSyxJQUFtQixFQUFFO1lBQ2pDLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsYUFBYSxNQUFNLEVBQUUsQ0FDdEIsQ0FBQTtZQUNELE9BQU8saUJBQWlCLENBQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRCxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsYUFBYSxDQUMzQixNQUFjLEVBQ2QsT0FBb0U7SUFFcEUsT0FBTyxJQUFBLHNCQUFRLEVBQUM7UUFDZCxRQUFRLEVBQUUsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ2pDLE9BQU8sRUFBRSxLQUFLLElBQTBCLEVBQUU7WUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixVQUFVLE1BQU0sU0FBUyxDQUMxQixDQUFBO1lBQ0QsT0FBTyxnQkFBZ0IsQ0FBWSxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDakIsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFBO0FBQ0osQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixxQkFBcUIsQ0FDbkMsTUFBYyxFQUNkLE9BR0M7SUFFRCxPQUFPLElBQUEsc0JBQVEsRUFBQztRQUNkLFFBQVEsRUFBRSxDQUFDLEdBQUcsZ0JBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsVUFBVSxDQUFVO1FBQzNELE9BQU8sRUFBRSxLQUFLLElBQW9DLEVBQUU7WUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBQSxxQkFBWSxHQUFFLENBQUE7WUFDN0IsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUMvQixVQUFVLE1BQU0sV0FBVyxDQUM1QixDQUFBO1lBQ0QsT0FBTyxpQkFBaUIsQ0FBd0IsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNyRSxDQUFDO1FBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxNQUFNO1FBQ2pCLEdBQUcsT0FBTztLQUNYLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFtQkQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FDOUIsTUFBNEIsRUFDNUIsT0FPQztJQUtELE9BQU8sSUFBQSw4QkFBZ0IsRUFBQztRQUN0QixRQUFRLEVBQUUsQ0FBQyxHQUFHLGdCQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBVTtRQUM1RCxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUMsU0FBUyxHQUFHLENBQUMsRUFBQyxFQUFvQyxFQUFFO1lBQ25FLE1BQU0sTUFBTSxHQUFHLElBQUEscUJBQVksR0FBRSxDQUFBO1lBQzdCLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUE7WUFDekMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7WUFDMUMsSUFBSSxNQUFNLEVBQUUsS0FBSztnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDakUsSUFBSSxNQUFNLEVBQUUsSUFBSTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUE7WUFDdEQsSUFBSSxNQUFNLEVBQUUsTUFBTTtnQkFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7WUFDNUQsSUFBSSxNQUFNLEVBQUUsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssS0FBSztnQkFDdkMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3RDLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ3hCLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtZQUNqRCxJQUFJLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDMUIsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNwQyxXQUFXLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FDMUMsQ0FBQTtZQUNILENBQUM7WUFDRCxJQUFJLE1BQU0sRUFBRSxPQUFPLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDbkUsQ0FBQztZQUNELE1BQU0sUUFBUSxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FDL0IsVUFBVSxXQUFXLEVBQUUsQ0FDeEIsQ0FBQTtZQUNELG1DQUFtQztZQUNuQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQTtZQUMvQixJQUFJLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2RCxPQUFPLElBQStCLENBQUE7WUFDeEMsQ0FBQztZQUNELDhCQUE4QjtZQUM5QixNQUFNLElBQUksR0FBRyxTQUFtQixDQUFBO1lBQ2hDLE9BQU87Z0JBQ0wsSUFBSSxFQUFFLGdCQUFnQixDQUFPLElBQUksQ0FBQztnQkFDbEMsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxDQUFDO29CQUNSLElBQUk7b0JBQ0osS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDMUIsVUFBVSxFQUFFLENBQUM7b0JBQ2IsV0FBVyxFQUFFLEtBQUs7b0JBQ2xCLGVBQWUsRUFBRSxJQUFJLEdBQUcsQ0FBQztpQkFDMUI7YUFDRixDQUFBO1FBQ0gsQ0FBQztRQUNELGdCQUFnQixFQUFFLENBQUM7UUFDbkIsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUM3QixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUN2RSxDQUFDO1FBQ0QsR0FBRyxPQUFPO0tBQ1gsQ0FBQyxDQUFBO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3BvdHMgUXVlcnkgSG9va3NcbiAqXG4gKiBUYW5TdGFjayBRdWVyeSBob29rcyBmb3Igc3BvdC1yZWxhdGVkIG9wZXJhdGlvbnMuXG4gKi9cblxuaW1wb3J0IHtcbiAgdXNlUXVlcnksXG4gIHVzZUluZmluaXRlUXVlcnksXG4gIHR5cGUgVXNlUXVlcnlPcHRpb25zLFxuICB0eXBlIFVzZVF1ZXJ5UmVzdWx0LFxuICB0eXBlIFVzZUluZmluaXRlUXVlcnlPcHRpb25zLFxuICB0eXBlIFVzZUluZmluaXRlUXVlcnlSZXN1bHQsXG59IGZyb20gJ0B0YW5zdGFjay9yZWFjdC1xdWVyeSdcblxuaW1wb3J0IHtnZXRBcGlDbGllbnR9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7dHlwZSBBcGlSZXNwb25zZSwgdHlwZSBQYWdpbmF0ZWRSZXNwb25zZSwgdHlwZSBTcG90LCB0eXBlIFNwb3RJbWFnZX0gZnJvbSAnLi4vdHlwZXMnXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFeHRyYWN0IGFycmF5IGRhdGEgZnJvbSBBUEkgcmVzcG9uc2VcbiAqIEFQSSByZXR1cm5zIHsgc3VjY2VzcywgZGF0YTogeyBkYXRhOiBbLi4uXSwgbWV0YTogey4uLn0gfSB9IG9yIHsgc3VjY2VzcywgZGF0YTogWy4uLl0gfVxuICovXG5mdW5jdGlvbiBleHRyYWN0QXJyYXlEYXRhPFQ+KGRhdGE6IHVua25vd24pOiBUW10ge1xuICBpZiAoQXJyYXkuaXNBcnJheShkYXRhKSkge1xuICAgIHJldHVybiBkYXRhXG4gIH1cbiAgaWYgKGRhdGEgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBkYXRhKSB7XG4gICAgY29uc3QgbmVzdGVkID0gKGRhdGEgYXMge2RhdGE6IHVua25vd259KS5kYXRhXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkKSkge1xuICAgICAgcmV0dXJuIG5lc3RlZFxuICAgIH1cbiAgfVxuICByZXR1cm4gW11cbn1cblxuLyoqXG4gKiBFeHRyYWN0IHNpbmdsZSBvYmplY3QgZGF0YSBmcm9tIEFQSSByZXNwb25zZVxuICovXG5mdW5jdGlvbiBleHRyYWN0T2JqZWN0RGF0YTxUPihkYXRhOiB1bmtub3duKTogVCB7XG4gIGlmIChcbiAgICBkYXRhICYmXG4gICAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICAgJ2RhdGEnIGluIGRhdGEgJiZcbiAgICAhQXJyYXkuaXNBcnJheShkYXRhKVxuICApIHtcbiAgICBjb25zdCBuZXN0ZWQgPSAoZGF0YSBhcyB7ZGF0YTogdW5rbm93bn0pLmRhdGFcbiAgICBpZiAoXG4gICAgICBuZXN0ZWQgJiZcbiAgICAgIHR5cGVvZiBuZXN0ZWQgPT09ICdvYmplY3QnICYmXG4gICAgICAnZGF0YScgaW4gbmVzdGVkICYmXG4gICAgICAhQXJyYXkuaXNBcnJheShuZXN0ZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm4gKG5lc3RlZCBhcyB7ZGF0YTogVH0pLmRhdGFcbiAgICB9XG4gICAgcmV0dXJuIG5lc3RlZCBhcyBUXG4gIH1cbiAgcmV0dXJuIGRhdGEgYXMgVFxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBRVUVSWSBLRVlTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBjb25zdCBzcG90S2V5cyA9IHtcbiAgYWxsOiBbJ3Nwb3RzJ10gYXMgY29uc3QsXG4gIGxpc3RzOiAoKSA9PiBbLi4uc3BvdEtleXMuYWxsLCAnbGlzdCddIGFzIGNvbnN0LFxuICBsaXN0OiAoZmlsdGVycz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgIFsuLi5zcG90S2V5cy5saXN0cygpLCBmaWx0ZXJzXSBhcyBjb25zdCxcbiAgZGV0YWlsczogKCkgPT4gWy4uLnNwb3RLZXlzLmFsbCwgJ2RldGFpbCddIGFzIGNvbnN0LFxuICBkZXRhaWw6IChpZDogc3RyaW5nKSA9PiBbLi4uc3BvdEtleXMuZGV0YWlscygpLCBpZF0gYXMgY29uc3QsXG4gIGJ5U2x1ZzogKHNsdWc6IHN0cmluZykgPT4gWy4uLnNwb3RLZXlzLmFsbCwgJ3NsdWcnLCBzbHVnXSBhcyBjb25zdCxcbiAgYnlRUjogKHFyQ29kZTogc3RyaW5nKSA9PiBbLi4uc3BvdEtleXMuYWxsLCAncXInLCBxckNvZGVdIGFzIGNvbnN0LFxuICBpbWFnZXM6IChzcG90SWQ6IHN0cmluZykgPT4gWy4uLnNwb3RLZXlzLmRldGFpbChzcG90SWQpLCAnaW1hZ2VzJ10gYXMgY29uc3QsXG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFFVRVJZIEhPT0tTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogR2V0IGFsbCBzcG90c1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3Nwb3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90cyhcbiAgcGFyYW1zPzoge1xuICAgIGxpbWl0PzogbnVtYmVyXG4gICAgY2l0eT86IHN0cmluZ1xuICAgIHR5cGU/OiBzdHJpbmdcbiAgICBsYXQ/OiBudW1iZXJcbiAgICBsbmc/OiBudW1iZXJcbiAgICByYWRpdXM/OiBudW1iZXJcbiAgICBzZWFyY2g/OiBzdHJpbmdcbiAgICB2aWJlcz86IHN0cmluZ1xuICAgIGNpdHlJZD86IHN0cmluZ1xuICAgIHBhZ2U/OiBudW1iZXJcbiAgfSxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFNwb3RbXT4sICdxdWVyeUtleScgfCAncXVlcnlGbic+LFxuKTogVXNlUXVlcnlSZXN1bHQ8U3BvdFtdPiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmxpc3QocGFyYW1zKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90W10+ID0+IHtcbiAgICAgIGNvbnN0IGNsaWVudCA9IGdldEFwaUNsaWVudCgpXG4gICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGlmIChwYXJhbXM/LmNpdHkpIHF1ZXJ5UGFyYW1zLnNldCgnY2l0eScsIHBhcmFtcy5jaXR5KVxuICAgICAgaWYgKHBhcmFtcz8udHlwZSkgcXVlcnlQYXJhbXMuc2V0KCd0eXBlJywgcGFyYW1zLnR5cGUpXG4gICAgICBpZiAocGFyYW1zPy5sYXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGF0JywgU3RyaW5nKHBhcmFtcy5sYXQpKVxuICAgICAgaWYgKHBhcmFtcz8ubG5nKSBxdWVyeVBhcmFtcy5zZXQoJ2xuZycsIFN0cmluZyhwYXJhbXMubG5nKSlcbiAgICAgIGlmIChwYXJhbXM/LnJhZGl1cykgcXVlcnlQYXJhbXMuc2V0KCdyYWRpdXMnLCBTdHJpbmcocGFyYW1zLnJhZGl1cykpXG4gICAgICBpZiAocGFyYW1zPy5zZWFyY2gpIHF1ZXJ5UGFyYW1zLnNldCgnc2VhcmNoJywgcGFyYW1zLnNlYXJjaClcbiAgICAgIGlmIChwYXJhbXM/LnZpYmVzKSBxdWVyeVBhcmFtcy5zZXQoJ3ZpYmVJZHMnLCBwYXJhbXMudmliZXMpXG4gICAgICBpZiAocGFyYW1zPy5jaXR5SWQpIHF1ZXJ5UGFyYW1zLnNldCgnY2l0eUlkJywgcGFyYW1zLmNpdHlJZClcbiAgICAgIGlmIChwYXJhbXM/LnBhZ2UpIHF1ZXJ5UGFyYW1zLnNldCgncGFnZScsIFN0cmluZyhwYXJhbXMucGFnZSkpXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNsaWVudC5nZXQ8QXBpUmVzcG9uc2U8dW5rbm93bj4+KFxuICAgICAgICBgL3Nwb3RzPyR7cXVlcnlQYXJhbXN9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0QXJyYXlEYXRhPFNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGEgc3BvdCBieSBJRFxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3Nwb3RzL3tzcG90SWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90KFxuICBzcG90SWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFNwb3Q+LCAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nPixcbik6IFVzZVF1ZXJ5UmVzdWx0PFNwb3Q+IHtcbiAgcmV0dXJuIHVzZVF1ZXJ5KHtcbiAgICBxdWVyeUtleTogc3BvdEtleXMuZGV0YWlsKHNwb3RJZCksXG4gICAgcXVlcnlGbjogYXN5bmMgKCk6IFByb21pc2U8U3BvdD4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvc3BvdHMvJHtzcG90SWR9YCxcbiAgICAgIClcbiAgICAgIHJldHVybiBleHRyYWN0T2JqZWN0RGF0YTxTcG90PihyZXNwb25zZS5kYXRhLmRhdGEpXG4gICAgfSxcbiAgICBlbmFibGVkOiAhIXNwb3RJZCxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBhIHNwb3QgYnkgc2x1Z1xuICpcbiAqIEBlbmRwb2ludCBHRVQgL3Nwb3RzL3NsdWcve3NsdWd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90QnlTbHVnKFxuICBzbHVnOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmJ5U2x1ZyhzbHVnKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC9zcG90cy9zbHVnLyR7c2x1Z31gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIGV4dHJhY3RPYmplY3REYXRhPFNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc2x1ZyxcbiAgICAuLi5vcHRpb25zLFxuICB9KVxufVxuXG4vKipcbiAqIEdldCBhIHNwb3QgYnkgUVIgY29kZVxuICpcbiAqIEBlbmRwb2ludCBHRVQgL3Nwb3RzL3FyL3txckNvZGV9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90QnlRUihcbiAgcXJDb2RlOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFVzZVF1ZXJ5T3B0aW9uczxTcG90PiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90PiB7XG4gIHJldHVybiB1c2VRdWVyeSh7XG4gICAgcXVlcnlLZXk6IHNwb3RLZXlzLmJ5UVIocXJDb2RlKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPHVua25vd24+PihcbiAgICAgICAgYC9zcG90cy9xci8ke3FyQ29kZX1gLFxuICAgICAgKVxuICAgICAgcmV0dXJuIGV4dHJhY3RPYmplY3REYXRhPFNwb3Q+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhcXJDb2RlLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogR2V0IGltYWdlcyBmb3IgYSBzcG90XG4gKlxuICogQGVuZHBvaW50IEdFVCAvc3BvdHMve3Nwb3RJZH0vaW1hZ2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VTcG90SW1hZ2VzKFxuICBzcG90SWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IE9taXQ8VXNlUXVlcnlPcHRpb25zPFNwb3RJbWFnZVtdPiwgJ3F1ZXJ5S2V5JyB8ICdxdWVyeUZuJz4sXG4pOiBVc2VRdWVyeVJlc3VsdDxTcG90SW1hZ2VbXT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBzcG90S2V5cy5pbWFnZXMoc3BvdElkKSxcbiAgICBxdWVyeUZuOiBhc3luYyAoKTogUHJvbWlzZTxTcG90SW1hZ2VbXT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx1bmtub3duPj4oXG4gICAgICAgIGAvc3BvdHMvJHtzcG90SWR9L2ltYWdlc2AsXG4gICAgICApXG4gICAgICByZXR1cm4gZXh0cmFjdEFycmF5RGF0YTxTcG90SW1hZ2U+KHJlc3BvbnNlLmRhdGEuZGF0YSlcbiAgICB9LFxuICAgIGVuYWJsZWQ6ICEhc3BvdElkLFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzcG90IGlzIGZhdm9yaXRlZCBieSB0aGUgY3VycmVudCB1c2VyXG4gKlxuICogQGVuZHBvaW50IEdFVCAvc3BvdHMve3Nwb3RJZH0vZmF2b3JpdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNwb3RGYXZvcml0ZVN0YXR1cyhcbiAgc3BvdElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZVF1ZXJ5T3B0aW9uczx7aXNGYXZvcml0ZTogYm9vbGVhbn0+LFxuICAgICdxdWVyeUtleScgfCAncXVlcnlGbidcbiAgPixcbik6IFVzZVF1ZXJ5UmVzdWx0PHtpc0Zhdm9yaXRlOiBib29sZWFufT4ge1xuICByZXR1cm4gdXNlUXVlcnkoe1xuICAgIHF1ZXJ5S2V5OiBbLi4uc3BvdEtleXMuZGV0YWlsKHNwb3RJZCksICdmYXZvcml0ZSddIGFzIGNvbnN0LFxuICAgIHF1ZXJ5Rm46IGFzeW5jICgpOiBQcm9taXNlPHtpc0Zhdm9yaXRlOiBib29sZWFufT4gPT4ge1xuICAgICAgY29uc3QgY2xpZW50ID0gZ2V0QXBpQ2xpZW50KClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY2xpZW50LmdldDxBcGlSZXNwb25zZTx7aXNGYXZvcml0ZTogYm9vbGVhbn0+PihcbiAgICAgICAgYC9zcG90cy8ke3Nwb3RJZH0vZmF2b3JpdGVgLFxuICAgICAgKVxuICAgICAgcmV0dXJuIGV4dHJhY3RPYmplY3REYXRhPHtpc0Zhdm9yaXRlOiBib29sZWFufT4ocmVzcG9uc2UuZGF0YS5kYXRhKVxuICAgIH0sXG4gICAgZW5hYmxlZDogISFzcG90SWQsXG4gICAgLi4ub3B0aW9ucyxcbiAgfSlcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSU5GSU5JVEUgUVVFUlkgSE9PS1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBQYXJhbXMgZm9yIGluZmluaXRlIHNwb3RzIHF1ZXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5maW5pdGVTcG90c1BhcmFtcyB7XG4gIGxpbWl0PzogbnVtYmVyXG4gIGNpdHk/OiBzdHJpbmdcbiAgY2l0eUlkPzogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgdGVtcGxhdGVTbHVncz86IHN0cmluZ1tdXG4gIHZpYmVJZHM/OiBzdHJpbmdbXVxuICBzZWFyY2g/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBJbmZpbml0ZSBzY3JvbGwgcXVlcnkgZm9yIHNwb3RzXG4gKlxuICogQGVuZHBvaW50IEdFVCAvc3BvdHMgKHBhZ2luYXRlZClcbiAqIEByZXR1cm5zIEluZmluaXRlIHF1ZXJ5IHdpdGggcGFnZXMgb2Ygc3BvdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUluZmluaXRlU3BvdHMoXG4gIHBhcmFtcz86IEluZmluaXRlU3BvdHNQYXJhbXMsXG4gIG9wdGlvbnM/OiBPbWl0PFxuICAgIFVzZUluZmluaXRlUXVlcnlPcHRpb25zPFxuICAgICAgUGFnaW5hdGVkUmVzcG9uc2U8U3BvdD4sXG4gICAgICBFcnJvcixcbiAgICAgIHtwYWdlczogUGFnaW5hdGVkUmVzcG9uc2U8U3BvdD5bXTsgcGFnZVBhcmFtczogbnVtYmVyW119XG4gICAgPixcbiAgICAncXVlcnlLZXknIHwgJ3F1ZXJ5Rm4nIHwgJ2dldE5leHRQYWdlUGFyYW0nIHwgJ2luaXRpYWxQYWdlUGFyYW0nXG4gID4sXG4pOiBVc2VJbmZpbml0ZVF1ZXJ5UmVzdWx0PFxuICB7cGFnZXM6IFBhZ2luYXRlZFJlc3BvbnNlPFNwb3Q+W107IHBhZ2VQYXJhbXM6IG51bWJlcltdfSxcbiAgRXJyb3Jcbj4ge1xuICByZXR1cm4gdXNlSW5maW5pdGVRdWVyeSh7XG4gICAgcXVlcnlLZXk6IFsuLi5zcG90S2V5cy5saXN0cygpLCAnaW5maW5pdGUnLCBwYXJhbXNdIGFzIGNvbnN0LFxuICAgIHF1ZXJ5Rm46IGFzeW5jICh7cGFnZVBhcmFtID0gMX0pOiBQcm9taXNlPFBhZ2luYXRlZFJlc3BvbnNlPFNwb3Q+PiA9PiB7XG4gICAgICBjb25zdCBjbGllbnQgPSBnZXRBcGlDbGllbnQoKVxuICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgIHF1ZXJ5UGFyYW1zLnNldCgncGFnZScsIFN0cmluZyhwYWdlUGFyYW0pKVxuICAgICAgaWYgKHBhcmFtcz8ubGltaXQpIHF1ZXJ5UGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcocGFyYW1zLmxpbWl0KSlcbiAgICAgIGlmIChwYXJhbXM/LmNpdHkpIHF1ZXJ5UGFyYW1zLnNldCgnY2l0eScsIHBhcmFtcy5jaXR5KVxuICAgICAgaWYgKHBhcmFtcz8uY2l0eUlkKSBxdWVyeVBhcmFtcy5zZXQoJ2NpdHlJZCcsIHBhcmFtcy5jaXR5SWQpXG4gICAgICBpZiAocGFyYW1zPy50eXBlICYmIHBhcmFtcy50eXBlICE9PSAnQWxsJylcbiAgICAgICAgcXVlcnlQYXJhbXMuc2V0KCd0eXBlJywgcGFyYW1zLnR5cGUpXG4gICAgICBpZiAocGFyYW1zPy5zZWFyY2g/LnRyaW0oKSlcbiAgICAgICAgcXVlcnlQYXJhbXMuc2V0KCdzZWFyY2gnLCBwYXJhbXMuc2VhcmNoLnRyaW0oKSlcbiAgICAgIGlmIChwYXJhbXM/LnRlbXBsYXRlU2x1Z3MpIHtcbiAgICAgICAgcGFyYW1zLnRlbXBsYXRlU2x1Z3MuZm9yRWFjaCgoc2x1ZykgPT5cbiAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ3RlbXBsYXRlU2x1Z3MnLCBzbHVnKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaWYgKHBhcmFtcz8udmliZUlkcykge1xuICAgICAgICBwYXJhbXMudmliZUlkcy5mb3JFYWNoKChpZCkgPT4gcXVlcnlQYXJhbXMuYXBwZW5kKCd2aWJlSWRzJywgaWQpKVxuICAgICAgfVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbGllbnQuZ2V0PEFwaVJlc3BvbnNlPFBhZ2luYXRlZFJlc3BvbnNlPFNwb3Q+Pj4oXG4gICAgICAgIGAvc3BvdHM/JHtxdWVyeVBhcmFtc31gLFxuICAgICAgKVxuICAgICAgLy8gSGFuZGxlIG5lc3RlZCByZXNwb25zZSBzdHJ1Y3R1cmVcbiAgICAgIGNvbnN0IGRhdGEgPSByZXNwb25zZS5kYXRhLmRhdGFcbiAgICAgIGlmIChkYXRhICYmIHR5cGVvZiBkYXRhID09PSAnb2JqZWN0JyAmJiAnZGF0YScgaW4gZGF0YSkge1xuICAgICAgICByZXR1cm4gZGF0YSBhcyBQYWdpbmF0ZWRSZXNwb25zZTxTcG90PlxuICAgICAgfVxuICAgICAgLy8gRmFsbGJhY2sgZm9yIGFycmF5IHJlc3BvbnNlXG4gICAgICBjb25zdCBwYWdlID0gcGFnZVBhcmFtIGFzIG51bWJlclxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogZXh0cmFjdEFycmF5RGF0YTxTcG90PihkYXRhKSxcbiAgICAgICAgbWV0YToge1xuICAgICAgICAgIHRvdGFsOiAwLFxuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgbGltaXQ6IHBhcmFtcz8ubGltaXQgfHwgMjAsXG4gICAgICAgICAgdG90YWxQYWdlczogMSxcbiAgICAgICAgICBoYXNOZXh0UGFnZTogZmFsc2UsXG4gICAgICAgICAgaGFzUHJldmlvdXNQYWdlOiBwYWdlID4gMSxcbiAgICAgICAgfSxcbiAgICAgIH1cbiAgICB9LFxuICAgIGluaXRpYWxQYWdlUGFyYW06IDEsXG4gICAgZ2V0TmV4dFBhZ2VQYXJhbTogKGxhc3RQYWdlKSA9PiB7XG4gICAgICByZXR1cm4gbGFzdFBhZ2UubWV0YS5oYXNOZXh0UGFnZSA/IGxhc3RQYWdlLm1ldGEucGFnZSArIDEgOiB1bmRlZmluZWRcbiAgICB9LFxuICAgIC4uLm9wdGlvbnMsXG4gIH0pXG59XG4iXX0=
@@ -2,11 +2,9 @@
2
2
  * Templates Query Hooks
3
3
  *
4
4
  * TanStack Query hooks for post template operations.
5
- *
6
- * Templates are reference data (flat array), not paginated.
7
5
  */
8
- import { UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
9
- import type { Template } from '../types';
6
+ import { type UseQueryOptions, type UseQueryResult } from '@tanstack/react-query';
7
+ import { type Template } from '../types';
10
8
  export declare const templateKeys: {
11
9
  all: readonly ["templates"];
12
10
  lists: () => readonly ["templates", "list"];
@@ -20,10 +18,9 @@ export declare const templateKeys: {
20
18
  bySlug: (slug: string) => readonly ["templates", "slug", string];
21
19
  };
22
20
  /**
23
- * Get all templates (flat array - reference data)
21
+ * Get all templates
24
22
  *
25
- * @endpoint GET /api/v1/templates
26
- * @returns Flat array of templates (not paginated)
23
+ * @endpoint GET /templates
27
24
  */
28
25
  export declare function useTemplates(params?: {
29
26
  spotType?: string;
@@ -31,12 +28,12 @@ export declare function useTemplates(params?: {
31
28
  /**
32
29
  * Get a template by ID
33
30
  *
34
- * @endpoint GET /api/v1/templates/{templateId}
31
+ * @endpoint GET /templates/{templateId}
35
32
  */
36
33
  export declare function useTemplate(templateId: string, options?: Omit<UseQueryOptions<Template>, 'queryKey' | 'queryFn'>): UseQueryResult<Template>;
37
34
  /**
38
35
  * Get a template by slug
39
36
  *
40
- * @endpoint GET /api/v1/templates/slug/{slug}
37
+ * @endpoint GET /templates/slug/{slug}
41
38
  */
42
39
  export declare function useTemplateBySlug(slug: string, options?: Omit<UseQueryOptions<Template>, 'queryKey' | 'queryFn'>): UseQueryResult<Template>;