@intlayer/api 9.5.12 → 9.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/dist/cjs/distantDictionary/fetchDistantDictionaries.cjs.map +1 -1
  2. package/dist/cjs/distantDictionary/fetchDistantDictionary.cjs.map +1 -1
  3. package/dist/cjs/fetcher.cjs.map +1 -1
  4. package/dist/cjs/getIntlayerAPI/ai.cjs +76 -22
  5. package/dist/cjs/getIntlayerAPI/ai.cjs.map +1 -1
  6. package/dist/cjs/getIntlayerAPI/analytics.cjs +44 -10
  7. package/dist/cjs/getIntlayerAPI/analytics.cjs.map +1 -1
  8. package/dist/cjs/getIntlayerAPI/asset.cjs +38 -8
  9. package/dist/cjs/getIntlayerAPI/asset.cjs.map +1 -1
  10. package/dist/cjs/getIntlayerAPI/audit.cjs +70 -16
  11. package/dist/cjs/getIntlayerAPI/audit.cjs.map +1 -1
  12. package/dist/cjs/getIntlayerAPI/bitbucket.cjs +39 -9
  13. package/dist/cjs/getIntlayerAPI/bitbucket.cjs.map +1 -1
  14. package/dist/cjs/getIntlayerAPI/codeberg.cjs +21 -0
  15. package/dist/cjs/getIntlayerAPI/codeberg.cjs.map +1 -0
  16. package/dist/cjs/getIntlayerAPI/dictionary.cjs +59 -13
  17. package/dist/cjs/getIntlayerAPI/dictionary.cjs.map +1 -1
  18. package/dist/cjs/getIntlayerAPI/editor.cjs.map +1 -1
  19. package/dist/cjs/getIntlayerAPI/environment.cjs +44 -10
  20. package/dist/cjs/getIntlayerAPI/environment.cjs.map +1 -1
  21. package/dist/cjs/getIntlayerAPI/forge.cjs +64 -0
  22. package/dist/cjs/getIntlayerAPI/forge.cjs.map +1 -0
  23. package/dist/cjs/getIntlayerAPI/gitee.cjs +21 -0
  24. package/dist/cjs/getIntlayerAPI/gitee.cjs.map +1 -0
  25. package/dist/cjs/getIntlayerAPI/github.cjs +44 -10
  26. package/dist/cjs/getIntlayerAPI/github.cjs.map +1 -1
  27. package/dist/cjs/getIntlayerAPI/gitlab.cjs +39 -9
  28. package/dist/cjs/getIntlayerAPI/gitlab.cjs.map +1 -1
  29. package/dist/cjs/getIntlayerAPI/index.cjs +4 -0
  30. package/dist/cjs/getIntlayerAPI/index.cjs.map +1 -1
  31. package/dist/cjs/getIntlayerAPI/newsletter.cjs +28 -6
  32. package/dist/cjs/getIntlayerAPI/newsletter.cjs.map +1 -1
  33. package/dist/cjs/getIntlayerAPI/oAuth.cjs +31 -5
  34. package/dist/cjs/getIntlayerAPI/oAuth.cjs.map +1 -1
  35. package/dist/cjs/getIntlayerAPI/organization.cjs +72 -20
  36. package/dist/cjs/getIntlayerAPI/organization.cjs.map +1 -1
  37. package/dist/cjs/getIntlayerAPI/project.cjs +112 -29
  38. package/dist/cjs/getIntlayerAPI/project.cjs.map +1 -1
  39. package/dist/cjs/getIntlayerAPI/reviewer.cjs +142 -31
  40. package/dist/cjs/getIntlayerAPI/reviewer.cjs.map +1 -1
  41. package/dist/cjs/getIntlayerAPI/search.cjs +15 -3
  42. package/dist/cjs/getIntlayerAPI/search.cjs.map +1 -1
  43. package/dist/cjs/getIntlayerAPI/showcaseProject.cjs +61 -15
  44. package/dist/cjs/getIntlayerAPI/showcaseProject.cjs.map +1 -1
  45. package/dist/cjs/getIntlayerAPI/status.cjs +16 -3
  46. package/dist/cjs/getIntlayerAPI/status.cjs.map +1 -1
  47. package/dist/cjs/getIntlayerAPI/stripe.cjs +141 -35
  48. package/dist/cjs/getIntlayerAPI/stripe.cjs.map +1 -1
  49. package/dist/cjs/getIntlayerAPI/tag.cjs +33 -7
  50. package/dist/cjs/getIntlayerAPI/tag.cjs.map +1 -1
  51. package/dist/cjs/getIntlayerAPI/translate.cjs +46 -8
  52. package/dist/cjs/getIntlayerAPI/translate.cjs.map +1 -1
  53. package/dist/cjs/getIntlayerAPI/user.cjs +58 -14
  54. package/dist/cjs/getIntlayerAPI/user.cjs.map +1 -1
  55. package/dist/cjs/index.cjs +8 -0
  56. package/dist/cjs/proxy.cjs +4 -0
  57. package/dist/cjs/proxy.cjs.map +1 -1
  58. package/dist/cjs/public/createPublicClient.cjs +25 -5
  59. package/dist/cjs/public/createPublicClient.cjs.map +1 -1
  60. package/dist/esm/distantDictionary/fetchDistantDictionaries.mjs.map +1 -1
  61. package/dist/esm/distantDictionary/fetchDistantDictionary.mjs.map +1 -1
  62. package/dist/esm/fetcher.mjs.map +1 -1
  63. package/dist/esm/getIntlayerAPI/ai.mjs +76 -22
  64. package/dist/esm/getIntlayerAPI/ai.mjs.map +1 -1
  65. package/dist/esm/getIntlayerAPI/analytics.mjs +44 -10
  66. package/dist/esm/getIntlayerAPI/analytics.mjs.map +1 -1
  67. package/dist/esm/getIntlayerAPI/asset.mjs +38 -8
  68. package/dist/esm/getIntlayerAPI/asset.mjs.map +1 -1
  69. package/dist/esm/getIntlayerAPI/audit.mjs +70 -16
  70. package/dist/esm/getIntlayerAPI/audit.mjs.map +1 -1
  71. package/dist/esm/getIntlayerAPI/bitbucket.mjs +39 -9
  72. package/dist/esm/getIntlayerAPI/bitbucket.mjs.map +1 -1
  73. package/dist/esm/getIntlayerAPI/codeberg.mjs +19 -0
  74. package/dist/esm/getIntlayerAPI/codeberg.mjs.map +1 -0
  75. package/dist/esm/getIntlayerAPI/dictionary.mjs +59 -13
  76. package/dist/esm/getIntlayerAPI/dictionary.mjs.map +1 -1
  77. package/dist/esm/getIntlayerAPI/editor.mjs.map +1 -1
  78. package/dist/esm/getIntlayerAPI/environment.mjs +44 -10
  79. package/dist/esm/getIntlayerAPI/environment.mjs.map +1 -1
  80. package/dist/esm/getIntlayerAPI/forge.mjs +63 -0
  81. package/dist/esm/getIntlayerAPI/forge.mjs.map +1 -0
  82. package/dist/esm/getIntlayerAPI/gitee.mjs +19 -0
  83. package/dist/esm/getIntlayerAPI/gitee.mjs.map +1 -0
  84. package/dist/esm/getIntlayerAPI/github.mjs +44 -10
  85. package/dist/esm/getIntlayerAPI/github.mjs.map +1 -1
  86. package/dist/esm/getIntlayerAPI/gitlab.mjs +39 -9
  87. package/dist/esm/getIntlayerAPI/gitlab.mjs.map +1 -1
  88. package/dist/esm/getIntlayerAPI/index.mjs +4 -0
  89. package/dist/esm/getIntlayerAPI/index.mjs.map +1 -1
  90. package/dist/esm/getIntlayerAPI/newsletter.mjs +28 -6
  91. package/dist/esm/getIntlayerAPI/newsletter.mjs.map +1 -1
  92. package/dist/esm/getIntlayerAPI/oAuth.mjs +31 -5
  93. package/dist/esm/getIntlayerAPI/oAuth.mjs.map +1 -1
  94. package/dist/esm/getIntlayerAPI/organization.mjs +72 -20
  95. package/dist/esm/getIntlayerAPI/organization.mjs.map +1 -1
  96. package/dist/esm/getIntlayerAPI/project.mjs +112 -29
  97. package/dist/esm/getIntlayerAPI/project.mjs.map +1 -1
  98. package/dist/esm/getIntlayerAPI/reviewer.mjs +142 -31
  99. package/dist/esm/getIntlayerAPI/reviewer.mjs.map +1 -1
  100. package/dist/esm/getIntlayerAPI/search.mjs +15 -3
  101. package/dist/esm/getIntlayerAPI/search.mjs.map +1 -1
  102. package/dist/esm/getIntlayerAPI/showcaseProject.mjs +61 -15
  103. package/dist/esm/getIntlayerAPI/showcaseProject.mjs.map +1 -1
  104. package/dist/esm/getIntlayerAPI/status.mjs +16 -3
  105. package/dist/esm/getIntlayerAPI/status.mjs.map +1 -1
  106. package/dist/esm/getIntlayerAPI/stripe.mjs +141 -35
  107. package/dist/esm/getIntlayerAPI/stripe.mjs.map +1 -1
  108. package/dist/esm/getIntlayerAPI/tag.mjs +33 -7
  109. package/dist/esm/getIntlayerAPI/tag.mjs.map +1 -1
  110. package/dist/esm/getIntlayerAPI/translate.mjs +46 -8
  111. package/dist/esm/getIntlayerAPI/translate.mjs.map +1 -1
  112. package/dist/esm/getIntlayerAPI/user.mjs +58 -14
  113. package/dist/esm/getIntlayerAPI/user.mjs.map +1 -1
  114. package/dist/esm/index.mjs +4 -1
  115. package/dist/esm/proxy.mjs +4 -0
  116. package/dist/esm/proxy.mjs.map +1 -1
  117. package/dist/esm/public/createPublicClient.mjs +25 -5
  118. package/dist/esm/public/createPublicClient.mjs.map +1 -1
  119. package/dist/types/distantDictionary/fetchDistantDictionaries.d.ts +1 -1
  120. package/dist/types/distantDictionary/fetchDistantDictionary.d.ts +1 -1
  121. package/dist/types/fetcher.d.ts +1 -1
  122. package/dist/types/fetcher.d.ts.map +1 -1
  123. package/dist/types/getIntlayerAPI/ai.d.ts +1 -1
  124. package/dist/types/getIntlayerAPI/ai.d.ts.map +1 -1
  125. package/dist/types/getIntlayerAPI/analytics.d.ts +1 -1
  126. package/dist/types/getIntlayerAPI/analytics.d.ts.map +1 -1
  127. package/dist/types/getIntlayerAPI/asset.d.ts +1 -0
  128. package/dist/types/getIntlayerAPI/asset.d.ts.map +1 -1
  129. package/dist/types/getIntlayerAPI/audit.d.ts +47 -3
  130. package/dist/types/getIntlayerAPI/audit.d.ts.map +1 -1
  131. package/dist/types/getIntlayerAPI/bitbucket.d.ts.map +1 -1
  132. package/dist/types/getIntlayerAPI/codeberg.d.ts +23 -0
  133. package/dist/types/getIntlayerAPI/codeberg.d.ts.map +1 -0
  134. package/dist/types/getIntlayerAPI/dictionary.d.ts +1 -1
  135. package/dist/types/getIntlayerAPI/dictionary.d.ts.map +1 -1
  136. package/dist/types/getIntlayerAPI/editor.d.ts +2 -1
  137. package/dist/types/getIntlayerAPI/editor.d.ts.map +1 -1
  138. package/dist/types/getIntlayerAPI/environment.d.ts +1 -1
  139. package/dist/types/getIntlayerAPI/environment.d.ts.map +1 -1
  140. package/dist/types/getIntlayerAPI/forge.d.ts +17 -0
  141. package/dist/types/getIntlayerAPI/forge.d.ts.map +1 -0
  142. package/dist/types/getIntlayerAPI/gitee.d.ts +23 -0
  143. package/dist/types/getIntlayerAPI/gitee.d.ts.map +1 -0
  144. package/dist/types/getIntlayerAPI/github.d.ts.map +1 -1
  145. package/dist/types/getIntlayerAPI/gitlab.d.ts.map +1 -1
  146. package/dist/types/getIntlayerAPI/index.d.ts +4 -0
  147. package/dist/types/getIntlayerAPI/index.d.ts.map +1 -1
  148. package/dist/types/getIntlayerAPI/newsletter.d.ts +1 -1
  149. package/dist/types/getIntlayerAPI/newsletter.d.ts.map +1 -1
  150. package/dist/types/getIntlayerAPI/oAuth.d.ts +2 -0
  151. package/dist/types/getIntlayerAPI/oAuth.d.ts.map +1 -1
  152. package/dist/types/getIntlayerAPI/organization.d.ts +1 -3
  153. package/dist/types/getIntlayerAPI/organization.d.ts.map +1 -1
  154. package/dist/types/getIntlayerAPI/project.d.ts +2 -1
  155. package/dist/types/getIntlayerAPI/project.d.ts.map +1 -1
  156. package/dist/types/getIntlayerAPI/reviewer.d.ts +680 -35
  157. package/dist/types/getIntlayerAPI/reviewer.d.ts.map +1 -1
  158. package/dist/types/getIntlayerAPI/search.d.ts +1 -1
  159. package/dist/types/getIntlayerAPI/search.d.ts.map +1 -1
  160. package/dist/types/getIntlayerAPI/showcaseProject.d.ts +1 -1
  161. package/dist/types/getIntlayerAPI/showcaseProject.d.ts.map +1 -1
  162. package/dist/types/getIntlayerAPI/status.d.ts +3 -4
  163. package/dist/types/getIntlayerAPI/status.d.ts.map +1 -1
  164. package/dist/types/getIntlayerAPI/stripe.d.ts +1 -1
  165. package/dist/types/getIntlayerAPI/stripe.d.ts.map +1 -1
  166. package/dist/types/getIntlayerAPI/tag.d.ts +1 -1
  167. package/dist/types/getIntlayerAPI/tag.d.ts.map +1 -1
  168. package/dist/types/getIntlayerAPI/translate.d.ts +1 -1
  169. package/dist/types/getIntlayerAPI/translate.d.ts.map +1 -1
  170. package/dist/types/getIntlayerAPI/user.d.ts +4 -4
  171. package/dist/types/getIntlayerAPI/user.d.ts.map +1 -1
  172. package/dist/types/index.d.ts +7 -4
  173. package/dist/types/proxy.d.ts.map +1 -1
  174. package/dist/types/public/createPublicClient.d.ts +1 -7
  175. package/dist/types/public/createPublicClient.d.ts.map +1 -1
  176. package/dist/types/types.d.ts +5 -2
  177. package/package.json +22 -5
@@ -2,10 +2,120 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_fetcher = require('../fetcher.cjs');
3
3
  const require_cms_createIntlayerCMS = require('../cms/createIntlayerCMS.cjs');
4
4
  let _intlayer_config_built = require("@intlayer/config/built");
5
+ let _intlayer_backend_contract_defineRoute = require("@intlayer/backend-contract/defineRoute");
6
+ let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
5
7
 
6
8
  //#region src/getIntlayerAPI/reviewer.ts
9
+ /** Prefix of the routes, checked against the backend contract. */
10
+ const reviewerGroup = { prefix: "/api/reviewer" };
11
+ /**
12
+ * Method and path of every route, checked against the backend contract at
13
+ * compile time (the contract's zod schemas are never loaded).
14
+ */
15
+ const reviewerEndpoints = {
16
+ getMarketplace: {
17
+ method: "GET",
18
+ path: "/marketplace"
19
+ },
20
+ getPriceDistribution: {
21
+ method: "GET",
22
+ path: "/marketplace/price-distribution"
23
+ },
24
+ getMyReviewerProfile: {
25
+ method: "GET",
26
+ path: "/me"
27
+ },
28
+ getReviewerReviews: {
29
+ method: "GET",
30
+ path: "/:reviewerId/reviews"
31
+ },
32
+ getReviewerById: {
33
+ method: "GET",
34
+ path: "/:reviewerId"
35
+ },
36
+ registerAsReviewer: {
37
+ method: "POST",
38
+ path: "/register"
39
+ },
40
+ updateReviewerProfile: {
41
+ method: "PUT",
42
+ path: "/"
43
+ },
44
+ deleteReviewerProfile: {
45
+ method: "DELETE",
46
+ path: "/"
47
+ },
48
+ uploadMainPicture: {
49
+ method: "POST",
50
+ path: "/me/picture/main"
51
+ },
52
+ uploadCoverPicture: {
53
+ method: "POST",
54
+ path: "/me/picture/cover"
55
+ },
56
+ estimateMission: {
57
+ method: "POST",
58
+ path: "/mission/estimate"
59
+ },
60
+ createMission: {
61
+ method: "POST",
62
+ path: "/mission"
63
+ },
64
+ getMyMissions: {
65
+ method: "GET",
66
+ path: "/mission"
67
+ },
68
+ getMissionById: {
69
+ method: "GET",
70
+ path: "/mission/:missionId"
71
+ },
72
+ updateMissionStatus: {
73
+ method: "PUT",
74
+ path: "/mission/:missionId/status"
75
+ },
76
+ submitReview: {
77
+ method: "POST",
78
+ path: "/mission/:missionId/review"
79
+ },
80
+ getChatHistory: {
81
+ method: "GET",
82
+ path: "/mission/:missionId/chat/history"
83
+ },
84
+ sendMessage: {
85
+ method: "POST",
86
+ path: "/mission/:missionId/chat"
87
+ },
88
+ chatSSE: {
89
+ method: "GET",
90
+ path: "/mission/:missionId/chat/stream"
91
+ },
92
+ createPaymentIntent: {
93
+ method: "POST",
94
+ path: "/mission/:missionId/payment/intent"
95
+ },
96
+ confirmPayment: {
97
+ method: "POST",
98
+ path: "/mission/:missionId/payment/confirm"
99
+ },
100
+ requestPayout: {
101
+ method: "POST",
102
+ path: "/payout"
103
+ },
104
+ contactReviewer: {
105
+ method: "POST",
106
+ path: "/:reviewerId/contact"
107
+ },
108
+ getAdminReviewers: {
109
+ method: "GET",
110
+ path: "/admin/reviewers"
111
+ },
112
+ validateReviewerProfile: {
113
+ method: "PUT",
114
+ path: "/:reviewerId/validate"
115
+ }
116
+ };
7
117
  const getReviewerAPI = (authAPIOptions = {}, intlayerConfig) => {
8
- const BASE = `${intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL}/api/reviewer`;
118
+ const backendURL = intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL ?? _intlayer_config_defaultValues.BACKEND_URL;
9
119
  const getMarketplace = (params = {}, otherOptions = {}) => {
10
120
  const searchParams = new URLSearchParams();
11
121
  for (const [key, value] of Object.entries(params)) {
@@ -16,7 +126,7 @@ const getReviewerAPI = (authAPIOptions = {}, intlayerConfig) => {
16
126
  else searchParams.append(key, String(value));
17
127
  }
18
128
  const query = searchParams.toString();
19
- return require_fetcher.fetcher(`${BASE}/marketplace${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
129
+ return require_fetcher.fetcher(`${(0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getMarketplace)}${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
20
130
  };
21
131
  const getPriceDistribution = (params = {}, otherOptions = {}) => {
22
132
  const searchParams = new URLSearchParams();
@@ -28,60 +138,61 @@ const getReviewerAPI = (authAPIOptions = {}, intlayerConfig) => {
28
138
  else searchParams.append(key, String(value));
29
139
  }
30
140
  const query = searchParams.toString();
31
- return require_fetcher.fetcher(`${BASE}/marketplace/price-distribution${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
141
+ return require_fetcher.fetcher(`${(0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getPriceDistribution)}${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
32
142
  };
33
- const getReviewerById = (reviewerId, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/${reviewerId}`, authAPIOptions, otherOptions, { method: "GET" });
143
+ const getReviewerById = (reviewerId, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getReviewerById, { reviewerId }), authAPIOptions, otherOptions, { method: reviewerEndpoints.getReviewerById.method });
34
144
  const getReviewerReviews = (reviewerId, params = {}, otherOptions = {}) => {
35
145
  const query = new URLSearchParams(Object.fromEntries(Object.entries(params).filter(([, v]) => v !== void 0).map(([k, v]) => [k, String(v)]))).toString();
36
- return require_fetcher.fetcher(`${BASE}/${reviewerId}/reviews${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
146
+ return require_fetcher.fetcher(`${(0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getReviewerReviews, { reviewerId })}${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
37
147
  };
38
- const getMyReviewerProfile = (otherOptions = {}) => require_fetcher.fetcher(`${BASE}/me`, authAPIOptions, otherOptions, { method: "GET" });
39
- const registerAsReviewer = (body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/register`, authAPIOptions, otherOptions, {
40
- method: "POST",
148
+ const getMyReviewerProfile = (otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getMyReviewerProfile), authAPIOptions, otherOptions, { method: reviewerEndpoints.getMyReviewerProfile.method });
149
+ const registerAsReviewer = (body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.registerAsReviewer), authAPIOptions, otherOptions, {
150
+ method: reviewerEndpoints.registerAsReviewer.method,
41
151
  body
42
152
  });
43
- const updateReviewerProfile = (body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/`, authAPIOptions, otherOptions, {
44
- method: "PUT",
153
+ const updateReviewerProfile = (body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.updateReviewerProfile), authAPIOptions, otherOptions, {
154
+ method: reviewerEndpoints.updateReviewerProfile.method,
45
155
  body
46
156
  });
47
- const deleteReviewerProfile = (otherOptions = {}) => require_fetcher.fetcher(BASE, authAPIOptions, otherOptions, { method: "DELETE" });
48
- const contactReviewer = (reviewerId, body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/${reviewerId}/contact`, authAPIOptions, otherOptions, {
49
- method: "POST",
157
+ const deleteReviewerProfile = (otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.deleteReviewerProfile), authAPIOptions, otherOptions, { method: reviewerEndpoints.deleteReviewerProfile.method });
158
+ const contactReviewer = (reviewerId, body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.contactReviewer, { reviewerId }), authAPIOptions, otherOptions, {
159
+ method: reviewerEndpoints.contactReviewer.method,
50
160
  body
51
161
  });
52
- const estimateMission = (body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/estimate`, authAPIOptions, otherOptions, {
53
- method: "POST",
162
+ const estimateMission = (body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.estimateMission), authAPIOptions, otherOptions, {
163
+ method: reviewerEndpoints.estimateMission.method,
54
164
  body
55
165
  });
56
- const createMission = (body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission`, authAPIOptions, otherOptions, {
57
- method: "POST",
166
+ const createMission = (body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.createMission), authAPIOptions, otherOptions, {
167
+ method: reviewerEndpoints.createMission.method,
58
168
  body
59
169
  });
60
170
  const getMyMissions = (params = {}, otherOptions = {}) => {
61
171
  const query = new URLSearchParams(Object.fromEntries(Object.entries(params).filter(([, v]) => v !== void 0).map(([k, v]) => [k, String(v)]))).toString();
62
- return require_fetcher.fetcher(`${BASE}/mission${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
172
+ return require_fetcher.fetcher(`${(0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getMyMissions)}${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
63
173
  };
64
- const getMissionById = (missionId, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/${missionId}`, authAPIOptions, otherOptions, { method: "GET" });
65
- const updateMissionStatus = (missionId, body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/${missionId}/status`, authAPIOptions, otherOptions, {
66
- method: "PUT",
174
+ const getMissionById = (missionId, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getMissionById, { missionId }), authAPIOptions, otherOptions, { method: reviewerEndpoints.getMissionById.method });
175
+ const updateMissionStatus = (missionId, body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.updateMissionStatus, { missionId }), authAPIOptions, otherOptions, {
176
+ method: reviewerEndpoints.updateMissionStatus.method,
67
177
  body
68
178
  });
69
- const submitReview = (missionId, body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/${missionId}/review`, authAPIOptions, otherOptions, {
70
- method: "POST",
179
+ const submitReview = (missionId, body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.submitReview, { missionId }), authAPIOptions, otherOptions, {
180
+ method: reviewerEndpoints.submitReview.method,
71
181
  body
72
182
  });
73
- const getChatHistory = (missionId, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/${missionId}/chat/history`, authAPIOptions, otherOptions, { method: "GET" });
74
- const sendMessage = (missionId, body, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/mission/${missionId}/chat`, authAPIOptions, otherOptions, {
75
- method: "POST",
183
+ const getChatHistory = (missionId, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getChatHistory, { missionId }), authAPIOptions, otherOptions, { method: reviewerEndpoints.getChatHistory.method });
184
+ const sendMessage = (missionId, body, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.sendMessage, { missionId }), authAPIOptions, otherOptions, {
185
+ method: reviewerEndpoints.sendMessage.method,
76
186
  body
77
187
  });
78
- const getChatStreamUrl = (missionId) => `${BASE}/mission/${missionId}/chat/stream`;
188
+ const getChatStreamUrl = (missionId) => (0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.chatSSE, { missionId });
79
189
  const uploadPicture = async (kind, file, otherOptions = {}) => {
80
190
  const buffer = await file.arrayBuffer();
81
191
  const baseHeaders = { "Content-Type": file.type || "image/jpeg" };
82
192
  const authHeaders = authAPIOptions.headers ?? {};
83
- const response = await fetch(`${BASE}/me/picture/${kind}`, {
84
- method: "POST",
193
+ const endpoint = kind === "main" ? reviewerEndpoints.uploadMainPicture : reviewerEndpoints.uploadCoverPicture;
194
+ const response = await fetch((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, endpoint), {
195
+ method: endpoint.method,
85
196
  credentials: "include",
86
197
  headers: {
87
198
  ...authHeaders,
@@ -98,10 +209,10 @@ const getReviewerAPI = (authAPIOptions = {}, intlayerConfig) => {
98
209
  };
99
210
  const uploadMainPicture = (file, otherOptions = {}) => uploadPicture("main", file, otherOptions);
100
211
  const uploadCoverPicture = (file, otherOptions = {}) => uploadPicture("cover", file, otherOptions);
101
- const validateReviewerProfile = (reviewerId, otherOptions = {}) => require_fetcher.fetcher(`${BASE}/${reviewerId}/validate`, authAPIOptions, otherOptions, { method: "PUT" });
212
+ const validateReviewerProfile = (reviewerId, otherOptions = {}) => require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.validateReviewerProfile, { reviewerId }), authAPIOptions, otherOptions, { method: reviewerEndpoints.validateReviewerProfile.method });
102
213
  const getAdminReviewers = (params = {}, otherOptions = {}) => {
103
214
  const query = new URLSearchParams(Object.fromEntries(Object.entries(params).filter(([, v]) => v !== void 0).map(([k, v]) => [k, String(v)]))).toString();
104
- return require_fetcher.fetcher(`${BASE}/admin/reviewers${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
215
+ return require_fetcher.fetcher(`${(0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, reviewerGroup, reviewerEndpoints.getAdminReviewers)}${query ? `?${query}` : ""}`, authAPIOptions, otherOptions, { method: "GET" });
105
216
  };
106
217
  return {
107
218
  getMarketplace,
@@ -1 +1 @@
1
- {"version":3,"file":"reviewer.cjs","names":["editor","fetcher","createEndpoint"],"sources":["../../../src/getIntlayerAPI/reviewer.ts"],"sourcesContent":["import type {\n CreateMissionBody,\n EstimateMissionBody,\n GetMarketplaceQuery,\n MissionEstimate,\n PaginatedResponse,\n PriceDistributionData,\n RegisterReviewerBody,\n ResponseData,\n ReviewerMessageAPI,\n ReviewerProfileAPI,\n ReviewerReviewAPI,\n SendMessageBody,\n SubmitReviewBody,\n TranslationMissionAPI,\n UpdateMissionStatusBody,\n UpdateReviewerBody,\n UploadReviewerPictureResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\nexport const getReviewerAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;\n const BASE = `${backendURL}/api/reviewer`;\n\n // ── Marketplace ────────────────────────────────────────────────────────────\n\n const getMarketplace = (\n params: GetMarketplaceQuery = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${BASE}/marketplace${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getPriceDistribution = (\n params: Pick<\n GetMarketplaceQuery,\n 'fromLocale' | 'toLocale' | 'minRating' | 'categories'\n > = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n return fetcher<ResponseData<PriceDistributionData>>(\n `${BASE}/marketplace/price-distribution${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getReviewerById = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/${reviewerId}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const getReviewerReviews = (\n reviewerId: string,\n params: { page?: number; pageSize?: number } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerReviewAPI>>(\n `${BASE}/${reviewerId}/reviews${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n // ── My profile ─────────────────────────────────────────────────────────────\n\n const getMyReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<ReviewerProfileAPI | null>>(\n `${BASE}/me`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const registerAsReviewer = (\n body: RegisterReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/register`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const updateReviewerProfile = (\n body: UpdateReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT', body }\n );\n\n const deleteReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<null>>(BASE, authAPIOptions, otherOptions, {\n method: 'DELETE',\n });\n\n // ── Contact ────────────────────────────────────────────────────────────────\n\n const contactReviewer = (\n reviewerId: string,\n body: { message: string },\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<null>>(\n `${BASE}/${reviewerId}/contact`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n // ── Missions ───────────────────────────────────────────────────────────────\n\n const estimateMission = (\n body: EstimateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<MissionEstimate>>(\n `${BASE}/mission/estimate`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const createMission = (\n body: CreateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const getMyMissions = (\n params: {\n role?: 'client' | 'reviewer';\n page?: number;\n pageSize?: number;\n } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<TranslationMissionAPI>>(\n `${BASE}/mission${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getMissionById = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission/${missionId}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const updateMissionStatus = (\n missionId: string,\n body: UpdateMissionStatusBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n `${BASE}/mission/${missionId}/status`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT', body }\n );\n\n // ── Reviews ────────────────────────────────────────────────────────────────\n\n const submitReview = (\n missionId: string,\n body: SubmitReviewBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerReviewAPI>>(\n `${BASE}/mission/${missionId}/review`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n // ── Chat ───────────────────────────────────────────────────────────────────\n\n const getChatHistory = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI[]>>(\n `${BASE}/mission/${missionId}/chat/history`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const sendMessage = (\n missionId: string,\n body: SendMessageBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI>>(\n `${BASE}/mission/${missionId}/chat`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const getChatStreamUrl = (missionId: string) =>\n `${BASE}/mission/${missionId}/chat/stream`;\n\n // ── Picture uploads ────────────────────────────────────────────────────────\n\n const uploadPicture = async (\n kind: 'main' | 'cover',\n file: File,\n otherOptions: FetcherOptions = {}\n ): Promise<UploadReviewerPictureResult> => {\n const buffer = await file.arrayBuffer();\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': file.type || 'image/jpeg',\n };\n\n const authHeaders =\n (authAPIOptions.headers as Record<string, string> | undefined) ?? {};\n\n const response = await fetch(`${BASE}/me/picture/${kind}`, {\n method: 'POST',\n credentials: 'include',\n headers: { ...authHeaders, ...baseHeaders },\n body: buffer,\n signal: otherOptions.signal as AbortSignal | undefined,\n });\n\n if (!response.ok) {\n const result = await response.json();\n throw new Error(JSON.stringify(result.error) ?? 'Picture upload failed');\n }\n\n return (await response.json()) as UploadReviewerPictureResult;\n };\n\n const uploadMainPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('main', file, otherOptions);\n\n const uploadCoverPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('cover', file, otherOptions);\n\n // ── Admin ──────────────────────────────────────────────────────────────────\n\n const validateReviewerProfile = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n `${BASE}/${reviewerId}/validate`,\n authAPIOptions,\n otherOptions,\n { method: 'PUT' }\n );\n\n const getAdminReviewers = (\n params: { page?: number; pageSize?: number; status?: string } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${BASE}/admin/reviewers${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n return {\n getMarketplace,\n getPriceDistribution,\n getReviewerById,\n getReviewerReviews,\n getMyReviewerProfile,\n registerAsReviewer,\n updateReviewerProfile,\n deleteReviewerProfile,\n estimateMission,\n createMission,\n getMyMissions,\n getMissionById,\n updateMissionStatus,\n submitReview,\n contactReviewer,\n getChatHistory,\n sendMessage,\n getChatStreamUrl,\n uploadMainPicture,\n uploadCoverPicture,\n validateReviewerProfile,\n getAdminReviewers,\n };\n};\n\n/**\n * Authenticated `reviewer` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const reviewerEndpoint = createEndpoint(getReviewerAPI);\n"],"mappings":"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"}
1
+ {"version":3,"file":"reviewer.cjs","names":["editor","BACKEND_URL","fetcher","buildRouteURL","createEndpoint"],"sources":["../../../src/getIntlayerAPI/reviewer.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n PaginatedResponse,\n ResponseData,\n} from '@intlayer/backend-contract/responseData';\nimport type {\n CreateMissionBody,\n EstimateMissionBody,\n GetMarketplaceQuery,\n MissionEstimate,\n PriceDistributionData,\n RegisterReviewerBody,\n ReviewerMessageAPI,\n ReviewerProfileAPI,\n ReviewerReviewAPI,\n ReviewerRoutes,\n reviewerContract,\n SendMessageBody,\n SubmitReviewBody,\n TranslationMissionAPI,\n UpdateMissionStatusBody,\n UpdateReviewerBody,\n UploadReviewerPictureResult,\n} from '@intlayer/backend-contract/reviewer';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Prefix of the routes, checked against the backend contract. */\nconst reviewerGroup = {\n prefix: '/api/reviewer',\n} as const satisfies Pick<typeof reviewerContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst reviewerEndpoints = {\n getMarketplace: { method: 'GET', path: '/marketplace' },\n getPriceDistribution: {\n method: 'GET',\n path: '/marketplace/price-distribution',\n },\n getMyReviewerProfile: { method: 'GET', path: '/me' },\n getReviewerReviews: { method: 'GET', path: '/:reviewerId/reviews' },\n getReviewerById: { method: 'GET', path: '/:reviewerId' },\n registerAsReviewer: { method: 'POST', path: '/register' },\n updateReviewerProfile: { method: 'PUT', path: '/' },\n deleteReviewerProfile: { method: 'DELETE', path: '/' },\n uploadMainPicture: { method: 'POST', path: '/me/picture/main' },\n uploadCoverPicture: { method: 'POST', path: '/me/picture/cover' },\n estimateMission: { method: 'POST', path: '/mission/estimate' },\n createMission: { method: 'POST', path: '/mission' },\n getMyMissions: { method: 'GET', path: '/mission' },\n getMissionById: { method: 'GET', path: '/mission/:missionId' },\n updateMissionStatus: { method: 'PUT', path: '/mission/:missionId/status' },\n submitReview: { method: 'POST', path: '/mission/:missionId/review' },\n getChatHistory: { method: 'GET', path: '/mission/:missionId/chat/history' },\n sendMessage: { method: 'POST', path: '/mission/:missionId/chat' },\n chatSSE: { method: 'GET', path: '/mission/:missionId/chat/stream' },\n createPaymentIntent: {\n method: 'POST',\n path: '/mission/:missionId/payment/intent',\n },\n confirmPayment: {\n method: 'POST',\n path: '/mission/:missionId/payment/confirm',\n },\n requestPayout: { method: 'POST', path: '/payout' },\n contactReviewer: { method: 'POST', path: '/:reviewerId/contact' },\n getAdminReviewers: { method: 'GET', path: '/admin/reviewers' },\n validateReviewerProfile: { method: 'PUT', path: '/:reviewerId/validate' },\n} as const satisfies RouteEndpoints<ReviewerRoutes>;\n\nexport const getReviewerAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n // ── Marketplace ────────────────────────────────────────────────────────────\n\n const getMarketplace = (\n params: GetMarketplaceQuery = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getMarketplace)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getPriceDistribution = (\n params: Pick<\n GetMarketplaceQuery,\n 'fromLocale' | 'toLocale' | 'minRating' | 'categories'\n > = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const searchParams = new URLSearchParams();\n for (const [key, value] of Object.entries(params)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((item) => {\n searchParams.append(key, String(item));\n });\n } else {\n searchParams.append(key, String(value));\n }\n }\n const query = searchParams.toString();\n return fetcher<ResponseData<PriceDistributionData>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getPriceDistribution)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getReviewerById = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getReviewerById,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getReviewerById.method }\n );\n\n const getReviewerReviews = (\n reviewerId: string,\n params: { page?: number; pageSize?: number } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerReviewAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getReviewerReviews, { reviewerId })}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n // ── My profile ─────────────────────────────────────────────────────────────\n\n const getMyReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<ReviewerProfileAPI | null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getMyReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getMyReviewerProfile.method }\n );\n\n const registerAsReviewer = (\n body: RegisterReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.registerAsReviewer\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.registerAsReviewer.method, body }\n );\n\n const updateReviewerProfile = (\n body: UpdateReviewerBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.updateReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.updateReviewerProfile.method, body }\n );\n\n const deleteReviewerProfile = (otherOptions: FetcherOptions = {}) =>\n fetcher<ResponseData<null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.deleteReviewerProfile\n ),\n authAPIOptions,\n otherOptions,\n {\n method: reviewerEndpoints.deleteReviewerProfile.method,\n }\n );\n\n // ── Contact ────────────────────────────────────────────────────────────────\n\n const contactReviewer = (\n reviewerId: string,\n body: { message: string },\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<null>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.contactReviewer,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.contactReviewer.method, body }\n );\n\n // ── Missions ───────────────────────────────────────────────────────────────\n\n const estimateMission = (\n body: EstimateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<MissionEstimate>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.estimateMission\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.estimateMission.method, body }\n );\n\n const createMission = (\n body: CreateMissionBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.createMission),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.createMission.method, body }\n );\n\n const getMyMissions = (\n params: {\n role?: 'client' | 'reviewer';\n page?: number;\n pageSize?: number;\n } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<TranslationMissionAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getMyMissions)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n const getMissionById = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getMissionById,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getMissionById.method }\n );\n\n const updateMissionStatus = (\n missionId: string,\n body: UpdateMissionStatusBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<TranslationMissionAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.updateMissionStatus,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.updateMissionStatus.method, body }\n );\n\n // ── Reviews ────────────────────────────────────────────────────────────────\n\n const submitReview = (\n missionId: string,\n body: SubmitReviewBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerReviewAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.submitReview, {\n missionId,\n }),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.submitReview.method, body }\n );\n\n // ── Chat ───────────────────────────────────────────────────────────────────\n\n const getChatHistory = (\n missionId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI[]>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.getChatHistory,\n { missionId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.getChatHistory.method }\n );\n\n const sendMessage = (\n missionId: string,\n body: SendMessageBody,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerMessageAPI>>(\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.sendMessage, {\n missionId,\n }),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.sendMessage.method, body }\n );\n\n const getChatStreamUrl = (missionId: string) =>\n buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.chatSSE, {\n missionId,\n });\n\n // ── Picture uploads ────────────────────────────────────────────────────────\n\n const uploadPicture = async (\n kind: 'main' | 'cover',\n file: File,\n otherOptions: FetcherOptions = {}\n ): Promise<UploadReviewerPictureResult> => {\n const buffer = await file.arrayBuffer();\n\n const baseHeaders: Record<string, string> = {\n 'Content-Type': file.type || 'image/jpeg',\n };\n\n const authHeaders =\n (authAPIOptions.headers as Record<string, string> | undefined) ?? {};\n\n const endpoint =\n kind === 'main'\n ? reviewerEndpoints.uploadMainPicture\n : reviewerEndpoints.uploadCoverPicture;\n const response = await fetch(\n buildRouteURL(backendURL, reviewerGroup, endpoint),\n {\n method: endpoint.method,\n credentials: 'include',\n headers: { ...authHeaders, ...baseHeaders },\n body: buffer,\n signal: otherOptions.signal as AbortSignal | undefined,\n }\n );\n\n if (!response.ok) {\n const result = await response.json();\n throw new Error(JSON.stringify(result.error) ?? 'Picture upload failed');\n }\n\n return (await response.json()) as UploadReviewerPictureResult;\n };\n\n const uploadMainPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('main', file, otherOptions);\n\n const uploadCoverPicture = (file: File, otherOptions: FetcherOptions = {}) =>\n uploadPicture('cover', file, otherOptions);\n\n // ── Admin ──────────────────────────────────────────────────────────────────\n\n const validateReviewerProfile = (\n reviewerId: string,\n otherOptions: FetcherOptions = {}\n ) =>\n fetcher<ResponseData<ReviewerProfileAPI>>(\n buildRouteURL(\n backendURL,\n reviewerGroup,\n reviewerEndpoints.validateReviewerProfile,\n { reviewerId }\n ),\n authAPIOptions,\n otherOptions,\n { method: reviewerEndpoints.validateReviewerProfile.method }\n );\n\n const getAdminReviewers = (\n params: { page?: number; pageSize?: number; status?: string } = {},\n otherOptions: FetcherOptions = {}\n ) => {\n const query = new URLSearchParams(\n Object.fromEntries(\n Object.entries(params)\n .filter(([, v]) => v !== undefined)\n .map(([k, v]) => [k, String(v)])\n )\n ).toString();\n return fetcher<PaginatedResponse<ReviewerProfileAPI>>(\n `${buildRouteURL(backendURL, reviewerGroup, reviewerEndpoints.getAdminReviewers)}${query ? `?${query}` : ''}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n };\n\n return {\n getMarketplace,\n getPriceDistribution,\n getReviewerById,\n getReviewerReviews,\n getMyReviewerProfile,\n registerAsReviewer,\n updateReviewerProfile,\n deleteReviewerProfile,\n estimateMission,\n createMission,\n getMyMissions,\n getMissionById,\n updateMissionStatus,\n submitReview,\n contactReviewer,\n getChatHistory,\n sendMessage,\n getChatStreamUrl,\n uploadMainPicture,\n uploadCoverPicture,\n validateReviewerProfile,\n getAdminReviewers,\n };\n};\n\n/**\n * Authenticated `reviewer` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const reviewerEndpoint = createEndpoint(getReviewerAPI);\n"],"mappings":"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"}
@@ -2,17 +2,29 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_fetcher = require('../fetcher.cjs');
3
3
  const require_cms_createIntlayerCMS = require('../cms/createIntlayerCMS.cjs');
4
4
  let _intlayer_config_built = require("@intlayer/config/built");
5
+ let _intlayer_backend_contract_defineRoute = require("@intlayer/backend-contract/defineRoute");
6
+ let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
5
7
 
6
8
  //#region src/getIntlayerAPI/search.ts
9
+ /** Prefix of the routes, checked against the backend contract. */
10
+ const searchGroup = { prefix: "/api/search" };
11
+ /**
12
+ * Method and path of every route, checked against the backend contract at
13
+ * compile time (the contract's zod schemas are never loaded).
14
+ */
15
+ const searchEndpoints = { doc: {
16
+ method: "GET",
17
+ path: "/doc"
18
+ } };
7
19
  const getSearchAPI = (authAPIOptions = {}, intlayerConfig) => {
8
- const AI_API_ROUTE = `${intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL}/api/search`;
20
+ const backendURL = intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL ?? _intlayer_config_defaultValues.BACKEND_URL;
9
21
  /**
10
22
  * Search documentation
11
23
  * @param params - Search parameters containing the input query.
12
24
  * @returns Search results with GitHub URLs.
13
25
  */
14
- const searchDoc = async (params, otherOptions = {}) => await require_fetcher.fetcher(`${AI_API_ROUTE}/doc`, authAPIOptions, otherOptions, {
15
- method: "GET",
26
+ const searchDoc = async (params, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, searchGroup, searchEndpoints.doc), authAPIOptions, otherOptions, {
27
+ method: searchEndpoints.doc.method,
16
28
  params
17
29
  });
18
30
  return { searchDoc };
@@ -1 +1 @@
1
- {"version":3,"file":"search.cjs","names":["editor","fetcher","createEndpoint"],"sources":["../../../src/getIntlayerAPI/search.ts"],"sourcesContent":["import type {\n SearchDocUtilParams,\n SearchDocUtilResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\nexport const getSearchAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;\n\n const AI_API_ROUTE = `${backendURL}/api/search`;\n\n /**\n * Search documentation\n * @param params - Search parameters containing the input query.\n * @returns Search results with GitHub URLs.\n */\n const searchDoc = async (\n params?: SearchDocUtilParams,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SearchDocUtilResult>(\n `${AI_API_ROUTE}/doc`,\n authAPIOptions,\n otherOptions,\n {\n method: 'GET',\n params: params,\n }\n );\n\n return {\n searchDoc,\n };\n};\n\n/**\n * Authenticated `search` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const searchEndpoint = createEndpoint(getSearchAPI);\n"],"mappings":";;;;;;AASA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CAGH,MAAM,eAAe,GAFF,gBAAgB,QAAQ,cAAcA,8BAAO,WAE7B;;;;;;CAOnC,MAAM,YAAY,OAChB,QACA,eAA+B,CAAC,MAEhC,MAAMC,wBACJ,GAAG,aAAa,OAChB,gBACA,cACA;EACE,QAAQ;EACA;CACV,CACF;CAEF,OAAO,EACL,UACF;AACF;;;;;;;AAQA,MAAa,iBAAiBC,6CAAe,YAAY"}
1
+ {"version":3,"file":"search.cjs","names":["editor","BACKEND_URL","fetcher","buildRouteURL","createEndpoint"],"sources":["../../../src/getIntlayerAPI/search.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n SearchDocUtilParams,\n SearchDocUtilResult,\n SearchRoutes,\n searchContract,\n} from '@intlayer/backend-contract/search';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Prefix of the routes, checked against the backend contract. */\nconst searchGroup = {\n prefix: '/api/search',\n} as const satisfies Pick<typeof searchContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst searchEndpoints = {\n doc: { method: 'GET', path: '/doc' },\n} as const satisfies RouteEndpoints<SearchRoutes>;\n\nexport const getSearchAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n /**\n * Search documentation\n * @param params - Search parameters containing the input query.\n * @returns Search results with GitHub URLs.\n */\n const searchDoc = async (\n params?: SearchDocUtilParams,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SearchDocUtilResult>(\n buildRouteURL(backendURL, searchGroup, searchEndpoints.doc),\n authAPIOptions,\n otherOptions,\n {\n method: searchEndpoints.doc.method,\n params: params,\n }\n );\n\n return {\n searchDoc,\n };\n};\n\n/**\n * Authenticated `search` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const searchEndpoint = createEndpoint(getSearchAPI);\n"],"mappings":";;;;;;;;;AAeA,MAAM,cAAc,EAClB,QAAQ,cACV;;;;;AAMA,MAAM,kBAAkB,EACtB,KAAK;CAAE,QAAQ;CAAO,MAAM;AAAO,EACrC;AAEA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CACH,MAAM,aACJ,gBAAgB,QAAQ,cAAcA,8BAAO,cAAcC;;;;;;CAO7D,MAAM,YAAY,OAChB,QACA,eAA+B,CAAC,MAEhC,MAAMC,4BACJC,sDAAc,YAAY,aAAa,gBAAgB,GAAG,GAC1D,gBACA,cACA;EACE,QAAQ,gBAAgB,IAAI;EACpB;CACV,CACF;CAEF,OAAO,EACL,UACF;AACF;;;;;;;AAQA,MAAa,iBAAiBC,6CAAe,YAAY"}
@@ -2,10 +2,56 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_fetcher = require('../fetcher.cjs');
3
3
  const require_cms_createIntlayerCMS = require('../cms/createIntlayerCMS.cjs');
4
4
  let _intlayer_config_built = require("@intlayer/config/built");
5
+ let _intlayer_backend_contract_defineRoute = require("@intlayer/backend-contract/defineRoute");
6
+ let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
5
7
 
6
8
  //#region src/getIntlayerAPI/showcaseProject.ts
9
+ /** Prefix of the routes, checked against the backend contract. */
10
+ const showcaseProjectGroup = { prefix: "/api/showcase-project" };
11
+ /**
12
+ * Method and path of every route, checked against the backend contract at
13
+ * compile time (the contract's zod schemas are never loaded).
14
+ */
15
+ const showcaseProjectEndpoints = {
16
+ getShowcaseProjects: {
17
+ method: "GET",
18
+ path: "/"
19
+ },
20
+ submitShowcaseProject: {
21
+ method: "POST",
22
+ path: "/submit"
23
+ },
24
+ getOtherShowcaseProjects: {
25
+ method: "GET",
26
+ path: "/others"
27
+ },
28
+ toggleShowcaseUpvote: {
29
+ method: "POST",
30
+ path: "/upvote"
31
+ },
32
+ toggleShowcaseDownvote: {
33
+ method: "POST",
34
+ path: "/downvote"
35
+ },
36
+ getShowcaseProjectById: {
37
+ method: "GET",
38
+ path: "/:projectId"
39
+ },
40
+ scanShowcaseProject: {
41
+ method: "GET",
42
+ path: "/:projectId/scan"
43
+ },
44
+ deleteShowcaseProject: {
45
+ method: "DELETE",
46
+ path: "/:projectId"
47
+ },
48
+ updateShowcaseProject: {
49
+ method: "PATCH",
50
+ path: "/:projectId"
51
+ }
52
+ };
7
53
  const getShowcaseProjectAPI = (authAPIOptions = {}, intlayerConfig) => {
8
- const SHOWCASE_API_ROUTE = `${intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL}/api/showcase-project`;
54
+ const backendURL = intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL ?? _intlayer_config_defaultValues.BACKEND_URL;
9
55
  const getShowcaseProjects = async (query, otherOptions = {}) => {
10
56
  const params = {};
11
57
  if (query?.page !== void 0) params.page = String(query.page);
@@ -13,35 +59,35 @@ const getShowcaseProjectAPI = (authAPIOptions = {}, intlayerConfig) => {
13
59
  if (query?.search !== void 0) params.search = query.search;
14
60
  if (query?.isOpenSource !== void 0) params.isOpenSource = String(query.isOpenSource);
15
61
  if (query?.selectedUseCases?.length) params.selectedUseCases = query.selectedUseCases;
16
- return await require_fetcher.fetcher(SHOWCASE_API_ROUTE, authAPIOptions, otherOptions, {
17
- method: "GET",
62
+ return await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getShowcaseProjects), authAPIOptions, otherOptions, {
63
+ method: showcaseProjectEndpoints.getShowcaseProjects.method,
18
64
  params
19
65
  });
20
66
  };
21
- const getShowcaseProjectById = async (projectId, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/${projectId}`, authAPIOptions, otherOptions, { method: "GET" });
67
+ const getShowcaseProjectById = async (projectId, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getShowcaseProjectById, { projectId }), authAPIOptions, otherOptions, { method: showcaseProjectEndpoints.getShowcaseProjectById.method });
22
68
  const getOtherShowcaseProjects = async (query, otherOptions = {}) => {
23
69
  const params = { excludeId: query.excludeId };
24
70
  if (query.limit !== void 0) params.limit = String(query.limit);
25
- return await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/others`, authAPIOptions, otherOptions, {
26
- method: "GET",
71
+ return await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.getOtherShowcaseProjects), authAPIOptions, otherOptions, {
72
+ method: showcaseProjectEndpoints.getOtherShowcaseProjects.method,
27
73
  params
28
74
  });
29
75
  };
30
- const submitShowcaseProject = async (body, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/submit`, authAPIOptions, otherOptions, {
31
- method: "POST",
76
+ const submitShowcaseProject = async (body, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.submitShowcaseProject), authAPIOptions, otherOptions, {
77
+ method: showcaseProjectEndpoints.submitShowcaseProject.method,
32
78
  body
33
79
  });
34
- const toggleShowcaseUpvote = async (body, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/upvote`, authAPIOptions, otherOptions, {
35
- method: "POST",
80
+ const toggleShowcaseUpvote = async (body, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.toggleShowcaseUpvote), authAPIOptions, otherOptions, {
81
+ method: showcaseProjectEndpoints.toggleShowcaseUpvote.method,
36
82
  body
37
83
  });
38
- const toggleShowcaseDownvote = async (body, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/downvote`, authAPIOptions, otherOptions, {
39
- method: "POST",
84
+ const toggleShowcaseDownvote = async (body, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.toggleShowcaseDownvote), authAPIOptions, otherOptions, {
85
+ method: showcaseProjectEndpoints.toggleShowcaseDownvote.method,
40
86
  body
41
87
  });
42
- const deleteShowcaseProject = async (projectId, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/${projectId}`, authAPIOptions, otherOptions, { method: "DELETE" });
43
- const updateShowcaseProject = async (projectId, body, otherOptions = {}) => await require_fetcher.fetcher(`${SHOWCASE_API_ROUTE}/${projectId}`, authAPIOptions, otherOptions, {
44
- method: "PATCH",
88
+ const deleteShowcaseProject = async (projectId, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.deleteShowcaseProject, { projectId }), authAPIOptions, otherOptions, { method: showcaseProjectEndpoints.deleteShowcaseProject.method });
89
+ const updateShowcaseProject = async (projectId, body, otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, showcaseProjectGroup, showcaseProjectEndpoints.updateShowcaseProject, { projectId }), authAPIOptions, otherOptions, {
90
+ method: showcaseProjectEndpoints.updateShowcaseProject.method,
45
91
  body
46
92
  });
47
93
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"showcaseProject.cjs","names":["editor","fetcher","createEndpoint"],"sources":["../../../src/getIntlayerAPI/showcaseProject.ts"],"sourcesContent":["import type {\n GetOtherShowcaseProjectsResult,\n GetShowcaseProjectByIdParams,\n GetShowcaseProjectByIdResult,\n GetShowcaseProjectsResult,\n SubmitShowcaseProjectBody,\n SubmitShowcaseProjectResult,\n ToggleShowcaseDownvoteBody,\n ToggleShowcaseDownvoteResult,\n ToggleShowcaseUpvoteBody,\n ToggleShowcaseUpvoteResult,\n UpdateShowcaseProjectBody,\n UpdateShowcaseProjectResult,\n} from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n// Client-side query types use proper JS types (numbers/booleans) rather than\n// the backend querystring types which are always strings.\nexport type ShowcaseProjectsQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n selectedUseCases?: string[];\n isOpenSource?: boolean;\n};\n\nexport type OtherShowcaseProjectsQuery = {\n excludeId: string;\n limit?: number;\n};\n\nexport const getShowcaseProjectAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;\n\n const SHOWCASE_API_ROUTE = `${backendURL}/api/showcase-project`;\n\n const getShowcaseProjects = async (\n query?: ShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string | string[]> = {};\n if (query?.page !== undefined) params.page = String(query.page);\n if (query?.pageSize !== undefined) params.pageSize = String(query.pageSize);\n if (query?.search !== undefined) params.search = query.search;\n if (query?.isOpenSource !== undefined)\n params.isOpenSource = String(query.isOpenSource);\n if (query?.selectedUseCases?.length)\n params.selectedUseCases = query.selectedUseCases;\n\n return await fetcher<GetShowcaseProjectsResult>(\n SHOWCASE_API_ROUTE,\n authAPIOptions,\n otherOptions,\n { method: 'GET', params: params as any }\n );\n };\n\n const getShowcaseProjectById = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<GetShowcaseProjectByIdResult>(\n `${SHOWCASE_API_ROUTE}/${projectId}`,\n authAPIOptions,\n otherOptions,\n { method: 'GET' }\n );\n\n const getOtherShowcaseProjects = async (\n query: OtherShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string> = { excludeId: query.excludeId };\n if (query.limit !== undefined) params.limit = String(query.limit);\n return await fetcher<GetOtherShowcaseProjectsResult>(\n `${SHOWCASE_API_ROUTE}/others`,\n authAPIOptions,\n otherOptions,\n { method: 'GET', params: params as any }\n );\n };\n\n const submitShowcaseProject = async (\n body: SubmitShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SubmitShowcaseProjectResult>(\n `${SHOWCASE_API_ROUTE}/submit`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const toggleShowcaseUpvote = async (\n body: ToggleShowcaseUpvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseUpvoteResult>(\n `${SHOWCASE_API_ROUTE}/upvote`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const toggleShowcaseDownvote = async (\n body: ToggleShowcaseDownvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseDownvoteResult>(\n `${SHOWCASE_API_ROUTE}/downvote`,\n authAPIOptions,\n otherOptions,\n { method: 'POST', body }\n );\n\n const deleteShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<{ data: { success: boolean } }>(\n `${SHOWCASE_API_ROUTE}/${projectId}`,\n authAPIOptions,\n otherOptions,\n { method: 'DELETE' }\n );\n\n const updateShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n body: UpdateShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<UpdateShowcaseProjectResult>(\n `${SHOWCASE_API_ROUTE}/${projectId}`,\n authAPIOptions,\n otherOptions,\n { method: 'PATCH', body }\n );\n\n return {\n getShowcaseProjects,\n getShowcaseProjectById,\n getOtherShowcaseProjects,\n submitShowcaseProject,\n toggleShowcaseUpvote,\n toggleShowcaseDownvote,\n deleteShowcaseProject,\n updateShowcaseProject,\n };\n};\n\n/**\n * Authenticated `showcaseProject` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const showcaseProjectEndpoint = createEndpoint(getShowcaseProjectAPI);\n"],"mappings":";;;;;;AAkCA,MAAa,yBACX,iBAAiC,CAAC,GAClC,mBACG;CAGH,MAAM,qBAAqB,GAFR,gBAAgB,QAAQ,cAAcA,8BAAO,WAEvB;CAEzC,MAAM,sBAAsB,OAC1B,OACA,eAA+B,CAAC,MAC7B;EACH,MAAM,SAA4C,CAAC;EACnD,IAAI,OAAO,SAAS,QAAW,OAAO,OAAO,OAAO,MAAM,IAAI;EAC9D,IAAI,OAAO,aAAa,QAAW,OAAO,WAAW,OAAO,MAAM,QAAQ;EAC1E,IAAI,OAAO,WAAW,QAAW,OAAO,SAAS,MAAM;EACvD,IAAI,OAAO,iBAAiB,QAC1B,OAAO,eAAe,OAAO,MAAM,YAAY;EACjD,IAAI,OAAO,kBAAkB,QAC3B,OAAO,mBAAmB,MAAM;EAElC,OAAO,MAAMC,wBACX,oBACA,gBACA,cACA;GAAE,QAAQ;GAAe;EAAc,CACzC;CACF;CAEA,MAAM,yBAAyB,OAC7B,WACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,GAAG,aACzB,gBACA,cACA,EAAE,QAAQ,MAAM,CAClB;CAEF,MAAM,2BAA2B,OAC/B,OACA,eAA+B,CAAC,MAC7B;EACH,MAAM,SAAiC,EAAE,WAAW,MAAM,UAAU;EACpE,IAAI,MAAM,UAAU,QAAW,OAAO,QAAQ,OAAO,MAAM,KAAK;EAChE,OAAO,MAAMA,wBACX,GAAG,mBAAmB,UACtB,gBACA,cACA;GAAE,QAAQ;GAAe;EAAc,CACzC;CACF;CAEA,MAAM,wBAAwB,OAC5B,MACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,UACtB,gBACA,cACA;EAAE,QAAQ;EAAQ;CAAK,CACzB;CAEF,MAAM,uBAAuB,OAC3B,MACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,UACtB,gBACA,cACA;EAAE,QAAQ;EAAQ;CAAK,CACzB;CAEF,MAAM,yBAAyB,OAC7B,MACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,YACtB,gBACA,cACA;EAAE,QAAQ;EAAQ;CAAK,CACzB;CAEF,MAAM,wBAAwB,OAC5B,WACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,GAAG,aACzB,gBACA,cACA,EAAE,QAAQ,SAAS,CACrB;CAEF,MAAM,wBAAwB,OAC5B,WACA,MACA,eAA+B,CAAC,MAEhC,MAAMA,wBACJ,GAAG,mBAAmB,GAAG,aACzB,gBACA,cACA;EAAE,QAAQ;EAAS;CAAK,CAC1B;CAEF,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF;AACF;;;;;;;AAQA,MAAa,0BAA0BC,6CAAe,qBAAqB"}
1
+ {"version":3,"file":"showcaseProject.cjs","names":["editor","BACKEND_URL","fetcher","buildRouteURL","createEndpoint"],"sources":["../../../src/getIntlayerAPI/showcaseProject.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n GetOtherShowcaseProjectsResult,\n GetShowcaseProjectByIdParams,\n GetShowcaseProjectByIdResult,\n GetShowcaseProjectsResult,\n ShowcaseProjectRoutes,\n SubmitShowcaseProjectBody,\n SubmitShowcaseProjectResult,\n showcaseProjectContract,\n ToggleShowcaseDownvoteBody,\n ToggleShowcaseDownvoteResult,\n ToggleShowcaseUpvoteBody,\n ToggleShowcaseUpvoteResult,\n UpdateShowcaseProjectBody,\n UpdateShowcaseProjectResult,\n} from '@intlayer/backend-contract/showcaseProject';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n// Client-side query types use proper JS types (numbers/booleans) rather than\n// the backend querystring types which are always strings.\nexport type ShowcaseProjectsQuery = {\n page?: number;\n pageSize?: number;\n search?: string;\n selectedUseCases?: string[];\n isOpenSource?: boolean;\n};\n\nexport type OtherShowcaseProjectsQuery = {\n excludeId: string;\n limit?: number;\n};\n\n/** Prefix of the routes, checked against the backend contract. */\nconst showcaseProjectGroup = {\n prefix: '/api/showcase-project',\n} as const satisfies Pick<typeof showcaseProjectContract, 'prefix'>;\n\n/**\n * Method and path of every route, checked against the backend contract at\n * compile time (the contract's zod schemas are never loaded).\n */\nconst showcaseProjectEndpoints = {\n getShowcaseProjects: { method: 'GET', path: '/' },\n submitShowcaseProject: { method: 'POST', path: '/submit' },\n getOtherShowcaseProjects: { method: 'GET', path: '/others' },\n toggleShowcaseUpvote: { method: 'POST', path: '/upvote' },\n toggleShowcaseDownvote: { method: 'POST', path: '/downvote' },\n getShowcaseProjectById: { method: 'GET', path: '/:projectId' },\n scanShowcaseProject: { method: 'GET', path: '/:projectId/scan' },\n deleteShowcaseProject: { method: 'DELETE', path: '/:projectId' },\n updateShowcaseProject: { method: 'PATCH', path: '/:projectId' },\n} as const satisfies RouteEndpoints<ShowcaseProjectRoutes>;\n\nexport const getShowcaseProjectAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n const getShowcaseProjects = async (\n query?: ShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string | string[]> = {};\n if (query?.page !== undefined) params.page = String(query.page);\n if (query?.pageSize !== undefined) params.pageSize = String(query.pageSize);\n if (query?.search !== undefined) params.search = query.search;\n if (query?.isOpenSource !== undefined)\n params.isOpenSource = String(query.isOpenSource);\n if (query?.selectedUseCases?.length)\n params.selectedUseCases = query.selectedUseCases;\n\n return await fetcher<GetShowcaseProjectsResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getShowcaseProjects\n ),\n authAPIOptions,\n otherOptions,\n {\n method: showcaseProjectEndpoints.getShowcaseProjects.method,\n params: params as any,\n }\n );\n };\n\n const getShowcaseProjectById = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<GetShowcaseProjectByIdResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getShowcaseProjectById,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.getShowcaseProjectById.method }\n );\n\n const getOtherShowcaseProjects = async (\n query: OtherShowcaseProjectsQuery,\n otherOptions: FetcherOptions = {}\n ) => {\n const params: Record<string, string> = { excludeId: query.excludeId };\n if (query.limit !== undefined) params.limit = String(query.limit);\n return await fetcher<GetOtherShowcaseProjectsResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.getOtherShowcaseProjects\n ),\n authAPIOptions,\n otherOptions,\n {\n method: showcaseProjectEndpoints.getOtherShowcaseProjects.method,\n params: params as any,\n }\n );\n };\n\n const submitShowcaseProject = async (\n body: SubmitShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<SubmitShowcaseProjectResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.submitShowcaseProject\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.submitShowcaseProject.method, body }\n );\n\n const toggleShowcaseUpvote = async (\n body: ToggleShowcaseUpvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseUpvoteResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.toggleShowcaseUpvote\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.toggleShowcaseUpvote.method, body }\n );\n\n const toggleShowcaseDownvote = async (\n body: ToggleShowcaseDownvoteBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<ToggleShowcaseDownvoteResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.toggleShowcaseDownvote\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.toggleShowcaseDownvote.method, body }\n );\n\n const deleteShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<{ data: { success: boolean } }>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.deleteShowcaseProject,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.deleteShowcaseProject.method }\n );\n\n const updateShowcaseProject = async (\n projectId: GetShowcaseProjectByIdParams['projectId'],\n body: UpdateShowcaseProjectBody,\n otherOptions: FetcherOptions = {}\n ) =>\n await fetcher<UpdateShowcaseProjectResult>(\n buildRouteURL(\n backendURL,\n showcaseProjectGroup,\n showcaseProjectEndpoints.updateShowcaseProject,\n { projectId }\n ),\n authAPIOptions,\n otherOptions,\n { method: showcaseProjectEndpoints.updateShowcaseProject.method, body }\n );\n\n return {\n getShowcaseProjects,\n getShowcaseProjectById,\n getOtherShowcaseProjects,\n submitShowcaseProject,\n toggleShowcaseUpvote,\n toggleShowcaseDownvote,\n deleteShowcaseProject,\n updateShowcaseProject,\n };\n};\n\n/**\n * Authenticated `showcaseProject` endpoint bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const showcaseProjectEndpoint = createEndpoint(getShowcaseProjectAPI);\n"],"mappings":"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"}
@@ -2,8 +2,21 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_fetcher = require('../fetcher.cjs');
3
3
  const require_cms_createIntlayerCMS = require('../cms/createIntlayerCMS.cjs');
4
4
  let _intlayer_config_built = require("@intlayer/config/built");
5
+ let _intlayer_backend_contract_defineRoute = require("@intlayer/backend-contract/defineRoute");
6
+ let _intlayer_config_defaultValues = require("@intlayer/config/defaultValues");
5
7
 
6
8
  //#region src/getIntlayerAPI/status.ts
9
+ /** Routes used here, checked against the backend contract. */
10
+ const userGroup = { prefix: "/api/user" };
11
+ const setupStatusEndpoint = {
12
+ method: "GET",
13
+ path: "/setup"
14
+ };
15
+ const demoGroup = { prefix: "/api/demo" };
16
+ const demoEndpoints = { getDemoSession: {
17
+ method: "GET",
18
+ path: "/session"
19
+ } };
7
20
  /**
8
21
  * Instance/entry status endpoints. These back the decisions made when an
9
22
  * unauthenticated visitor reaches the app root:
@@ -14,21 +27,21 @@ let _intlayer_config_built = require("@intlayer/config/built");
14
27
  * response).
15
28
  */
16
29
  const getStatusAPI = (authAPIOptions = {}, intlayerConfig) => {
17
- const backendURL = intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL;
30
+ const backendURL = intlayerConfig?.editor?.backendURL ?? _intlayer_config_built.editor.backendURL ?? _intlayer_config_defaultValues.BACKEND_URL;
18
31
  /**
19
32
  * Reports whether the instance still needs its initial setup (creation of
20
33
  * the first super-admin). Only ever `true` on a self-hosted deployment with
21
34
  * an empty users collection. Public endpoint — no authentication required.
22
35
  * @returns `{ isSetupRequired: boolean }`.
23
36
  */
24
- const getSetupStatus = async (otherOptions = {}) => await require_fetcher.fetcher(`${backendURL}/api/user/setup`, authAPIOptions, otherOptions, { cache: "no-store" });
37
+ const getSetupStatus = async (otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, userGroup, setupStatusEndpoint), authAPIOptions, otherOptions, { cache: "no-store" });
25
38
  /**
26
39
  * Signs the current browser into the shared demo account. The backend
27
40
  * responds with a `Set-Cookie` header establishing the demo session, so this
28
41
  * must run with credentials included (the default in the fetcher).
29
42
  * @returns `{ ok: boolean }`.
30
43
  */
31
- const getDemoSession = async (otherOptions = {}) => await require_fetcher.fetcher(`${backendURL}/api/demo/session`, authAPIOptions, otherOptions, { cache: "no-store" });
44
+ const getDemoSession = async (otherOptions = {}) => await require_fetcher.fetcher((0, _intlayer_backend_contract_defineRoute.buildRouteURL)(backendURL, demoGroup, demoEndpoints.getDemoSession), authAPIOptions, otherOptions, { cache: "no-store" });
32
45
  return {
33
46
  getSetupStatus,
34
47
  getDemoSession
@@ -1 +1 @@
1
- {"version":3,"file":"status.cjs","names":["editor","fetcher","createEndpoint"],"sources":["../../../src/getIntlayerAPI/status.ts"],"sourcesContent":["import type { GetSetupStatusResult } from '@intlayer/backend';\nimport { editor } from '@intlayer/config/built';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Result of the demo-session bootstrap endpoint. */\nexport type GetDemoSessionResult = { ok: boolean };\n\n/**\n * Instance/entry status endpoints. These back the decisions made when an\n * unauthenticated visitor reaches the app root:\n * - `getSetupStatus` — on a self-hosted instance, whether the first\n * super-admin still needs to be created.\n * - `getDemoSession` — on the hosted cloud, signs the visitor into the shared\n * read-only demo account (the backend sets the session cookie on the\n * response).\n */\nexport const getStatusAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL = intlayerConfig?.editor?.backendURL ?? editor.backendURL;\n\n /**\n * Reports whether the instance still needs its initial setup (creation of\n * the first super-admin). Only ever `true` on a self-hosted deployment with\n * an empty users collection. Public endpoint — no authentication required.\n * @returns `{ isSetupRequired: boolean }`.\n */\n const getSetupStatus = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetSetupStatusResult>(\n `${backendURL}/api/user/setup`,\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n /**\n * Signs the current browser into the shared demo account. The backend\n * responds with a `Set-Cookie` header establishing the demo session, so this\n * must run with credentials included (the default in the fetcher).\n * @returns `{ ok: boolean }`.\n */\n const getDemoSession = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetDemoSessionResult>(\n `${backendURL}/api/demo/session`,\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n return {\n getSetupStatus,\n getDemoSession,\n };\n};\n\n/**\n * Instance status endpoints bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const statusEndpoint = createEndpoint(getStatusAPI);\n"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CACH,MAAM,aAAa,gBAAgB,QAAQ,cAAcA,8BAAO;;;;;;;CAQhE,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAMC,wBACJ,GAAG,WAAW,kBACd,gBACA,cACA,EACE,OAAO,WACT,CACF;;;;;;;CAQF,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAMA,wBACJ,GAAG,WAAW,oBACd,gBACA,cACA,EACE,OAAO,WACT,CACF;CAEF,OAAO;EACL;EACA;CACF;AACF;;;;;;;AAQA,MAAa,iBAAiBC,6CAAe,YAAY"}
1
+ {"version":3,"file":"status.cjs","names":["editor","BACKEND_URL","fetcher","buildRouteURL","createEndpoint"],"sources":["../../../src/getIntlayerAPI/status.ts"],"sourcesContent":["import type { RouteEndpoints } from '@intlayer/backend-contract/defineRoute';\nimport { buildRouteURL } from '@intlayer/backend-contract/defineRoute';\nimport type {\n DemoRoutes,\n demoContract,\n GetDemoSessionResult,\n} from '@intlayer/backend-contract/demo';\nimport type {\n GetSetupStatusResult,\n UserRoutes,\n userContract,\n} from '@intlayer/backend-contract/user';\nimport { editor } from '@intlayer/config/built';\nimport { BACKEND_URL } from '@intlayer/config/defaultValues';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { createEndpoint } from '../cms/createIntlayerCMS';\nimport { type FetcherOptions, fetcher } from '../fetcher';\n\n/** Result of the demo-session bootstrap endpoint. */\nexport type { GetDemoSessionResult };\n\n/** Routes used here, checked against the backend contract. */\nconst userGroup = {\n prefix: '/api/user',\n} as const satisfies Pick<typeof userContract, 'prefix'>;\nconst setupStatusEndpoint = {\n method: 'GET',\n path: '/setup',\n} as const satisfies Pick<UserRoutes['getSetupStatus'], 'method' | 'path'>;\nconst demoGroup = {\n prefix: '/api/demo',\n} as const satisfies Pick<typeof demoContract, 'prefix'>;\nconst demoEndpoints = {\n getDemoSession: { method: 'GET', path: '/session' },\n} as const satisfies RouteEndpoints<DemoRoutes>;\n\n/**\n * Instance/entry status endpoints. These back the decisions made when an\n * unauthenticated visitor reaches the app root:\n * - `getSetupStatus` — on a self-hosted instance, whether the first\n * super-admin still needs to be created.\n * - `getDemoSession` — on the hosted cloud, signs the visitor into the shared\n * read-only demo account (the backend sets the session cookie on the\n * response).\n */\nexport const getStatusAPI = (\n authAPIOptions: FetcherOptions = {},\n intlayerConfig?: IntlayerConfig\n) => {\n const backendURL =\n intlayerConfig?.editor?.backendURL ?? editor.backendURL ?? BACKEND_URL;\n\n /**\n * Reports whether the instance still needs its initial setup (creation of\n * the first super-admin). Only ever `true` on a self-hosted deployment with\n * an empty users collection. Public endpoint — no authentication required.\n * @returns `{ isSetupRequired: boolean }`.\n */\n const getSetupStatus = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetSetupStatusResult>(\n buildRouteURL(backendURL, userGroup, setupStatusEndpoint),\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n /**\n * Signs the current browser into the shared demo account. The backend\n * responds with a `Set-Cookie` header establishing the demo session, so this\n * must run with credentials included (the default in the fetcher).\n * @returns `{ ok: boolean }`.\n */\n const getDemoSession = async (otherOptions: FetcherOptions = {}) =>\n await fetcher<GetDemoSessionResult>(\n buildRouteURL(backendURL, demoGroup, demoEndpoints.getDemoSession),\n authAPIOptions,\n otherOptions,\n {\n cache: 'no-store',\n }\n );\n\n return {\n getSetupStatus,\n getDemoSession,\n };\n};\n\n/**\n * Instance status endpoints bound to an Intlayer CMS authenticator.\n *\n * Pass an authenticator created with `createIntlayerCMS`, or omit it to use\n * the build-time configuration (`@intlayer/config/built`).\n */\nexport const statusEndpoint = createEndpoint(getStatusAPI);\n"],"mappings":";;;;;;;;;AAsBA,MAAM,YAAY,EAChB,QAAQ,YACV;AACA,MAAM,sBAAsB;CAC1B,QAAQ;CACR,MAAM;AACR;AACA,MAAM,YAAY,EAChB,QAAQ,YACV;AACA,MAAM,gBAAgB,EACpB,gBAAgB;CAAE,QAAQ;CAAO,MAAM;AAAW,EACpD;;;;;;;;;;AAWA,MAAa,gBACX,iBAAiC,CAAC,GAClC,mBACG;CACH,MAAM,aACJ,gBAAgB,QAAQ,cAAcA,8BAAO,cAAcC;;;;;;;CAQ7D,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAMC,4BACJC,sDAAc,YAAY,WAAW,mBAAmB,GACxD,gBACA,cACA,EACE,OAAO,WACT,CACF;;;;;;;CAQF,MAAM,iBAAiB,OAAO,eAA+B,CAAC,MAC5D,MAAMD,4BACJC,sDAAc,YAAY,WAAW,cAAc,cAAc,GACjE,gBACA,cACA,EACE,OAAO,WACT,CACF;CAEF,OAAO;EACL;EACA;CACF;AACF;;;;;;;AAQA,MAAa,iBAAiBC,6CAAe,YAAY"}