@contractspec/bundle.marketing 1.12.0 → 1.14.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 (262) hide show
  1. package/.turbo/turbo-build.log +146 -175
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +57 -0
  4. package/dist/browser/components/marketing/ChangelogPage.js +92 -0
  5. package/dist/browser/components/marketing/CofounderPage.js +581 -0
  6. package/dist/browser/components/marketing/ContactClient.js +1379 -0
  7. package/dist/browser/components/marketing/ContributePage.js +487 -0
  8. package/dist/browser/components/marketing/DesignPartnerPage.js +272 -0
  9. package/dist/browser/components/marketing/LandingPage.js +629 -0
  10. package/dist/browser/components/marketing/PricingClient.js +1972 -0
  11. package/dist/browser/components/marketing/ProductClientPage.js +563 -0
  12. package/dist/browser/components/marketing/index.js +4818 -0
  13. package/dist/browser/components/marketing/pricing-thinking-modal.js +258 -0
  14. package/dist/browser/components/marketing/sections/AudienceSection.js +90 -0
  15. package/dist/browser/components/marketing/sections/CorePositioningSection.js +72 -0
  16. package/dist/browser/components/marketing/sections/CtaSection.js +67 -0
  17. package/dist/browser/components/marketing/sections/DevelopersSection.js +50 -0
  18. package/dist/browser/components/marketing/sections/FearsSection.js +105 -0
  19. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +93 -0
  20. package/dist/browser/components/marketing/sections/IconGridSection.js +63 -0
  21. package/dist/browser/components/marketing/sections/OutputsSection.js +116 -0
  22. package/dist/browser/components/marketing/sections/ProblemSection.js +103 -0
  23. package/dist/browser/components/marketing/sections/SolutionSection.js +103 -0
  24. package/dist/browser/components/marketing/sections/StepsSection.js +109 -0
  25. package/dist/browser/components/marketing/waitlist-section.js +1104 -0
  26. package/dist/browser/components/templates/TemplatesClientPage.js +5662 -0
  27. package/dist/browser/components/templates/TemplatesPage.js +177 -0
  28. package/dist/browser/components/templates/TemplatesPreviewModal.js +124 -0
  29. package/dist/browser/components/templates/index.js +5831 -0
  30. package/dist/browser/index.js +6485 -0
  31. package/dist/browser/libs/email/client.js +122 -0
  32. package/dist/browser/libs/email/contact.js +190 -0
  33. package/dist/browser/libs/email/newsletter.js +215 -0
  34. package/dist/browser/libs/email/types.js +2 -0
  35. package/dist/browser/libs/email/utils.js +16 -0
  36. package/dist/browser/libs/email/waitlist-application.js +295 -0
  37. package/dist/browser/libs/email/waitlist.js +225 -0
  38. package/dist/browser/libs/pricing-examples.js +26 -0
  39. package/dist/browser/registry/engine.js +5293 -0
  40. package/dist/browser/registry/factory.js +52 -0
  41. package/dist/browser/registry/index.js +5358 -0
  42. package/dist/browser/registry/registry-docs.js +343 -0
  43. package/dist/browser/registry/registry-landing.js +4937 -0
  44. package/dist/browser/registry/registry.js +5279 -0
  45. package/dist/browser/registry/types.js +0 -0
  46. package/dist/browser/registry/utils.js +5340 -0
  47. package/dist/components/marketing/ChangelogPage.d.ts +11 -17
  48. package/dist/components/marketing/ChangelogPage.d.ts.map +1 -1
  49. package/dist/components/marketing/ChangelogPage.js +84 -62
  50. package/dist/components/marketing/CofounderPage.d.ts +1 -6
  51. package/dist/components/marketing/CofounderPage.d.ts.map +1 -1
  52. package/dist/components/marketing/CofounderPage.js +544 -436
  53. package/dist/components/marketing/ContactClient.d.ts +1 -6
  54. package/dist/components/marketing/ContactClient.d.ts.map +1 -1
  55. package/dist/components/marketing/ContactClient.js +1371 -155
  56. package/dist/components/marketing/ContributePage.d.ts +3 -8
  57. package/dist/components/marketing/ContributePage.d.ts.map +1 -1
  58. package/dist/components/marketing/ContributePage.js +478 -358
  59. package/dist/components/marketing/DesignPartnerPage.d.ts +3 -8
  60. package/dist/components/marketing/DesignPartnerPage.d.ts.map +1 -1
  61. package/dist/components/marketing/DesignPartnerPage.js +263 -211
  62. package/dist/components/marketing/LandingPage.d.ts +1 -6
  63. package/dist/components/marketing/LandingPage.d.ts.map +1 -1
  64. package/dist/components/marketing/LandingPage.js +623 -37
  65. package/dist/components/marketing/PricingClient.d.ts +1 -6
  66. package/dist/components/marketing/PricingClient.d.ts.map +1 -1
  67. package/dist/components/marketing/PricingClient.js +1962 -516
  68. package/dist/components/marketing/ProductClientPage.d.ts +1 -6
  69. package/dist/components/marketing/ProductClientPage.d.ts.map +1 -1
  70. package/dist/components/marketing/ProductClientPage.js +556 -458
  71. package/dist/components/marketing/index.d.ts +11 -11
  72. package/dist/components/marketing/index.d.ts.map +1 -0
  73. package/dist/components/marketing/index.js +4813 -12
  74. package/dist/components/marketing/pricing-thinking-modal.d.ts +5 -13
  75. package/dist/components/marketing/pricing-thinking-modal.d.ts.map +1 -1
  76. package/dist/components/marketing/pricing-thinking-modal.js +248 -197
  77. package/dist/components/marketing/sections/AudienceSection.d.ts +1 -6
  78. package/dist/components/marketing/sections/AudienceSection.d.ts.map +1 -1
  79. package/dist/components/marketing/sections/AudienceSection.js +80 -63
  80. package/dist/components/marketing/sections/CorePositioningSection.d.ts +1 -6
  81. package/dist/components/marketing/sections/CorePositioningSection.d.ts.map +1 -1
  82. package/dist/components/marketing/sections/CorePositioningSection.js +62 -54
  83. package/dist/components/marketing/sections/CtaSection.d.ts +1 -6
  84. package/dist/components/marketing/sections/CtaSection.d.ts.map +1 -1
  85. package/dist/components/marketing/sections/CtaSection.js +58 -50
  86. package/dist/components/marketing/sections/DevelopersSection.d.ts +1 -6
  87. package/dist/components/marketing/sections/DevelopersSection.d.ts.map +1 -1
  88. package/dist/components/marketing/sections/DevelopersSection.js +40 -40
  89. package/dist/components/marketing/sections/FearsSection.d.ts +1 -6
  90. package/dist/components/marketing/sections/FearsSection.d.ts.map +1 -1
  91. package/dist/components/marketing/sections/FearsSection.js +96 -44
  92. package/dist/components/marketing/sections/HeroMarketingSection.d.ts +1 -6
  93. package/dist/components/marketing/sections/HeroMarketingSection.d.ts.map +1 -1
  94. package/dist/components/marketing/sections/HeroMarketingSection.js +82 -71
  95. package/dist/components/marketing/sections/IconGridSection.d.ts +25 -39
  96. package/dist/components/marketing/sections/IconGridSection.d.ts.map +1 -1
  97. package/dist/components/marketing/sections/IconGridSection.js +55 -41
  98. package/dist/components/marketing/sections/OutputsSection.d.ts +1 -6
  99. package/dist/components/marketing/sections/OutputsSection.d.ts.map +1 -1
  100. package/dist/components/marketing/sections/OutputsSection.js +107 -55
  101. package/dist/components/marketing/sections/ProblemSection.d.ts +1 -6
  102. package/dist/components/marketing/sections/ProblemSection.d.ts.map +1 -1
  103. package/dist/components/marketing/sections/ProblemSection.js +94 -42
  104. package/dist/components/marketing/sections/SolutionSection.d.ts +1 -6
  105. package/dist/components/marketing/sections/SolutionSection.d.ts.map +1 -1
  106. package/dist/components/marketing/sections/SolutionSection.js +94 -42
  107. package/dist/components/marketing/sections/StepsSection.d.ts +1 -6
  108. package/dist/components/marketing/sections/StepsSection.d.ts.map +1 -1
  109. package/dist/components/marketing/sections/StepsSection.js +100 -48
  110. package/dist/components/marketing/waitlist-section.d.ts +5 -12
  111. package/dist/components/marketing/waitlist-section.d.ts.map +1 -1
  112. package/dist/components/marketing/waitlist-section.js +1089 -568
  113. package/dist/components/templates/TemplatesClientPage.d.ts +1 -6
  114. package/dist/components/templates/TemplatesClientPage.d.ts.map +1 -1
  115. package/dist/components/templates/TemplatesClientPage.js +5649 -617
  116. package/dist/components/templates/TemplatesPage.d.ts +1 -6
  117. package/dist/components/templates/TemplatesPage.d.ts.map +1 -1
  118. package/dist/components/templates/TemplatesPage.js +163 -116
  119. package/dist/components/templates/TemplatesPreviewModal.d.ts +5 -12
  120. package/dist/components/templates/TemplatesPreviewModal.d.ts.map +1 -1
  121. package/dist/components/templates/TemplatesPreviewModal.js +113 -131
  122. package/dist/components/templates/index.d.ts +4 -4
  123. package/dist/components/templates/index.d.ts.map +1 -0
  124. package/dist/components/templates/index.js +5825 -4
  125. package/dist/index.d.ts +9 -29
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +6480 -28
  128. package/dist/libs/email/client.d.ts +9 -12
  129. package/dist/libs/email/client.d.ts.map +1 -1
  130. package/dist/libs/email/client.js +109 -105
  131. package/dist/libs/email/client.test.d.ts +2 -0
  132. package/dist/libs/email/client.test.d.ts.map +1 -0
  133. package/dist/libs/email/contact.d.ts +2 -6
  134. package/dist/libs/email/contact.d.ts.map +1 -1
  135. package/dist/libs/email/contact.js +155 -41
  136. package/dist/libs/email/newsletter.d.ts +2 -6
  137. package/dist/libs/email/newsletter.d.ts.map +1 -1
  138. package/dist/libs/email/newsletter.js +169 -54
  139. package/dist/libs/email/types.d.ts +48 -52
  140. package/dist/libs/email/types.d.ts.map +1 -1
  141. package/dist/libs/email/types.js +3 -1
  142. package/dist/libs/email/utils.d.ts +2 -5
  143. package/dist/libs/email/utils.d.ts.map +1 -1
  144. package/dist/libs/email/utils.js +10 -6
  145. package/dist/libs/email/waitlist-application.d.ts +2 -6
  146. package/dist/libs/email/waitlist-application.d.ts.map +1 -1
  147. package/dist/libs/email/waitlist-application.js +191 -71
  148. package/dist/libs/email/waitlist.d.ts +2 -6
  149. package/dist/libs/email/waitlist.d.ts.map +1 -1
  150. package/dist/libs/email/waitlist.js +171 -56
  151. package/dist/libs/pricing-examples.d.ts +13 -16
  152. package/dist/libs/pricing-examples.d.ts.map +1 -1
  153. package/dist/libs/pricing-examples.js +20 -20
  154. package/dist/node/components/marketing/ChangelogPage.js +87 -0
  155. package/dist/node/components/marketing/CofounderPage.js +576 -0
  156. package/dist/node/components/marketing/ContactClient.js +1374 -0
  157. package/dist/node/components/marketing/ContributePage.js +482 -0
  158. package/dist/node/components/marketing/DesignPartnerPage.js +267 -0
  159. package/dist/node/components/marketing/LandingPage.js +624 -0
  160. package/dist/node/components/marketing/PricingClient.js +1967 -0
  161. package/dist/node/components/marketing/ProductClientPage.js +558 -0
  162. package/dist/node/components/marketing/index.js +4813 -0
  163. package/dist/node/components/marketing/pricing-thinking-modal.js +253 -0
  164. package/dist/node/components/marketing/sections/AudienceSection.js +85 -0
  165. package/dist/node/components/marketing/sections/CorePositioningSection.js +67 -0
  166. package/dist/node/components/marketing/sections/CtaSection.js +62 -0
  167. package/dist/node/components/marketing/sections/DevelopersSection.js +45 -0
  168. package/dist/node/components/marketing/sections/FearsSection.js +100 -0
  169. package/dist/node/components/marketing/sections/HeroMarketingSection.js +88 -0
  170. package/dist/node/components/marketing/sections/IconGridSection.js +58 -0
  171. package/dist/node/components/marketing/sections/OutputsSection.js +111 -0
  172. package/dist/node/components/marketing/sections/ProblemSection.js +98 -0
  173. package/dist/node/components/marketing/sections/SolutionSection.js +98 -0
  174. package/dist/node/components/marketing/sections/StepsSection.js +104 -0
  175. package/dist/node/components/marketing/waitlist-section.js +1099 -0
  176. package/dist/node/components/templates/TemplatesClientPage.js +5657 -0
  177. package/dist/node/components/templates/TemplatesPage.js +172 -0
  178. package/dist/node/components/templates/TemplatesPreviewModal.js +119 -0
  179. package/dist/node/components/templates/index.js +5826 -0
  180. package/dist/node/index.js +6480 -0
  181. package/dist/node/libs/email/client.js +117 -0
  182. package/dist/node/libs/email/contact.js +185 -0
  183. package/dist/node/libs/email/newsletter.js +210 -0
  184. package/dist/node/libs/email/types.js +2 -0
  185. package/dist/node/libs/email/utils.js +11 -0
  186. package/dist/node/libs/email/waitlist-application.js +290 -0
  187. package/dist/node/libs/email/waitlist.js +220 -0
  188. package/dist/node/libs/pricing-examples.js +21 -0
  189. package/dist/node/registry/engine.js +5288 -0
  190. package/dist/node/registry/factory.js +47 -0
  191. package/dist/node/registry/index.js +5353 -0
  192. package/dist/node/registry/registry-docs.js +338 -0
  193. package/dist/node/registry/registry-landing.js +4932 -0
  194. package/dist/node/registry/registry.js +5274 -0
  195. package/dist/node/registry/types.js +0 -0
  196. package/dist/node/registry/utils.js +5335 -0
  197. package/dist/registry/engine.d.ts +4 -8
  198. package/dist/registry/engine.d.ts.map +1 -1
  199. package/dist/registry/engine.js +5287 -23
  200. package/dist/registry/factory.d.ts +30 -34
  201. package/dist/registry/factory.d.ts.map +1 -1
  202. package/dist/registry/factory.js +42 -56
  203. package/dist/registry/index.d.ts +8 -8
  204. package/dist/registry/index.d.ts.map +1 -0
  205. package/dist/registry/index.js +5353 -8
  206. package/dist/registry/registry-docs.d.ts +4 -8
  207. package/dist/registry/registry-docs.d.ts.map +1 -1
  208. package/dist/registry/registry-docs.js +242 -209
  209. package/dist/registry/registry-landing.d.ts +5 -9
  210. package/dist/registry/registry-landing.d.ts.map +1 -1
  211. package/dist/registry/registry-landing.js +4930 -93
  212. package/dist/registry/registry.d.ts +7 -11
  213. package/dist/registry/registry.d.ts.map +1 -1
  214. package/dist/registry/registry.js +5262 -49
  215. package/dist/registry/types.d.ts +6 -10
  216. package/dist/registry/types.d.ts.map +1 -1
  217. package/dist/registry/types.js +1 -0
  218. package/dist/registry/utils.d.ts +10 -14
  219. package/dist/registry/utils.d.ts.map +1 -1
  220. package/dist/registry/utils.js +5330 -49
  221. package/package.json +355 -73
  222. package/tsdown.config.js +1 -2
  223. package/.turbo/turbo-build$colon$types.log +0 -1
  224. package/.turbo/turbo-lint.log +0 -3
  225. package/dist/components/marketing/ChangelogPage.js.map +0 -1
  226. package/dist/components/marketing/CofounderPage.js.map +0 -1
  227. package/dist/components/marketing/ContactClient.js.map +0 -1
  228. package/dist/components/marketing/ContributePage.js.map +0 -1
  229. package/dist/components/marketing/DesignPartnerPage.js.map +0 -1
  230. package/dist/components/marketing/LandingPage.js.map +0 -1
  231. package/dist/components/marketing/PricingClient.js.map +0 -1
  232. package/dist/components/marketing/ProductClientPage.js.map +0 -1
  233. package/dist/components/marketing/pricing-thinking-modal.js.map +0 -1
  234. package/dist/components/marketing/sections/AudienceSection.js.map +0 -1
  235. package/dist/components/marketing/sections/CorePositioningSection.js.map +0 -1
  236. package/dist/components/marketing/sections/CtaSection.js.map +0 -1
  237. package/dist/components/marketing/sections/DevelopersSection.js.map +0 -1
  238. package/dist/components/marketing/sections/FearsSection.js.map +0 -1
  239. package/dist/components/marketing/sections/HeroMarketingSection.js.map +0 -1
  240. package/dist/components/marketing/sections/IconGridSection.js.map +0 -1
  241. package/dist/components/marketing/sections/OutputsSection.js.map +0 -1
  242. package/dist/components/marketing/sections/ProblemSection.js.map +0 -1
  243. package/dist/components/marketing/sections/SolutionSection.js.map +0 -1
  244. package/dist/components/marketing/sections/StepsSection.js.map +0 -1
  245. package/dist/components/marketing/waitlist-section.js.map +0 -1
  246. package/dist/components/templates/TemplatesClientPage.js.map +0 -1
  247. package/dist/components/templates/TemplatesPage.js.map +0 -1
  248. package/dist/components/templates/TemplatesPreviewModal.js.map +0 -1
  249. package/dist/libs/email/client.js.map +0 -1
  250. package/dist/libs/email/contact.js.map +0 -1
  251. package/dist/libs/email/newsletter.js.map +0 -1
  252. package/dist/libs/email/utils.js.map +0 -1
  253. package/dist/libs/email/waitlist-application.js.map +0 -1
  254. package/dist/libs/email/waitlist.js.map +0 -1
  255. package/dist/libs/pricing-examples.js.map +0 -1
  256. package/dist/registry/engine.js.map +0 -1
  257. package/dist/registry/factory.js.map +0 -1
  258. package/dist/registry/registry-docs.js.map +0 -1
  259. package/dist/registry/registry-landing.js.map +0 -1
  260. package/dist/registry/registry.js.map +0 -1
  261. package/dist/registry/utils.js.map +0 -1
  262. package/tsconfig.tsbuildinfo +0 -1
@@ -1,15 +1,12 @@
1
- import { EmailConfigResult, EmailSendOutcome, EmailServiceConfig, SendEmailRequest } from "./types.js";
2
- import { Temv1alpha1, createClient } from "@scaleway/sdk";
3
-
4
- //#region src/libs/email/client.d.ts
1
+ import { createClient, Temv1alpha1 } from '@scaleway/sdk';
2
+ import type { EmailConfigResult, EmailSendOutcome, EmailServiceConfig, SendEmailRequest } from './types';
5
3
  type EmailApi = Pick<Temv1alpha1.API, 'createEmail'>;
6
- declare const getEmailConfig: () => EmailConfigResult;
7
- declare const sendEmail: (config: EmailServiceConfig, request: SendEmailRequest) => Promise<EmailSendOutcome>;
8
- declare const __internal: {
9
- resetCaches(): void;
10
- setApiFactory(factory: (client: ReturnType<typeof createClient>) => EmailApi): void;
11
- setClient(client: EmailApi): void;
4
+ export declare const getEmailConfig: () => EmailConfigResult;
5
+ export declare const sendEmail: (config: EmailServiceConfig, request: SendEmailRequest) => Promise<EmailSendOutcome>;
6
+ export declare const __internal: {
7
+ resetCaches(): void;
8
+ setApiFactory(factory: (client: ReturnType<typeof createClient>) => EmailApi): void;
9
+ setClient(client: EmailApi): void;
12
10
  };
13
- //#endregion
14
- export { __internal, getEmailConfig, sendEmail };
11
+ export {};
15
12
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/libs/email/client.ts"],"mappings":";;;;KAuBK,QAAA,GAAW,IAAA,CAAK,WAAA,CAAY,GAAA;AAAA,cAgBpB,cAAA,QAAqB,iBAAA;AAAA,cAyDrB,SAAA,GACX,MAAA,EAAQ,kBAAA,EACR,OAAA,EAAS,gBAAA,KACR,OAAA,CAAQ,gBAAA;AAAA,cA+BE,UAAA;;0BAQC,MAAA,EAAQ,UAAA,QAAkB,YAAA,MAAkB,QAAA;oBAItC,QAAA;AAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/libs/email/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG1D,OAAO,KAAK,EAEV,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAcjB,KAAK,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;AAgBrD,eAAO,MAAM,cAAc,QAAO,iBAsCjC,CAAC;AAmBF,eAAO,MAAM,SAAS,GACpB,QAAQ,kBAAkB,EAC1B,SAAS,gBAAgB,KACxB,OAAO,CAAC,gBAAgB,CA6B1B,CAAC;AAEF,eAAO,MAAM,UAAU;;2BAQV,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,KAAK,QAAQ;sBAI9C,QAAQ;CAG3B,CAAC"}
@@ -1,113 +1,117 @@
1
- import { Temv1alpha1, createClient } from "@scaleway/sdk";
2
- import { Logger } from "@contractspec/lib.logger";
1
+ // @bun
2
+ var __require = import.meta.require;
3
3
 
4
- //#region src/libs/email/client.ts
5
- const DEFAULT_FROM = {
6
- email: "noreply@transactional.contractspec.io",
7
- name: "ContractSpec"
4
+ // src/libs/email/client.ts
5
+ import { createClient, Temv1alpha1 } from "@scaleway/sdk";
6
+ import { Logger } from "@contractspec/lib.logger";
7
+ var DEFAULT_FROM = {
8
+ email: "noreply@transactional.contractspec.io",
9
+ name: "ContractSpec"
8
10
  };
9
- const DEFAULT_TEAM_INBOX = {
10
- email: "contact@contractspec.io",
11
- name: "ContractSpec Team"
11
+ var DEFAULT_TEAM_INBOX = {
12
+ email: "contact@contractspec.io",
13
+ name: "ContractSpec Team"
12
14
  };
13
- const DEFAULT_REGION = "fr-par";
14
- let cachedConfig = null;
15
- let cachedClient = null;
16
- let apiFactory = (client) => new Temv1alpha1.API(client);
17
- const mapRegion = (value) => {
18
- const normalized = value?.trim().toLowerCase();
19
- if (normalized === "par" || normalized === "fr-par") return "fr-par";
20
- if (normalized === "ams" || normalized === "nl-ams") return "nl-ams";
21
- if (normalized === "waw" || normalized === "pl-waw") return "pl-waw";
22
- return DEFAULT_REGION;
15
+ var DEFAULT_REGION = "fr-par";
16
+ var cachedConfig = null;
17
+ var cachedClient = null;
18
+ var apiFactory = (client) => new Temv1alpha1.API(client);
19
+ var mapRegion = (value) => {
20
+ const normalized = value?.trim().toLowerCase();
21
+ if (normalized === "par" || normalized === "fr-par")
22
+ return "fr-par";
23
+ if (normalized === "ams" || normalized === "nl-ams")
24
+ return "nl-ams";
25
+ if (normalized === "waw" || normalized === "pl-waw")
26
+ return "pl-waw";
27
+ return DEFAULT_REGION;
23
28
  };
24
- const getEmailConfig = () => {
25
- if (cachedConfig) return {
26
- ok: true,
27
- config: cachedConfig
28
- };
29
- const accessKey = process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;
30
- const secretKey = process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;
31
- const projectId = process.env.SCALEWAY_PROJECT_ID;
32
- if (!accessKey || !secretKey || !projectId) return {
33
- ok: false,
34
- errorMessage: "Email service is not configured. Please contact us directly at contact@contractspec.io."
35
- };
36
- const region = mapRegion(process.env.SCALEWAY_REGION);
37
- cachedConfig = {
38
- accessKey,
39
- secretKey,
40
- projectId,
41
- region,
42
- defaultZone: `${region}-1`,
43
- from: {
44
- email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,
45
- name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name
46
- },
47
- teamInbox: {
48
- email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,
49
- name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name
50
- }
51
- };
52
- return {
53
- ok: true,
54
- config: cachedConfig
55
- };
29
+ var getEmailConfig = () => {
30
+ if (cachedConfig) {
31
+ return { ok: true, config: cachedConfig };
32
+ }
33
+ const accessKey = process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;
34
+ const secretKey = process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;
35
+ const projectId = process.env.SCALEWAY_PROJECT_ID;
36
+ if (!accessKey || !secretKey || !projectId) {
37
+ return {
38
+ ok: false,
39
+ errorMessage: "Email service is not configured. Please contact us directly at contact@contractspec.io."
40
+ };
41
+ }
42
+ const region = mapRegion(process.env.SCALEWAY_REGION);
43
+ cachedConfig = {
44
+ accessKey,
45
+ secretKey,
46
+ projectId,
47
+ region,
48
+ defaultZone: `${region}-1`,
49
+ from: {
50
+ email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,
51
+ name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name
52
+ },
53
+ teamInbox: {
54
+ email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,
55
+ name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name
56
+ }
57
+ };
58
+ return { ok: true, config: cachedConfig };
56
59
  };
57
- const getTemClient = (config) => {
58
- if (cachedClient) return cachedClient;
59
- const client = createClient({
60
- accessKey: config.accessKey,
61
- secretKey: config.secretKey,
62
- defaultProjectId: config.projectId,
63
- defaultRegion: config.region,
64
- defaultZone: config.defaultZone
65
- });
66
- cachedClient = apiFactory(client);
67
- return cachedClient;
60
+ var getTemClient = (config) => {
61
+ if (cachedClient) {
62
+ return cachedClient;
63
+ }
64
+ const client = createClient({
65
+ accessKey: config.accessKey,
66
+ secretKey: config.secretKey,
67
+ defaultProjectId: config.projectId,
68
+ defaultRegion: config.region,
69
+ defaultZone: config.defaultZone
70
+ });
71
+ cachedClient = apiFactory(client);
72
+ return cachedClient;
68
73
  };
69
- const sendEmail = async (config, request) => {
70
- try {
71
- await getTemClient(config).createEmail({
72
- region: config.region,
73
- projectId: config.projectId,
74
- from: config.from,
75
- to: request.to,
76
- subject: request.subject,
77
- text: request.text,
78
- html: request.html || request.text,
79
- additionalHeaders: request.replyTo ? [{
80
- key: "Reply-To",
81
- value: request.replyTo
82
- }] : void 0
83
- });
84
- return { success: true };
85
- } catch (error) {
86
- new Logger().error("scaleway_tem_email_send_failed", {
87
- context: request.context ?? "email",
88
- error: error instanceof Error ? error.message : error
89
- });
90
- return {
91
- success: false,
92
- error,
93
- errorMessage: "Failed to send email via Scaleway."
94
- };
95
- }
74
+ var sendEmail = async (config, request) => {
75
+ try {
76
+ const client = getTemClient(config);
77
+ await client.createEmail({
78
+ region: config.region,
79
+ projectId: config.projectId,
80
+ from: config.from,
81
+ to: request.to,
82
+ subject: request.subject,
83
+ text: request.text,
84
+ html: request.html || request.text,
85
+ additionalHeaders: request.replyTo ? [{ key: "Reply-To", value: request.replyTo }] : undefined
86
+ });
87
+ return { success: true };
88
+ } catch (error) {
89
+ new Logger().error("scaleway_tem_email_send_failed", {
90
+ context: request.context ?? "email",
91
+ error: error instanceof Error ? error.message : error
92
+ });
93
+ return {
94
+ success: false,
95
+ error,
96
+ errorMessage: "Failed to send email via Scaleway."
97
+ };
98
+ }
96
99
  };
97
- const __internal = {
98
- resetCaches() {
99
- cachedClient = null;
100
- cachedConfig = null;
101
- apiFactory = (client) => new Temv1alpha1.API(client);
102
- },
103
- setApiFactory(factory) {
104
- apiFactory = factory;
105
- },
106
- setClient(client) {
107
- cachedClient = client;
108
- }
100
+ var __internal = {
101
+ resetCaches() {
102
+ cachedClient = null;
103
+ cachedConfig = null;
104
+ apiFactory = (client) => new Temv1alpha1.API(client);
105
+ },
106
+ setApiFactory(factory) {
107
+ apiFactory = factory;
108
+ },
109
+ setClient(client) {
110
+ cachedClient = client;
111
+ }
112
+ };
113
+ export {
114
+ sendEmail,
115
+ getEmailConfig,
116
+ __internal
109
117
  };
110
-
111
- //#endregion
112
- export { __internal, getEmailConfig, sendEmail };
113
- //# sourceMappingURL=client.js.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=client.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../../../src/libs/email/client.test.ts"],"names":[],"mappings":""}
@@ -1,7 +1,3 @@
1
- import { SubmitContactFormResult } from "./types.js";
2
-
3
- //#region src/libs/email/contact.d.ts
4
- declare const submitContactForm: (formData: FormData) => Promise<SubmitContactFormResult>;
5
- //#endregion
6
- export { submitContactForm };
1
+ import type { SubmitContactFormResult } from './types';
2
+ export declare const submitContactForm: (formData: FormData) => Promise<SubmitContactFormResult>;
7
3
  //# sourceMappingURL=contact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contact.d.ts","names":[],"sources":["../../../src/libs/email/contact.ts"],"mappings":";;;cAWa,iBAAA,GACX,QAAA,EAAU,QAAA,KACT,OAAA,CAAQ,uBAAA"}
1
+ {"version":3,"file":"contact.d.ts","sourceRoot":"","sources":["../../../src/libs/email/contact.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAOvD,eAAO,MAAM,iBAAiB,GAC5B,UAAU,QAAQ,KACjB,OAAO,CAAC,uBAAuB,CAkEjC,CAAC"}
@@ -1,26 +1,144 @@
1
- 'use server';
1
+ // @bun
2
+ var __require = import.meta.require;
2
3
 
3
- import { getEmailConfig, sendEmail } from "./client.js";
4
- import { escapeHtml, formatMultilineHtml } from "./utils.js";
4
+ // src/libs/email/client.ts
5
+ import { createClient, Temv1alpha1 } from "@scaleway/sdk";
6
+ import { Logger } from "@contractspec/lib.logger";
7
+ var DEFAULT_FROM = {
8
+ email: "noreply@transactional.contractspec.io",
9
+ name: "ContractSpec"
10
+ };
11
+ var DEFAULT_TEAM_INBOX = {
12
+ email: "contact@contractspec.io",
13
+ name: "ContractSpec Team"
14
+ };
15
+ var DEFAULT_REGION = "fr-par";
16
+ var cachedConfig = null;
17
+ var cachedClient = null;
18
+ var apiFactory = (client) => new Temv1alpha1.API(client);
19
+ var mapRegion = (value) => {
20
+ const normalized = value?.trim().toLowerCase();
21
+ if (normalized === "par" || normalized === "fr-par")
22
+ return "fr-par";
23
+ if (normalized === "ams" || normalized === "nl-ams")
24
+ return "nl-ams";
25
+ if (normalized === "waw" || normalized === "pl-waw")
26
+ return "pl-waw";
27
+ return DEFAULT_REGION;
28
+ };
29
+ var getEmailConfig = () => {
30
+ if (cachedConfig) {
31
+ return { ok: true, config: cachedConfig };
32
+ }
33
+ const accessKey = process.env.SCALEWAY_ACCESS_KEY || process.env.SCALEWAY_ACCESS_KEY_QUEUE;
34
+ const secretKey = process.env.SCALEWAY_SECRET_KEY || process.env.SCALEWAY_SECRET_KEY_QUEUE;
35
+ const projectId = process.env.SCALEWAY_PROJECT_ID;
36
+ if (!accessKey || !secretKey || !projectId) {
37
+ return {
38
+ ok: false,
39
+ errorMessage: "Email service is not configured. Please contact us directly at contact@contractspec.io."
40
+ };
41
+ }
42
+ const region = mapRegion(process.env.SCALEWAY_REGION);
43
+ cachedConfig = {
44
+ accessKey,
45
+ secretKey,
46
+ projectId,
47
+ region,
48
+ defaultZone: `${region}-1`,
49
+ from: {
50
+ email: process.env.SCALEWAY_EMAIL_FROM_EMAIL ?? DEFAULT_FROM.email,
51
+ name: process.env.SCALEWAY_EMAIL_FROM_NAME ?? DEFAULT_FROM.name
52
+ },
53
+ teamInbox: {
54
+ email: process.env.SCALEWAY_EMAIL_TEAM_EMAIL ?? DEFAULT_TEAM_INBOX.email,
55
+ name: process.env.SCALEWAY_EMAIL_TEAM_NAME ?? DEFAULT_TEAM_INBOX.name
56
+ }
57
+ };
58
+ return { ok: true, config: cachedConfig };
59
+ };
60
+ var getTemClient = (config) => {
61
+ if (cachedClient) {
62
+ return cachedClient;
63
+ }
64
+ const client = createClient({
65
+ accessKey: config.accessKey,
66
+ secretKey: config.secretKey,
67
+ defaultProjectId: config.projectId,
68
+ defaultRegion: config.region,
69
+ defaultZone: config.defaultZone
70
+ });
71
+ cachedClient = apiFactory(client);
72
+ return cachedClient;
73
+ };
74
+ var sendEmail = async (config, request) => {
75
+ try {
76
+ const client = getTemClient(config);
77
+ await client.createEmail({
78
+ region: config.region,
79
+ projectId: config.projectId,
80
+ from: config.from,
81
+ to: request.to,
82
+ subject: request.subject,
83
+ text: request.text,
84
+ html: request.html || request.text,
85
+ additionalHeaders: request.replyTo ? [{ key: "Reply-To", value: request.replyTo }] : undefined
86
+ });
87
+ return { success: true };
88
+ } catch (error) {
89
+ new Logger().error("scaleway_tem_email_send_failed", {
90
+ context: request.context ?? "email",
91
+ error: error instanceof Error ? error.message : error
92
+ });
93
+ return {
94
+ success: false,
95
+ error,
96
+ errorMessage: "Failed to send email via Scaleway."
97
+ };
98
+ }
99
+ };
100
+ var __internal = {
101
+ resetCaches() {
102
+ cachedClient = null;
103
+ cachedConfig = null;
104
+ apiFactory = (client) => new Temv1alpha1.API(client);
105
+ },
106
+ setApiFactory(factory) {
107
+ apiFactory = factory;
108
+ },
109
+ setClient(client) {
110
+ cachedClient = client;
111
+ }
112
+ };
113
+
114
+ // src/libs/email/utils.ts
115
+ var escapeHtml = (value) => value.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
116
+ var formatMultilineHtml = (value) => escapeHtml(value).replaceAll(`
117
+ `, "<br />");
5
118
 
6
- //#region src/libs/email/contact.ts
7
- const CONTACT_MISSING_CONFIG = "Email service is not configured. Please contact us directly at contact@contractspec.io.";
8
- const CONTACT_SEND_ERROR = "Failed to send message. Please contact us directly at contact@contractspec.io.";
9
- const submitContactForm = async (formData) => {
10
- const name = (formData.get("name") ?? "").toString().trim();
11
- const email = (formData.get("email") ?? "").toString().trim();
12
- const message = (formData.get("message") ?? "").toString().trim();
13
- if (!email) return {
14
- success: false,
15
- text: "Please fill in all required fields."
16
- };
17
- const configResult = getEmailConfig();
18
- if (!configResult.ok || !configResult.config) return {
19
- success: false,
20
- text: configResult.errorMessage ?? CONTACT_MISSING_CONFIG
21
- };
22
- const senderName = name || email;
23
- const emailContentText = `
119
+ // src/libs/email/contact.ts
120
+ "use server";
121
+ var CONTACT_MISSING_CONFIG = "Email service is not configured. Please contact us directly at contact@contractspec.io.";
122
+ var CONTACT_SEND_ERROR = "Failed to send message. Please contact us directly at contact@contractspec.io.";
123
+ var submitContactForm = async (formData) => {
124
+ const name = (formData.get("name") ?? "").toString().trim();
125
+ const email = (formData.get("email") ?? "").toString().trim();
126
+ const message = (formData.get("message") ?? "").toString().trim();
127
+ if (!email) {
128
+ return {
129
+ success: false,
130
+ text: "Please fill in all required fields."
131
+ };
132
+ }
133
+ const configResult = getEmailConfig();
134
+ if (!configResult.ok || !configResult.config) {
135
+ return {
136
+ success: false,
137
+ text: configResult.errorMessage ?? CONTACT_MISSING_CONFIG
138
+ };
139
+ }
140
+ const senderName = name || email;
141
+ const emailContentText = `
24
142
  New contact form submission from ${senderName}
25
143
 
26
144
  Contact Information:
@@ -33,7 +151,7 @@ ${message || "No message provided"}
33
151
  ---
34
152
  Submitted via ContractSpec contact form
35
153
  `.trim();
36
- const emailContentHtml = `
154
+ const emailContentHtml = `
37
155
  <div style="font-family: sans-serif; max-width: 640px; margin: 0 auto;">
38
156
  <h1 style="color: #8b5cf6; margin-bottom: 12px;">New contact form submission</h1>
39
157
  <p style="margin: 0 0 12px;">From ${escapeHtml(senderName)}</p>
@@ -49,23 +167,19 @@ Submitted via ContractSpec contact form
49
167
  <p style="color: #6b7280; font-size: 12px; margin-top: 20px;">Submitted via ContractSpec contact form</p>
50
168
  </div>
51
169
  `;
52
- if (!(await sendEmail(configResult.config, {
53
- to: [configResult.config.teamInbox],
54
- subject: `New Contact Form Message from ${senderName}`,
55
- text: emailContentText,
56
- html: emailContentHtml,
57
- replyTo: email,
58
- context: "contact-form"
59
- })).success) return {
60
- success: false,
61
- text: CONTACT_SEND_ERROR
62
- };
63
- return {
64
- success: true,
65
- text: "Message sent successfully!"
66
- };
170
+ const sendResult = await sendEmail(configResult.config, {
171
+ to: [configResult.config.teamInbox],
172
+ subject: `New Contact Form Message from ${senderName}`,
173
+ text: emailContentText,
174
+ html: emailContentHtml,
175
+ replyTo: email,
176
+ context: "contact-form"
177
+ });
178
+ if (!sendResult.success) {
179
+ return { success: false, text: CONTACT_SEND_ERROR };
180
+ }
181
+ return { success: true, text: "Message sent successfully!" };
182
+ };
183
+ export {
184
+ submitContactForm
67
185
  };
68
-
69
- //#endregion
70
- export { submitContactForm };
71
- //# sourceMappingURL=contact.js.map
@@ -1,7 +1,3 @@
1
- import { SubmitNewsletterResult } from "./types.js";
2
-
3
- //#region src/libs/email/newsletter.d.ts
4
- declare const subscribeToNewsletter: (formData: FormData) => Promise<SubmitNewsletterResult>;
5
- //#endregion
6
- export { subscribeToNewsletter };
1
+ import type { SubmitNewsletterResult } from './types';
2
+ export declare const subscribeToNewsletter: (formData: FormData) => Promise<SubmitNewsletterResult>;
7
3
  //# sourceMappingURL=newsletter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"newsletter.d.ts","names":[],"sources":["../../../src/libs/email/newsletter.ts"],"mappings":";;;cAWa,qBAAA,GACX,QAAA,EAAU,QAAA,KACT,OAAA,CAAQ,sBAAA"}
1
+ {"version":3,"file":"newsletter.d.ts","sourceRoot":"","sources":["../../../src/libs/email/newsletter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAOtD,eAAO,MAAM,qBAAqB,GAChC,UAAU,QAAQ,KACjB,OAAO,CAAC,sBAAsB,CA8FhC,CAAC"}