@greatapps/common 1.1.659 → 1.1.661

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 (130) hide show
  1. package/dist/handlers.mjs +33 -0
  2. package/dist/handlers.mjs.map +1 -0
  3. package/dist/http.mjs +5 -0
  4. package/dist/http.mjs.map +1 -0
  5. package/dist/infra/http/api-fetch.mjs +30 -0
  6. package/dist/infra/http/api-fetch.mjs.map +1 -0
  7. package/dist/infra/route/parse-id.mjs +12 -0
  8. package/dist/infra/route/parse-id.mjs.map +1 -0
  9. package/dist/infra/route/safe-route-handler.mjs +18 -0
  10. package/dist/infra/route/safe-route-handler.mjs.map +1 -0
  11. package/dist/infra/route/search-params.mjs +11 -0
  12. package/dist/infra/route/search-params.mjs.map +1 -0
  13. package/dist/modules/cards/handlers/find-card-by-id.handler.mjs +16 -0
  14. package/dist/modules/cards/handlers/find-card-by-id.handler.mjs.map +1 -0
  15. package/dist/modules/cards/handlers/list-cards.handler.mjs +12 -0
  16. package/dist/modules/cards/handlers/list-cards.handler.mjs.map +1 -0
  17. package/dist/modules/cards/hooks/card-by-id.hook.mjs +2 -5
  18. package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
  19. package/dist/modules/cards/hooks/cards.hook.mjs +2 -5
  20. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  21. package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs +15 -0
  22. package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs.map +1 -0
  23. package/dist/modules/charges/handlers/list-charges.handler.mjs +15 -0
  24. package/dist/modules/charges/handlers/list-charges.handler.mjs.map +1 -0
  25. package/dist/modules/charges/hooks/charge-by-id.hook.mjs +2 -3
  26. package/dist/modules/charges/hooks/charge-by-id.hook.mjs.map +1 -1
  27. package/dist/modules/charges/hooks/charges.hook.mjs +2 -3
  28. package/dist/modules/charges/hooks/charges.hook.mjs.map +1 -1
  29. package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs +15 -0
  30. package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs.map +1 -0
  31. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs +5 -3
  32. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
  33. package/dist/modules/pages/handlers/count-pages.handler.mjs +14 -0
  34. package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -0
  35. package/dist/modules/pages/hooks/count-pages.hook.mjs +3 -4
  36. package/dist/modules/pages/hooks/count-pages.hook.mjs.map +1 -1
  37. package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs +15 -0
  38. package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs.map +1 -0
  39. package/dist/modules/plans/handlers/list-plans.handler.mjs +20 -0
  40. package/dist/modules/plans/handlers/list-plans.handler.mjs.map +1 -0
  41. package/dist/modules/plans/hooks/list-plans.hook.mjs +2 -3
  42. package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
  43. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs +2 -3
  44. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  45. package/dist/modules/projects/handlers/find-project.handler.mjs +16 -0
  46. package/dist/modules/projects/handlers/find-project.handler.mjs.map +1 -0
  47. package/dist/modules/projects/handlers/list-all-account-users.handler.mjs +17 -0
  48. package/dist/modules/projects/handlers/list-all-account-users.handler.mjs.map +1 -0
  49. package/dist/modules/projects/handlers/list-available-users.handler.mjs +20 -0
  50. package/dist/modules/projects/handlers/list-available-users.handler.mjs.map +1 -0
  51. package/dist/modules/projects/handlers/list-project-users.handler.mjs +20 -0
  52. package/dist/modules/projects/handlers/list-project-users.handler.mjs.map +1 -0
  53. package/dist/modules/projects/handlers/list-projects.handler.mjs +17 -0
  54. package/dist/modules/projects/handlers/list-projects.handler.mjs.map +1 -0
  55. package/dist/modules/projects/hooks/find-project.hook.mjs +2 -3
  56. package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
  57. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs +6 -6
  58. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  59. package/dist/modules/projects/hooks/list-available-users.hook.mjs +6 -6
  60. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  61. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs +6 -6
  62. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  63. package/dist/modules/projects/hooks/list-project-users.hook.mjs +6 -6
  64. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  65. package/dist/modules/projects/hooks/list-projects.hook.mjs +2 -3
  66. package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
  67. package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs +17 -0
  68. package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs.map +1 -0
  69. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs +5 -5
  70. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  71. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs +5 -3
  72. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  73. package/dist/modules/users/handlers/list-messages.handler.mjs +36 -0
  74. package/dist/modules/users/handlers/list-messages.handler.mjs.map +1 -0
  75. package/dist/modules/users/hooks/messages.hook.mjs +7 -6
  76. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  77. package/dist/route.mjs +9 -0
  78. package/dist/route.mjs.map +1 -0
  79. package/package.json +14 -2
  80. package/src/handlers.ts +22 -0
  81. package/src/http.ts +1 -0
  82. package/src/infra/http/api-fetch.ts +39 -0
  83. package/src/infra/route/parse-id.ts +9 -0
  84. package/src/infra/route/safe-route-handler.ts +16 -0
  85. package/src/infra/route/search-params.ts +9 -0
  86. package/src/modules/cards/handlers/find-card-by-id.handler.ts +15 -0
  87. package/src/modules/cards/handlers/list-cards.handler.ts +10 -0
  88. package/src/modules/cards/hooks/card-by-id.hook.ts +4 -5
  89. package/src/modules/cards/hooks/cards.hook.ts +4 -5
  90. package/src/modules/charges/handlers/find-charge-by-id.handler.ts +14 -0
  91. package/src/modules/charges/handlers/list-charges.handler.ts +15 -0
  92. package/src/modules/charges/hooks/charge-by-id.hook.ts +5 -3
  93. package/src/modules/charges/hooks/charges.hook.ts +5 -4
  94. package/src/modules/ia-credits/handlers/list-ia-credits.handler.ts +14 -0
  95. package/src/modules/ia-credits/hooks/ia-credits.hook.ts +7 -3
  96. package/src/modules/pages/handlers/count-pages.handler.ts +12 -0
  97. package/src/modules/pages/hooks/count-pages.hook.ts +3 -4
  98. package/src/modules/plans/handlers/find-plan-by-id.handler.ts +14 -0
  99. package/src/modules/plans/handlers/list-plans.handler.ts +20 -0
  100. package/src/modules/plans/hooks/list-plans.hook.ts +2 -3
  101. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +4 -3
  102. package/src/modules/projects/handlers/find-project.handler.ts +15 -0
  103. package/src/modules/projects/handlers/list-all-account-users.handler.ts +17 -0
  104. package/src/modules/projects/handlers/list-available-users.handler.ts +20 -0
  105. package/src/modules/projects/handlers/list-project-users.handler.ts +20 -0
  106. package/src/modules/projects/handlers/list-projects.handler.ts +17 -0
  107. package/src/modules/projects/hooks/find-project.hook.ts +3 -3
  108. package/src/modules/projects/hooks/list-all-account-users.hook.ts +8 -7
  109. package/src/modules/projects/hooks/list-available-users.hook.ts +8 -7
  110. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +8 -7
  111. package/src/modules/projects/hooks/list-project-users.hook.ts +8 -7
  112. package/src/modules/projects/hooks/list-projects.hook.ts +3 -3
  113. package/src/modules/subscriptions/handlers/list-subscriptions.handler.ts +17 -0
  114. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +8 -5
  115. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +8 -5
  116. package/src/modules/users/handlers/list-messages.handler.ts +39 -0
  117. package/src/modules/users/hooks/messages.hook.ts +10 -8
  118. package/src/route.ts +3 -0
  119. package/src/server.ts +0 -8
  120. package/src/modules/cards/actions/find-card-by-id.action.ts +0 -8
  121. package/src/modules/cards/actions/list-cards.action.ts +0 -8
  122. package/src/modules/charges/actions/find-charge-by-id.action.ts +0 -8
  123. package/src/modules/charges/actions/list-charges.action.ts +0 -9
  124. package/src/modules/ia-credits/actions/list-ia-credits.action.ts +0 -8
  125. package/src/modules/pages/actions/count-pages.action.ts +0 -10
  126. package/src/modules/plans/actions/find-plan-by-id.action.ts +0 -8
  127. package/src/modules/plans/actions/list-plans.action.ts +0 -17
  128. package/src/modules/projects/actions/list-all-account-users.action.ts +0 -9
  129. package/src/modules/projects/actions/list-available-users.action.ts +0 -9
  130. package/src/modules/users/action/list-messages.action.ts +0 -26
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/projects/handlers/find-project.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { parseId } from '../../../infra/route/parse-id';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { projectsService } from '../services/projects.service';\n\nexport function createFindProjectHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return projectsService.findById(parseId(id));\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,eAAe;AACxB,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAEzB,SAAS,2BAA2B;AACzC,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,gBAAgB,SAAS,QAAQ,EAAE,CAAC;AAAA,IAC7C,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,17 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { searchParamsToParams } from "../../../infra/route/search-params";
4
+ import { projectUsersService } from "../services/project-users.service";
5
+ function createListAllAccountUsersHandler() {
6
+ return async function GET(req) {
7
+ return safeRouteHandler(
8
+ () => projectUsersService.listAllAccountUsers(
9
+ searchParamsToParams(req.nextUrl.searchParams)
10
+ )
11
+ );
12
+ };
13
+ }
14
+ export {
15
+ createListAllAccountUsersHandler
16
+ };
17
+ //# sourceMappingURL=list-all-account-users.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/projects/handlers/list-all-account-users.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { ListUsersParams } from '../types';\n\nexport function createListAllAccountUsersHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n projectUsersService.listAllAccountUsers(\n searchParamsToParams<ListUsersParams>(req.nextUrl.searchParams)\n )\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAG7B,SAAS,mCAAmC;AACjD,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,oBAAoB;AAAA,QAClB,qBAAsC,IAAI,QAAQ,YAAY;AAAA,MAChE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ import "server-only";
2
+ import { parseId } from "../../../infra/route/parse-id";
3
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
4
+ import { searchParamsToParams } from "../../../infra/route/search-params";
5
+ import { projectUsersService } from "../services/project-users.service";
6
+ function createListAvailableUsersHandler() {
7
+ return async function GET(req, { params }) {
8
+ return safeRouteHandler(async () => {
9
+ const { id } = await params;
10
+ return projectUsersService.listNotInProject(
11
+ parseId(id),
12
+ searchParamsToParams(req.nextUrl.searchParams)
13
+ );
14
+ });
15
+ };
16
+ }
17
+ export {
18
+ createListAvailableUsersHandler
19
+ };
20
+ //# sourceMappingURL=list-available-users.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/projects/handlers/list-available-users.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { parseId } from '../../../infra/route/parse-id';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { ListUsersParams } from '../types';\n\nexport function createListAvailableUsersHandler() {\n return async function GET(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return projectUsersService.listNotInProject(\n parseId(id),\n searchParamsToParams<ListUsersParams>(req.nextUrl.searchParams)\n );\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,eAAe;AACxB,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAG7B,SAAS,kCAAkC;AAChD,SAAO,eAAe,IAAI,KAAkB,EAAE,OAAO,GAAwC;AAC3F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,oBAAoB;AAAA,QACzB,QAAQ,EAAE;AAAA,QACV,qBAAsC,IAAI,QAAQ,YAAY;AAAA,MAChE;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ import "server-only";
2
+ import { parseId } from "../../../infra/route/parse-id";
3
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
4
+ import { searchParamsToParams } from "../../../infra/route/search-params";
5
+ import { projectUsersService } from "../services/project-users.service";
6
+ function createListProjectUsersHandler() {
7
+ return async function GET(req, { params }) {
8
+ return safeRouteHandler(async () => {
9
+ const { id } = await params;
10
+ return projectUsersService.listInProject(
11
+ parseId(id),
12
+ searchParamsToParams(req.nextUrl.searchParams)
13
+ );
14
+ });
15
+ };
16
+ }
17
+ export {
18
+ createListProjectUsersHandler
19
+ };
20
+ //# sourceMappingURL=list-project-users.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/projects/handlers/list-project-users.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { parseId } from '../../../infra/route/parse-id';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { projectUsersService } from '../services/project-users.service';\nimport type { ListUsersParams } from '../types';\n\nexport function createListProjectUsersHandler() {\n return async function GET(req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return projectUsersService.listInProject(\n parseId(id),\n searchParamsToParams<ListUsersParams>(req.nextUrl.searchParams)\n );\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,eAAe;AACxB,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,2BAA2B;AAG7B,SAAS,gCAAgC;AAC9C,SAAO,eAAe,IAAI,KAAkB,EAAE,OAAO,GAAwC;AAC3F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,oBAAoB;AAAA,QACzB,QAAQ,EAAE;AAAA,QACV,qBAAsC,IAAI,QAAQ,YAAY;AAAA,MAChE;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,17 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { searchParamsToParams } from "../../../infra/route/search-params";
4
+ import { projectsService } from "../services/projects.service";
5
+ function createListProjectsHandler() {
6
+ return async function GET(req) {
7
+ return safeRouteHandler(
8
+ () => projectsService.list(
9
+ searchParamsToParams(req.nextUrl.searchParams)
10
+ )
11
+ );
12
+ };
13
+ }
14
+ export {
15
+ createListProjectsHandler
16
+ };
17
+ //# sourceMappingURL=list-projects.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/projects/handlers/list-projects.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { projectsService } from '../services/projects.service';\nimport type { ListProjectsActionParams } from '../actions/list-projects.action';\n\nexport function createListProjectsHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n projectsService.list(\n searchParamsToParams<ListProjectsActionParams>(req.nextUrl.searchParams)\n )\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAGzB,SAAS,4BAA4B;AAC1C,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,gBAAgB;AAAA,QACd,qBAA+C,IAAI,QAAQ,YAAY;AAAA,MACzE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,14 +1,13 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { findProjectAction } from "../actions/find-project.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  import { PROJECTS_BASE_KEY } from "./list-projects.hook";
7
6
  function useProject(projectId) {
8
7
  const queryKey = useAuthQueryKey([...PROJECTS_BASE_KEY, projectId]);
9
8
  return useQuery({
10
9
  queryKey,
11
- queryFn: () => withAction(() => findProjectAction(projectId))(),
10
+ queryFn: ({ signal }) => apiFetch(`/api/projects/${projectId}`, { signal }),
12
11
  enabled: projectId != null && projectId > 0,
13
12
  staleTime: 1e4
14
13
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/find-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { findProjectAction } from '../actions/find-project.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\n\nexport function useProject(projectId: number | null) {\n const queryKey = useAuthQueryKey([...PROJECTS_BASE_KEY, projectId]);\n\n return useQuery({\n queryKey,\n queryFn: () => withAction(() => findProjectAction(projectId!))(),\n enabled: projectId != null && projectId > 0,\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,yBAAyB;AAClC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,WAA0B;AACnD,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,SAAS,CAAC;AAElE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,MAAM,WAAW,MAAM,kBAAkB,SAAU,CAAC,EAAE;AAAA,IAC/D,SAAS,aAAa,QAAQ,YAAY;AAAA,IAC1C,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/find-project.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { Project } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { PROJECTS_BASE_KEY } from './list-projects.hook';\n\nexport function useProject(projectId: number | null) {\n const queryKey = useAuthQueryKey([...PROJECTS_BASE_KEY, projectId]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<Project>(`/api/projects/${projectId}`, { signal }),\n enabled: projectId != null && projectId > 0,\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,WAA0B;AACnD,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,SAAS,CAAC;AAElE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAkB,iBAAiB,SAAS,IAAI,EAAE,OAAO,CAAC;AAAA,IACnF,SAAS,aAAa,QAAQ,YAAY;AAAA,IAC1C,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { useInfiniteQuery } from "@tanstack/react-query";
3
- import { listAllAccountUsersAction } from "../actions/list-all-account-users.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  const PAGE_SIZE = 20;
7
6
  const LIST_ALL_ACCOUNT_USERS_BASE_KEY = () => ["account-users", "all"];
@@ -14,14 +13,15 @@ function useListAllAccountUsers(search = "", projectId) {
14
13
  const queryKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_QUERY_KEY(search, projectId)]);
15
14
  return useInfiniteQuery({
16
15
  queryKey,
17
- queryFn: ({ pageParam }) => withAction(
18
- () => listAllAccountUsersAction({
16
+ queryFn: ({ pageParam, signal }) => apiFetch("/api/account/users", {
17
+ params: {
19
18
  search: search || void 0,
20
19
  page: pageParam,
21
20
  limit: PAGE_SIZE,
22
21
  inProject: projectId
23
- })
24
- )(),
22
+ },
23
+ signal
24
+ }),
25
25
  getNextPageParam: (lastPage, allPages) => {
26
26
  const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
27
27
  return loaded < lastPage.total ? allPages.length + 1 : void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/list-all-account-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { listAllAccountUsersAction } from '../actions/list-all-account-users.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_ALL_ACCOUNT_USERS_BASE_KEY = () =>\n ['account-users', 'all'] as const;\n\nexport const LIST_ALL_ACCOUNT_USERS_QUERY_KEY = (search: string = '', projectId?: number) => [\n ...LIST_ALL_ACCOUNT_USERS_BASE_KEY(),\n search,\n projectId,\n] as const;\n\nexport function useListAllAccountUsers(search: string = '', projectId?: number) {\n const queryKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_QUERY_KEY(search, projectId)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam }) =>\n withAction(() =>\n listAllAccountUsersAction({\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n inProject: projectId,\n })\n )(),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,iCAAiC;AAC1C,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,kCAAkC,MAC7C,CAAC,iBAAiB,KAAK;AAElB,MAAM,mCAAmC,CAAC,SAAiB,IAAI,cAAuB;AAAA,EAC3F,GAAG,gCAAgC;AAAA,EACnC;AAAA,EACA;AACF;AAEO,SAAS,uBAAuB,SAAiB,IAAI,WAAoB;AAC9E,QAAM,WAAW,gBAAgB,CAAC,GAAG,iCAAiC,QAAQ,SAAS,CAAC,CAAC;AAEzF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MACpB;AAAA,MAAW,MACT,0BAA0B;AAAA,QACxB,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb,CAAC;AAAA,IACH,EAAE;AAAA,IACJ,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/list-all-account-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { AccountUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_ALL_ACCOUNT_USERS_BASE_KEY = () =>\n ['account-users', 'all'] as const;\n\nexport const LIST_ALL_ACCOUNT_USERS_QUERY_KEY = (search: string = '', projectId?: number) => [\n ...LIST_ALL_ACCOUNT_USERS_BASE_KEY(),\n search,\n projectId,\n] as const;\n\nexport function useListAllAccountUsers(search: string = '', projectId?: number) {\n const queryKey = useAuthQueryKey([...LIST_ALL_ACCOUNT_USERS_QUERY_KEY(search, projectId)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<AccountUser>>('/api/account/users', {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n inProject: projectId,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,kCAAkC,MAC7C,CAAC,iBAAiB,KAAK;AAElB,MAAM,mCAAmC,CAAC,SAAiB,IAAI,cAAuB;AAAA,EAC3F,GAAG,gCAAgC;AAAA,EACnC;AAAA,EACA;AACF;AAEO,SAAS,uBAAuB,SAAiB,IAAI,WAAoB;AAC9E,QAAM,WAAW,gBAAgB,CAAC,GAAG,iCAAiC,QAAQ,SAAS,CAAC,CAAC;AAEzF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,sBAAsB;AAAA,MACrD,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,WAAW;AAAA,MACb;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { useInfiniteQuery } from "@tanstack/react-query";
3
- import { listAvailableUsersAction } from "../actions/list-available-users.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  const PAGE_SIZE = 20;
7
6
  const LIST_AVAILABLE_USERS_BASE_KEY = (projectId) => ["project-users", projectId, "out"];
@@ -13,13 +12,14 @@ function useListAvailableUsers(projectId, search = "") {
13
12
  const queryKey = useAuthQueryKey([...LIST_AVAILABLE_USERS_QUERY_KEY(projectId, search)]);
14
13
  return useInfiniteQuery({
15
14
  queryKey,
16
- queryFn: ({ pageParam }) => withAction(
17
- () => listAvailableUsersAction(projectId, {
15
+ queryFn: ({ pageParam, signal }) => apiFetch(`/api/projects/${projectId}/available-users`, {
16
+ params: {
18
17
  search: search || void 0,
19
18
  page: pageParam,
20
19
  limit: PAGE_SIZE
21
- })
22
- )(),
20
+ },
21
+ signal
22
+ }),
23
23
  getNextPageParam: (lastPage, allPages) => {
24
24
  const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
25
25
  return loaded < lastPage.total ? allPages.length + 1 : void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/list-available-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { listAvailableUsersAction } from '../actions/list-available-users.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_AVAILABLE_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'out'] as const;\n\nexport const LIST_AVAILABLE_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_AVAILABLE_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListAvailableUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_AVAILABLE_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam }) =>\n withAction(() =>\n listAvailableUsersAction(projectId, {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n })\n )(),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,gCAAgC,CAAC,cAC5C,CAAC,iBAAiB,WAAW,KAAK;AAE7B,MAAM,iCAAiC,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACxF,GAAG,8BAA8B,SAAS;AAAA,EAC1C;AACF;AAEO,SAAS,sBAAsB,WAAmB,SAAiB,IAAI;AAC5E,QAAM,WAAW,gBAAgB,CAAC,GAAG,+BAA+B,WAAW,MAAM,CAAC,CAAC;AAEvF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MACpB;AAAA,MAAW,MACT,yBAAyB,WAAW;AAAA,QAClC,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAAA,IACH,EAAE;AAAA,IACJ,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/list-available-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { AccountUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_AVAILABLE_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'out'] as const;\n\nexport const LIST_AVAILABLE_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_AVAILABLE_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListAvailableUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_AVAILABLE_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<AccountUser>>(`/api/projects/${projectId}/available-users`, {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,gCAAgC,CAAC,cAC5C,CAAC,iBAAiB,WAAW,KAAK;AAE7B,MAAM,iCAAiC,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACxF,GAAG,8BAA8B,SAAS;AAAA,EAC1C;AACF;AAEO,SAAS,sBAAsB,WAAmB,SAAiB,IAAI;AAC5E,QAAM,WAAW,gBAAgB,CAAC,GAAG,+BAA+B,WAAW,MAAM,CAAC,CAAC;AAEvF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,oBAAoB;AAAA,MAC7E,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { useInfiniteQuery } from "@tanstack/react-query";
3
- import { listProjectsAction } from "../actions/list-projects.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  import { PROJECTS_BASE_KEY } from "./list-projects.hook";
7
6
  const PAGE_SIZE = 20;
@@ -13,13 +12,14 @@ function useInfiniteProjects({
13
12
  const queryKey = useAuthQueryKey([...INFINITE_PROJECTS_QUERY_KEY(params)]);
14
13
  return useInfiniteQuery({
15
14
  queryKey,
16
- queryFn: ({ pageParam }) => withAction(
17
- () => listProjectsAction({
15
+ queryFn: ({ pageParam, signal }) => apiFetch("/api/projects", {
16
+ params: {
18
17
  ...params,
19
18
  page: pageParam,
20
19
  limit
21
- })
22
- )(),
20
+ },
21
+ signal
22
+ }),
23
23
  initialPageParam: 1,
24
24
  getNextPageParam: (lastPage, allPages) => {
25
25
  const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/list-infinite-projects.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { listProjectsAction } from \"../actions/list-projects.action\";\nimport type { ListProjectsActionParams } from \"../actions/list-projects.action\";\nimport { withAction } from \"../../../utils/withAction\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\nimport { PROJECTS_BASE_KEY } from \"./list-projects.hook\";\n\nconst PAGE_SIZE = 20;\n\nexport const INFINITE_PROJECTS_QUERY_KEY = (\n params?: Omit<ListProjectsActionParams, \"page\">,\n) => [...PROJECTS_BASE_KEY, \"infinite\", params] as const;\n\nexport function useInfiniteProjects({\n limit = PAGE_SIZE,\n ...params\n}: Omit<ListProjectsActionParams, \"page\">) {\n const queryKey = useAuthQueryKey([...INFINITE_PROJECTS_QUERY_KEY(params)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam }) =>\n withAction(() =>\n listProjectsAction({\n ...params,\n page: pageParam as number,\n limit,\n }),\n )(),\n initialPageParam: 1,\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n placeholderData: (prev) => prev,\n staleTime: 10_000,\n refetchOnMount: true,\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CACzC,WACG,CAAC,GAAG,mBAAmB,YAAY,MAAM;AAEvC,SAAS,oBAAoB;AAAA,EAClC,QAAQ;AAAA,EACR,GAAG;AACL,GAA2C;AACzC,QAAM,WAAW,gBAAgB,CAAC,GAAG,4BAA4B,MAAM,CAAC,CAAC;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MACpB;AAAA,MAAW,MACT,mBAAmB;AAAA,QACjB,GAAG;AAAA,QACH,MAAM;AAAA,QACN;AAAA,MACF,CAAC;AAAA,IACH,EAAE;AAAA,IACJ,kBAAkB;AAAA,IAClB,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,iBAAiB,CAAC,SAAS;AAAA,IAC3B,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/list-infinite-projects.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useInfiniteQuery } from \"@tanstack/react-query\";\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\nimport type { ListProjectsActionParams } from \"../actions/list-projects.action\";\nimport type { ProjectsPage } from \"../types\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\nimport { PROJECTS_BASE_KEY } from \"./list-projects.hook\";\n\nconst PAGE_SIZE = 20;\n\nexport const INFINITE_PROJECTS_QUERY_KEY = (\n params?: Omit<ListProjectsActionParams, \"page\">,\n) => [...PROJECTS_BASE_KEY, \"infinite\", params] as const;\n\nexport function useInfiniteProjects({\n limit = PAGE_SIZE,\n ...params\n}: Omit<ListProjectsActionParams, \"page\">) {\n const queryKey = useAuthQueryKey([...INFINITE_PROJECTS_QUERY_KEY(params)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<ProjectsPage>('/api/projects', {\n params: {\n ...params,\n page: pageParam as number,\n limit,\n },\n signal,\n }),\n initialPageParam: 1,\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n placeholderData: (prev) => prev,\n staleTime: 10_000,\n refetchOnMount: true,\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CACzC,WACG,CAAC,GAAG,mBAAmB,YAAY,MAAM;AAEvC,SAAS,oBAAoB;AAAA,EAClC,QAAQ;AAAA,EACR,GAAG;AACL,GAA2C;AACzC,QAAM,WAAW,gBAAgB,CAAC,GAAG,4BAA4B,MAAM,CAAC,CAAC;AAEzE,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAuB,iBAAiB;AAAA,MACtC,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB;AAAA,IAClB,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,iBAAiB,CAAC,SAAS;AAAA,IAC3B,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,EACtB,CAAC;AACH;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { useInfiniteQuery } from "@tanstack/react-query";
3
- import { listProjectUsersAction } from "../actions/list-project-users.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  const PAGE_SIZE = 20;
7
6
  const LIST_PROJECT_USERS_BASE_KEY = (projectId) => ["project-users", projectId, "in"];
@@ -13,13 +12,14 @@ function useListProjectUsers(projectId, search = "") {
13
12
  const queryKey = useAuthQueryKey([...LIST_PROJECT_USERS_QUERY_KEY(projectId, search)]);
14
13
  return useInfiniteQuery({
15
14
  queryKey,
16
- queryFn: ({ pageParam }) => withAction(
17
- () => listProjectUsersAction(projectId, {
15
+ queryFn: ({ pageParam, signal }) => apiFetch(`/api/projects/${projectId}/users`, {
16
+ params: {
18
17
  search: search || void 0,
19
18
  page: pageParam,
20
19
  limit: PAGE_SIZE
21
- })
22
- )(),
20
+ },
21
+ signal
22
+ }),
23
23
  getNextPageParam: (lastPage, allPages) => {
24
24
  const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
25
25
  return loaded < lastPage.total ? allPages.length + 1 : void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/list-project-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { listProjectUsersAction } from '../actions/list-project-users.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_PROJECT_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'in'] as const;\n\nexport const LIST_PROJECT_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_PROJECT_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListProjectUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_PROJECT_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam }) =>\n withAction(() =>\n listProjectUsersAction(projectId, {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n })\n )(),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,8BAA8B;AACvC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CAAC,cAC1C,CAAC,iBAAiB,WAAW,IAAI;AAE5B,MAAM,+BAA+B,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACtF,GAAG,4BAA4B,SAAS;AAAA,EACxC;AACF;AAEO,SAAS,oBAAoB,WAAmB,SAAiB,IAAI;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,6BAA6B,WAAW,MAAM,CAAC,CAAC;AAErF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MACpB;AAAA,MAAW,MACT,uBAAuB,WAAW;AAAA,QAChC,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAAA,IACH,EAAE;AAAA,IACJ,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/list-project-users.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { ProjectUser, UsersPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nconst PAGE_SIZE = 20;\n\nexport const LIST_PROJECT_USERS_BASE_KEY = (projectId: number) =>\n ['project-users', projectId, 'in'] as const;\n\nexport const LIST_PROJECT_USERS_QUERY_KEY = (projectId: number, search: string = '') => [\n ...LIST_PROJECT_USERS_BASE_KEY(projectId),\n search,\n] as const;\n\nexport function useListProjectUsers(projectId: number, search: string = '') {\n const queryKey = useAuthQueryKey([...LIST_PROJECT_USERS_QUERY_KEY(projectId, search)]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<UsersPage<ProjectUser>>(`/api/projects/${projectId}/users`, {\n params: {\n search: search || undefined,\n page: pageParam as number,\n limit: PAGE_SIZE,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n enabled: !!projectId,\n });\n}\n"],"mappings":";AAEA,SAAS,wBAAwB;AACjC,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,MAAM,YAAY;AAEX,MAAM,8BAA8B,CAAC,cAC1C,CAAC,iBAAiB,WAAW,IAAI;AAE5B,MAAM,+BAA+B,CAAC,WAAmB,SAAiB,OAAO;AAAA,EACtF,GAAG,4BAA4B,SAAS;AAAA,EACxC;AACF;AAEO,SAAS,oBAAoB,WAAmB,SAAiB,IAAI;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,6BAA6B,WAAW,MAAM,CAAC,CAAC;AAErF,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAiC,iBAAiB,SAAS,UAAU;AAAA,MACnE,QAAQ;AAAA,QACN,QAAQ,UAAU;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,IAClB,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -1,7 +1,6 @@
1
1
  "use client";
2
2
  import { useQuery, keepPreviousData } from "@tanstack/react-query";
3
- import { listProjectsAction } from "../actions/list-projects.action";
4
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  const PROJECTS_BASE_KEY = ["projects"];
7
6
  const PROJECTS_QUERY_KEY = (params) => [...PROJECTS_BASE_KEY, params];
@@ -9,7 +8,7 @@ function useProjects(params) {
9
8
  const queryKey = useAuthQueryKey([...PROJECTS_QUERY_KEY(params)]);
10
9
  return useQuery({
11
10
  queryKey,
12
- queryFn: withAction(() => listProjectsAction(params)),
11
+ queryFn: ({ signal }) => apiFetch("/api/projects", { params, signal }),
13
12
  staleTime: 1e4,
14
13
  placeholderData: keepPreviousData
15
14
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/projects/hooks/list-projects.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, keepPreviousData } from '@tanstack/react-query';\nimport { listProjectsAction } from '../actions/list-projects.action';\nimport type { ListProjectsActionParams } from '../actions/list-projects.action';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const PROJECTS_BASE_KEY = ['projects'] as const;\n\nexport const PROJECTS_QUERY_KEY = (params?: ListProjectsActionParams) =>\n [...PROJECTS_BASE_KEY, params] as const;\n\nexport function useProjects(params?: ListProjectsActionParams) {\n const queryKey = useAuthQueryKey([...PROJECTS_QUERY_KEY(params)]);\n\n return useQuery({\n queryKey,\n queryFn: withAction(() => listProjectsAction(params)),\n staleTime: 10_000,\n placeholderData: keepPreviousData,\n });\n}\n"],"mappings":";AAEA,SAAS,UAAU,wBAAwB;AAC3C,SAAS,0BAA0B;AAEnC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEzB,MAAM,oBAAoB,CAAC,UAAU;AAErC,MAAM,qBAAqB,CAAC,WACjC,CAAC,GAAG,mBAAmB,MAAM;AAExB,SAAS,YAAY,QAAmC;AAC7D,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,WAAW,MAAM,mBAAmB,MAAM,CAAC;AAAA,IACpD,WAAW;AAAA,IACX,iBAAiB;AAAA,EACnB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/projects/hooks/list-projects.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery, keepPreviousData } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { ListProjectsActionParams } from '../actions/list-projects.action';\nimport type { ProjectsPage } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const PROJECTS_BASE_KEY = ['projects'] as const;\n\nexport const PROJECTS_QUERY_KEY = (params?: ListProjectsActionParams) =>\n [...PROJECTS_BASE_KEY, params] as const;\n\nexport function useProjects(params?: ListProjectsActionParams) {\n const queryKey = useAuthQueryKey([...PROJECTS_QUERY_KEY(params)]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<ProjectsPage>('/api/projects', { params, signal }),\n staleTime: 10_000,\n placeholderData: keepPreviousData,\n });\n}\n"],"mappings":";AAEA,SAAS,UAAU,wBAAwB;AAC3C,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,MAAM,oBAAoB,CAAC,UAAU;AAErC,MAAM,qBAAqB,CAAC,WACjC,CAAC,GAAG,mBAAmB,MAAM;AAExB,SAAS,YAAY,QAAmC;AAC7D,QAAM,WAAW,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAuB,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,IACnF,WAAW;AAAA,IACX,iBAAiB;AAAA,EACnB,CAAC;AACH;","names":[]}
@@ -0,0 +1,17 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { searchParamsToParams } from "../../../infra/route/search-params";
4
+ import { subscriptionsService } from "../services/subscriptions.service";
5
+ function createListSubscriptionsHandler() {
6
+ return async function GET(req) {
7
+ return safeRouteHandler(
8
+ () => subscriptionsService.listSubscriptions(
9
+ searchParamsToParams(req.nextUrl.searchParams)
10
+ )
11
+ );
12
+ };
13
+ }
14
+ export {
15
+ createListSubscriptionsHandler
16
+ };
17
+ //# sourceMappingURL=list-subscriptions.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/subscriptions/handlers/list-subscriptions.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { subscriptionsService } from '../services/subscriptions.service';\nimport type { FindSubscriptionsParams } from '../types/subscription.type';\n\nexport function createListSubscriptionsHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n subscriptionsService.listSubscriptions(\n searchParamsToParams<FindSubscriptionsParams>(req.nextUrl.searchParams)\n )\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,4BAA4B;AAG9B,SAAS,iCAAiC;AAC/C,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,qBAAqB;AAAA,QACnB,qBAA8C,IAAI,QAAQ,YAAY;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
@@ -1,16 +1,16 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { listSubscriptionsAction } from "../actions/list-subscriptions.action";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { SUBSCRIPTIONS_QUERY_KEY } from "../constants/query-keys.constants";
5
- import { withAction } from "../../../utils/withAction";
6
5
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
7
6
  function useActiveSubscription() {
8
7
  const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, "active"]);
9
8
  return useQuery({
10
9
  queryKey,
11
- queryFn: async () => {
12
- return await withAction(listSubscriptionsAction)({ limit: 1 });
13
- },
10
+ queryFn: ({ signal }) => apiFetch("/api/subscriptions", {
11
+ params: { limit: 1 },
12
+ signal
13
+ }),
14
14
  staleTime: 1e4
15
15
  });
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/subscriptions/hooks/find-active-subscription.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { listSubscriptionsAction } from \"../actions/list-subscriptions.action\";\nimport { SUBSCRIPTIONS_QUERY_KEY } from \"../constants/query-keys.constants\";\nimport { withAction } from \"../../../utils/withAction\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\n\nexport function useActiveSubscription() {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, \"active\"]);\n\n return useQuery({\n queryKey,\n queryFn: async () => {\n return await withAction(listSubscriptionsAction)({ limit: 1 });\n },\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AACxC,SAAS,+BAA+B;AACxC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEzB,SAAS,wBAAwB;AACtC,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,QAAQ,CAAC;AAEvE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,YAAY;AACnB,aAAO,MAAM,WAAW,uBAAuB,EAAE,EAAE,OAAO,EAAE,CAAC;AAAA,IAC/D;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/subscriptions/hooks/find-active-subscription.hook.ts"],"sourcesContent":["\"use client\";\n\nimport { useQuery } from \"@tanstack/react-query\";\nimport { apiFetch } from \"../../../infra/http/api-fetch\";\nimport type { PaginatedSuccessResult } from \"../../../infra/api/types\";\nimport type { Subscription } from \"../types/subscription.type\";\nimport { SUBSCRIPTIONS_QUERY_KEY } from \"../constants/query-keys.constants\";\nimport { useAuthQueryKey } from \"../../../hooks/useAuthQueryKey\";\n\nexport function useActiveSubscription() {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, \"active\"]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) =>\n apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', {\n params: { limit: 1 },\n signal,\n }),\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,wBAAwB;AACtC,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,QAAQ,CAAC;AAEvE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB,SAA+C,sBAAsB;AAAA,MACnE,QAAQ,EAAE,OAAO,EAAE;AAAA,MACnB;AAAA,IACF,CAAC;AAAA,IACH,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -1,16 +1,18 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { listSubscriptionsAction } from "../actions/list-subscriptions.action";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { parseResult } from "../../../infra/utils/parser";
5
5
  import { SubscriptionSchema } from "../types/subscription.type";
6
- import { withAction } from "../../../utils/withAction";
7
6
  import { SUBSCRIPTIONS_QUERY_KEY } from "../constants/query-keys.constants";
8
7
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
9
8
  function useSubscriptions(params) {
10
9
  const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, params]);
11
10
  return useQuery({
12
11
  queryKey,
13
- queryFn: async () => parseResult(SubscriptionSchema, await withAction(() => listSubscriptionsAction(params))())
12
+ queryFn: async ({ signal }) => parseResult(
13
+ SubscriptionSchema,
14
+ await apiFetch("/api/subscriptions", { params, signal })
15
+ )
14
16
  });
15
17
  }
16
18
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/subscriptions/hooks/list-subscriptions.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { listSubscriptionsAction } from '../actions/list-subscriptions.action';\nimport { parseResult } from '../../../infra/utils/parser';\nimport { SubscriptionSchema, type FindSubscriptionsParams } from '../types/subscription.type';\nimport { withAction } from '../../../utils/withAction';\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useSubscriptions(params?: Partial<FindSubscriptionsParams>) {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, params]);\n\n return useQuery({\n queryKey,\n queryFn: async () =>\n parseResult(SubscriptionSchema, await withAction(() => listSubscriptionsAction(params))()),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AACxC,SAAS,mBAAmB;AAC5B,SAAS,0BAAwD;AACjE,SAAS,kBAAkB;AAC3B,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,iBAAiB,QAA2C;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,MAAM,CAAC;AAErE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,YACP,YAAY,oBAAoB,MAAM,WAAW,MAAM,wBAAwB,MAAM,CAAC,EAAE,CAAC;AAAA,EAC7F,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/subscriptions/hooks/list-subscriptions.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport { parseResult } from '../../../infra/utils/parser';\nimport { SubscriptionSchema, type Subscription, type FindSubscriptionsParams } from '../types/subscription.type';\nimport { SUBSCRIPTIONS_QUERY_KEY } from '../constants/query-keys.constants';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useSubscriptions(params?: Partial<FindSubscriptionsParams>) {\n const queryKey = useAuthQueryKey([...SUBSCRIPTIONS_QUERY_KEY, params]);\n\n return useQuery({\n queryKey,\n queryFn: async ({ signal }) =>\n parseResult(\n SubscriptionSchema,\n await apiFetch<PaginatedSuccessResult<Subscription>>('/api/subscriptions', { params, signal })\n ),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,mBAAmB;AAC5B,SAAS,0BAA2E;AACpF,SAAS,+BAA+B;AACxC,SAAS,uBAAuB;AAEzB,SAAS,iBAAiB,QAA2C;AAC1E,QAAM,WAAW,gBAAgB,CAAC,GAAG,yBAAyB,MAAM,CAAC;AAErE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,OAAO,EAAE,OAAO,MACvB;AAAA,MACE;AAAA,MACA,MAAM,SAA+C,sBAAsB,EAAE,QAAQ,OAAO,CAAC;AAAA,IAC/F;AAAA,EACJ,CAAC;AACH;","names":[]}
@@ -0,0 +1,36 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { searchParamsToParams } from "../../../infra/route/search-params";
4
+ import { messagesService } from "../services/messages.service";
5
+ import { findWhitelabel } from "../../whitelabel/actions/find-whitelabel.action";
6
+ function createListMessagesHandler() {
7
+ return async function GET(req) {
8
+ return safeRouteHandler(async () => {
9
+ const params = searchParamsToParams(req.nextUrl.searchParams);
10
+ const [result, whitelabel] = await Promise.all([
11
+ messagesService.listMessages(params),
12
+ findWhitelabel()
13
+ ]);
14
+ const urlMap = {
15
+ pages_url: whitelabel?.pages_url ?? "",
16
+ accounts_url: whitelabel?.accounts_url ?? "",
17
+ editor_url: whitelabel?.editor_url ?? ""
18
+ };
19
+ return {
20
+ data: result.data.map((message) => ({
21
+ ...message,
22
+ url: message.url.replace(
23
+ /\{(pages_url|accounts_url|editor_url)\}/g,
24
+ (_, key) => urlMap[key] ?? ""
25
+ )
26
+ })),
27
+ total: result.total,
28
+ totalUnread: result.totalUnread
29
+ };
30
+ });
31
+ };
32
+ }
33
+ export {
34
+ createListMessagesHandler
35
+ };
36
+ //# sourceMappingURL=list-messages.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/users/handlers/list-messages.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { searchParamsToParams } from '../../../infra/route/search-params';\nimport { messagesService } from '../services/messages.service';\nimport type { FindMessagesParams } from '../schema/messages.schema';\nimport { findWhitelabel } from '../../whitelabel/actions/find-whitelabel.action';\n\nexport function createListMessagesHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(async () => {\n const params = searchParamsToParams<FindMessagesParams>(req.nextUrl.searchParams);\n\n const [result, whitelabel] = await Promise.all([\n messagesService.listMessages(params),\n findWhitelabel(),\n ]);\n\n const urlMap: Record<string, string> = {\n pages_url: whitelabel?.pages_url ?? '',\n accounts_url: whitelabel?.accounts_url ?? '',\n editor_url: whitelabel?.editor_url ?? '',\n };\n\n return {\n data: result.data.map((message) => ({\n ...message,\n url: message.url.replace(\n /\\{(pages_url|accounts_url|editor_url)\\}/g,\n (_, key) => urlMap[key] ?? ''\n ),\n })),\n total: result.total,\n totalUnread: result.totalUnread,\n };\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAEhC,SAAS,sBAAsB;AAExB,SAAS,4BAA4B;AAC1C,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO,iBAAiB,YAAY;AAClC,YAAM,SAAS,qBAAyC,IAAI,QAAQ,YAAY;AAEhF,YAAM,CAAC,QAAQ,UAAU,IAAI,MAAM,QAAQ,IAAI;AAAA,QAC7C,gBAAgB,aAAa,MAAM;AAAA,QACnC,eAAe;AAAA,MACjB,CAAC;AAED,YAAM,SAAiC;AAAA,QACrC,WAAW,YAAY,aAAa;AAAA,QACpC,cAAc,YAAY,gBAAgB;AAAA,QAC1C,YAAY,YAAY,cAAc;AAAA,MACxC;AAEA,aAAO;AAAA,QACL,MAAM,OAAO,KAAK,IAAI,CAAC,aAAa;AAAA,UAClC,GAAG;AAAA,UACH,KAAK,QAAQ,IAAI;AAAA,YACf;AAAA,YACA,CAAC,GAAG,QAAQ,OAAO,GAAG,KAAK;AAAA,UAC7B;AAAA,QACF,EAAE;AAAA,QACF,OAAO,OAAO;AAAA,QACd,aAAa,OAAO;AAAA,MACtB;AAAA,IACF,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useInfiniteQuery, useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
3
- import { listMessagesAction } from "../action/list-messages.action";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { markMessageAsReadAction } from "../action/mark-message-as-read.action";
5
5
  import { markAllMessagesAsReadAction } from "../action/mark-all-messages-as-read.action";
6
6
  import { withAction } from "../../../utils/withAction";
@@ -11,20 +11,21 @@ function useMessages(params) {
11
11
  const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, params]);
12
12
  return useQuery({
13
13
  queryKey,
14
- queryFn: withAction(() => listMessagesAction(params))
14
+ queryFn: ({ signal }) => apiFetch("/api/messages", { params, signal })
15
15
  });
16
16
  }
17
17
  function useInfiniteMessages(params) {
18
18
  const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, "infinite", params]);
19
19
  return useInfiniteQuery({
20
20
  queryKey,
21
- queryFn: ({ pageParam }) => withAction(
22
- () => listMessagesAction({
21
+ queryFn: ({ pageParam, signal }) => apiFetch("/api/messages", {
22
+ params: {
23
23
  ...params,
24
24
  page: pageParam,
25
25
  limit: INFINITE_MESSAGES_PAGE_SIZE
26
- })
27
- )(),
26
+ },
27
+ signal
28
+ }),
28
29
  getNextPageParam: (lastPage, allPages) => {
29
30
  const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);
30
31
  return loaded < lastPage.total ? allPages.length + 1 : void 0;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/users/hooks/messages.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { listMessagesAction } from '../action/list-messages.action';\nimport { markMessageAsReadAction } from '../action/mark-message-as-read.action';\nimport { markAllMessagesAsReadAction } from '../action/mark-all-messages-as-read.action';\nimport { withAction } from '../../../utils/withAction';\nimport type { FindMessagesParams } from '../schema/messages.schema';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const MESSAGES_QUERY_KEY = ['messages'] as const;\n\nconst INFINITE_MESSAGES_PAGE_SIZE = 10;\n\nexport function useMessages(params?: Partial<FindMessagesParams>) {\n const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, params]);\n\n return useQuery({\n queryKey,\n queryFn: withAction(() => listMessagesAction(params)),\n });\n}\n\nexport function useInfiniteMessages(params?: Partial<Omit<FindMessagesParams, 'page' | 'limit'>>) {\n const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, 'infinite', params]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam }) =>\n withAction(() =>\n listMessagesAction({\n ...params,\n page: pageParam as number,\n limit: INFINITE_MESSAGES_PAGE_SIZE,\n })\n )(),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n });\n}\n\nexport function useMarkMessageAsRead() {\n const queryClient = useQueryClient();\n const messagesKey = useAuthQueryKey([...MESSAGES_QUERY_KEY]);\n\n return useMutation({\n mutationFn: withAction(markMessageAsReadAction),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: messagesKey });\n },\n });\n}\n\nexport function useMarkAllMessagesAsRead() {\n const queryClient = useQueryClient();\n const messagesKey = useAuthQueryKey([...MESSAGES_QUERY_KEY]);\n\n return useMutation({\n mutationFn: withAction(markAllMessagesAsReadAction),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: messagesKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,kBAAkB,aAAa,UAAU,sBAAsB;AACxE,SAAS,0BAA0B;AACnC,SAAS,+BAA+B;AACxC,SAAS,mCAAmC;AAC5C,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAEzB,MAAM,qBAAqB,CAAC,UAAU;AAE7C,MAAM,8BAA8B;AAE7B,SAAS,YAAY,QAAsC;AAChE,QAAM,WAAW,gBAAgB,CAAC,GAAG,oBAAoB,MAAM,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,WAAW,MAAM,mBAAmB,MAAM,CAAC;AAAA,EACtD,CAAC;AACH;AAEO,SAAS,oBAAoB,QAA8D;AAChG,QAAM,WAAW,gBAAgB,CAAC,GAAG,oBAAoB,YAAY,MAAM,CAAC;AAE5E,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,UAAU,MACpB;AAAA,MAAW,MACT,mBAAmB;AAAA,QACjB,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAAA,IACH,EAAE;AAAA,IACJ,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;AAEO,SAAS,uBAAuB;AACrC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AAE3D,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,uBAAuB;AAAA,IAC9C,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;AAEO,SAAS,2BAA2B;AACzC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AAE3D,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,2BAA2B;AAAA,IAClD,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/users/hooks/messages.hook.ts"],"sourcesContent":["'use client';\n\nimport { useInfiniteQuery, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport { markMessageAsReadAction } from '../action/mark-message-as-read.action';\nimport { markAllMessagesAsReadAction } from '../action/mark-all-messages-as-read.action';\nimport { withAction } from '../../../utils/withAction';\nimport type { FindMessagesParams, ListMessagesApiResponse } from '../schema/messages.schema';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const MESSAGES_QUERY_KEY = ['messages'] as const;\n\nconst INFINITE_MESSAGES_PAGE_SIZE = 10;\n\nexport function useMessages(params?: Partial<FindMessagesParams>) {\n const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, params]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) =>\n apiFetch<ListMessagesApiResponse>('/api/messages', { params, signal }),\n });\n}\n\nexport function useInfiniteMessages(params?: Partial<Omit<FindMessagesParams, 'page' | 'limit'>>) {\n const queryKey = useAuthQueryKey([...MESSAGES_QUERY_KEY, 'infinite', params]);\n\n return useInfiniteQuery({\n queryKey,\n queryFn: ({ pageParam, signal }) =>\n apiFetch<ListMessagesApiResponse>('/api/messages', {\n params: {\n ...params,\n page: pageParam as number,\n limit: INFINITE_MESSAGES_PAGE_SIZE,\n },\n signal,\n }),\n getNextPageParam: (lastPage, allPages) => {\n const loaded = allPages.reduce((sum, p) => sum + p.data.length, 0);\n return loaded < lastPage.total ? allPages.length + 1 : undefined;\n },\n initialPageParam: 1,\n });\n}\n\nexport function useMarkMessageAsRead() {\n const queryClient = useQueryClient();\n const messagesKey = useAuthQueryKey([...MESSAGES_QUERY_KEY]);\n\n return useMutation({\n mutationFn: withAction(markMessageAsReadAction),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: messagesKey });\n },\n });\n}\n\nexport function useMarkAllMessagesAsRead() {\n const queryClient = useQueryClient();\n const messagesKey = useAuthQueryKey([...MESSAGES_QUERY_KEY]);\n\n return useMutation({\n mutationFn: withAction(markAllMessagesAsReadAction),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: messagesKey });\n },\n });\n}\n"],"mappings":";AAEA,SAAS,kBAAkB,aAAa,UAAU,sBAAsB;AACxE,SAAS,gBAAgB;AACzB,SAAS,+BAA+B;AACxC,SAAS,mCAAmC;AAC5C,SAAS,kBAAkB;AAE3B,SAAS,uBAAuB;AAEzB,MAAM,qBAAqB,CAAC,UAAU;AAE7C,MAAM,8BAA8B;AAE7B,SAAS,YAAY,QAAsC;AAChE,QAAM,WAAW,gBAAgB,CAAC,GAAG,oBAAoB,MAAM,CAAC;AAEhE,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB,SAAkC,iBAAiB,EAAE,QAAQ,OAAO,CAAC;AAAA,EACzE,CAAC;AACH;AAEO,SAAS,oBAAoB,QAA8D;AAChG,QAAM,WAAW,gBAAgB,CAAC,GAAG,oBAAoB,YAAY,MAAM,CAAC;AAE5E,SAAO,iBAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,WAAW,OAAO,MAC5B,SAAkC,iBAAiB;AAAA,MACjD,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,MAAM;AAAA,QACN,OAAO;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACH,kBAAkB,CAAC,UAAU,aAAa;AACxC,YAAM,SAAS,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,KAAK,QAAQ,CAAC;AACjE,aAAO,SAAS,SAAS,QAAQ,SAAS,SAAS,IAAI;AAAA,IACzD;AAAA,IACA,kBAAkB;AAAA,EACpB,CAAC;AACH;AAEO,SAAS,uBAAuB;AACrC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AAE3D,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,uBAAuB;AAAA,IAC9C,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;AAEO,SAAS,2BAA2B;AACzC,QAAM,cAAc,eAAe;AACnC,QAAM,cAAc,gBAAgB,CAAC,GAAG,kBAAkB,CAAC;AAE3D,SAAO,YAAY;AAAA,IACjB,YAAY,WAAW,2BAA2B;AAAA,IAClD,WAAW,MAAM;AACf,kBAAY,kBAAkB,EAAE,UAAU,YAAY,CAAC;AAAA,IACzD;AAAA,EACF,CAAC;AACH;","names":[]}
package/dist/route.mjs ADDED
@@ -0,0 +1,9 @@
1
+ import { safeRouteHandler } from "./infra/route/safe-route-handler";
2
+ import { searchParamsToParams } from "./infra/route/search-params";
3
+ import { parseId } from "./infra/route/parse-id";
4
+ export {
5
+ parseId,
6
+ safeRouteHandler,
7
+ searchParamsToParams
8
+ };
9
+ //# sourceMappingURL=route.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/route.ts"],"sourcesContent":["export { safeRouteHandler } from './infra/route/safe-route-handler';\nexport { searchParamsToParams } from './infra/route/search-params';\nexport { parseId } from './infra/route/parse-id';\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,eAAe;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@greatapps/common",
3
- "version": "1.1.659",
3
+ "version": "1.1.661",
4
4
  "description": "Shared library for GreatApps frontend applications",
5
5
  "main": "./dist/index.mjs",
6
6
  "types": "./src/index.ts",
@@ -16,6 +16,18 @@
16
16
  "./middleware": {
17
17
  "import": "./dist/middleware.mjs",
18
18
  "types": "./src/middleware.ts"
19
+ },
20
+ "./route": {
21
+ "import": "./dist/route.mjs",
22
+ "types": "./src/route.ts"
23
+ },
24
+ "./http": {
25
+ "import": "./dist/http.mjs",
26
+ "types": "./src/http.ts"
27
+ },
28
+ "./handlers": {
29
+ "import": "./dist/handlers.mjs",
30
+ "types": "./src/handlers.ts"
19
31
  }
20
32
  },
21
33
  "files": [
@@ -65,6 +77,7 @@
65
77
  },
66
78
  "devDependencies": {
67
79
  "@hookform/resolvers": "^5.2.2",
80
+ "zod": "^4.3.6",
68
81
  "@tanstack/react-query": "^5.95.2",
69
82
  "@tanstack/react-query-devtools": "^5.95.2",
70
83
  "@types/node": "^25.5.0",
@@ -77,7 +90,6 @@
77
90
  "react-hook-form": "^7.72.0",
78
91
  "tsup": "^8.5.1",
79
92
  "typescript": "^5.9.3",
80
- "zod": "^4.3.6",
81
93
  "zustand": "^5.0.12"
82
94
  },
83
95
  "peerDependencies": {