npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@pushizo/web

v0.1.0

Published

Pushizo Web SDK: izin istemi, Web Push aboneliği, kullanıcı/tag yönetimi, olaylar ve service worker

Readme

English

Pushizo Web SDK — Web push permission and subscription (VAPID), email and SMS subscriptions, users, tags and aliases, events, in-app messages, notification inbox, user preferences and the service worker. The API surface is compatible with eski sağlayıcı v5.

Status: The script tag is served by the Pushizo API today; the npm package is being published. Durum: Script etiketi bugün Pushizo API'sinden sunulur; npm paketinin yayını hazırlanıyor.

Install from GitHub until then · O zamana kadar GitHub'dan kurulum:

npm install --allow-remote=root https://github.com/pushizo/pushizo-web/releases/download/v0.1.0/pushizo-web-0.1.0.tgz

After publication · Yayından sonra:

<script src="https://api.pushizo.com/sdk-web/PushizoSDK.js" async></script>
<script>
  window.PushizoDeferred = window.PushizoDeferred || [];
  PushizoDeferred.push((Pushizo) => Pushizo.init({ appId: 'app_…' }));
</script>
npm install @pushizo/web

The detailed guide below is in Turkish; code samples are language-neutral. Full documentation: docs.pushizo.com/docs/sdk/web · API reference: docs.pushizo.com/docs/api.

Türkçe

@pushizo/web

Pushizo Web SDK: Web Push izni ve aboneliği, e-posta/SMS aboneliği, kullanıcı/tag/alias yönetimi, olaylar, in-app mesajlar, bildirim kutusu, kullanıcı tercihleri ve service worker. eski sağlayıcı v5 yüzeyiyle uyumludur.

Ayrıntılı kullanım kılavuzu: docs.pushizo.com/docs/sdk/web.

Kurulum

<script src="https://api.pushizo.com/sdk-web/PushizoSDK.js" async></script>
<script>
  window.PushizoDeferred = window.PushizoDeferred || [];
  PushizoDeferred.push(async (Pushizo) => {
    await Pushizo.init({ appId: 'app_…', apiUrl: 'https://api.pushizo.com' });
  });
</script>
import Pushizo from '@pushizo/web';
await Pushizo.init({ appId: 'app_…', apiUrl: 'https://api.pushizo.com' });

CommonJS (eski paketleyiciler, Jest): paket require koşulunda dist/cjs/index.cjs ve CommonJS tür tanımlarını sunar.

const { Pushizo } = require('@pushizo/web'); // veya require('@pushizo/web').default

Paket boyutu bütçesi size-budget.json'dadır (gzip); npm run size -w @pushizo/web derlenmiş çıktıyı denetler ve CI aşımda başarısız olur.

Site kökünde PushizoSDKWorker.js bulunmalıdır (içeriği API'deki worker'ı importScripts ile yükler).

API yüzeyi

| Alan | Üyeler | |------|--------| | Yaşam döngüsü | init, setConsentGiven, login(externalId, identityHash?), logout, destroy | | User | addTag(s), removeTag(s), getTags, setLanguage, setProperty, addAlias(es), removeAlias, addEmail, removeEmail, addSms, removeSms, getPreferences(), setPreferences([...]), getCategories(), setAdsPersonalizationConsent(bool), getConsents(), id, externalId, pushSubscription.{id, token, optedIn, state, optIn, optOut, addObserver} | | Notifications | permission, requestPermission, addClickListener, addForegroundLifecycleListener | | Slidedown | promptPush, promptEmail, promptSms, promptEmailAndSms (hepsi { force? }) | | Session | sendEvent(name, properties?, value?, { eventId? }) — eventId: tarayıcı pikseliyle aynı kimlik (Conversions API tekilleştirmesi, docs/guides/conversions-api.md) | | InAppMessages | addTrigger(s), removeTrigger(s), clearTriggers, getTriggers, setScreen, addClickListener, addLifecycleListener, paused | | Inbox | list, markRead, markAllRead, archive, unreadCount, addObserver | | CustomLink | render | | Location | setShared(bool), isShared, requestPermission(rationale?) (yalnızca ön plan; ayrıntı web rehberi "Konum") | | Attribution | get(): { first, last } (UTM / tıklama kimliği dokunuşları; aşağıdaki bölüm) |

Atribüsyon (UTM ve tıklama kimlikleri)

SDK her sayfa açılışında adresteki utm_source, utm_medium, utm_campaign, utm_term, utm_content, utm_id ve reklam tıklama kimliklerini (fbclid, gclid, gbraid, wbraid, ttclid, li_fat_id, msclkid; birden çoksa bu sırayla ilki) okur ve bir dokunuş kaydeder.

await Pushizo.init({
  appId: 'app_…',
  attribution: { enabled: true, windowDays: 30, captureClickIds: true }, // varsayılanlar
});
const { first, last } = Pushizo.Attribution.get(); // ilk ve son dokunuş (yoksa null)
  • enabled: false: hiçbir parametre okunmaz, saklanmaz, gönderilmez. windowDays 1–90 aralığına kırpılır; captureClickIds: false iken yalnızca UTM parametreleri dokunuş üretir.
  • Saklama: çerez yazılmaz; ilk ve son dokunuş SDK'nın yerel deposunda (localStorage, hs:<appId>) tutulur ve windowDays'ten eski kayıtlar okunurken silinir. Aynı parametrelerle 30 dakika içindeki yeniden yükleme yeni dokunuş sayılmaz.
  • Kişisel veri: landing_url yalnızca origin + yoldur (sorgu ve hash alınmaz); referrer yalnızca yönlendiren sitenin host'udur, sitenin kendi host'u gönderilmez.
  • Rıza: requiresPrivacyConsent açıkken onay verilene kadar hiçbir şey yakalanmaz; setConsentGiven(false) atribüsyon kayıtlarını ve bekleyen dokunuşları siler.
  • Gönderim: dokunuşlar çevrimdışı kuyrukla POST /sdk/v1/apps/{appId}/attribution'a gider; abonelik varsa subscription_id + sahiplik kanıtı (token_hash / identity_hash), yoksa login ile verilen external_id kullanılır. İkisi de yoksa dokunuş cihazda bekler, abonelik oluşunca veya login sonrası gönderilir. touch_id yeniden denemelerde aynı kalır (sunucu tekilleştirir).

Önerilen reklam URL parametreleri (izleme şablonu / URL parametreleri alanı):

| Platform | Parametreler | |----------|--------------| | Meta | utm_source=facebook&utm_campaign={{campaign.id}}&utm_content={{adset.id}} (fbclid otomatik eklenir) | | Google Ads | utm_source=google&utm_campaign={campaignid}&utm_content={adgroupid} (otomatik etiketleme açıkken gclid / gbraid / wbraid gelir) | | TikTok | utm_source=tiktok&utm_campaign=__CAMPAIGN_ID__&utm_content=__AID__ (ttclid otomatik eklenir) |

Tercihler, kategoriler ve diğer özellikler

Kullanıcı tercihleri

const { preferences, categories } = await Pushizo.User.getPreferences();
Pushizo.User.setPreferences([
  { category: 'promo', optedIn: false },                 // tüm kanallar
  { category: 'news', optedIn: true, channel: 'email' }, // tek kanal
]);

GET/PUT /sdk/v1/apps/{appId}/preferences; abonelik sahiplik kanıtı (token_hash, login'de identity_hash) otomatik eklenir. setPreferences çevrimdışı kuyruğa yazılır.

Reklam kişiselleştirme rızası: Pushizo.User.setAdsPersonalizationConsent(true) kullanıcının e-posta/telefon SHA-256 özetinin app'in bağladığı reklam platformu kitlelerine gönderilmesine izin verir; false geri alır (sonraki senkronda kitlelerden çıkarılır). getConsents() rıza kayıtlarını döner. Rehber: docs/guides/ad-audiences.md.

E-posta/SMS toplama istemi

await Pushizo.init({ appId: 'app_…', slidedown: { enabled: true, collect: 'email_sms' } });
await Pushizo.Slidedown.promptEmail();

collect: 'push' | 'email' | 'sms' | 'email_sms' (init ya da dashboard istemi prompt.collect). E-posta/SMS için adres alanı + kabul düğmesi; doğrulama addEmail/addSms ile aynı. Kabulde adres kaydedilir ve istem bir daha gösterilmez; ret push istemiyle aynı geri çekilme takvimine uyar. collect yoksa push davranışı değişmez.

In-app

  • trigger_groups: gruplar VEYA, grup içi VE (triggers ilk grup).
  • Yeni tetik session_duration { seconds }: oturum süresi eşiğe ulaşınca zamanlayıcıyla gösterilir.
  • Yeni düğme aksiyonları push_prompt (yerel izin istemi) ve outcome { name, value? } (olay gönderir).
  • variant_id (A/B görünüm varyantı) her gösterim/tıklama/kapatma olayıyla geri gider.
  • App geneli aralık config.in_app.min_interval_seconds: herhangi bir in-app mesajın son gösteriminden beri süre dolmadan yeni mesaj gösterilmez (kalıcı).

Oturum süresi

pagehide ve zaman aşımında POST /sessions { duration_seconds } kuyruğu beklemeden keepalive fetch ile gönderilir; geçici hatada kuyruğa düşer.

Geliştirme

npm run -w sdk/web build       # dist/index.js (ESM), dist/PushizoSDK.js (IIFE), dist/PushizoSDKWorker.js
npm run -w sdk/web typecheck
npx vitest run --project unit sdk/web

Boyut bütçesi: IIFE gzip < 25 KB (~24,0 KB), service worker gzip < 5 KB (~3,9 KB).


Support · Destek

This repository is mirrored automatically from the Pushizo main repository on every release. Please open an issue instead of a pull request; fixes land in the main repository and ship with the next release. Bu depo her sürümde Pushizo ana deposundan otomatik yansıtılır. Pull request yerine issue açın; düzeltmeler ana depoda yapılır ve bir sonraki sürümle buraya gelir.

Released under the MIT License · MIT lisanslıdır — LICENSE.