samva 0.15.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 (128) hide show
  1. package/AGENTS.md +4 -1
  2. package/README.md +46 -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 +234 -49
  10. package/dist/client/types.gen.d.ts +1521 -348
  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 -0
  18. package/dist/effect/api-keys.js +2 -25
  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 -20
  32. package/dist/effect/email.js +2 -141
  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 +1631 -0
  70. package/dist/effect/index.d.ts +4 -1
  71. package/dist/effect/index.js +29 -26
  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 +255 -205
  79. package/dist/effect/mailboxes.js +2 -2
  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 +46 -0
  95. package/dist/effect/whoami.js +2 -0
  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 +3 -3
  102. package/dist/{inline-attachments-UxLeyytJ.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-BZ5Xov-x.js → operation-n_IYgNVK.js} +85 -102
  108. package/dist/operations-CmB3FHwf.js +93 -0
  109. package/dist/organizations-A-plufWc.js +252 -0
  110. package/dist/promises/errors.gen.d.ts +12 -2
  111. package/dist/promises/index.d.ts +9 -3
  112. package/dist/promises/index.js +3 -3
  113. package/dist/promises/types.gen.d.ts +1 -1
  114. package/dist/{promises-Cd6Jamqk.js → promises---Kbh-7z.js} +745 -195
  115. package/dist/runtime-P0l1_2-C.js +25 -0
  116. package/dist/scheduled-messages-DkKZRRaN.js +207 -0
  117. package/dist/send-Bxc0XfGE.js +722 -0
  118. package/dist/service-map.d.ts +101 -15
  119. package/dist/subscriptions-DEXYtMXg.js +67 -0
  120. package/dist/templates-DZomxsG7.js +2289 -0
  121. package/dist/unsubscribe-groups-Iqk4Isf9.js +291 -0
  122. package/dist/webhooks-CPXuu8Xf.js +530 -0
  123. package/dist/whoami-Ccz0jwlt.js +59 -0
  124. package/package.json +17 -3
  125. package/dist/categories-BGUBFdH9.js +0 -183
  126. package/dist/client-CDg7zJs0.js +0 -13726
  127. package/dist/effect/generated.d.ts +0 -64059
  128. package/dist/mailboxes-BH_JPmOE.js +0 -159
@@ -1,183 +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
- MailboxSendConflictError: {
54
- categories: [],
55
- retryable: false
56
- },
57
- MailboxSendRefusedError: {
58
- categories: [],
59
- retryable: false
60
- },
61
- OnboardingReviewRequiredError: {
62
- categories: ["validation"],
63
- retryable: false
64
- },
65
- PaymentRequiredError: {
66
- categories: ["billing"],
67
- retryable: false
68
- },
69
- RateLimitedError: {
70
- categories: ["throttling", "transient"],
71
- retryable: true
72
- },
73
- ResourceNotFoundError: {
74
- categories: ["notFound"],
75
- retryable: false
76
- },
77
- SenderNotReadyError: {
78
- categories: ["transient"],
79
- retryable: true
80
- },
81
- UnauthorizedError: {
82
- categories: ["auth"],
83
- retryable: false
84
- },
85
- ValidationError: {
86
- categories: ["validation"],
87
- retryable: false
88
- }
89
- };
90
- //#endregion
91
- //#region src/effect/categories.ts
92
- /**
93
- * Semantic error-category helpers for the Effect SDK.
94
- *
95
- * Every operation's error channel carries the server's real tagged errors
96
- * ({@link import("./index").ConflictError} …). These helpers let callers catch
97
- * or test by *category* — auth, validation, throttling, transient … — without
98
- * enumerating tags, and cover the raw transport/decode errors too. The category
99
- * assignments are generated from the OpenAPI category extensions.
100
- *
101
- * @example
102
- * ```ts
103
- * import { catchAuthError, isRetryable } from "samva/effect";
104
- *
105
- * samva.messages.send(input).pipe(
106
- * catchAuthError((error) => Effect.logError(`auth failed: ${error.message}`)),
107
- * Effect.retry({ while: isRetryable }),
108
- * );
109
- * ```
110
- */
111
- const emailChannelCategories = (reason) => {
112
- switch (reason) {
113
- case "auth": return ["auth"];
114
- case "rejected": return ["validation"];
115
- case "rate_limited": return ["throttling", "transient"];
116
- case "transport": return ["transient"];
117
- default: return [];
118
- }
119
- };
120
- const categoriesOf = (error) => {
121
- if (!Predicate$1.isObject(error) || typeof error._tag !== "string") return [];
122
- if (error._tag === "EmailChannelError") return emailChannelCategories(error.reason);
123
- return SamvaErrorMetadata[error._tag]?.categories ?? [];
124
- };
125
- const hasCategory = (error, category) => categoriesOf(error).includes(category);
126
- const isRetryableError = (error) => {
127
- if (!Predicate$1.isObject(error) || typeof error._tag !== "string") return false;
128
- if (error._tag === "EmailChannelError") return categoriesOf(error).includes("transient");
129
- return SamvaErrorMetadata[error._tag]?.retryable ?? false;
130
- };
131
- const categoryGuard = (category) => (error) => hasCategory(error, category);
132
- const isAuthError = categoryGuard("auth");
133
- const isValidationError = categoryGuard("validation");
134
- const isNotFoundError = categoryGuard("notFound");
135
- const isConflictError = categoryGuard("conflict");
136
- const isThrottlingError = categoryGuard("throttling");
137
- const isBillingError = categoryGuard("billing");
138
- /**
139
- * Network-level request failure (no HTTP response). Only `TransportError` is
140
- * transient/retryable: `EncodeError` and `InvalidUrlError` are deterministic
141
- * programmer errors (bad input, bad URL) that would fail identically on every
142
- * attempt — retrying them would loop forever.
143
- */
144
- const isRequestTransportError = (error) => {
145
- if (!Predicate$1.isTagged(error, "HttpClientError")) return false;
146
- const reason = error.reason;
147
- return Predicate$1.isObject(reason) && Predicate$1.isTagged(reason, "TransportError");
148
- };
149
- /** True for transient failures, including raw request-transport errors. */
150
- const isTransient = (error) => hasCategory(error, "transient") || isRequestTransportError(error);
151
- /** True when an error is declared safe to retry (throttling / transient / transport). */
152
- const isRetryable = (error) => isRetryableError(error) || isRequestTransportError(error);
153
- /**
154
- * Catch every error in `category`. The handler receives the category's error
155
- * union — including `EmailChannelError` where its `reason` can place it in the
156
- * category — while only total-membership classes are narrowed out of the error
157
- * channel (`EmailChannelError` stays: instances with other reasons pass through).
158
- */
159
- const catchCategory = (category, handler) => (effect) => {
160
- const inCategory = (error) => hasCategory(error, category);
161
- const outsideCategory = (error) => !hasCategory(error, category);
162
- return Effect.catch(effect, (error) => {
163
- if (inCategory(error)) return handler(error);
164
- if (outsideCategory(error)) return Effect.fail(error);
165
- return Effect.die(error);
166
- });
167
- };
168
- const catchAuthError = (handler) => catchCategory("auth", handler);
169
- const catchValidationError = (handler) => catchCategory("validation", handler);
170
- const catchNotFoundError = (handler) => catchCategory("notFound", handler);
171
- const catchConflictError = (handler) => catchCategory("conflict", handler);
172
- const catchThrottlingError = (handler) => catchCategory("throttling", handler);
173
- const catchBillingError = (handler) => catchCategory("billing", handler);
174
- /**
175
- * Catch transient failures — including raw request-transport errors — for
176
- * fallback/degrade paths. The declared error channel is left intact because
177
- * transient covers untyped transport errors as well.
178
- */
179
- const catchTransient = (handler) => (effect) => Effect.catchIf(effect, isTransient, handler);
180
- //#endregion
181
- 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 };
182
-
183
- //# sourceMappingURL=categories-BGUBFdH9.js.map