@greatapps/common 1.1.656 → 1.1.658

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 (121) hide show
  1. package/dist/components/account/sections/TokenSection.mjs +1 -1
  2. package/dist/components/account/sections/TokenSection.mjs.map +1 -1
  3. package/dist/handlers.mjs +33 -0
  4. package/dist/handlers.mjs.map +1 -0
  5. package/dist/http.mjs +5 -0
  6. package/dist/http.mjs.map +1 -0
  7. package/dist/infra/http/api-fetch.mjs +30 -0
  8. package/dist/infra/http/api-fetch.mjs.map +1 -0
  9. package/dist/infra/route/parse-id.mjs +12 -0
  10. package/dist/infra/route/parse-id.mjs.map +1 -0
  11. package/dist/infra/route/safe-route-handler.mjs +18 -0
  12. package/dist/infra/route/safe-route-handler.mjs.map +1 -0
  13. package/dist/infra/route/search-params.mjs +11 -0
  14. package/dist/infra/route/search-params.mjs.map +1 -0
  15. package/dist/modules/cards/handlers/find-card-by-id.handler.mjs +16 -0
  16. package/dist/modules/cards/handlers/find-card-by-id.handler.mjs.map +1 -0
  17. package/dist/modules/cards/handlers/list-cards.handler.mjs +12 -0
  18. package/dist/modules/cards/handlers/list-cards.handler.mjs.map +1 -0
  19. package/dist/modules/cards/hooks/card-by-id.hook.mjs +2 -5
  20. package/dist/modules/cards/hooks/card-by-id.hook.mjs.map +1 -1
  21. package/dist/modules/cards/hooks/cards.hook.mjs +2 -5
  22. package/dist/modules/cards/hooks/cards.hook.mjs.map +1 -1
  23. package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs +15 -0
  24. package/dist/modules/charges/handlers/find-charge-by-id.handler.mjs.map +1 -0
  25. package/dist/modules/charges/handlers/list-charges.handler.mjs +15 -0
  26. package/dist/modules/charges/handlers/list-charges.handler.mjs.map +1 -0
  27. package/dist/modules/charges/hooks/charge-by-id.hook.mjs +2 -3
  28. package/dist/modules/charges/hooks/charge-by-id.hook.mjs.map +1 -1
  29. package/dist/modules/charges/hooks/charges.hook.mjs +2 -3
  30. package/dist/modules/charges/hooks/charges.hook.mjs.map +1 -1
  31. package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs +15 -0
  32. package/dist/modules/ia-credits/handlers/list-ia-credits.handler.mjs.map +1 -0
  33. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs +5 -3
  34. package/dist/modules/ia-credits/hooks/ia-credits.hook.mjs.map +1 -1
  35. package/dist/modules/pages/handlers/count-pages.handler.mjs +14 -0
  36. package/dist/modules/pages/handlers/count-pages.handler.mjs.map +1 -0
  37. package/dist/modules/pages/hooks/count-pages.hook.mjs +3 -4
  38. package/dist/modules/pages/hooks/count-pages.hook.mjs.map +1 -1
  39. package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs +15 -0
  40. package/dist/modules/plans/handlers/find-plan-by-id.handler.mjs.map +1 -0
  41. package/dist/modules/plans/handlers/list-plans.handler.mjs +20 -0
  42. package/dist/modules/plans/handlers/list-plans.handler.mjs.map +1 -0
  43. package/dist/modules/plans/hooks/list-plans.hook.mjs +2 -3
  44. package/dist/modules/plans/hooks/list-plans.hook.mjs.map +1 -1
  45. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs +2 -3
  46. package/dist/modules/plans/hooks/use-plan-by-id.hook.mjs.map +1 -1
  47. package/dist/modules/projects/handlers/find-project.handler.mjs +16 -0
  48. package/dist/modules/projects/handlers/find-project.handler.mjs.map +1 -0
  49. package/dist/modules/projects/handlers/list-all-account-users.handler.mjs +17 -0
  50. package/dist/modules/projects/handlers/list-all-account-users.handler.mjs.map +1 -0
  51. package/dist/modules/projects/handlers/list-available-users.handler.mjs +20 -0
  52. package/dist/modules/projects/handlers/list-available-users.handler.mjs.map +1 -0
  53. package/dist/modules/projects/handlers/list-project-users.handler.mjs +20 -0
  54. package/dist/modules/projects/handlers/list-project-users.handler.mjs.map +1 -0
  55. package/dist/modules/projects/handlers/list-projects.handler.mjs +17 -0
  56. package/dist/modules/projects/handlers/list-projects.handler.mjs.map +1 -0
  57. package/dist/modules/projects/hooks/find-project.hook.mjs +2 -3
  58. package/dist/modules/projects/hooks/find-project.hook.mjs.map +1 -1
  59. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs +6 -6
  60. package/dist/modules/projects/hooks/list-all-account-users.hook.mjs.map +1 -1
  61. package/dist/modules/projects/hooks/list-available-users.hook.mjs +6 -6
  62. package/dist/modules/projects/hooks/list-available-users.hook.mjs.map +1 -1
  63. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs +6 -6
  64. package/dist/modules/projects/hooks/list-infinite-projects.hook.mjs.map +1 -1
  65. package/dist/modules/projects/hooks/list-project-users.hook.mjs +6 -6
  66. package/dist/modules/projects/hooks/list-project-users.hook.mjs.map +1 -1
  67. package/dist/modules/projects/hooks/list-projects.hook.mjs +2 -3
  68. package/dist/modules/projects/hooks/list-projects.hook.mjs.map +1 -1
  69. package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs +17 -0
  70. package/dist/modules/subscriptions/handlers/list-subscriptions.handler.mjs.map +1 -0
  71. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs +5 -5
  72. package/dist/modules/subscriptions/hooks/find-active-subscription.hook.mjs.map +1 -1
  73. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs +5 -3
  74. package/dist/modules/subscriptions/hooks/list-subscriptions.hook.mjs.map +1 -1
  75. package/dist/modules/users/handlers/list-messages.handler.mjs +36 -0
  76. package/dist/modules/users/handlers/list-messages.handler.mjs.map +1 -0
  77. package/dist/modules/users/hooks/messages.hook.mjs +7 -6
  78. package/dist/modules/users/hooks/messages.hook.mjs.map +1 -1
  79. package/dist/route.mjs +9 -0
  80. package/dist/route.mjs.map +1 -0
  81. package/package.json +14 -2
  82. package/src/components/account/sections/TokenSection.tsx +1 -1
  83. package/src/handlers.ts +22 -0
  84. package/src/http.ts +1 -0
  85. package/src/infra/http/api-fetch.ts +39 -0
  86. package/src/infra/route/parse-id.ts +9 -0
  87. package/src/infra/route/safe-route-handler.ts +16 -0
  88. package/src/infra/route/search-params.ts +9 -0
  89. package/src/modules/cards/handlers/find-card-by-id.handler.ts +15 -0
  90. package/src/modules/cards/handlers/list-cards.handler.ts +10 -0
  91. package/src/modules/cards/hooks/card-by-id.hook.ts +4 -5
  92. package/src/modules/cards/hooks/cards.hook.ts +4 -5
  93. package/src/modules/charges/handlers/find-charge-by-id.handler.ts +14 -0
  94. package/src/modules/charges/handlers/list-charges.handler.ts +15 -0
  95. package/src/modules/charges/hooks/charge-by-id.hook.ts +5 -3
  96. package/src/modules/charges/hooks/charges.hook.ts +5 -4
  97. package/src/modules/ia-credits/handlers/list-ia-credits.handler.ts +14 -0
  98. package/src/modules/ia-credits/hooks/ia-credits.hook.ts +7 -3
  99. package/src/modules/pages/handlers/count-pages.handler.ts +12 -0
  100. package/src/modules/pages/hooks/count-pages.hook.ts +3 -4
  101. package/src/modules/plans/handlers/find-plan-by-id.handler.ts +14 -0
  102. package/src/modules/plans/handlers/list-plans.handler.ts +20 -0
  103. package/src/modules/plans/hooks/list-plans.hook.ts +2 -3
  104. package/src/modules/plans/hooks/use-plan-by-id.hook.ts +4 -3
  105. package/src/modules/projects/handlers/find-project.handler.ts +15 -0
  106. package/src/modules/projects/handlers/list-all-account-users.handler.ts +17 -0
  107. package/src/modules/projects/handlers/list-available-users.handler.ts +20 -0
  108. package/src/modules/projects/handlers/list-project-users.handler.ts +20 -0
  109. package/src/modules/projects/handlers/list-projects.handler.ts +17 -0
  110. package/src/modules/projects/hooks/find-project.hook.ts +3 -3
  111. package/src/modules/projects/hooks/list-all-account-users.hook.ts +8 -7
  112. package/src/modules/projects/hooks/list-available-users.hook.ts +8 -7
  113. package/src/modules/projects/hooks/list-infinite-projects.hook.ts +8 -7
  114. package/src/modules/projects/hooks/list-project-users.hook.ts +8 -7
  115. package/src/modules/projects/hooks/list-projects.hook.ts +3 -3
  116. package/src/modules/subscriptions/handlers/list-subscriptions.handler.ts +17 -0
  117. package/src/modules/subscriptions/hooks/find-active-subscription.hook.ts +8 -5
  118. package/src/modules/subscriptions/hooks/list-subscriptions.hook.ts +8 -5
  119. package/src/modules/users/handlers/list-messages.handler.ts +39 -0
  120. package/src/modules/users/hooks/messages.hook.ts +10 -8
  121. package/src/route.ts +3 -0
@@ -56,7 +56,7 @@ function TokenSection() {
56
56
  /* @__PURE__ */ jsx(
57
57
  "a",
58
58
  {
59
- href: "https://documenter.getpostman.com/view/4861938/T1Djiz8H",
59
+ href: "https://documenter.getpostman.com/view/4861938/2sAYdoDmj4",
60
60
  target: "_blank",
61
61
  rel: "noopener noreferrer",
62
62
  className: "paragraph-small-medium text-gray-500 underline hover:text-gray-700 transition-colors w-fit",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/account/sections/TokenSection.tsx"],"sourcesContent":["'use client';\n\nimport { IconCheck, IconCopy, IconInfoCircle } from '@tabler/icons-react';\nimport { toast } from 'sonner';\nimport { Toast } from '../../ui/feedback/Toast';\nimport { Button } from '../../ui/buttons/Button';\nimport { FormField } from '../../ui/form/FormField';\nimport useCopyToClipboard from '../../../hooks/copy-to-clipboard.hook';\nimport { useAccountToken } from '../../../modules/accounts/hooks/use-account-token.hook';\nimport { useIsDefaultWhitelabel } from '../../../providers/whitelabel.provider';\n\nexport function TokenSection() {\n const { data: token = '', isLoading } = useAccountToken();\n const isDefaultWl = useIsDefaultWhitelabel();\n\n const { isCopied, copy } = useCopyToClipboard({\n onSuccess: () => {\n toast.custom((t) => (\n <Toast variant=\"success\" message=\"Token copiado com sucesso\" toastId={t} />\n ));\n },\n onError: () => {\n toast.custom((t) => (\n <Toast variant=\"error\" message=\"Não foi possível copiar o token\" toastId={t} />\n ));\n },\n });\n\n return (\n <div className=\"h-full overflow-y-auto overscroll-contain px-4 pb-20 lg:p-5 lg:pt-5 flex flex-col gap-5 lg:gap-6 lg:pb-31 lg:overscroll-auto\">\n <span className=\"paragraph-medium-semibold text-gray-950\">Token da conta</span>\n\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-end gap-3\">\n <FormField\n label=\"Token\"\n value={isLoading ? 'Carregando...' : token}\n disabled\n readOnly\n classnameContainer=\"bg-gray-50 cursor-default opacity-100!\"\n className=\"text-gray-950/50\"\n />\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-10! shrink-0 gap-2\"\n onClick={() => copy(token)}\n disabled={isLoading || !token}\n >\n {isCopied ? <IconCheck size={16} /> : <IconCopy size={16} />}\n {isCopied ? 'Copiado' : 'Copiar'}\n </Button>\n </div>\n\n <div className={`flex items-center gap-3 p-4 rounded-lg ${isDefaultWl ? 'bg-cyan-50' : 'bg-zinc-50'}`}>\n <IconInfoCircle className=\"size-4 text-zinc-950 shrink-0\" />\n <span className=\"paragraph-small-regular text-zinc-950 max-w-[420px]\">\n Este token é exclusivo da sua conta e permite acesso à API. Não compartilhe com terceiros.\n </span>\n </div>\n\n <a\n href=\"https://documenter.getpostman.com/view/4861938/T1Djiz8H\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"paragraph-small-medium text-gray-500 underline hover:text-gray-700 transition-colors w-fit\"\n >\n Acessar a documentação\n </a>\n </div>\n </div>\n );\n}\n"],"mappings":";AAkBQ,cAwBE,YAxBF;AAhBR,SAAS,WAAW,UAAU,sBAAsB;AACpD,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,OAAO,wBAAwB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,8BAA8B;AAEhC,SAAS,eAAe;AAC7B,QAAM,EAAE,MAAM,QAAQ,IAAI,UAAU,IAAI,gBAAgB;AACxD,QAAM,cAAc,uBAAuB;AAE3C,QAAM,EAAE,UAAU,KAAK,IAAI,mBAAmB;AAAA,IAC5C,WAAW,MAAM;AACf,YAAM,OAAO,CAAC,MACZ,oBAAC,SAAM,SAAQ,WAAU,SAAQ,6BAA4B,SAAS,GAAG,CAC1E;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,OAAO,CAAC,MACZ,oBAAC,SAAM,SAAQ,SAAQ,SAAQ,yCAAkC,SAAS,GAAG,CAC9E;AAAA,IACH;AAAA,EACF,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,gIACb;AAAA,wBAAC,UAAK,WAAU,2CAA0C,4BAAc;AAAA,IAExE,qBAAC,SAAI,WAAU,uBACb;AAAA,2BAAC,SAAI,WAAU,wBACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,YAAY,kBAAkB;AAAA,YACrC,UAAQ;AAAA,YACR,UAAQ;AAAA,YACR,oBAAmB;AAAA,YACnB,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,KAAK,KAAK;AAAA,YACzB,UAAU,aAAa,CAAC;AAAA,YAEvB;AAAA,yBAAW,oBAAC,aAAU,MAAM,IAAI,IAAK,oBAAC,YAAS,MAAM,IAAI;AAAA,cACzD,WAAW,YAAY;AAAA;AAAA;AAAA,QAC1B;AAAA,SACF;AAAA,MAEA,qBAAC,SAAI,WAAW,0CAA0C,cAAc,eAAe,YAAY,IACjG;AAAA,4BAAC,kBAAe,WAAU,iCAAgC;AAAA,QAC1D,oBAAC,UAAK,WAAU,uDAAsD,iHAEtE;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,WAAU;AAAA,UACX;AAAA;AAAA,MAED;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../../../src/components/account/sections/TokenSection.tsx"],"sourcesContent":["'use client';\n\nimport { IconCheck, IconCopy, IconInfoCircle } from '@tabler/icons-react';\nimport { toast } from 'sonner';\nimport { Toast } from '../../ui/feedback/Toast';\nimport { Button } from '../../ui/buttons/Button';\nimport { FormField } from '../../ui/form/FormField';\nimport useCopyToClipboard from '../../../hooks/copy-to-clipboard.hook';\nimport { useAccountToken } from '../../../modules/accounts/hooks/use-account-token.hook';\nimport { useIsDefaultWhitelabel } from '../../../providers/whitelabel.provider';\n\nexport function TokenSection() {\n const { data: token = '', isLoading } = useAccountToken();\n const isDefaultWl = useIsDefaultWhitelabel();\n\n const { isCopied, copy } = useCopyToClipboard({\n onSuccess: () => {\n toast.custom((t) => (\n <Toast variant=\"success\" message=\"Token copiado com sucesso\" toastId={t} />\n ));\n },\n onError: () => {\n toast.custom((t) => (\n <Toast variant=\"error\" message=\"Não foi possível copiar o token\" toastId={t} />\n ));\n },\n });\n\n return (\n <div className=\"h-full overflow-y-auto overscroll-contain px-4 pb-20 lg:p-5 lg:pt-5 flex flex-col gap-5 lg:gap-6 lg:pb-31 lg:overscroll-auto\">\n <span className=\"paragraph-medium-semibold text-gray-950\">Token da conta</span>\n\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex items-end gap-3\">\n <FormField\n label=\"Token\"\n value={isLoading ? 'Carregando...' : token}\n disabled\n readOnly\n classnameContainer=\"bg-gray-50 cursor-default opacity-100!\"\n className=\"text-gray-950/50\"\n />\n <Button\n type=\"button\"\n variant=\"secondary\"\n className=\"h-10! shrink-0 gap-2\"\n onClick={() => copy(token)}\n disabled={isLoading || !token}\n >\n {isCopied ? <IconCheck size={16} /> : <IconCopy size={16} />}\n {isCopied ? 'Copiado' : 'Copiar'}\n </Button>\n </div>\n\n <div className={`flex items-center gap-3 p-4 rounded-lg ${isDefaultWl ? 'bg-cyan-50' : 'bg-zinc-50'}`}>\n <IconInfoCircle className=\"size-4 text-zinc-950 shrink-0\" />\n <span className=\"paragraph-small-regular text-zinc-950 max-w-[420px]\">\n Este token é exclusivo da sua conta e permite acesso à API. Não compartilhe com terceiros.\n </span>\n </div>\n\n <a\n href=\"https://documenter.getpostman.com/view/4861938/2sAYdoDmj4\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"paragraph-small-medium text-gray-500 underline hover:text-gray-700 transition-colors w-fit\"\n >\n Acessar a documentação\n </a>\n </div>\n </div>\n );\n}\n"],"mappings":";AAkBQ,cAwBE,YAxBF;AAhBR,SAAS,WAAW,UAAU,sBAAsB;AACpD,SAAS,aAAa;AACtB,SAAS,aAAa;AACtB,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAC1B,OAAO,wBAAwB;AAC/B,SAAS,uBAAuB;AAChC,SAAS,8BAA8B;AAEhC,SAAS,eAAe;AAC7B,QAAM,EAAE,MAAM,QAAQ,IAAI,UAAU,IAAI,gBAAgB;AACxD,QAAM,cAAc,uBAAuB;AAE3C,QAAM,EAAE,UAAU,KAAK,IAAI,mBAAmB;AAAA,IAC5C,WAAW,MAAM;AACf,YAAM,OAAO,CAAC,MACZ,oBAAC,SAAM,SAAQ,WAAU,SAAQ,6BAA4B,SAAS,GAAG,CAC1E;AAAA,IACH;AAAA,IACA,SAAS,MAAM;AACb,YAAM,OAAO,CAAC,MACZ,oBAAC,SAAM,SAAQ,SAAQ,SAAQ,yCAAkC,SAAS,GAAG,CAC9E;AAAA,IACH;AAAA,EACF,CAAC;AAED,SACE,qBAAC,SAAI,WAAU,gIACb;AAAA,wBAAC,UAAK,WAAU,2CAA0C,4BAAc;AAAA,IAExE,qBAAC,SAAI,WAAU,uBACb;AAAA,2BAAC,SAAI,WAAU,wBACb;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,OAAO,YAAY,kBAAkB;AAAA,YACrC,UAAQ;AAAA,YACR,UAAQ;AAAA,YACR,oBAAmB;AAAA,YACnB,WAAU;AAAA;AAAA,QACZ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,WAAU;AAAA,YACV,SAAS,MAAM,KAAK,KAAK;AAAA,YACzB,UAAU,aAAa,CAAC;AAAA,YAEvB;AAAA,yBAAW,oBAAC,aAAU,MAAM,IAAI,IAAK,oBAAC,YAAS,MAAM,IAAI;AAAA,cACzD,WAAW,YAAY;AAAA;AAAA;AAAA,QAC1B;AAAA,SACF;AAAA,MAEA,qBAAC,SAAI,WAAW,0CAA0C,cAAc,eAAe,YAAY,IACjG;AAAA,4BAAC,kBAAe,WAAU,iCAAgC;AAAA,QAC1D,oBAAC,UAAK,WAAU,uDAAsD,iHAEtE;AAAA,SACF;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,WAAU;AAAA,UACX;AAAA;AAAA,MAED;AAAA,OACF;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,33 @@
1
+ import { createListCardsHandler } from "./modules/cards/handlers/list-cards.handler";
2
+ import { createFindCardByIdHandler } from "./modules/cards/handlers/find-card-by-id.handler";
3
+ import { createListChargesHandler } from "./modules/charges/handlers/list-charges.handler";
4
+ import { createFindChargeByIdHandler } from "./modules/charges/handlers/find-charge-by-id.handler";
5
+ import { createListIaCreditsHandler } from "./modules/ia-credits/handlers/list-ia-credits.handler";
6
+ import { createCountPagesHandler } from "./modules/pages/handlers/count-pages.handler";
7
+ import { createListPlansHandler } from "./modules/plans/handlers/list-plans.handler";
8
+ import { createFindPlanByIdHandler } from "./modules/plans/handlers/find-plan-by-id.handler";
9
+ import { createListProjectsHandler } from "./modules/projects/handlers/list-projects.handler";
10
+ import { createFindProjectHandler } from "./modules/projects/handlers/find-project.handler";
11
+ import { createListProjectUsersHandler } from "./modules/projects/handlers/list-project-users.handler";
12
+ import { createListAvailableUsersHandler } from "./modules/projects/handlers/list-available-users.handler";
13
+ import { createListAllAccountUsersHandler } from "./modules/projects/handlers/list-all-account-users.handler";
14
+ import { createListSubscriptionsHandler } from "./modules/subscriptions/handlers/list-subscriptions.handler";
15
+ import { createListMessagesHandler } from "./modules/users/handlers/list-messages.handler";
16
+ export {
17
+ createCountPagesHandler,
18
+ createFindCardByIdHandler,
19
+ createFindChargeByIdHandler,
20
+ createFindPlanByIdHandler,
21
+ createFindProjectHandler,
22
+ createListAllAccountUsersHandler,
23
+ createListAvailableUsersHandler,
24
+ createListCardsHandler,
25
+ createListChargesHandler,
26
+ createListIaCreditsHandler,
27
+ createListMessagesHandler,
28
+ createListPlansHandler,
29
+ createListProjectUsersHandler,
30
+ createListProjectsHandler,
31
+ createListSubscriptionsHandler
32
+ };
33
+ //# sourceMappingURL=handlers.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/handlers.ts"],"sourcesContent":["export { createListCardsHandler } from './modules/cards/handlers/list-cards.handler';\nexport { createFindCardByIdHandler } from './modules/cards/handlers/find-card-by-id.handler';\n\nexport { createListChargesHandler } from './modules/charges/handlers/list-charges.handler';\nexport { createFindChargeByIdHandler } from './modules/charges/handlers/find-charge-by-id.handler';\n\nexport { createListIaCreditsHandler } from './modules/ia-credits/handlers/list-ia-credits.handler';\n\nexport { createCountPagesHandler } from './modules/pages/handlers/count-pages.handler';\n\nexport { createListPlansHandler } from './modules/plans/handlers/list-plans.handler';\nexport { createFindPlanByIdHandler } from './modules/plans/handlers/find-plan-by-id.handler';\n\nexport { createListProjectsHandler } from './modules/projects/handlers/list-projects.handler';\nexport { createFindProjectHandler } from './modules/projects/handlers/find-project.handler';\nexport { createListProjectUsersHandler } from './modules/projects/handlers/list-project-users.handler';\nexport { createListAvailableUsersHandler } from './modules/projects/handlers/list-available-users.handler';\nexport { createListAllAccountUsersHandler } from './modules/projects/handlers/list-all-account-users.handler';\n\nexport { createListSubscriptionsHandler } from './modules/subscriptions/handlers/list-subscriptions.handler';\n\nexport { createListMessagesHandler } from './modules/users/handlers/list-messages.handler';\n"],"mappings":"AAAA,SAAS,8BAA8B;AACvC,SAAS,iCAAiC;AAE1C,SAAS,gCAAgC;AACzC,SAAS,mCAAmC;AAE5C,SAAS,kCAAkC;AAE3C,SAAS,+BAA+B;AAExC,SAAS,8BAA8B;AACvC,SAAS,iCAAiC;AAE1C,SAAS,iCAAiC;AAC1C,SAAS,gCAAgC;AACzC,SAAS,qCAAqC;AAC9C,SAAS,uCAAuC;AAChD,SAAS,wCAAwC;AAEjD,SAAS,sCAAsC;AAE/C,SAAS,iCAAiC;","names":[]}
package/dist/http.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import { apiFetch } from "./infra/http/api-fetch";
2
+ export {
3
+ apiFetch
4
+ };
5
+ //# sourceMappingURL=http.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/http.ts"],"sourcesContent":["export { apiFetch } from './infra/http/api-fetch';\n"],"mappings":"AAAA,SAAS,gBAAgB;","names":[]}
@@ -0,0 +1,30 @@
1
+ import { buildQueryParams } from "../utils/params";
2
+ async function apiFetch(path, options = {}) {
3
+ const { params, signal } = options;
4
+ const qs = params ? buildQueryParams(params) : "";
5
+ const url = qs ? `${path}?${qs}` : path;
6
+ const response = await fetch(url, {
7
+ method: "GET",
8
+ credentials: "same-origin",
9
+ headers: { Accept: "application/json" },
10
+ signal
11
+ });
12
+ if (!response.ok) {
13
+ let message = `Erro ${response.status}`;
14
+ try {
15
+ const body2 = await response.json();
16
+ if (body2 && !body2.success && body2.error) message = body2.error;
17
+ } catch {
18
+ }
19
+ throw new Error(message);
20
+ }
21
+ const body = await response.json();
22
+ if (!body.success) {
23
+ throw new Error(body.error ?? "Erro desconhecido");
24
+ }
25
+ return body.data;
26
+ }
27
+ export {
28
+ apiFetch
29
+ };
30
+ //# sourceMappingURL=api-fetch.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/infra/http/api-fetch.ts"],"sourcesContent":["import { buildQueryParams } from '../utils/params';\nimport type { ActionResult } from '../api/types';\n\ntype QueryParams = Parameters<typeof buildQueryParams>[0];\n\ninterface ApiFetchOptions {\n params?: object;\n signal?: AbortSignal;\n}\n\nexport async function apiFetch<T>(path: string, options: ApiFetchOptions = {}): Promise<T> {\n const { params, signal } = options;\n const qs = params ? buildQueryParams(params as QueryParams) : '';\n const url = qs ? `${path}?${qs}` : path;\n\n const response = await fetch(url, {\n method: 'GET',\n credentials: 'same-origin',\n headers: { Accept: 'application/json' },\n signal,\n });\n\n if (!response.ok) {\n let message = `Erro ${response.status}`;\n try {\n const body = (await response.json()) as ActionResult<unknown>;\n if (body && !body.success && body.error) message = body.error;\n } catch {\n // corpo não-JSON — mantém a mensagem genérica\n }\n throw new Error(message);\n }\n\n const body = (await response.json()) as ActionResult<T>;\n if (!body.success) {\n throw new Error(body.error ?? 'Erro desconhecido');\n }\n return body.data as T;\n}\n"],"mappings":"AAAA,SAAS,wBAAwB;AAUjC,eAAsB,SAAY,MAAc,UAA2B,CAAC,GAAe;AACzF,QAAM,EAAE,QAAQ,OAAO,IAAI;AAC3B,QAAM,KAAK,SAAS,iBAAiB,MAAqB,IAAI;AAC9D,QAAM,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,KAAK;AAEnC,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,SAAS,EAAE,QAAQ,mBAAmB;AAAA,IACtC;AAAA,EACF,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,QAAI,UAAU,QAAQ,SAAS,MAAM;AACrC,QAAI;AACF,YAAMA,QAAQ,MAAM,SAAS,KAAK;AAClC,UAAIA,SAAQ,CAACA,MAAK,WAAWA,MAAK,MAAO,WAAUA,MAAK;AAAA,IAC1D,QAAQ;AAAA,IAER;AACA,UAAM,IAAI,MAAM,OAAO;AAAA,EACzB;AAEA,QAAM,OAAQ,MAAM,SAAS,KAAK;AAClC,MAAI,CAAC,KAAK,SAAS;AACjB,UAAM,IAAI,MAAM,KAAK,SAAS,mBAAmB;AAAA,EACnD;AACA,SAAO,KAAK;AACd;","names":["body"]}
@@ -0,0 +1,12 @@
1
+ import { ApiError } from "../api/types";
2
+ function parseId(value) {
3
+ const id = Number(value);
4
+ if (!Number.isFinite(id) || id <= 0) {
5
+ throw new ApiError("Identificador inv\xE1lido", "INVALID_ID", 400);
6
+ }
7
+ return id;
8
+ }
9
+ export {
10
+ parseId
11
+ };
12
+ //# sourceMappingURL=parse-id.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/infra/route/parse-id.ts"],"sourcesContent":["import { ApiError } from '../api/types';\n\nexport function parseId(value: string): number {\n const id = Number(value);\n if (!Number.isFinite(id) || id <= 0) {\n throw new ApiError('Identificador inválido', 'INVALID_ID', 400);\n }\n return id;\n}\n"],"mappings":"AAAA,SAAS,gBAAgB;AAElB,SAAS,QAAQ,OAAuB;AAC7C,QAAM,KAAK,OAAO,KAAK;AACvB,MAAI,CAAC,OAAO,SAAS,EAAE,KAAK,MAAM,GAAG;AACnC,UAAM,IAAI,SAAS,6BAA0B,cAAc,GAAG;AAAA,EAChE;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,18 @@
1
+ import "server-only";
2
+ import { ApiError } from "../api/types";
3
+ async function safeRouteHandler(fn) {
4
+ try {
5
+ const data = await fn();
6
+ return Response.json({ success: true, data });
7
+ } catch (error) {
8
+ if (error instanceof ApiError) {
9
+ return Response.json({ success: false, error: error.message }, { status: error.statusCode });
10
+ }
11
+ console.error("[safeRouteHandler] erro inesperado", error);
12
+ return Response.json({ success: false, error: "Erro interno do servidor" }, { status: 500 });
13
+ }
14
+ }
15
+ export {
16
+ safeRouteHandler
17
+ };
18
+ //# sourceMappingURL=safe-route-handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/infra/route/safe-route-handler.ts"],"sourcesContent":["import 'server-only';\n\nimport { ApiError } from '../api/types';\n\nexport async function safeRouteHandler<T>(fn: () => Promise<T>): Promise<Response> {\n try {\n const data = await fn();\n return Response.json({ success: true, data });\n } catch (error) {\n if (error instanceof ApiError) {\n return Response.json({ success: false, error: error.message }, { status: error.statusCode });\n }\n console.error('[safeRouteHandler] erro inesperado', error);\n return Response.json({ success: false, error: 'Erro interno do servidor' }, { status: 500 });\n }\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,gBAAgB;AAEzB,eAAsB,iBAAoB,IAAyC;AACjF,MAAI;AACF,UAAM,OAAO,MAAM,GAAG;AACtB,WAAO,SAAS,KAAK,EAAE,SAAS,MAAM,KAAK,CAAC;AAAA,EAC9C,SAAS,OAAO;AACd,QAAI,iBAAiB,UAAU;AAC7B,aAAO,SAAS,KAAK,EAAE,SAAS,OAAO,OAAO,MAAM,QAAQ,GAAG,EAAE,QAAQ,MAAM,WAAW,CAAC;AAAA,IAC7F;AACA,YAAQ,MAAM,sCAAsC,KAAK;AACzD,WAAO,SAAS,KAAK,EAAE,SAAS,OAAO,OAAO,2BAA2B,GAAG,EAAE,QAAQ,IAAI,CAAC;AAAA,EAC7F;AACF;","names":[]}
@@ -0,0 +1,11 @@
1
+ function searchParamsToParams(searchParams) {
2
+ const params = /* @__PURE__ */ Object.create(null);
3
+ for (const [key, value] of searchParams.entries()) {
4
+ params[key] = value;
5
+ }
6
+ return params;
7
+ }
8
+ export {
9
+ searchParamsToParams
10
+ };
11
+ //# sourceMappingURL=search-params.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/infra/route/search-params.ts"],"sourcesContent":["export function searchParamsToParams<T extends object>(\n searchParams: URLSearchParams\n): Partial<T> {\n const params = Object.create(null) as Partial<Record<keyof T, string>>;\n for (const [key, value] of searchParams.entries()) {\n params[key as keyof T] = value;\n }\n return params as Partial<T>;\n}\n"],"mappings":"AAAO,SAAS,qBACd,cACY;AACZ,QAAM,SAAS,uBAAO,OAAO,IAAI;AACjC,aAAW,CAAC,KAAK,KAAK,KAAK,aAAa,QAAQ,GAAG;AACjD,WAAO,GAAc,IAAI;AAAA,EAC3B;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,16 @@
1
+ import "server-only";
2
+ import { parseId } from "../../../infra/route/parse-id";
3
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
4
+ import { cardsService } from "../services/cards.service";
5
+ function createFindCardByIdHandler() {
6
+ return async function GET(_req, { params }) {
7
+ return safeRouteHandler(async () => {
8
+ const { id } = await params;
9
+ return cardsService.findCardById(parseId(id));
10
+ });
11
+ };
12
+ }
13
+ export {
14
+ createFindCardByIdHandler
15
+ };
16
+ //# sourceMappingURL=find-card-by-id.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/cards/handlers/find-card-by-id.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 { cardsService } from '../services/cards.service';\n\nexport function createFindCardByIdHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return cardsService.findCardById(parseId(id));\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,eAAe;AACxB,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,4BAA4B;AAC1C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,aAAa,aAAa,QAAQ,EAAE,CAAC;AAAA,IAC9C,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,12 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { cardsService } from "../services/cards.service";
4
+ function createListCardsHandler() {
5
+ return async function GET() {
6
+ return safeRouteHandler(() => cardsService.listCards());
7
+ };
8
+ }
9
+ export {
10
+ createListCardsHandler
11
+ };
12
+ //# sourceMappingURL=list-cards.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/cards/handlers/list-cards.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { cardsService } from '../services/cards.service';\n\nexport function createListCardsHandler() {\n return async function GET() {\n return safeRouteHandler(() => cardsService.listCards());\n };\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,yBAAyB;AACvC,SAAO,eAAe,MAAM;AAC1B,WAAO,iBAAiB,MAAM,aAAa,UAAU,CAAC;AAAA,EACxD;AACF;","names":[]}
@@ -1,15 +1,12 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
5
  function useCardById(id) {
6
6
  const cardKey = useAuthQueryKey(["card", id]);
7
7
  return useQuery({
8
8
  queryKey: cardKey,
9
- queryFn: async () => {
10
- const { findCardByIdAction } = await import("../actions/find-card-by-id.action");
11
- return withAction(findCardByIdAction)(id);
12
- },
9
+ queryFn: ({ signal }) => apiFetch(`/api/cards/${id}`, { signal }),
13
10
  enabled: id != null
14
11
  });
15
12
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/cards/hooks/card-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useCardById(id: number | undefined) {\n const cardKey = useAuthQueryKey(['card', id]);\n\n return useQuery({\n queryKey: cardKey,\n queryFn: async () => {\n const { findCardByIdAction } = await import('../actions/find-card-by-id.action');\n return withAction(findCardByIdAction)(id!);\n },\n enabled: id != null,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEzB,SAAS,YAAY,IAAwB;AAClD,QAAM,UAAU,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAE5C,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,YAAY;AACnB,YAAM,EAAE,mBAAmB,IAAI,MAAM,OAAO,mCAAmC;AAC/E,aAAO,WAAW,kBAAkB,EAAE,EAAG;AAAA,IAC3C;AAAA,IACA,SAAS,MAAM;AAAA,EACjB,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/cards/hooks/card-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { SuccessResult } from '../../../infra/api/types';\nimport type { Card } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport function useCardById(id: number | undefined) {\n const cardKey = useAuthQueryKey(['card', id]);\n\n return useQuery({\n queryKey: cardKey,\n queryFn: ({ signal }) => apiFetch<SuccessResult<Card>>(`/api/cards/${id}`, { signal }),\n enabled: id != null,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,SAAS,YAAY,IAAwB;AAClD,QAAM,UAAU,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AAE5C,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MAAM,SAA8B,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC;AAAA,IACrF,SAAS,MAAM;AAAA,EACjB,CAAC;AACH;","names":[]}
@@ -1,16 +1,13 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
5
  const CARDS_QUERY_KEY = ["cards"];
6
6
  function useCards() {
7
7
  const queryKey = useAuthQueryKey([...CARDS_QUERY_KEY]);
8
8
  return useQuery({
9
9
  queryKey,
10
- queryFn: async () => {
11
- const { listCardsAction } = await import("../actions/list-cards.action");
12
- return withAction(listCardsAction)();
13
- },
10
+ queryFn: ({ signal }) => apiFetch("/api/cards", { signal }),
14
11
  select: (result) => ({
15
12
  ...result,
16
13
  data: result.data.filter((card) => !card.deleted)
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/cards/hooks/cards.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const CARDS_QUERY_KEY = ['cards'] as const;\n\nexport function useCards() {\n const queryKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: async () => {\n const { listCardsAction } = await import('../actions/list-cards.action');\n return withAction(listCardsAction)();\n },\n select: (result) => ({\n ...result,\n data: result.data.filter((card) => !card.deleted),\n }),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB,CAAC,OAAO;AAEhC,SAAS,WAAW;AACzB,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,YAAY;AACnB,YAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,8BAA8B;AACvE,aAAO,WAAW,eAAe,EAAE;AAAA,IACrC;AAAA,IACA,QAAQ,CAAC,YAAY;AAAA,MACnB,GAAG;AAAA,MACH,MAAM,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO;AAAA,IAClD;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/cards/hooks/cards.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 { Card } from '../types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const CARDS_QUERY_KEY = ['cards'] as const;\n\nexport function useCards() {\n const queryKey = useAuthQueryKey([...CARDS_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: ({ signal }) => apiFetch<PaginatedSuccessResult<Card>>('/api/cards', { signal }),\n select: (result) => ({\n ...result,\n data: result.data.filter((card) => !card.deleted),\n }),\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB,CAAC,OAAO;AAEhC,SAAS,WAAW;AACzB,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAuC,cAAc,EAAE,OAAO,CAAC;AAAA,IACxF,QAAQ,CAAC,YAAY;AAAA,MACnB,GAAG;AAAA,MACH,MAAM,OAAO,KAAK,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO;AAAA,IAClD;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,15 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { chargesService } from "../services/charges.service";
4
+ function createFindChargeByIdHandler() {
5
+ return async function GET(_req, { params }) {
6
+ return safeRouteHandler(async () => {
7
+ const { id } = await params;
8
+ return chargesService.findChargeById(id);
9
+ });
10
+ };
11
+ }
12
+ export {
13
+ createFindChargeByIdHandler
14
+ };
15
+ //# sourceMappingURL=find-charge-by-id.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/charges/handlers/find-charge-by-id.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { chargesService } from '../services/charges.service';\n\nexport function createFindChargeByIdHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return chargesService.findChargeById(id);\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,sBAAsB;AAExB,SAAS,8BAA8B;AAC5C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,eAAe,eAAe,EAAE;AAAA,IACzC,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,15 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { searchParamsToParams } from "../../../infra/route/search-params";
4
+ import { chargesService } from "../services/charges.service";
5
+ function createListChargesHandler() {
6
+ return async function GET(req) {
7
+ return safeRouteHandler(
8
+ () => chargesService.listCharges(searchParamsToParams(req.nextUrl.searchParams))
9
+ );
10
+ };
11
+ }
12
+ export {
13
+ createListChargesHandler
14
+ };
15
+ //# sourceMappingURL=list-charges.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/charges/handlers/list-charges.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 { chargesService } from '../services/charges.service';\nimport type { FindChargesParams } from '../types/charge.type';\n\nexport function createListChargesHandler() {\n return async function GET(req: NextRequest) {\n return safeRouteHandler(() =>\n chargesService.listCharges(searchParamsToParams<FindChargesParams>(req.nextUrl.searchParams))\n );\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,4BAA4B;AACrC,SAAS,sBAAsB;AAGxB,SAAS,2BAA2B;AACzC,SAAO,eAAe,IAAI,KAAkB;AAC1C,WAAO;AAAA,MAAiB,MACtB,eAAe,YAAY,qBAAwC,IAAI,QAAQ,YAAY,CAAC;AAAA,IAC9F;AAAA,EACF;AACF;","names":[]}
@@ -1,14 +1,13 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
- import { findChargeByIdAction } from "../actions/find-charge-by-id.action";
6
5
  import { CHARGES_QUERY_KEY } from "../../subscriptions/constants/query-keys.constants";
7
6
  function useChargeById(chargeId) {
8
7
  const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, chargeId]);
9
8
  return useQuery({
10
9
  queryKey: chargesKey,
11
- queryFn: () => withAction(findChargeByIdAction)(chargeId),
10
+ queryFn: ({ signal }) => apiFetch(`/api/charges/${chargeId}`, { signal }),
12
11
  enabled: !!chargeId
13
12
  });
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/charges/hooks/charge-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { findChargeByIdAction } from '../actions/find-charge-by-id.action';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useChargeById(chargeId: string | number | null | undefined) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, chargeId]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: () => withAction(findChargeByIdAction)(chargeId!),\n enabled: !!chargeId,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,4BAA4B;AACrC,SAAS,yBAAyB;AAE3B,SAAS,cAAc,UAA8C;AAC1E,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,QAAQ,CAAC;AAEnE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,MAAM,WAAW,oBAAoB,EAAE,QAAS;AAAA,IACzD,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/charges/hooks/charge-by-id.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { SuccessResult } from '../../../infra/api/types';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { Charge } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useChargeById(chargeId: string | number | null | undefined) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, chargeId]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: ({ signal }) =>\n apiFetch<SuccessResult<Charge>>(`/api/charges/${chargeId}`, { signal }),\n enabled: !!chargeId,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,SAAS,yBAAyB;AAE3B,SAAS,cAAc,UAA8C;AAC1E,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,QAAQ,CAAC;AAEnE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MACjB,SAAgC,gBAAgB,QAAQ,IAAI,EAAE,OAAO,CAAC;AAAA,IACxE,SAAS,CAAC,CAAC;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -1,14 +1,13 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { withAction } from "../../../utils/withAction";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
5
- import { listChargesAction } from "../actions/list-charges.action";
6
5
  import { CHARGES_QUERY_KEY } from "../../subscriptions/constants/query-keys.constants";
7
6
  function useCharges(params) {
8
7
  const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, params]);
9
8
  return useQuery({
10
9
  queryKey: chargesKey,
11
- queryFn: () => withAction(listChargesAction)(params),
10
+ queryFn: ({ signal }) => apiFetch("/api/charges", { params, signal }),
12
11
  staleTime: 1e4
13
12
  });
14
13
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/charges/hooks/charges.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { listChargesAction } from '../actions/list-charges.action';\nimport { FindChargesParams } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useCharges(params?: Partial<FindChargesParams>) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, params]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: () => withAction(listChargesAction)(params),\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAChC,SAAS,yBAAyB;AAElC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,QAAqC;AAC9D,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC;AAEjE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,MAAM,WAAW,iBAAiB,EAAE,MAAM;AAAA,IACnD,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/charges/hooks/charges.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 { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\nimport { Charge, FindChargesParams } from '../types/charge.type';\nimport { CHARGES_QUERY_KEY } from '../../subscriptions/constants/query-keys.constants';\n\nexport function useCharges(params?: Partial<FindChargesParams>) {\n const chargesKey = useAuthQueryKey([...CHARGES_QUERY_KEY, params]);\n\n return useQuery({\n queryKey: chargesKey,\n queryFn: ({ signal }) =>\n apiFetch<PaginatedSuccessResult<Charge>>('/api/charges', { params, signal }),\n staleTime: 10_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEhC,SAAS,yBAAyB;AAE3B,SAAS,WAAW,QAAqC;AAC9D,QAAM,aAAa,gBAAgB,CAAC,GAAG,mBAAmB,MAAM,CAAC;AAEjE,SAAO,SAAS;AAAA,IACd,UAAU;AAAA,IACV,SAAS,CAAC,EAAE,OAAO,MACjB,SAAyC,gBAAgB,EAAE,QAAQ,OAAO,CAAC;AAAA,IAC7E,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -0,0 +1,15 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { iaCreditsService } from "../services/ia-credits.service";
4
+ function createListIaCreditsHandler() {
5
+ return async function GET(_req, { params }) {
6
+ return safeRouteHandler(async () => {
7
+ const { id } = await params;
8
+ return iaCreditsService.listOperations(id);
9
+ });
10
+ };
11
+ }
12
+ export {
13
+ createListIaCreditsHandler
14
+ };
15
+ //# sourceMappingURL=list-ia-credits.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/ia-credits/handlers/list-ia-credits.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { iaCreditsService } from '../services/ia-credits.service';\n\nexport function createListIaCreditsHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return iaCreditsService.listOperations(id);\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,wBAAwB;AAE1B,SAAS,6BAA6B;AAC3C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,iBAAiB,eAAe,EAAE;AAAA,IAC3C,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,9 +1,8 @@
1
1
  "use client";
2
2
  import { useMemo } from "react";
3
3
  import { useQuery } from "@tanstack/react-query";
4
- import { listIaCreditsAction } from "../actions/list-ia-credits.action";
4
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
5
  import { useActiveSubscription } from "../../subscriptions/hooks/find-active-subscription.hook";
6
- import { withAction } from "../../../utils/withAction";
7
6
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
8
7
  function calculateSummary(operations) {
9
8
  const today = /* @__PURE__ */ new Date();
@@ -56,7 +55,10 @@ function useIaCredits() {
56
55
  const queryKey = useAuthQueryKey(["ia-credits", subscriptionId]);
57
56
  const query = useQuery({
58
57
  queryKey,
59
- queryFn: withAction(() => listIaCreditsAction(subscriptionId)),
58
+ queryFn: ({ signal }) => apiFetch(
59
+ `/api/subscriptions/${subscriptionId}/ia-credits`,
60
+ { signal }
61
+ ),
60
62
  enabled: subscriptionId != null
61
63
  });
62
64
  const operations = query.data?.data ?? [];
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/ia-credits/hooks/ia-credits.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { listIaCreditsAction } from '../actions/list-ia-credits.action';\nimport type { IaCreditOperation, IaCreditsSummary } from '../types';\nimport { useActiveSubscription } from '../../subscriptions/hooks/find-active-subscription.hook';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nfunction calculateSummary(operations: IaCreditOperation[]): IaCreditsSummary {\n const today = new Date();\n const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n\n const adds = operations.filter((op) => op.operation === 'add');\n const subtracts = operations.filter((op) => op.operation === 'subtract');\n\n let totalCredits = 0;\n let usedCredits = 0;\n let nextExpirationInDays: number | null = null;\n let nextExpiringCredits: number | null = null;\n\n for (const add of adds) {\n const expirationRaw = add.expiration_time;\n if (!expirationRaw) continue;\n\n const expiration = new Date(expirationRaw);\n const expirationDate = new Date(\n expiration.getFullYear(),\n expiration.getMonth(),\n expiration.getDate()\n );\n\n const expiredByDate = expirationDate.getTime() < todayDate.getTime();\n const hasExpired = add.has_expired || expiredByDate;\n\n if (hasExpired) continue;\n\n const addedCredits = add.operation_value;\n\n const consumedForAdd = subtracts\n .filter((sub) => String(sub.consumed_from_add_id) === String(add.id))\n .reduce((sum, sub) => sum + sub.operation_value, 0);\n\n const remainingForAdd = Math.max(0, addedCredits - consumedForAdd);\n\n totalCredits += addedCredits;\n usedCredits += consumedForAdd;\n\n const diffMs = expirationDate.getTime() - todayDate.getTime();\n const days = Math.max(0, Math.ceil(diffMs / (1000 * 60 * 60 * 24)));\n\n if (remainingForAdd > 0) {\n if (nextExpirationInDays === null || days < nextExpirationInDays) {\n nextExpirationInDays = days;\n nextExpiringCredits = remainingForAdd;\n }\n }\n }\n\n const availableCredits = Math.max(0, totalCredits - usedCredits);\n\n return {\n totalCredits,\n usedCredits,\n availableCredits,\n nextExpiringCredits,\n nextExpirationInDays,\n };\n}\n\nexport function useIaCredits() {\n const { data: subscriptionData, isPending: isSubscriptionLoading } = useActiveSubscription();\n const subscription = subscriptionData?.data?.[0] ?? null;\n const subscriptionId = subscription?.id;\n const queryKey = useAuthQueryKey(['ia-credits', subscriptionId]);\n\n const query = useQuery({\n queryKey,\n queryFn: withAction(() => listIaCreditsAction(subscriptionId!)),\n enabled: subscriptionId != null,\n });\n\n const operations = query.data?.data ?? [];\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const summary = useMemo(() => calculateSummary(operations), [operations]);\n\n return {\n subscription,\n operations,\n summary,\n isLoading: isSubscriptionLoading || query.isPending,\n isSubscriptionLoading,\n isCreditsLoading: query.isPending,\n isError: query.isError,\n error: query.error,\n };\n}\n"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,2BAA2B;AAEpC,SAAS,6BAA6B;AACtC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEhC,SAAS,iBAAiB,YAAmD;AAC3E,QAAM,QAAQ,oBAAI,KAAK;AACvB,QAAM,YAAY,IAAI,KAAK,MAAM,YAAY,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;AAEjF,QAAM,OAAO,WAAW,OAAO,CAAC,OAAO,GAAG,cAAc,KAAK;AAC7D,QAAM,YAAY,WAAW,OAAO,CAAC,OAAO,GAAG,cAAc,UAAU;AAEvE,MAAI,eAAe;AACnB,MAAI,cAAc;AAClB,MAAI,uBAAsC;AAC1C,MAAI,sBAAqC;AAEzC,aAAW,OAAO,MAAM;AACtB,UAAM,gBAAgB,IAAI;AAC1B,QAAI,CAAC,cAAe;AAEpB,UAAM,aAAa,IAAI,KAAK,aAAa;AACzC,UAAM,iBAAiB,IAAI;AAAA,MACzB,WAAW,YAAY;AAAA,MACvB,WAAW,SAAS;AAAA,MACpB,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,gBAAgB,eAAe,QAAQ,IAAI,UAAU,QAAQ;AACnE,UAAM,aAAa,IAAI,eAAe;AAEtC,QAAI,WAAY;AAEhB,UAAM,eAAe,IAAI;AAEzB,UAAM,iBAAiB,UACpB,OAAO,CAAC,QAAQ,OAAO,IAAI,oBAAoB,MAAM,OAAO,IAAI,EAAE,CAAC,EACnE,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,iBAAiB,CAAC;AAEpD,UAAM,kBAAkB,KAAK,IAAI,GAAG,eAAe,cAAc;AAEjE,oBAAgB;AAChB,mBAAe;AAEf,UAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,QAAQ;AAC5D,UAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,MAAO,KAAK,KAAK,GAAG,CAAC;AAElE,QAAI,kBAAkB,GAAG;AACvB,UAAI,yBAAyB,QAAQ,OAAO,sBAAsB;AAChE,+BAAuB;AACvB,8BAAsB;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmB,KAAK,IAAI,GAAG,eAAe,WAAW;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,eAAe;AAC7B,QAAM,EAAE,MAAM,kBAAkB,WAAW,sBAAsB,IAAI,sBAAsB;AAC3F,QAAM,eAAe,kBAAkB,OAAO,CAAC,KAAK;AACpD,QAAM,iBAAiB,cAAc;AACrC,QAAM,WAAW,gBAAgB,CAAC,cAAc,cAAc,CAAC;AAE/D,QAAM,QAAQ,SAAS;AAAA,IACrB;AAAA,IACA,SAAS,WAAW,MAAM,oBAAoB,cAAe,CAAC;AAAA,IAC9D,SAAS,kBAAkB;AAAA,EAC7B,CAAC;AAED,QAAM,aAAa,MAAM,MAAM,QAAQ,CAAC;AAGxC,QAAM,UAAU,QAAQ,MAAM,iBAAiB,UAAU,GAAG,CAAC,UAAU,CAAC;AAExE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,yBAAyB,MAAM;AAAA,IAC1C;AAAA,IACA,kBAAkB,MAAM;AAAA,IACxB,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,EACf;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/ia-credits/hooks/ia-credits.hook.ts"],"sourcesContent":["'use client';\n\nimport { useMemo } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { PaginatedSuccessResult } from '../../../infra/api/types';\nimport type { IaCreditOperation, IaCreditsSummary } from '../types';\nimport { useActiveSubscription } from '../../subscriptions/hooks/find-active-subscription.hook';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nfunction calculateSummary(operations: IaCreditOperation[]): IaCreditsSummary {\n const today = new Date();\n const todayDate = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n\n const adds = operations.filter((op) => op.operation === 'add');\n const subtracts = operations.filter((op) => op.operation === 'subtract');\n\n let totalCredits = 0;\n let usedCredits = 0;\n let nextExpirationInDays: number | null = null;\n let nextExpiringCredits: number | null = null;\n\n for (const add of adds) {\n const expirationRaw = add.expiration_time;\n if (!expirationRaw) continue;\n\n const expiration = new Date(expirationRaw);\n const expirationDate = new Date(\n expiration.getFullYear(),\n expiration.getMonth(),\n expiration.getDate()\n );\n\n const expiredByDate = expirationDate.getTime() < todayDate.getTime();\n const hasExpired = add.has_expired || expiredByDate;\n\n if (hasExpired) continue;\n\n const addedCredits = add.operation_value;\n\n const consumedForAdd = subtracts\n .filter((sub) => String(sub.consumed_from_add_id) === String(add.id))\n .reduce((sum, sub) => sum + sub.operation_value, 0);\n\n const remainingForAdd = Math.max(0, addedCredits - consumedForAdd);\n\n totalCredits += addedCredits;\n usedCredits += consumedForAdd;\n\n const diffMs = expirationDate.getTime() - todayDate.getTime();\n const days = Math.max(0, Math.ceil(diffMs / (1000 * 60 * 60 * 24)));\n\n if (remainingForAdd > 0) {\n if (nextExpirationInDays === null || days < nextExpirationInDays) {\n nextExpirationInDays = days;\n nextExpiringCredits = remainingForAdd;\n }\n }\n }\n\n const availableCredits = Math.max(0, totalCredits - usedCredits);\n\n return {\n totalCredits,\n usedCredits,\n availableCredits,\n nextExpiringCredits,\n nextExpirationInDays,\n };\n}\n\nexport function useIaCredits() {\n const { data: subscriptionData, isPending: isSubscriptionLoading } = useActiveSubscription();\n const subscription = subscriptionData?.data?.[0] ?? null;\n const subscriptionId = subscription?.id;\n const queryKey = useAuthQueryKey(['ia-credits', subscriptionId]);\n\n const query = useQuery({\n queryKey,\n queryFn: ({ signal }) =>\n apiFetch<PaginatedSuccessResult<IaCreditOperation>>(\n `/api/subscriptions/${subscriptionId}/ia-credits`,\n { signal }\n ),\n enabled: subscriptionId != null,\n });\n\n const operations = query.data?.data ?? [];\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const summary = useMemo(() => calculateSummary(operations), [operations]);\n\n return {\n subscription,\n operations,\n summary,\n isLoading: isSubscriptionLoading || query.isPending,\n isSubscriptionLoading,\n isCreditsLoading: query.isPending,\n isError: query.isError,\n error: query.error,\n };\n}\n"],"mappings":";AAEA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAGzB,SAAS,6BAA6B;AACtC,SAAS,uBAAuB;AAEhC,SAAS,iBAAiB,YAAmD;AAC3E,QAAM,QAAQ,oBAAI,KAAK;AACvB,QAAM,YAAY,IAAI,KAAK,MAAM,YAAY,GAAG,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC;AAEjF,QAAM,OAAO,WAAW,OAAO,CAAC,OAAO,GAAG,cAAc,KAAK;AAC7D,QAAM,YAAY,WAAW,OAAO,CAAC,OAAO,GAAG,cAAc,UAAU;AAEvE,MAAI,eAAe;AACnB,MAAI,cAAc;AAClB,MAAI,uBAAsC;AAC1C,MAAI,sBAAqC;AAEzC,aAAW,OAAO,MAAM;AACtB,UAAM,gBAAgB,IAAI;AAC1B,QAAI,CAAC,cAAe;AAEpB,UAAM,aAAa,IAAI,KAAK,aAAa;AACzC,UAAM,iBAAiB,IAAI;AAAA,MACzB,WAAW,YAAY;AAAA,MACvB,WAAW,SAAS;AAAA,MACpB,WAAW,QAAQ;AAAA,IACrB;AAEA,UAAM,gBAAgB,eAAe,QAAQ,IAAI,UAAU,QAAQ;AACnE,UAAM,aAAa,IAAI,eAAe;AAEtC,QAAI,WAAY;AAEhB,UAAM,eAAe,IAAI;AAEzB,UAAM,iBAAiB,UACpB,OAAO,CAAC,QAAQ,OAAO,IAAI,oBAAoB,MAAM,OAAO,IAAI,EAAE,CAAC,EACnE,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,iBAAiB,CAAC;AAEpD,UAAM,kBAAkB,KAAK,IAAI,GAAG,eAAe,cAAc;AAEjE,oBAAgB;AAChB,mBAAe;AAEf,UAAM,SAAS,eAAe,QAAQ,IAAI,UAAU,QAAQ;AAC5D,UAAM,OAAO,KAAK,IAAI,GAAG,KAAK,KAAK,UAAU,MAAO,KAAK,KAAK,GAAG,CAAC;AAElE,QAAI,kBAAkB,GAAG;AACvB,UAAI,yBAAyB,QAAQ,OAAO,sBAAsB;AAChE,+BAAuB;AACvB,8BAAsB;AAAA,MACxB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,mBAAmB,KAAK,IAAI,GAAG,eAAe,WAAW;AAE/D,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,eAAe;AAC7B,QAAM,EAAE,MAAM,kBAAkB,WAAW,sBAAsB,IAAI,sBAAsB;AAC3F,QAAM,eAAe,kBAAkB,OAAO,CAAC,KAAK;AACpD,QAAM,iBAAiB,cAAc;AACrC,QAAM,WAAW,gBAAgB,CAAC,cAAc,cAAc,CAAC;AAE/D,QAAM,QAAQ,SAAS;AAAA,IACrB;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MACjB;AAAA,MACE,sBAAsB,cAAc;AAAA,MACpC,EAAE,OAAO;AAAA,IACX;AAAA,IACF,SAAS,kBAAkB;AAAA,EAC7B,CAAC;AAED,QAAM,aAAa,MAAM,MAAM,QAAQ,CAAC;AAGxC,QAAM,UAAU,QAAQ,MAAM,iBAAiB,UAAU,GAAG,CAAC,UAAU,CAAC;AAExE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,WAAW,yBAAyB,MAAM;AAAA,IAC1C;AAAA,IACA,kBAAkB,MAAM;AAAA,IACxB,SAAS,MAAM;AAAA,IACf,OAAO,MAAM;AAAA,EACf;AACF;","names":[]}
@@ -0,0 +1,14 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { pagesService } from "../services/pages.service";
4
+ function createCountPagesHandler() {
5
+ return async function GET() {
6
+ return safeRouteHandler(async () => ({
7
+ total: await pagesService.countPages()
8
+ }));
9
+ };
10
+ }
11
+ export {
12
+ createCountPagesHandler
13
+ };
14
+ //# sourceMappingURL=count-pages.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/pages/handlers/count-pages.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { pagesService } from '../services/pages.service';\n\nexport function createCountPagesHandler() {\n return async function GET() {\n return safeRouteHandler(async () => ({\n total: await pagesService.countPages(),\n }));\n };\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,0BAA0B;AACxC,SAAO,eAAe,MAAM;AAC1B,WAAO,iBAAiB,aAAa;AAAA,MACnC,OAAO,MAAM,aAAa,WAAW;AAAA,IACvC,EAAE;AAAA,EACJ;AACF;","names":[]}
@@ -1,16 +1,15 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { countPagesAction } from "../actions/count-pages.action";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
4
4
  import { PAGES_QUERY_KEY } from "../constants/query-keys.constants";
5
- import { withAction } from "../../../utils/withAction";
6
5
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
7
6
  const COUNT_PAGES_QUERY_KEY = [...PAGES_QUERY_KEY, "count"];
8
7
  function useCountPages() {
9
8
  const queryKey = useAuthQueryKey([...COUNT_PAGES_QUERY_KEY]);
10
9
  return useQuery({
11
10
  queryKey,
12
- queryFn: async () => {
13
- const result = await withAction(countPagesAction)();
11
+ queryFn: async ({ signal }) => {
12
+ const result = await apiFetch("/api/pages/count", { signal });
14
13
  return result.total;
15
14
  },
16
15
  staleTime: 3e4
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/pages/hooks/count-pages.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { countPagesAction } from '../actions/count-pages.action';\nimport { PAGES_QUERY_KEY } from '../constants/query-keys.constants';\nimport { withAction } from '../../../utils/withAction';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const COUNT_PAGES_QUERY_KEY = [...PAGES_QUERY_KEY, 'count'] as const;\n\nexport function useCountPages() {\n const queryKey = useAuthQueryKey([...COUNT_PAGES_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: async () => {\n const result = await withAction(countPagesAction)();\n return result.total;\n },\n staleTime: 30_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,wBAAwB;AACjC,SAAS,uBAAuB;AAChC,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEzB,MAAM,wBAAwB,CAAC,GAAG,iBAAiB,OAAO;AAE1D,SAAS,gBAAgB;AAC9B,QAAM,WAAW,gBAAgB,CAAC,GAAG,qBAAqB,CAAC;AAE3D,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,YAAY;AACnB,YAAM,SAAS,MAAM,WAAW,gBAAgB,EAAE;AAClD,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/pages/hooks/count-pages.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport { PAGES_QUERY_KEY } from '../constants/query-keys.constants';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const COUNT_PAGES_QUERY_KEY = [...PAGES_QUERY_KEY, 'count'] as const;\n\nexport function useCountPages() {\n const queryKey = useAuthQueryKey([...COUNT_PAGES_QUERY_KEY]);\n\n return useQuery({\n queryKey,\n queryFn: async ({ signal }) => {\n const result = await apiFetch<{ total: number }>('/api/pages/count', { signal });\n return result.total;\n },\n staleTime: 30_000,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AACzB,SAAS,uBAAuB;AAChC,SAAS,uBAAuB;AAEzB,MAAM,wBAAwB,CAAC,GAAG,iBAAiB,OAAO;AAE1D,SAAS,gBAAgB;AAC9B,QAAM,WAAW,gBAAgB,CAAC,GAAG,qBAAqB,CAAC;AAE3D,SAAO,SAAS;AAAA,IACd;AAAA,IACA,SAAS,OAAO,EAAE,OAAO,MAAM;AAC7B,YAAM,SAAS,MAAM,SAA4B,oBAAoB,EAAE,OAAO,CAAC;AAC/E,aAAO,OAAO;AAAA,IAChB;AAAA,IACA,WAAW;AAAA,EACb,CAAC;AACH;","names":[]}
@@ -0,0 +1,15 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { plansService } from "../services/plans.service";
4
+ function createFindPlanByIdHandler() {
5
+ return async function GET(_req, { params }) {
6
+ return safeRouteHandler(async () => {
7
+ const { id } = await params;
8
+ return plansService.findById(id);
9
+ });
10
+ };
11
+ }
12
+ export {
13
+ createFindPlanByIdHandler
14
+ };
15
+ //# sourceMappingURL=find-plan-by-id.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/plans/handlers/find-plan-by-id.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport type { NextRequest } from 'next/server';\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { plansService } from '../services/plans.service';\n\nexport function createFindPlanByIdHandler() {\n return async function GET(_req: NextRequest, { params }: { params: Promise<{ id: string }> }) {\n return safeRouteHandler(async () => {\n const { id } = await params;\n return plansService.findById(id);\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAGP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,4BAA4B;AAC1C,SAAO,eAAe,IAAI,MAAmB,EAAE,OAAO,GAAwC;AAC5F,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,GAAG,IAAI,MAAM;AACrB,aAAO,aAAa,SAAS,EAAE;AAAA,IACjC,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -0,0 +1,20 @@
1
+ import "server-only";
2
+ import { safeRouteHandler } from "../../../infra/route/safe-route-handler";
3
+ import { plansService } from "../services/plans.service";
4
+ function createListPlansHandler() {
5
+ return async function GET() {
6
+ return safeRouteHandler(async () => {
7
+ const { data: apiPlans } = await plansService.listPlans({
8
+ active: true,
9
+ search: "client",
10
+ sort: "id:ASC"
11
+ });
12
+ if (!apiPlans?.length) return [];
13
+ return [...apiPlans].sort((a, b) => a.value - b.value);
14
+ });
15
+ };
16
+ }
17
+ export {
18
+ createListPlansHandler
19
+ };
20
+ //# sourceMappingURL=list-plans.handler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/modules/plans/handlers/list-plans.handler.ts"],"sourcesContent":["import 'server-only';\n\nimport { safeRouteHandler } from '../../../infra/route/safe-route-handler';\nimport { plansService } from '../services/plans.service';\n\nexport function createListPlansHandler() {\n return async function GET() {\n return safeRouteHandler(async () => {\n const { data: apiPlans } = await plansService.listPlans({\n active: true,\n search: 'client',\n sort: 'id:ASC',\n });\n\n if (!apiPlans?.length) return [];\n\n return [...apiPlans].sort((a, b) => a.value - b.value);\n });\n };\n}\n"],"mappings":"AAAA,OAAO;AAEP,SAAS,wBAAwB;AACjC,SAAS,oBAAoB;AAEtB,SAAS,yBAAyB;AACvC,SAAO,eAAe,MAAM;AAC1B,WAAO,iBAAiB,YAAY;AAClC,YAAM,EAAE,MAAM,SAAS,IAAI,MAAM,aAAa,UAAU;AAAA,QACtD,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,MACR,CAAC;AAED,UAAI,CAAC,UAAU,OAAQ,QAAO,CAAC;AAE/B,aAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAAA,IACvD,CAAC;AAAA,EACH;AACF;","names":[]}
@@ -1,14 +1,13 @@
1
1
  "use client";
2
2
  import { useQuery } from "@tanstack/react-query";
3
- import { withAction } from "@greatapps/common";
4
- import { listPlansAction } from "../actions/list-plans.action";
3
+ import { apiFetch } from "../../../infra/http/api-fetch";
5
4
  import { useAuthQueryKey } from "../../../hooks/useAuthQueryKey";
6
5
  const PLANS_QUERY_KEY = ["plans"];
7
6
  function usePlans() {
8
7
  const queryKey = useAuthQueryKey([...PLANS_QUERY_KEY]);
9
8
  return useQuery({
10
9
  queryKey,
11
- queryFn: withAction(listPlansAction),
10
+ queryFn: ({ signal }) => apiFetch("/api/plans", { signal }),
12
11
  staleTime: Infinity,
13
12
  gcTime: Infinity,
14
13
  refetchOnWindowFocus: false,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/plans/hooks/list-plans.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { withAction } from '@greatapps/common';\nimport { listPlansAction } from '../actions/list-plans.action';\nimport type { Plan } from '../types/plan.type';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const PLANS_QUERY_KEY = ['plans'] as const;\n\nexport function usePlans() {\n const queryKey = useAuthQueryKey([...PLANS_QUERY_KEY]);\n\n return useQuery<Plan[]>({\n queryKey,\n queryFn: withAction(listPlansAction),\n staleTime: Infinity,\n gcTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,uBAAuB;AAEhC,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB,CAAC,OAAO;AAEhC,SAAS,WAAW;AACzB,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,SAAiB;AAAA,IACtB;AAAA,IACA,SAAS,WAAW,eAAe;AAAA,IACnC,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACT,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":["../../../../src/modules/plans/hooks/list-plans.hook.ts"],"sourcesContent":["'use client';\n\nimport { useQuery } from '@tanstack/react-query';\nimport { apiFetch } from '../../../infra/http/api-fetch';\nimport type { Plan } from '../types/plan.type';\nimport { useAuthQueryKey } from '../../../hooks/useAuthQueryKey';\n\nexport const PLANS_QUERY_KEY = ['plans'] as const;\n\nexport function usePlans() {\n const queryKey = useAuthQueryKey([...PLANS_QUERY_KEY]);\n\n return useQuery<Plan[]>({\n queryKey,\n queryFn: ({ signal }) => apiFetch<Plan[]>('/api/plans', { signal }),\n staleTime: Infinity,\n gcTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n refetchOnMount: false,\n retry: 1,\n });\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AACzB,SAAS,gBAAgB;AAEzB,SAAS,uBAAuB;AAEzB,MAAM,kBAAkB,CAAC,OAAO;AAEhC,SAAS,WAAW;AACzB,QAAM,WAAW,gBAAgB,CAAC,GAAG,eAAe,CAAC;AAErD,SAAO,SAAiB;AAAA,IACtB;AAAA,IACA,SAAS,CAAC,EAAE,OAAO,MAAM,SAAiB,cAAc,EAAE,OAAO,CAAC;AAAA,IAClE,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,sBAAsB;AAAA,IACtB,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,OAAO;AAAA,EACT,CAAC;AACH;","names":[]}