samva 0.16.0 → 0.17.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 (127) hide show
  1. package/AGENTS.md +4 -1
  2. package/README.md +44 -1
  3. package/dist/analytics-CaqPRsry.js +207 -0
  4. package/dist/api-keys-Ce1Y4_Ip.js +274 -0
  5. package/dist/attachments-DYqVIraC.js +140 -0
  6. package/dist/brands-ZwuOGIWO.js +175 -0
  7. package/dist/campaigns-DZlz1E9E.js +522 -0
  8. package/dist/categories-CA4XIQAb.js +1011 -0
  9. package/dist/client/sdk.gen.d.ts +174 -3
  10. package/dist/client/types.gen.d.ts +1126 -11
  11. package/dist/client-DOzUrdTE.js +1115 -0
  12. package/dist/contact-groups-BLbFXnjq.js +446 -0
  13. package/dist/contacts-BbsoXXB4.js +787 -0
  14. package/dist/conversations-_sRHueML.js +494 -0
  15. package/dist/custom-fields-BHWbwlKn.js +176 -0
  16. package/dist/effect/analytics.js +2 -21
  17. package/dist/effect/api-keys.d.ts +1 -1
  18. package/dist/effect/api-keys.js +2 -28
  19. package/dist/effect/attachments.js +2 -17
  20. package/dist/effect/brands.d.ts +1 -1
  21. package/dist/effect/brands.js +3 -24
  22. package/dist/effect/campaigns.js +2 -33
  23. package/dist/effect/categories.js +1 -1
  24. package/dist/effect/client.d.ts +1 -1
  25. package/dist/effect/client.js +3 -4
  26. package/dist/effect/contact-groups.js +2 -29
  27. package/dist/effect/contacts.d.ts +52 -0
  28. package/dist/effect/contacts.js +2 -47
  29. package/dist/effect/conversations.js +2 -35
  30. package/dist/effect/custom-fields.js +2 -17
  31. package/dist/effect/email.d.ts +3 -2
  32. package/dist/effect/email.js +2 -137
  33. package/dist/effect/events.d.ts +121 -0
  34. package/dist/effect/events.js +3 -0
  35. package/dist/effect/extension-installations.js +2 -27
  36. package/dist/effect/extensions.js +2 -19
  37. package/dist/effect/feedback.d.ts +1 -1
  38. package/dist/effect/feedback.js +3 -13
  39. package/dist/effect/generated/analytics.d.ts +715 -0
  40. package/dist/effect/generated/api-keys.d.ts +1627 -0
  41. package/dist/effect/generated/attachments.d.ts +554 -0
  42. package/dist/effect/generated/brands.d.ts +1118 -0
  43. package/dist/effect/generated/campaigns.d.ts +3783 -0
  44. package/dist/effect/generated/contact-events.d.ts +158 -0
  45. package/dist/effect/generated/contact-groups.d.ts +1445 -0
  46. package/dist/effect/generated/contacts.d.ts +3789 -0
  47. package/dist/effect/generated/conversations.d.ts +2870 -0
  48. package/dist/effect/generated/custom-fields.d.ts +562 -0
  49. package/dist/effect/generated/email.d.ts +10622 -0
  50. package/dist/effect/generated/events.d.ts +463 -0
  51. package/dist/effect/generated/extension-installations.d.ts +1786 -0
  52. package/dist/effect/generated/extensions.d.ts +927 -0
  53. package/dist/effect/generated/feedback.d.ts +116 -0
  54. package/dist/effect/generated/index.d.ts +61 -0
  55. package/dist/effect/generated/journeys.d.ts +6135 -0
  56. package/dist/effect/generated/mailboxes.d.ts +13641 -0
  57. package/dist/effect/generated/media.d.ts +741 -0
  58. package/dist/effect/generated/messages.d.ts +2355 -0
  59. package/dist/effect/generated/namespaces.d.ts +654 -0
  60. package/dist/effect/generated/operations.d.ts +514 -0
  61. package/dist/effect/generated/organizations.d.ts +1111 -0
  62. package/dist/effect/generated/scheduled-messages.d.ts +1798 -0
  63. package/dist/effect/generated/shared.d.ts +3250 -0
  64. package/dist/effect/generated/subscriptions.d.ts +188 -0
  65. package/dist/effect/generated/templates.d.ts +8177 -0
  66. package/dist/effect/generated/unsubscribe-groups.d.ts +1153 -0
  67. package/dist/effect/generated/webhooks.d.ts +1697 -0
  68. package/dist/effect/generated/whoami.d.ts +291 -0
  69. package/dist/effect/generated-metadata.d.ts +1627 -0
  70. package/dist/effect/index.d.ts +3 -1
  71. package/dist/effect/index.js +29 -27
  72. package/dist/effect/internal/client.d.ts +10 -7
  73. package/dist/effect/internal/email-sender.d.ts +17 -0
  74. package/dist/effect/internal/operation.d.ts +12 -72
  75. package/dist/effect/internal/send.d.ts +60 -0
  76. package/dist/effect/journeys.d.ts +2153 -0
  77. package/dist/effect/journeys.js +2 -0
  78. package/dist/effect/mailboxes.d.ts +112 -112
  79. package/dist/effect/mailboxes.js +1 -1
  80. package/dist/effect/media.js +3 -1
  81. package/dist/effect/messages.d.ts +2 -2
  82. package/dist/effect/messages.js +3 -1
  83. package/dist/effect/namespaces.js +2 -19
  84. package/dist/effect/operations.js +2 -15
  85. package/dist/effect/organizations.js +2 -23
  86. package/dist/effect/retry.js +1 -1
  87. package/dist/effect/scheduled-messages.js +2 -19
  88. package/dist/effect/subscriptions.js +2 -9
  89. package/dist/effect/templates.d.ts +1 -1
  90. package/dist/effect/templates.js +3 -78
  91. package/dist/effect/unsubscribe-groups.js +2 -27
  92. package/dist/effect/webhooks.d.ts +9 -9
  93. package/dist/effect/webhooks.js +3 -33
  94. package/dist/effect/whoami.d.ts +8 -8
  95. package/dist/effect/whoami.js +2 -9
  96. package/dist/email-R0NAA9PW.js +2498 -0
  97. package/dist/events-CxbTUHYT.js +82 -0
  98. package/dist/extension-installations-CD94LPmk.js +407 -0
  99. package/dist/extensions-BKyNQLvu.js +220 -0
  100. package/dist/feedback-Bpa09JOS.js +52 -0
  101. package/dist/index.js +2 -2
  102. package/dist/{inline-attachments-Cegg6tTF.js → inline-attachments-Bi1hDltp.js} +2 -2
  103. package/dist/journeys-CARo_BJT.js +499 -0
  104. package/dist/mailboxes-BRDn7BIK.js +2470 -0
  105. package/dist/media-VrrtNnft.js +181 -0
  106. package/dist/namespaces-CcvEbG-y.js +152 -0
  107. package/dist/{operation-BTXjPrwf.js → operation-n_IYgNVK.js} +75 -90
  108. package/dist/operations-CmB3FHwf.js +93 -0
  109. package/dist/organizations-A-plufWc.js +252 -0
  110. package/dist/promises/index.d.ts +7 -3
  111. package/dist/promises/index.js +2 -2
  112. package/dist/promises/types.gen.d.ts +1 -1
  113. package/dist/{promises-KrA2nSLg.js → promises---Kbh-7z.js} +467 -3
  114. package/dist/runtime-P0l1_2-C.js +25 -0
  115. package/dist/scheduled-messages-DkKZRRaN.js +207 -0
  116. package/dist/send-Bxc0XfGE.js +722 -0
  117. package/dist/service-map.d.ts +85 -0
  118. package/dist/subscriptions-DEXYtMXg.js +67 -0
  119. package/dist/templates-DZomxsG7.js +2289 -0
  120. package/dist/unsubscribe-groups-Iqk4Isf9.js +291 -0
  121. package/dist/webhooks-CPXuu8Xf.js +530 -0
  122. package/dist/whoami-Ccz0jwlt.js +59 -0
  123. package/package.json +13 -3
  124. package/dist/categories-DV51kr2H.js +0 -187
  125. package/dist/client-BMUew5Wp.js +0 -13794
  126. package/dist/effect/generated.d.ts +0 -64004
  127. package/dist/mailboxes-Thp5z0oX.js +0 -161
@@ -1,187 +0,0 @@
1
- import { Effect } from "effect";
2
- import * as Predicate$1 from "effect/Predicate";
3
- //#region src/effect/generated-metadata.ts
4
- const SamvaErrorMetadata = {
5
- AnalyticsQueryError: {
6
- categories: [],
7
- retryable: false
8
- },
9
- BillingProviderError: {
10
- categories: ["transient"],
11
- retryable: true
12
- },
13
- BrandAddressRequiredError: {
14
- categories: [],
15
- retryable: false
16
- },
17
- CampaignFooterRequiredError: {
18
- categories: [],
19
- retryable: false
20
- },
21
- ConflictError: {
22
- categories: ["conflict"],
23
- retryable: false
24
- },
25
- DeliveryUnavailableError: {
26
- categories: ["transient"],
27
- retryable: true
28
- },
29
- EmailChannelError: {
30
- categories: [],
31
- retryable: false
32
- },
33
- ExternalServiceError: {
34
- categories: ["transient"],
35
- retryable: true
36
- },
37
- FlagDisabledError: {
38
- categories: [],
39
- retryable: false
40
- },
41
- ForbiddenError: {
42
- categories: ["auth"],
43
- retryable: false
44
- },
45
- GatewayTimeoutError: {
46
- categories: ["transient"],
47
- retryable: true
48
- },
49
- InternalError: {
50
- categories: ["transient"],
51
- retryable: true
52
- },
53
- MailboxChannelUnsupportedError: {
54
- categories: [],
55
- retryable: false
56
- },
57
- MailboxSendConflictError: {
58
- categories: [],
59
- retryable: false
60
- },
61
- MailboxSendRefusedError: {
62
- categories: [],
63
- retryable: false
64
- },
65
- OnboardingReviewRequiredError: {
66
- categories: ["validation"],
67
- retryable: false
68
- },
69
- PaymentRequiredError: {
70
- categories: ["billing"],
71
- retryable: false
72
- },
73
- RateLimitedError: {
74
- categories: ["throttling", "transient"],
75
- retryable: true
76
- },
77
- ResourceNotFoundError: {
78
- categories: ["notFound"],
79
- retryable: false
80
- },
81
- SenderNotReadyError: {
82
- categories: ["transient"],
83
- retryable: true
84
- },
85
- UnauthorizedError: {
86
- categories: ["auth"],
87
- retryable: false
88
- },
89
- ValidationError: {
90
- categories: ["validation"],
91
- retryable: false
92
- }
93
- };
94
- //#endregion
95
- //#region src/effect/categories.ts
96
- /**
97
- * Semantic error-category helpers for the Effect SDK.
98
- *
99
- * Every operation's error channel carries the server's real tagged errors
100
- * ({@link import("./index").ConflictError} …). These helpers let callers catch
101
- * or test by *category* — auth, validation, throttling, transient … — without
102
- * enumerating tags, and cover the raw transport/decode errors too. The category
103
- * assignments are generated from the OpenAPI category extensions.
104
- *
105
- * @example
106
- * ```ts
107
- * import { catchAuthError, isRetryable } from "samva/effect";
108
- *
109
- * samva.messages.send(input).pipe(
110
- * catchAuthError((error) => Effect.logError(`auth failed: ${error.message}`)),
111
- * Effect.retry({ while: isRetryable }),
112
- * );
113
- * ```
114
- */
115
- const emailChannelCategories = (reason) => {
116
- switch (reason) {
117
- case "auth": return ["auth"];
118
- case "rejected": return ["validation"];
119
- case "rate_limited": return ["throttling", "transient"];
120
- case "transport": return ["transient"];
121
- default: return [];
122
- }
123
- };
124
- const categoriesOf = (error) => {
125
- if (!Predicate$1.isObject(error) || typeof error._tag !== "string") return [];
126
- if (error._tag === "EmailChannelError") return emailChannelCategories(error.reason);
127
- return SamvaErrorMetadata[error._tag]?.categories ?? [];
128
- };
129
- const hasCategory = (error, category) => categoriesOf(error).includes(category);
130
- const isRetryableError = (error) => {
131
- if (!Predicate$1.isObject(error) || typeof error._tag !== "string") return false;
132
- if (error._tag === "EmailChannelError") return categoriesOf(error).includes("transient");
133
- return SamvaErrorMetadata[error._tag]?.retryable ?? false;
134
- };
135
- const categoryGuard = (category) => (error) => hasCategory(error, category);
136
- const isAuthError = categoryGuard("auth");
137
- const isValidationError = categoryGuard("validation");
138
- const isNotFoundError = categoryGuard("notFound");
139
- const isConflictError = categoryGuard("conflict");
140
- const isThrottlingError = categoryGuard("throttling");
141
- const isBillingError = categoryGuard("billing");
142
- /**
143
- * Network-level request failure (no HTTP response). Only `TransportError` is
144
- * transient/retryable: `EncodeError` and `InvalidUrlError` are deterministic
145
- * programmer errors (bad input, bad URL) that would fail identically on every
146
- * attempt — retrying them would loop forever.
147
- */
148
- const isRequestTransportError = (error) => {
149
- if (!Predicate$1.isTagged(error, "HttpClientError")) return false;
150
- const reason = error.reason;
151
- return Predicate$1.isObject(reason) && Predicate$1.isTagged(reason, "TransportError");
152
- };
153
- /** True for transient failures, including raw request-transport errors. */
154
- const isTransient = (error) => hasCategory(error, "transient") || isRequestTransportError(error);
155
- /** True when an error is declared safe to retry (throttling / transient / transport). */
156
- const isRetryable = (error) => isRetryableError(error) || isRequestTransportError(error);
157
- /**
158
- * Catch every error in `category`. The handler receives the category's error
159
- * union — including `EmailChannelError` where its `reason` can place it in the
160
- * category — while only total-membership classes are narrowed out of the error
161
- * channel (`EmailChannelError` stays: instances with other reasons pass through).
162
- */
163
- const catchCategory = (category, handler) => (effect) => {
164
- const inCategory = (error) => hasCategory(error, category);
165
- const outsideCategory = (error) => !hasCategory(error, category);
166
- return Effect.catch(effect, (error) => {
167
- if (inCategory(error)) return handler(error);
168
- if (outsideCategory(error)) return Effect.fail(error);
169
- return Effect.die(error);
170
- });
171
- };
172
- const catchAuthError = (handler) => catchCategory("auth", handler);
173
- const catchValidationError = (handler) => catchCategory("validation", handler);
174
- const catchNotFoundError = (handler) => catchCategory("notFound", handler);
175
- const catchConflictError = (handler) => catchCategory("conflict", handler);
176
- const catchThrottlingError = (handler) => catchCategory("throttling", handler);
177
- const catchBillingError = (handler) => catchCategory("billing", handler);
178
- /**
179
- * Catch transient failures — including raw request-transport errors — for
180
- * fallback/degrade paths. The declared error channel is left intact because
181
- * transient covers untyped transport errors as well.
182
- */
183
- const catchTransient = (handler) => (effect) => Effect.catchIf(effect, isTransient, handler);
184
- //#endregion
185
- export { isTransient as _, catchNotFoundError as a, catchValidationError as c, isAuthError as d, isBillingError as f, isThrottlingError as g, isRetryable as h, catchConflictError as i, categoriesOf as l, isNotFoundError as m, catchBillingError as n, catchThrottlingError as o, isConflictError as p, catchCategory as r, catchTransient as s, catchAuthError as t, hasCategory as u, isValidationError as v };
186
-
187
- //# sourceMappingURL=categories-DV51kr2H.js.map