پرش به مستندات
پایگاه دانش

SDK‌های نوع‌دار

اول یک کلاینت TypeScript، بعد بقیه.

جزئیات

  • روی npm منتشر شده و در حال استفاده است. @openemail/sdk یک کلاینت TypeScript کامل و بدون وابستگی است، منتشرشده هم به‌صورت ESM و هم CommonJS، با یک متد برای هر عملیات مستندشده‌ای که API ارائه می‌کند، به‌علاوه‌ی آن دو نقطه‌ی پایانی متای بدون احراز هویت که یک تولیدکننده‌ی کلاینت لازم دارد، و کلیدی که از OPENEMAIL_API_KEY خوانده می‌شود، یک timeout سی‌ثانیه‌ای برای هر تلاش، دو بار تلاش دوباره، یک apiKey قابل بازنویسی در هر فراخوانی برای پردازه‌ای که به چند فضای کاری سرویس می‌دهد، و emails.iterate() برای پیمایش یک فهرست بدون نوشتن حلقه‌ی cursor. روی Node 18 به بالا، Workers، Deno، Bun و مرورگر اجرا می‌شود. کلیدی با پیشوند اشتباه به‌جای اینکه در اولین فراخوانی 401 بگیرد، همان موقع ساخته‌شدن خطا می‌دهد؛ این بررسی فقط یک پیشوند است و نه بیشتر، پس کلیدی خوش‌شکل که باطل شده باشد همچنان روی سیم شکست می‌خورد.
  • با یک بررسی همخوانی به سرور بسته شده که در هر build سند OpenAPI را می‌خواند و اگر آن دو از هم فاصله بگیرند شکست می‌خورد: متدی که به عملیاتی اشاره می‌کند که در مشخصات نیست، عملیاتی مستندشده بدون متد، فهرست scope‌ای که با آنچه عملیات می‌خواهد نمی‌خواند، فضای نامی با متد اما بدون مدخل در مرجع، یا متدی که درخواستی را که مانیفست خودش نام می‌برد نمی‌فرستد. آنچه را ثابت کرده چاپ می‌کند، و امروز این می‌شود: 116 متد SDK که هر 104 عملیات مستندشده را پوشش می‌دهند. دو اسکریپت تولیدکننده کنارش می‌ایستند و از تولید عملیاتی که دسته‌بندی‌نشده یا با em dash نوشته شده سر باز می‌زنند. به همین دلیل است که این کلاینت پوششی نیست که بعداً نوشته شده باشد. نمی‌تواند یک نسخه از API عقب بماند.
  • آنچه کم است لوله‌کشی انتشار است. بسته روی npm هست، پس bun add @openemail/sdk کار می‌کند، اما هیچ جریان کاری انتشاری وجود ندارد: انتشار یعنی اجرای دستی preflight، ساخت و bun publish، یعنی نسخه وقتی به npm می‌رسد که کسی یادش بیفتد، نه وقتی تغییر وارد می‌شود. APIای که به‌طور پیش‌فرض به آن وصل می‌شود روشن است و پاسخ می‌دهد.
  • TypeScript تنها زبان است، و سند OpenAPI عمداً پاسخِ بقیه است، به‌جای پنج کلاینت دست‌نویس که هرکدام با سرعتی متفاوت عقب می‌مانند. هیچ کلاینت Python، Go یا Ruby در مخزن نیست، و تا وقتی آن سند همان چیزی نباشد که از رویش تولید می‌شوند، نخواهد بود.