پرش به مستندات
SDK

فهرست تغییرات

همهٔ انتشارهای این بسته، تازه‌ترین در ابتدا.

0.1.0

انتشار دوم. اکنون می‌توان مخاطبان را نوشت و در audience ها گروه‌بندی کرد، یک دامنه می‌تواند نام‌های tracking و files خودش را داشته باشد، و یک کلید می‌تواند خودش را بچرخاند. یک تغییر، کد موجود را می‌شکند و زیر همین بخش فهرست شده است.

  • openemail.audiences تازه است: فهرست‌های نام‌دار از مخاطبان، با list، get، create، update، delete، listContacts، addContact و removeContact. هر فضای کاری یک audience پیش‌فرض دارد، همان که builtin آن default است، که همهٔ مخاطبان را نگه می‌دارد و حذف‌شدنی نیست.
  • openemail.contacts اکنون می‌تواند بنویسد. create، update و delete به list و get اضافه شده‌اند، و هرکدام آدرس ایمیل را به‌عنوان id می‌گیرند.
  • openemail.domains.update() نام tracking و نام files مخصوص یک دامنه را تنظیم یا پاک می‌کند، و DomainResource.tracking و DomainResource.storage وضعیت هرکدام را گزارش می‌دهند.
  • openemail.me.rotate() رازِ کلید فراخوان را جایگزین می‌کند و با کلید جدید به‌طور کامل نتیجه می‌دهد. هیچ بازهٔ هم‌پوشانی‌ای وجود ندارد، پس راز قدیمی همان لحظه که فراخوانی بازمی‌گردد از کار می‌افتد.
  • KeyResource.domainAllowlist یک کلید را به دامنه‌های کامل محدود می‌کند، در کنار آدرس‌های تکی در addressAllowlist. یک دامنه همهٔ آدرس‌های روی آن را در بر می‌گیرد، از جمله آدرس‌هایی که پس از ساخت کلید ایجاد شده‌اند.
  • پیوست‌ها را می‌توان با ارجاع فرستاد. { fileId } در کنار شکل درون‌خطی قرار می‌گیرد، و attachmentDelivery انتخاب می‌کند که فایل‌ها درون پیام حمل شوند، با پیوند دانلود جایگزین شوند، یا اندازه‌شان تصمیم بگیرد.
  • ده رویداد webhook تازه، بیست تا در مجموع: پاسخ‌ها، تحویل‌ها، تأخیرها، مسدودسازی‌ها، دانلودها و سه رویداد دامنه.
  • email.downloaded وقتی شلیک می‌شود که کسی فایلی را بگیرد که به‌صورت پیوند دانلود بیرون رفته است. یک پیوند به همهٔ کسانی که پیام برایشان رفته خدمت می‌کند، پس این رویداد هیچ گیرنده‌ای را نام نمی‌برد.
  • چهار scope تازه: contacts:write، audiences:read، audiences:write و keys:write.
  • نُه فیلد که پیش‌تر رشته‌های آزاد بودند اکنون نوع‌های نام‌دار دارند، از جمله RecipientKind، ContactSource، RuleMatchMode و WebhookDeliveryStatus. همان رشته‌های پیشین را می‌پذیرند و برمی‌گردانند.
audiences.ts
const audience = await openemail.audiences.create({ name: 'Product updates' }) await openemail.contacts.create({ email: '[email protected]', name: 'Grace Hopper' })await openemail.audiences.addContact(audience.id, { email: '[email protected]' })

چه چیزی در 0.1.0 می‌شکند

  • contacts.list به‌جای آرایه، Page<ContactResource> برمی‌گرداند. ردیف‌ها را از page.items بخوانید و تا وقتی page.hasMore درست است page.nextCursor را دنبال کنید. دفترچهٔ نشانی‌ها بی‌کران است، و آرایهٔ قدیمی بی‌آنکه چیزی بگوید در 200 ردیف متوقف می‌شد.
  • API_SCOPES، ERROR_TYPES، MESSAGE_ENCRYPTION_FORMATS، RULE_ACTIONS، RULE_FIELDS، RULE_OPERATORS و WEBHOOK_EVENTS به‌جای آرایه، شیءهای کلیددار هستند، پس هر عضو نامی دارد که با آن صدایش بزنید. مقادیر تغییری نکرده‌اند.
  • contacts.list مخاطبانی را که هرگز به آن‌ها ایمیلی نرفته به‌جای ابتدا در انتها مرتب می‌کند، پس مخاطبی که تازه ساخته‌اید دیگر به بالای دفترچه نمی‌پرد.
migrate.ts
import { API_SCOPES, WEBHOOK_EVENTS } from '@openemail/sdk' const scopes = Object.values(API_SCOPES)const subscribable = new Set<string>(Object.values(WEBHOOK_EVENTS)) const page = await openemail.contacts.list()for (const contact of page.items) send(contact.email)

کدی که فقط از نوع‌های مشتق استفاده می‌کرده بی‌هیچ تغییری کار می‌کند. ApiScope، WebhookEvent و بقیه همان نوع‌هایی هستند که بودند.

0.0.1

نخستین انتشار: برای هر نقطهٔ پایانی یک متد نوع‌دار، و بدون هیچ وابستگی زمان اجرا.

  • ارسال: یک پیام، ارسال دسته‌ای، ارسال‌های زمان‌بندی‌شده، یک بازهٔ بازگردانی، و ترجمه به زبانی که گیرنده می‌خواند.
  • قالب‌ها: ساخت، نسخه‌بندی، انتشار، پیش‌نمایش و ارسال.
  • ردیابی: بازشدن‌ها، کلیک‌ها، و خلاصه‌ای برای هر پیام.
  • صندوق پستی: رشته‌ها، پیش‌نویس‌ها، برچسب‌ها، مخاطبان و قواعد.
  • فضای کاری: دامنه‌ها، آدرس‌ها، اعضا، نقش‌ها و تنظیمات.
  • webhook ها، همراه با راستی‌آزمای امضا که هرجا WebCrypto باشد اجرا می‌شود.
  • رویدادهای تقویم، از جمله فایل ICS.
  • صندوق‌های یک‌بارمصرف، تنها بخشی که در مرورگر هم اجرا می‌شود.
  • صفحه‌بندی با cursor روی هر فهرست، از راه listAll و iterate.
  • دو کلاس خطا، و تلاش‌های دوباره‌ای که نمی‌توانند یک ارسال را تکراری کنند.
  • ESM و CommonJS، روی Node 20+، Bun، Deno و Cloudflare Workers.