Signals hızlı başlangıç
Pathrule Signals SDK'sını ekleyin, bir hedef seçin (kendi toplayıcınız, Pathrule Local veya Pathrule Cloud), hataları ve olayları kod yollarıyla birlikte raporlayın ve doğrulamayı mümkün kılan sürümü belirleyin.
Bu sayfada
Bu sayfada Signals SDK'sını bir uygulamaya ekliyor, olaylarının nereye gideceğini seçiyor ve Signals'ın gruplayıp doğruladığı hataları ve olayları raporluyorsunuz. SDK her modda aynıdır; yalnızca hedef değişir.
SDK'yı ekleyin
npm install @pathrule/signals
SDK, Apache-2.0 lisanslı @pathrule/signals paketidir. Node 18 veya üzerinde ve güncel tarayıcılarda (ES2022 ve fetch) çalışır. Herkese açık npm paketi yayımlanma aşamasında olduğundan güncel durumu genel bakış sayfasından kontrol edin.
Başlatın
import { pathrule, httpCollector } from "@pathrule/signals";
pathrule.init({
destination: httpCollector({
url: "https://collector.example.com/signals",
headers: { Authorization: `Bearer ${process.env.SIGNALS_TOKEN}` },
}),
environment: "production",
release: { version: "2.4.0", commit: process.env.GIT_SHA },
});
environment değeri development, preview veya production olabilir.
Bir hedef seçin
Bağımsız, kendi toplayıcınız. httpCollector({ url, headers?, credentials? }), zarfları Signals protokolünü konuşan herhangi bir uç noktaya POST eder. Ortada bir Pathrule hesabı yoktur.
Pathrule Local. Projede bir kez yerel bir çalışma alanı oluşturun, ardından olayları makinenizdeki Pathrule sunucusuna gönderin. Bu hedef yalnızca Node'da çalışır.
pathrule init --local
import { pathrule } from "@pathrule/signals";
import { pathruleLocal } from "@pathrule/signals/local";
pathrule.init({ destination: pathruleLocal(), environment: "development", release: "2.4.0" });
Pathrule Cloud. Bir proje anahtarı oluşturun ve bunu Cloud hedefine verin. Anahtarlar prs_ ile başlar, yalnızca yazma yetkilidir ve istemci kodunda dağıtılmaları güvenlidir. Anahtar yönetimi için Cloud Signals sayfasına bakın.
import { pathrule, pathruleCloud } from "@pathrule/signals";
pathrule.init({
destination: pathruleCloud({ key: process.env.PATHRULE_SIGNALS_KEY }),
environment: "production",
release: { version: "2.4.0", commit: process.env.GIT_SHA },
});
Özel bir hedef, SignalsDestination arayüzünü uygulayan herhangi bir nesnedir.
Hataları ve olayları raporlayın
try {
await submitOrder(cart);
pathrule.event("order placed", {
node: "/apps/web/checkout",
flow: "checkout",
meta: { outcome: "success" },
});
} catch (error) {
pathrule.error(error, { node: "/apps/web/checkout", flow: "checkout" });
throw error;
}
İkinci argüman bir link'tir: node olayın ait olduğu kod yoludur, flow kullanıcının gördüğü akışı adlandırır, text kısa bir açıklama ekler ve meta ayrıntıları taşır. Bir grubun akışında meta.outcome: "success" içeren bir olay, o gruba yönelik bir düzeltmenin doğrulanmasını sağlayan kanıttır.
Sürümü belirleyin
release bir sürüm dizesi, version, commit ve deployment alanlarını içeren bir nesne ya da null olabilir. releaseFromEnvironment(process.env) bu değeri yaygın dağıtım değişkenlerinden okur. Sürüm kimliği olmadan Signals olayları yine gruplayabilir, ancak bir düzeltmeyi doğrulayamaz: pathrule.status().verification değeri no_release olur.
Süreç sonlanmadan önce kuyruğu boşaltın
const result = await pathrule.flush({ timeoutMs: 5000 });
// result: { outcome, delivered, pending, dropped }
flush() hiçbir zaman reject etmez. Zaman aşımı varsayılan olarak 5 saniyedir, en fazla 30 saniye olabilir. Tarayıcılarda SDK, sayfa kapanırken bekleyenleri sendBeacon ile gönderir; Node'da ise beforeExit anında kuyruğu boşaltır. Serverless fonksiyonlar gibi kısa ömürlü süreçlerde bu çağrıyı kendiniz yapın.
Yapılandırma
| Seçenek | Ne işe yarar |
|---|---|
destination | Zarfların gideceği yer: httpCollector, pathruleLocal, pathruleCloud ya da kendi hedefiniz. |
key, endpoint | pathruleCloud çağrısına verilmediğinde Cloud anahtarı ve uç noktası. |
environment | development, preview veya production. |
release | Sürüm dizesi, { version, commit, deployment } ya da null. |
scrub | Herhangi bir şey gönderilmeden önce hassas verileri temizleyen bir hook. |
declare | Duyurulacak enstrümantasyon noktaları; bildirimler yalnızca development ve preview ortamlarında gönderilir. |
timeoutMs | İstek zaman aşımı, varsayılan olarak 10000. |
pathrule.status() doğrulamanın ready, no_release ya da inactive durumunda olduğunu bildirir, pathrule.reset() ise istemciyi sıfırlar.