@intelligo-dev/core 1.0.0-beta.1 → 1.0.0-beta.13
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.
- package/NOTICE +6 -0
- package/README.md +102 -0
- package/dist/attachments/errors.d.ts +7 -0
- package/dist/attachments/errors.d.ts.map +1 -0
- package/dist/attachments/errors.js +11 -0
- package/dist/attachments/errors.js.map +1 -0
- package/dist/attachments/index.d.ts +8 -0
- package/dist/attachments/index.d.ts.map +1 -0
- package/dist/attachments/index.js +7 -0
- package/dist/attachments/index.js.map +1 -0
- package/dist/attachments/service.d.ts +45 -0
- package/dist/attachments/service.d.ts.map +1 -0
- package/dist/attachments/service.js +100 -0
- package/dist/attachments/service.js.map +1 -0
- package/dist/attachments/types.d.ts +6 -0
- package/dist/attachments/types.d.ts.map +1 -0
- package/dist/attachments/types.js +2 -0
- package/dist/attachments/types.js.map +1 -0
- package/dist/conversations/errors.d.ts +2 -8
- package/dist/conversations/errors.d.ts.map +1 -1
- package/dist/conversations/errors.js +2 -8
- package/dist/conversations/errors.js.map +1 -1
- package/dist/conversations/index.d.ts +4 -12
- package/dist/conversations/index.d.ts.map +1 -1
- package/dist/conversations/index.js +2 -11
- package/dist/conversations/index.js.map +1 -1
- package/dist/conversations/service.d.ts +49 -61
- package/dist/conversations/service.d.ts.map +1 -1
- package/dist/conversations/service.js +110 -83
- package/dist/conversations/service.js.map +1 -1
- package/dist/conversations/types.d.ts +1 -4
- package/dist/conversations/types.d.ts.map +1 -1
- package/dist/conversations/types.js +0 -3
- package/dist/conversations/types.js.map +1 -1
- package/dist/db/client.d.ts +21 -10
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +43 -18
- package/dist/db/client.js.map +1 -1
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +3 -7
- package/dist/db/index.js.map +1 -1
- package/dist/db/schema/agents.d.ts +14 -51
- package/dist/db/schema/agents.d.ts.map +1 -1
- package/dist/db/schema/agents.js +9 -21
- package/dist/db/schema/agents.js.map +1 -1
- package/dist/db/schema/ai.d.ts +86 -1556
- package/dist/db/schema/ai.d.ts.map +1 -1
- package/dist/db/schema/ai.js +32 -236
- package/dist/db/schema/ai.js.map +1 -1
- package/dist/db/schema/auth.d.ts +5 -34
- package/dist/db/schema/auth.d.ts.map +1 -1
- package/dist/db/schema/auth.js +25 -56
- package/dist/db/schema/auth.js.map +1 -1
- package/dist/db/schema/billing.d.ts +136 -107
- package/dist/db/schema/billing.d.ts.map +1 -1
- package/dist/db/schema/billing.js +72 -60
- package/dist/db/schema/billing.js.map +1 -1
- package/dist/db/schema/feature-flags.d.ts +3 -12
- package/dist/db/schema/feature-flags.d.ts.map +1 -1
- package/dist/db/schema/feature-flags.js +3 -12
- package/dist/db/schema/feature-flags.js.map +1 -1
- package/dist/db/schema/identity.d.ts +12 -274
- package/dist/db/schema/identity.d.ts.map +1 -1
- package/dist/db/schema/identity.js +19 -104
- package/dist/db/schema/identity.js.map +1 -1
- package/dist/db/schema/index.d.ts +8 -15
- package/dist/db/schema/index.d.ts.map +1 -1
- package/dist/db/schema/index.js +12 -42
- package/dist/db/schema/index.js.map +1 -1
- package/dist/db/schema/notifications.d.ts +3 -17
- package/dist/db/schema/notifications.d.ts.map +1 -1
- package/dist/db/schema/notifications.js +3 -17
- package/dist/db/schema/notifications.js.map +1 -1
- package/dist/db/schema/usage.d.ts +94 -77
- package/dist/db/schema/usage.d.ts.map +1 -1
- package/dist/db/schema/usage.js +59 -89
- package/dist/db/schema/usage.js.map +1 -1
- package/dist/db/validate.d.ts +2 -11
- package/dist/db/validate.d.ts.map +1 -1
- package/dist/db/validate.js +6 -17
- package/dist/db/validate.js.map +1 -1
- package/dist/db/workspace-queries.d.ts +5 -29
- package/dist/db/workspace-queries.d.ts.map +1 -1
- package/dist/db/workspace-queries.js +5 -29
- package/dist/db/workspace-queries.js.map +1 -1
- package/dist/documents/classifier.d.ts +5 -12
- package/dist/documents/classifier.d.ts.map +1 -1
- package/dist/documents/classifier.js +16 -16
- package/dist/documents/classifier.js.map +1 -1
- package/dist/documents/errors.d.ts +2 -10
- package/dist/documents/errors.d.ts.map +1 -1
- package/dist/documents/errors.js +2 -10
- package/dist/documents/errors.js.map +1 -1
- package/dist/documents/index.d.ts +4 -13
- package/dist/documents/index.d.ts.map +1 -1
- package/dist/documents/index.js +3 -12
- package/dist/documents/index.js.map +1 -1
- package/dist/documents/service.d.ts +19 -26
- package/dist/documents/service.d.ts.map +1 -1
- package/dist/documents/service.js +44 -38
- package/dist/documents/service.js.map +1 -1
- package/dist/documents/types.d.ts +6 -10
- package/dist/documents/types.d.ts.map +1 -1
- package/dist/documents/types.js +0 -3
- package/dist/documents/types.js.map +1 -1
- package/dist/email/brand.d.ts +17 -0
- package/dist/email/brand.d.ts.map +1 -0
- package/dist/email/brand.js +9 -0
- package/dist/email/brand.js.map +1 -0
- package/dist/email/index.d.ts +4 -4
- package/dist/email/index.js +4 -4
- package/dist/email/provider.d.ts +1 -7
- package/dist/email/provider.d.ts.map +1 -1
- package/dist/email/provider.js +10 -19
- package/dist/email/provider.js.map +1 -1
- package/dist/email/send.d.ts +12 -12
- package/dist/email/send.d.ts.map +1 -1
- package/dist/email/send.js +5 -19
- package/dist/email/send.js.map +1 -1
- package/dist/email/senders.d.ts +17 -30
- package/dist/email/senders.d.ts.map +1 -1
- package/dist/email/senders.js +33 -47
- package/dist/email/senders.js.map +1 -1
- package/dist/email/templates/base-layout.d.ts +1 -1
- package/dist/email/templates/base-layout.d.ts.map +1 -1
- package/dist/email/templates/base-layout.js +4 -6
- package/dist/email/templates/base-layout.js.map +1 -1
- package/dist/email/templates/index.d.ts +10 -10
- package/dist/email/templates/index.d.ts.map +1 -1
- package/dist/email/templates/index.js +10 -16
- package/dist/email/templates/index.js.map +1 -1
- package/dist/email/templates/password-reset.d.ts +2 -2
- package/dist/email/templates/password-reset.d.ts.map +1 -1
- package/dist/email/templates/password-reset.js +10 -22
- package/dist/email/templates/password-reset.js.map +1 -1
- package/dist/email/templates/payment-failed.d.ts +2 -2
- package/dist/email/templates/payment-failed.d.ts.map +1 -1
- package/dist/email/templates/payment-failed.js +11 -24
- package/dist/email/templates/payment-failed.js.map +1 -1
- package/dist/email/templates/quota-warning.d.ts +4 -4
- package/dist/email/templates/quota-warning.d.ts.map +1 -1
- package/dist/email/templates/quota-warning.js +19 -39
- package/dist/email/templates/quota-warning.js.map +1 -1
- package/dist/email/templates/subscription-confirmed.d.ts +2 -2
- package/dist/email/templates/subscription-confirmed.d.ts.map +1 -1
- package/dist/email/templates/subscription-confirmed.js +13 -28
- package/dist/email/templates/subscription-confirmed.js.map +1 -1
- package/dist/email/templates/trial-expiry.d.ts +2 -2
- package/dist/email/templates/trial-expiry.d.ts.map +1 -1
- package/dist/email/templates/trial-expiry.js +12 -36
- package/dist/email/templates/trial-expiry.js.map +1 -1
- package/dist/email/templates/trial-warning.d.ts +2 -2
- package/dist/email/templates/trial-warning.d.ts.map +1 -1
- package/dist/email/templates/trial-warning.js +15 -32
- package/dist/email/templates/trial-warning.js.map +1 -1
- package/dist/email/templates/verify-email.d.ts +2 -2
- package/dist/email/templates/verify-email.d.ts.map +1 -1
- package/dist/email/templates/verify-email.js +10 -22
- package/dist/email/templates/verify-email.js.map +1 -1
- package/dist/email/templates/welcome.d.ts +2 -2
- package/dist/email/templates/welcome.d.ts.map +1 -1
- package/dist/email/templates/welcome.js +13 -20
- package/dist/email/templates/welcome.js.map +1 -1
- package/dist/email/templates/workspace-invitation.d.ts +2 -2
- package/dist/email/templates/workspace-invitation.d.ts.map +1 -1
- package/dist/email/templates/workspace-invitation.js +12 -26
- package/dist/email/templates/workspace-invitation.js.map +1 -1
- package/dist/env.d.ts +5 -10
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +41 -31
- package/dist/env.js.map +1 -1
- package/dist/identity/audit.d.ts +11 -24
- package/dist/identity/audit.d.ts.map +1 -1
- package/dist/identity/audit.js +13 -27
- package/dist/identity/audit.js.map +1 -1
- package/dist/identity/errors.d.ts +4 -12
- package/dist/identity/errors.d.ts.map +1 -1
- package/dist/identity/errors.js +2 -8
- package/dist/identity/errors.js.map +1 -1
- package/dist/identity/index.d.ts +5 -13
- package/dist/identity/index.d.ts.map +1 -1
- package/dist/identity/index.js +4 -12
- package/dist/identity/index.js.map +1 -1
- package/dist/identity/service.d.ts +13 -47
- package/dist/identity/service.d.ts.map +1 -1
- package/dist/identity/service.js +31 -78
- package/dist/identity/service.js.map +1 -1
- package/dist/identity/types.d.ts +1 -4
- package/dist/identity/types.d.ts.map +1 -1
- package/dist/identity/types.js +0 -3
- package/dist/identity/types.js.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -10
- package/dist/index.js.map +1 -1
- package/dist/logger.d.ts +7 -18
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +45 -49
- package/dist/logger.js.map +1 -1
- package/dist/money.d.ts +95 -0
- package/dist/money.d.ts.map +1 -0
- package/dist/money.js +208 -0
- package/dist/money.js.map +1 -0
- package/dist/notifications/index.d.ts +9 -43
- package/dist/notifications/index.d.ts.map +1 -1
- package/dist/notifications/index.js +9 -49
- package/dist/notifications/index.js.map +1 -1
- package/dist/notifications/triggers.d.ts +9 -32
- package/dist/notifications/triggers.d.ts.map +1 -1
- package/dist/notifications/triggers.js +21 -58
- package/dist/notifications/triggers.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -10
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/notifications/types.js +0 -9
- package/dist/notifications/types.js.map +1 -1
- package/dist/prompt.d.ts +38 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +118 -0
- package/dist/prompt.js.map +1 -0
- package/dist/registry.d.ts +32 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +60 -0
- package/dist/registry.js.map +1 -0
- package/dist/request-context.d.ts +49 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +100 -0
- package/dist/request-context.js.map +1 -0
- package/dist/storage/index.d.ts +65 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +109 -0
- package/dist/storage/index.js.map +1 -0
- package/package.json +74 -24
- package/src/attachments/errors.ts +18 -0
- package/src/attachments/index.ts +22 -0
- package/src/attachments/service.ts +178 -0
- package/src/attachments/types.ts +6 -0
- package/src/conversations/errors.ts +45 -0
- package/src/conversations/index.ts +39 -0
- package/src/conversations/service.ts +594 -0
- package/src/conversations/types.ts +15 -0
- package/src/db/client.ts +91 -0
- package/src/db/index.ts +3 -0
- package/src/db/migrations/0000_baseline.sql +652 -0
- package/src/db/migrations/0001_reconcile_chain_built_databases.sql +53 -0
- package/src/db/migrations/0002_webhook_claim_lease.sql +1 -0
- package/src/db/migrations/README.md +74 -36
- package/src/db/migrations/legacy-chain.json +197 -0
- package/src/db/migrations/meta/0000_snapshot.json +4182 -157
- package/src/db/migrations/meta/0002_snapshot.json +2478 -368
- package/src/db/migrations/meta/_journal.json +6 -279
- package/src/db/schema/agents.ts +57 -0
- package/src/db/schema/ai.ts +174 -0
- package/src/db/schema/auth.ts +183 -0
- package/src/db/schema/billing.ts +209 -0
- package/src/db/schema/feature-flags.ts +20 -0
- package/src/db/schema/identity.ts +250 -0
- package/src/db/schema/index.ts +12 -0
- package/src/db/schema/notifications.ts +31 -0
- package/src/db/schema/usage.ts +269 -0
- package/src/db/validate.ts +63 -0
- package/src/db/workspace-queries.ts +64 -0
- package/src/documents/classifier.ts +61 -0
- package/src/documents/errors.ts +44 -0
- package/src/documents/index.ts +24 -0
- package/src/documents/service.ts +256 -0
- package/src/documents/types.ts +24 -0
- package/src/email/brand.ts +24 -0
- package/src/email/index.ts +19 -0
- package/src/email/provider.ts +278 -0
- package/src/email/send.ts +169 -0
- package/src/email/senders.ts +292 -0
- package/src/email/templates/base-layout.tsx +145 -0
- package/src/email/templates/index.ts +28 -0
- package/src/email/templates/password-reset.tsx +72 -0
- package/src/email/templates/payment-failed.tsx +77 -0
- package/src/email/templates/quota-warning.tsx +118 -0
- package/src/email/templates/subscription-confirmed.tsx +91 -0
- package/src/email/templates/trial-expiry.tsx +124 -0
- package/src/email/templates/trial-warning.tsx +104 -0
- package/src/email/templates/verify-email.tsx +72 -0
- package/src/email/templates/welcome.tsx +64 -0
- package/src/email/templates/workspace-invitation.tsx +105 -0
- package/src/env.ts +180 -0
- package/src/identity/audit.ts +65 -0
- package/src/identity/errors.ts +44 -0
- package/src/identity/index.ts +26 -0
- package/src/identity/service.ts +202 -0
- package/src/identity/types.ts +28 -0
- package/src/index.ts +4 -0
- package/src/logger.ts +198 -0
- package/src/money.ts +270 -0
- package/src/notifications/index.ts +108 -0
- package/src/notifications/triggers.ts +158 -0
- package/src/notifications/types.ts +18 -0
- package/src/prompt.ts +142 -0
- package/src/registry.ts +75 -0
- package/src/request-context.ts +137 -0
- package/src/storage/index.ts +153 -0
- package/dist/db/schema/rag.d.ts +0 -171
- package/dist/db/schema/rag.d.ts.map +0 -1
- package/dist/db/schema/rag.js +0 -42
- package/dist/db/schema/rag.js.map +0 -1
- package/src/db/migrations/0000_sharp_night_nurse.sql +0 -52
- package/src/db/migrations/0001_hesitant_vapor.sql +0 -40
- package/src/db/migrations/0002_numerous_lady_vermin.sql +0 -235
- package/src/db/migrations/0003_mighty_jean_grey.sql +0 -37
- package/src/db/migrations/0004_cynical_grandmaster.sql +0 -2
- package/src/db/migrations/0005_careful_switch.sql +0 -8
- package/src/db/migrations/0006_tense_blue_marvel.sql +0 -16
- package/src/db/migrations/0007_next_squadron_sinister.sql +0 -1
- package/src/db/migrations/0008_powerful_scream.sql +0 -39
- package/src/db/migrations/0009_sad_ink.sql +0 -1
- package/src/db/migrations/0010_shocking_omega_flight.sql +0 -2
- package/src/db/migrations/0011_ambiguous_otto_octavius.sql +0 -151
- package/src/db/migrations/0011_hnsw_vector_index.sql +0 -17
- package/src/db/migrations/0012_user_profiles.sql +0 -30
- package/src/db/migrations/0013_trending_seasonal_columns.sql +0 -9
- package/src/db/migrations/0014_add_product_type_to_agents.sql +0 -6
- package/src/db/migrations/0015_new_v1_tables.sql +0 -149
- package/src/db/migrations/0016_document_types.sql +0 -30
- package/src/db/migrations/0017_document_metadata.sql +0 -2
- package/src/db/migrations/0018_identity_graph.sql +0 -200
- package/src/db/migrations/0019_db_driven_prompts.sql +0 -20
- package/src/db/migrations/0020_pending_extractions.sql +0 -35
- package/src/db/migrations/0021_rag_documents.sql +0 -39
- package/src/db/migrations/0022_user_quotas_usage_jsonb.sql +0 -70
- package/src/db/migrations/0023_user_facts_user_scoped_unique.sql +0 -17
- package/src/db/migrations/0024_user_memories_hnsw.sql +0 -23
- package/src/db/migrations/0025_audit_trigger_errcode.sql +0 -21
- package/src/db/migrations/0026_user_profile_snapshots_composite_pk.sql +0 -17
- package/src/db/migrations/0027_billing_settings_mnt_columns.sql +0 -54
- package/src/db/migrations/0028_trial_credits_normalized_email.sql +0 -37
- package/src/db/migrations/0029_usage_records_conversation_idx.sql +0 -13
- package/src/db/migrations/0030_pending_extractions_composite_idx.sql +0 -11
- package/src/db/migrations/0031_rag_documents_hnsw.sql +0 -16
- package/src/db/migrations/0032_rate_limit_unique_idx.sql +0 -16
- package/src/db/migrations/0033_pending_extractions_partial_idx.sql +0 -18
- package/src/db/migrations/0034_rate_limit_count.sql +0 -9
- package/src/db/migrations/0035_credit_reservations.sql +0 -24
- package/src/db/migrations/0036_executions_audit_jobs.sql +0 -96
- package/src/db/migrations/0037_rate_limit_minute_bucket.sql +0 -46
- package/src/db/migrations/0038_user_quotas_generic_usage.sql +0 -25
- package/src/db/migrations/0039_platform_admin_impersonation.sql +0 -27
- package/src/db/migrations/0040_ee_audit_chain.sql +0 -23
- package/src/db/migrations/meta/0001_snapshot.json +0 -631
- package/src/db/migrations/meta/0003_snapshot.json +0 -2488
- package/src/db/migrations/meta/0004_snapshot.json +0 -2500
- package/src/db/migrations/meta/0005_snapshot.json +0 -2548
- package/src/db/migrations/meta/0006_snapshot.json +0 -2650
- package/src/db/migrations/meta/0007_snapshot.json +0 -2657
- package/src/db/migrations/meta/0008_snapshot.json +0 -2719
- package/src/db/migrations/meta/0009_snapshot.json +0 -2726
- package/src/db/migrations/meta/0010_snapshot.json +0 -2739
- package/src/db/migrations/meta/0011_snapshot.json +0 -3886
package/dist/email/send.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type React from "react";
|
|
2
|
-
import { type EmailTemplateRef } from "./provider";
|
|
2
|
+
import { type EmailTemplateRef } from "./provider.js";
|
|
3
3
|
export interface SendEmailParams {
|
|
4
4
|
to: string | string[];
|
|
5
5
|
subject: string;
|
|
6
6
|
html: string;
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Defaults to the EMAIL_FROM env var. There is no built-in sender: a
|
|
9
|
+
* provider that needs one refuses the send when neither is set.
|
|
10
|
+
*/
|
|
8
11
|
from?: string;
|
|
9
12
|
replyTo?: string;
|
|
10
13
|
/**
|
|
@@ -18,7 +21,10 @@ export interface SendEmailWithComponentParams {
|
|
|
18
21
|
subject: string;
|
|
19
22
|
/** A React Email component element. Will be rendered to HTML before sending. */
|
|
20
23
|
react: React.ReactElement;
|
|
21
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Defaults to the EMAIL_FROM env var. There is no built-in sender: a
|
|
26
|
+
* provider that needs one refuses the send when neither is set.
|
|
27
|
+
*/
|
|
22
28
|
from?: string;
|
|
23
29
|
replyTo?: string;
|
|
24
30
|
/**
|
|
@@ -33,15 +39,9 @@ export interface SendEmailResult {
|
|
|
33
39
|
error?: string;
|
|
34
40
|
}
|
|
35
41
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* `{ react }`. When a React element is provided, it is rendered to HTML
|
|
40
|
-
* using `@react-email/components`'s `render()` before sending.
|
|
41
|
-
*
|
|
42
|
-
* This function NEVER throws. All errors are caught and returned as
|
|
43
|
-
* `{ success: false, error: "..." }`. This prevents email failures
|
|
44
|
-
* from crashing the application (TECH-08).
|
|
42
|
+
* Sends an email through the configured provider, retrying transient
|
|
43
|
+
* failures. Takes raw HTML via `{ html }` or a React Email element via
|
|
44
|
+
* `{ react }`. Never throws: failures return `{ success: false, error }`.
|
|
45
45
|
*/
|
|
46
46
|
export declare function sendEmail(params: SendEmailParams | SendEmailWithComponentParams): Promise<SendEmailResult>;
|
|
47
47
|
//# sourceMappingURL=send.d.ts.map
|
package/dist/email/send.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMrE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC;IAC1B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyCD;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,eAAe,GAAG,4BAA4B,GACrD,OAAO,CAAC,eAAe,CAAC,CAyE1B"}
|
package/dist/email/send.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { render } from "@react-email/components";
|
|
2
|
-
import { getEmailProvider } from "./provider";
|
|
2
|
+
import { getEmailProvider } from "./provider.js";
|
|
3
3
|
const MAX_ATTEMPTS = 3;
|
|
4
4
|
const BASE_DELAY_MS = 1000;
|
|
5
5
|
/**
|
|
@@ -8,12 +8,10 @@ const BASE_DELAY_MS = 1000;
|
|
|
8
8
|
function isClientError(error) {
|
|
9
9
|
if (error && typeof error === "object") {
|
|
10
10
|
const err = error;
|
|
11
|
-
// Check for explicit statusCode (set by ResendProvider / LoopsProvider).
|
|
12
11
|
// 429 is excluded: rate limits are transient and worth retrying.
|
|
13
12
|
if (typeof err.statusCode === "number") {
|
|
14
13
|
return (err.statusCode >= 400 && err.statusCode < 500 && err.statusCode !== 429);
|
|
15
14
|
}
|
|
16
|
-
// Check for status property (some HTTP libraries)
|
|
17
15
|
if (typeof err.status === "number") {
|
|
18
16
|
return err.status >= 400 && err.status < 500 && err.status !== 429;
|
|
19
17
|
}
|
|
@@ -31,26 +29,17 @@ function delay(ms) {
|
|
|
31
29
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
32
30
|
}
|
|
33
31
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* `{ react }`. When a React element is provided, it is rendered to HTML
|
|
38
|
-
* using `@react-email/components`'s `render()` before sending.
|
|
39
|
-
*
|
|
40
|
-
* This function NEVER throws. All errors are caught and returned as
|
|
41
|
-
* `{ success: false, error: "..." }`. This prevents email failures
|
|
42
|
-
* from crashing the application (TECH-08).
|
|
32
|
+
* Sends an email through the configured provider, retrying transient
|
|
33
|
+
* failures. Takes raw HTML via `{ html }` or a React Email element via
|
|
34
|
+
* `{ react }`. Never throws: failures return `{ success: false, error }`.
|
|
43
35
|
*/
|
|
44
36
|
export async function sendEmail(params) {
|
|
45
37
|
try {
|
|
46
38
|
const provider = getEmailProvider();
|
|
47
|
-
const from = params.from ??
|
|
48
|
-
process.env.EMAIL_FROM ??
|
|
49
|
-
"Intelligo <noreply@intelligo.dev>";
|
|
39
|
+
const from = params.from ?? (process.env.EMAIL_FROM?.trim() || undefined);
|
|
50
40
|
const recipient = Array.isArray(params.to)
|
|
51
41
|
? params.to.join(", ")
|
|
52
42
|
: params.to;
|
|
53
|
-
// Resolve HTML content: either use provided html or render React component
|
|
54
43
|
let html;
|
|
55
44
|
if ("react" in params) {
|
|
56
45
|
try {
|
|
@@ -83,19 +72,16 @@ export async function sendEmail(params) {
|
|
|
83
72
|
catch (error) {
|
|
84
73
|
lastError = error;
|
|
85
74
|
const message = error instanceof Error ? error.message : String(error);
|
|
86
|
-
// Do NOT retry client errors (4xx) – they will always fail
|
|
87
75
|
if (isClientError(error)) {
|
|
88
76
|
console.error(`[Email] Send failed for ${recipient} (client error, not retrying): ${message}`);
|
|
89
77
|
return { success: false, error: message };
|
|
90
78
|
}
|
|
91
79
|
console.warn(`[Email] Send attempt ${attempt}/${MAX_ATTEMPTS} failed for ${recipient}: ${message}`);
|
|
92
|
-
// Wait before next attempt (exponential backoff: 1s, 2s, 4s)
|
|
93
80
|
if (attempt < MAX_ATTEMPTS) {
|
|
94
81
|
await delay(BASE_DELAY_MS * Math.pow(2, attempt - 1));
|
|
95
82
|
}
|
|
96
83
|
}
|
|
97
84
|
}
|
|
98
|
-
// All attempts exhausted
|
|
99
85
|
const finalMessage = lastError instanceof Error ? lastError.message : String(lastError);
|
|
100
86
|
console.error(`[Email] All ${MAX_ATTEMPTS} attempts failed for ${recipient}: ${params.subject}`);
|
|
101
87
|
return { success: false, error: finalMessage };
|
package/dist/email/send.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/email/send.ts"],"names":[],"mappings":"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"}
|
package/dist/email/senders.d.ts
CHANGED
|
@@ -1,44 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Email
|
|
2
|
+
* Typed wrappers that render a React Email template and send it. They never
|
|
3
|
+
* throw; each returns a SendEmailResult.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - Team emails: workspace invitation (replaces Phase 10 console.log)
|
|
10
|
-
* - Billing emails: quota warning, trial warning, payment failed, subscription confirmed
|
|
11
|
-
*
|
|
12
|
-
* All functions return Promise<SendEmailResult> and NEVER throw (TECH-08).
|
|
13
|
-
*
|
|
14
|
-
* Every sender attaches a stable `template` key + flat variables so
|
|
15
|
-
* template-based providers (Loops) can send the same email from a
|
|
16
|
-
* provider-side template. HTML-capable providers (Resend) ignore it.
|
|
17
|
-
* Loops mapping: LOOPS_TRANSACTIONAL_ID_<KEY> (e.g. "verify-email" →
|
|
18
|
-
* LOOPS_TRANSACTIONAL_ID_VERIFY_EMAIL). Boolean variants use distinct keys
|
|
19
|
-
* (quota-warning / quota-exceeded, trial-warning / trial-depleted) because
|
|
20
|
-
* template providers branch per template, not per variable.
|
|
5
|
+
* Every sender attaches a stable `template` key and flat variables so
|
|
6
|
+
* template-based providers (Loops) can send the same email; HTML providers
|
|
7
|
+
* ignore it. Boolean variants use distinct keys (quota-warning /
|
|
8
|
+
* quota-exceeded, trial-warning / trial-depleted) because template providers
|
|
9
|
+
* branch per template, not per variable.
|
|
21
10
|
*/
|
|
22
|
-
import { type SendEmailResult } from "./send";
|
|
23
|
-
|
|
11
|
+
import { type SendEmailResult } from "./send.js";
|
|
12
|
+
import { type Money } from "../money.js";
|
|
24
13
|
export declare function sendWelcomeEmail(params: {
|
|
25
14
|
to: string;
|
|
26
15
|
userName: string;
|
|
27
16
|
dashboardUrl: string;
|
|
28
17
|
}): Promise<SendEmailResult>;
|
|
29
|
-
/** Send email verification link (EMAIL-04) */
|
|
30
18
|
export declare function sendVerifyEmail(params: {
|
|
31
19
|
to: string;
|
|
32
20
|
userName: string;
|
|
33
21
|
verificationUrl: string;
|
|
34
22
|
}): Promise<SendEmailResult>;
|
|
35
|
-
/** Send password reset link (EMAIL-05) */
|
|
36
23
|
export declare function sendPasswordResetEmail(params: {
|
|
37
24
|
to: string;
|
|
38
25
|
userName: string;
|
|
39
26
|
resetUrl: string;
|
|
40
27
|
}): Promise<SendEmailResult>;
|
|
41
|
-
/** Send workspace invitation email (EMAIL-06) */
|
|
42
28
|
export declare function sendInvitationEmail(params: {
|
|
43
29
|
to: string;
|
|
44
30
|
inviterName: string;
|
|
@@ -47,17 +33,21 @@ export declare function sendInvitationEmail(params: {
|
|
|
47
33
|
acceptUrl: string;
|
|
48
34
|
declineUrl: string;
|
|
49
35
|
}): Promise<SendEmailResult>;
|
|
50
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Send the allowance warning or used-up email. `used` and `allowance`
|
|
38
|
+
* are money in the deployment's billing currency; the template and the
|
|
39
|
+
* provider variables receive them formatted.
|
|
40
|
+
*/
|
|
51
41
|
export declare function sendQuotaWarningEmail(params: {
|
|
52
42
|
to: string;
|
|
53
43
|
workspaceName: string;
|
|
54
44
|
percentageUsed: number;
|
|
55
|
-
|
|
56
|
-
|
|
45
|
+
used: Money;
|
|
46
|
+
allowance: Money;
|
|
57
47
|
upgradeUrl: string;
|
|
58
48
|
isExceeded: boolean;
|
|
59
49
|
}): Promise<SendEmailResult>;
|
|
60
|
-
/** Send trial warning or depleted email
|
|
50
|
+
/** Send trial warning or depleted email. */
|
|
61
51
|
export declare function sendTrialWarningEmail(params: {
|
|
62
52
|
to: string;
|
|
63
53
|
workspaceName: string;
|
|
@@ -67,14 +57,12 @@ export declare function sendTrialWarningEmail(params: {
|
|
|
67
57
|
upgradeUrl: string;
|
|
68
58
|
isDepleted: boolean;
|
|
69
59
|
}): Promise<SendEmailResult>;
|
|
70
|
-
/** Send payment failed email (EMAIL-11) */
|
|
71
60
|
export declare function sendPaymentFailedEmail(params: {
|
|
72
61
|
to: string;
|
|
73
62
|
workspaceName: string;
|
|
74
63
|
amount: string;
|
|
75
64
|
updatePaymentUrl: string;
|
|
76
65
|
}): Promise<SendEmailResult>;
|
|
77
|
-
/** Send subscription confirmed email (EMAIL-12) */
|
|
78
66
|
export declare function sendSubscriptionConfirmedEmail(params: {
|
|
79
67
|
to: string;
|
|
80
68
|
workspaceName: string;
|
|
@@ -82,7 +70,6 @@ export declare function sendSubscriptionConfirmedEmail(params: {
|
|
|
82
70
|
amount: string;
|
|
83
71
|
dashboardUrl: string;
|
|
84
72
|
}): Promise<SendEmailResult>;
|
|
85
|
-
/** Send trial expiry reminder email (EMAIL-13) */
|
|
86
73
|
export declare function sendTrialExpiryEmail(params: {
|
|
87
74
|
to: string;
|
|
88
75
|
workspaceName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senders.d.ts","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"senders.d.ts","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAgBnD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB3B;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB3B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB3B;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CAsB3B;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6B3B;AAED,4CAA4C;AAC5C,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,eAAe,CAAC,CAyB3B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB3B;AAED,wBAAsB,8BAA8B,CAAC,MAAM,EAAE;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB3B;AAED,wBAAsB,oBAAoB,CAAC,MAAM,EAAE;IACjD,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,eAAe,CAAC,CAuB3B"}
|
package/dist/email/senders.js
CHANGED
|
@@ -1,35 +1,26 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Email
|
|
2
|
+
* Typed wrappers that render a React Email template and send it. They never
|
|
3
|
+
* throw; each returns a SendEmailResult.
|
|
3
4
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* - Team emails: workspace invitation (replaces Phase 10 console.log)
|
|
10
|
-
* - Billing emails: quota warning, trial warning, payment failed, subscription confirmed
|
|
11
|
-
*
|
|
12
|
-
* All functions return Promise<SendEmailResult> and NEVER throw (TECH-08).
|
|
13
|
-
*
|
|
14
|
-
* Every sender attaches a stable `template` key + flat variables so
|
|
15
|
-
* template-based providers (Loops) can send the same email from a
|
|
16
|
-
* provider-side template. HTML-capable providers (Resend) ignore it.
|
|
17
|
-
* Loops mapping: LOOPS_TRANSACTIONAL_ID_<KEY> (e.g. "verify-email" →
|
|
18
|
-
* LOOPS_TRANSACTIONAL_ID_VERIFY_EMAIL). Boolean variants use distinct keys
|
|
19
|
-
* (quota-warning / quota-exceeded, trial-warning / trial-depleted) because
|
|
20
|
-
* template providers branch per template, not per variable.
|
|
5
|
+
* Every sender attaches a stable `template` key and flat variables so
|
|
6
|
+
* template-based providers (Loops) can send the same email; HTML providers
|
|
7
|
+
* ignore it. Boolean variants use distinct keys (quota-warning /
|
|
8
|
+
* quota-exceeded, trial-warning / trial-depleted) because template providers
|
|
9
|
+
* branch per template, not per variable.
|
|
21
10
|
*/
|
|
22
11
|
import * as React from "react";
|
|
23
|
-
import {
|
|
24
|
-
import {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
import { emailBrand } from "./brand.js";
|
|
13
|
+
import { sendEmail } from "./send.js";
|
|
14
|
+
import { formatMoney } from "../money.js";
|
|
15
|
+
import { WelcomeEmail, VerifyEmailEmail, PasswordResetEmail, WorkspaceInvitationEmail, QuotaWarningEmail, TrialWarningEmail, TrialExpiryEmail, PaymentFailedEmail, SubscriptionConfirmedEmail, } from "./templates/index.js";
|
|
16
|
+
/** The locale the email copy is written in; amounts are formatted to match. */
|
|
17
|
+
const EMAIL_LOCALE = "en";
|
|
29
18
|
export async function sendWelcomeEmail(params) {
|
|
30
19
|
return sendEmail({
|
|
31
20
|
to: params.to,
|
|
32
|
-
subject:
|
|
21
|
+
subject: emailBrand().name
|
|
22
|
+
? `Welcome to ${emailBrand().name}!`
|
|
23
|
+
: "Welcome!",
|
|
33
24
|
react: React.createElement(WelcomeEmail, {
|
|
34
25
|
userName: params.userName,
|
|
35
26
|
dashboardUrl: params.dashboardUrl,
|
|
@@ -43,7 +34,6 @@ export async function sendWelcomeEmail(params) {
|
|
|
43
34
|
},
|
|
44
35
|
});
|
|
45
36
|
}
|
|
46
|
-
/** Send email verification link (EMAIL-04) */
|
|
47
37
|
export async function sendVerifyEmail(params) {
|
|
48
38
|
return sendEmail({
|
|
49
39
|
to: params.to,
|
|
@@ -61,7 +51,6 @@ export async function sendVerifyEmail(params) {
|
|
|
61
51
|
},
|
|
62
52
|
});
|
|
63
53
|
}
|
|
64
|
-
/** Send password reset link (EMAIL-05) */
|
|
65
54
|
export async function sendPasswordResetEmail(params) {
|
|
66
55
|
return sendEmail({
|
|
67
56
|
to: params.to,
|
|
@@ -79,10 +68,6 @@ export async function sendPasswordResetEmail(params) {
|
|
|
79
68
|
},
|
|
80
69
|
});
|
|
81
70
|
}
|
|
82
|
-
// ---------------------------------------------------------------------------
|
|
83
|
-
// Team Emails
|
|
84
|
-
// ---------------------------------------------------------------------------
|
|
85
|
-
/** Send workspace invitation email (EMAIL-06) */
|
|
86
71
|
export async function sendInvitationEmail(params) {
|
|
87
72
|
return sendEmail({
|
|
88
73
|
to: params.to,
|
|
@@ -106,21 +91,24 @@ export async function sendInvitationEmail(params) {
|
|
|
106
91
|
},
|
|
107
92
|
});
|
|
108
93
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
94
|
+
/**
|
|
95
|
+
* Send the allowance warning or used-up email. `used` and `allowance`
|
|
96
|
+
* are money in the deployment's billing currency; the template and the
|
|
97
|
+
* provider variables receive them formatted.
|
|
98
|
+
*/
|
|
113
99
|
export async function sendQuotaWarningEmail(params) {
|
|
100
|
+
const used = formatMoney(params.used, EMAIL_LOCALE);
|
|
101
|
+
const allowance = formatMoney(params.allowance, EMAIL_LOCALE);
|
|
114
102
|
return sendEmail({
|
|
115
103
|
to: params.to,
|
|
116
104
|
subject: params.isExceeded
|
|
117
|
-
? "
|
|
118
|
-
: `
|
|
105
|
+
? "Monthly allowance used up"
|
|
106
|
+
: `Monthly allowance at ${params.percentageUsed}%`,
|
|
119
107
|
react: React.createElement(QuotaWarningEmail, {
|
|
120
108
|
workspaceName: params.workspaceName,
|
|
121
109
|
percentageUsed: params.percentageUsed,
|
|
122
|
-
|
|
123
|
-
|
|
110
|
+
used,
|
|
111
|
+
allowance,
|
|
124
112
|
upgradeUrl: params.upgradeUrl,
|
|
125
113
|
isExceeded: params.isExceeded,
|
|
126
114
|
}),
|
|
@@ -129,14 +117,15 @@ export async function sendQuotaWarningEmail(params) {
|
|
|
129
117
|
variables: {
|
|
130
118
|
workspaceName: params.workspaceName,
|
|
131
119
|
percentageUsed: params.percentageUsed,
|
|
132
|
-
|
|
133
|
-
|
|
120
|
+
used,
|
|
121
|
+
allowance,
|
|
122
|
+
currency: params.allowance.currency,
|
|
134
123
|
upgradeUrl: params.upgradeUrl,
|
|
135
124
|
},
|
|
136
125
|
},
|
|
137
126
|
});
|
|
138
127
|
}
|
|
139
|
-
/** Send trial warning or depleted email
|
|
128
|
+
/** Send trial warning or depleted email. */
|
|
140
129
|
export async function sendTrialWarningEmail(params) {
|
|
141
130
|
return sendEmail({
|
|
142
131
|
to: params.to,
|
|
@@ -163,7 +152,6 @@ export async function sendTrialWarningEmail(params) {
|
|
|
163
152
|
},
|
|
164
153
|
});
|
|
165
154
|
}
|
|
166
|
-
/** Send payment failed email (EMAIL-11) */
|
|
167
155
|
export async function sendPaymentFailedEmail(params) {
|
|
168
156
|
return sendEmail({
|
|
169
157
|
to: params.to,
|
|
@@ -183,7 +171,6 @@ export async function sendPaymentFailedEmail(params) {
|
|
|
183
171
|
},
|
|
184
172
|
});
|
|
185
173
|
}
|
|
186
|
-
/** Send subscription confirmed email (EMAIL-12) */
|
|
187
174
|
export async function sendSubscriptionConfirmedEmail(params) {
|
|
188
175
|
return sendEmail({
|
|
189
176
|
to: params.to,
|
|
@@ -205,13 +192,12 @@ export async function sendSubscriptionConfirmedEmail(params) {
|
|
|
205
192
|
},
|
|
206
193
|
});
|
|
207
194
|
}
|
|
208
|
-
/** Send trial expiry reminder email (EMAIL-13) */
|
|
209
195
|
export async function sendTrialExpiryEmail(params) {
|
|
210
196
|
return sendEmail({
|
|
211
197
|
to: params.to,
|
|
212
198
|
subject: params.daysRemaining <= 0
|
|
213
|
-
? `Your
|
|
214
|
-
: `Your
|
|
199
|
+
? `Your trial for ${params.workspaceName} has ended`
|
|
200
|
+
: `Your trial ends in ${params.daysRemaining} day${params.daysRemaining === 1 ? "" : "s"}`,
|
|
215
201
|
react: React.createElement(TrialExpiryEmail, {
|
|
216
202
|
workspaceName: params.workspaceName,
|
|
217
203
|
expiryDate: params.expiryDate,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"senders.js","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"senders.js","sourceRoot":"","sources":["../../src/email/senders.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,5 @@ export interface BaseLayoutProps {
|
|
|
3
3
|
preview: string;
|
|
4
4
|
children: React.ReactNode;
|
|
5
5
|
}
|
|
6
|
-
export declare function BaseLayout({ preview, children }: BaseLayoutProps):
|
|
6
|
+
export declare function BaseLayout({ preview, children }: BaseLayoutProps): React.JSX.Element;
|
|
7
7
|
//# sourceMappingURL=base-layout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-layout.d.ts","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"base-layout.d.ts","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAWD,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,eAAe,qBAiDhE"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Body, Container, Head, Hr, Html, Link, Preview, Section, Text, } from "@react-email/components";
|
|
3
|
-
|
|
3
|
+
import { emailBrand } from "../brand.js";
|
|
4
4
|
const colors = {
|
|
5
5
|
background: "#f4f4f5", // zinc-100
|
|
6
6
|
container: "#ffffff",
|
|
@@ -10,11 +10,9 @@ const colors = {
|
|
|
10
10
|
border: "#e4e4e7", // zinc-200
|
|
11
11
|
};
|
|
12
12
|
export function BaseLayout({ preview, children }) {
|
|
13
|
-
|
|
13
|
+
const brand = emailBrand();
|
|
14
|
+
return (_jsxs(Html, { lang: "en", children: [_jsx(Head, { children: _jsx("meta", { charSet: "utf-8" }) }), _jsx(Preview, { children: preview }), _jsx(Body, { style: bodyStyle, children: _jsxs(Container, { style: containerStyle, children: [brand.name ? (_jsx(Section, { style: headerStyle, children: _jsx(Text, { style: logoStyle, children: brand.name }) })) : null, _jsx(Hr, { style: hrStyle }), _jsx(Section, { style: contentStyle, children: children }), _jsx(Hr, { style: hrStyle }), _jsxs(Section, { style: footerStyle, children: [brand.name ? (_jsx(Text, { style: footerTextStyle, children: brand.name })) : null, _jsxs(Text, { style: footerMutedStyle, children: ["This is a transactional email", brand.name ? ` from ${brand.name}` : "", ".", brand.supportEmail ? (_jsxs(_Fragment, { children: [" ", "If you believe you received this email in error, please contact", " ", _jsx(Link, { href: `mailto:${brand.supportEmail}`, style: footerLinkStyle, children: brand.supportEmail }), "."] })) : null] })] })] }) })] }));
|
|
14
15
|
}
|
|
15
|
-
// ---------------------------------------------------------------------------
|
|
16
|
-
// Inline Styles
|
|
17
|
-
// ---------------------------------------------------------------------------
|
|
18
16
|
const bodyStyle = {
|
|
19
17
|
backgroundColor: colors.background,
|
|
20
18
|
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-layout.js","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,OAAO,EACP,IAAI,GACL,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-layout.js","sourceRoot":"","sources":["../../../src/email/templates/base-layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { BaseLayout, type BaseLayoutProps } from "./base-layout";
|
|
2
|
-
export { WelcomeEmail, type WelcomeEmailProps } from "./welcome";
|
|
3
|
-
export { VerifyEmailEmail, type VerifyEmailEmailProps } from "./verify-email";
|
|
4
|
-
export { PasswordResetEmail, type PasswordResetEmailProps, } from "./password-reset";
|
|
5
|
-
export { WorkspaceInvitationEmail, type WorkspaceInvitationEmailProps, } from "./workspace-invitation";
|
|
6
|
-
export { QuotaWarningEmail, type QuotaWarningEmailProps, } from "./quota-warning";
|
|
7
|
-
export { TrialWarningEmail, type TrialWarningEmailProps, } from "./trial-warning";
|
|
8
|
-
export { PaymentFailedEmail, type PaymentFailedEmailProps, } from "./payment-failed";
|
|
9
|
-
export { SubscriptionConfirmedEmail, type SubscriptionConfirmedEmailProps, } from "./subscription-confirmed";
|
|
10
|
-
export { TrialExpiryEmail, type TrialExpiryEmailProps } from "./trial-expiry";
|
|
1
|
+
export { BaseLayout, type BaseLayoutProps } from "./base-layout.js";
|
|
2
|
+
export { WelcomeEmail, type WelcomeEmailProps } from "./welcome.js";
|
|
3
|
+
export { VerifyEmailEmail, type VerifyEmailEmailProps } from "./verify-email.js";
|
|
4
|
+
export { PasswordResetEmail, type PasswordResetEmailProps, } from "./password-reset.js";
|
|
5
|
+
export { WorkspaceInvitationEmail, type WorkspaceInvitationEmailProps, } from "./workspace-invitation.js";
|
|
6
|
+
export { QuotaWarningEmail, type QuotaWarningEmailProps, } from "./quota-warning.js";
|
|
7
|
+
export { TrialWarningEmail, type TrialWarningEmailProps, } from "./trial-warning.js";
|
|
8
|
+
export { PaymentFailedEmail, type PaymentFailedEmailProps, } from "./payment-failed.js";
|
|
9
|
+
export { SubscriptionConfirmedEmail, type SubscriptionConfirmedEmailProps, } from "./subscription-confirmed.js";
|
|
10
|
+
export { TrialExpiryEmail, type TrialExpiryEmailProps } from "./trial-expiry.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,EACxB,KAAK,6BAA6B,GACnC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,KAAK,+BAA+B,GACrC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export { WorkspaceInvitationEmail, } from "./workspace-invitation";
|
|
12
|
-
export { QuotaWarningEmail, } from "./quota-warning";
|
|
13
|
-
export { TrialWarningEmail, } from "./trial-warning";
|
|
14
|
-
export { PaymentFailedEmail, } from "./payment-failed";
|
|
15
|
-
export { SubscriptionConfirmedEmail, } from "./subscription-confirmed";
|
|
16
|
-
export { TrialExpiryEmail } from "./trial-expiry";
|
|
1
|
+
export { BaseLayout } from "./base-layout.js";
|
|
2
|
+
export { WelcomeEmail } from "./welcome.js";
|
|
3
|
+
export { VerifyEmailEmail } from "./verify-email.js";
|
|
4
|
+
export { PasswordResetEmail, } from "./password-reset.js";
|
|
5
|
+
export { WorkspaceInvitationEmail, } from "./workspace-invitation.js";
|
|
6
|
+
export { QuotaWarningEmail, } from "./quota-warning.js";
|
|
7
|
+
export { TrialWarningEmail, } from "./trial-warning.js";
|
|
8
|
+
export { PaymentFailedEmail, } from "./payment-failed.js";
|
|
9
|
+
export { SubscriptionConfirmedEmail, } from "./subscription-confirmed.js";
|
|
10
|
+
export { TrialExpiryEmail } from "./trial-expiry.js";
|
|
17
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/email/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAwB,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,YAAY,EAA0B,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAA8B,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EACL,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,wBAAwB,GAEzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,GAElB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,kBAAkB,GAEnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,GAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAA8B,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import * as React from "react";
|
|
1
2
|
export interface PasswordResetEmailProps {
|
|
2
3
|
userName: string;
|
|
3
4
|
resetUrl: string;
|
|
4
|
-
locale?: "en" | "mn";
|
|
5
5
|
}
|
|
6
|
-
export declare function PasswordResetEmail({ userName, resetUrl,
|
|
6
|
+
export declare function PasswordResetEmail({ userName, resetUrl, }: PasswordResetEmailProps): React.JSX.Element;
|
|
7
7
|
//# sourceMappingURL=password-reset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-reset.d.ts","sourceRoot":"","sources":["../../../src/email/templates/password-reset.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"password-reset.d.ts","sourceRoot":"","sources":["../../../src/email/templates/password-reset.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,QAAQ,GACT,EAAE,uBAAuB,qBAuBzB"}
|