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

bymoffice

v0.1.0

Published

Open, edit and save Word and Excel files (docx, xlsx, doc, xls, RTF) in the browser: one script, no server, no dependencies

Readme

BYM Office

Word ve Excel dosyalarını tarayıcıda açın, düzenleyin, kaydedin — docx, xlsx, doc, xls ve RTF. TypeScript ile sıfırdan yazılmış belge ve tablo motoru: tek betik, sunucu yok, çalışma zamanı bağımlılığı yok.

Canlı demo · English · Geliştirici kılavuzu · WebView köprüsü · Sürüm notları

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/bymoffice.min.js"></script>
<div id="editor" style="height: 600px"></div>
<script>
  BymOffice.mount(document.getElementById('editor'), {
    file: '/files/rapor.xlsx', // adres, File/Blob ya da baytlar; biçim içerikten tanınır
    saveTo: true,              // Kaydet düğmesi ve Ctrl/Cmd+S dosyayı aynı adrese geri yazar
    locale: 'tr',
  });
</script>

Neden

  • Tamamen tarayıcıda çalışır. Dosya cihazda okunur, düzenlenir ve yazılır; siz bir yere kaydetmedikçe hiçbir şey gönderilmez (motor yalnız, belge gerektirirse paketle gelen fontu betiğin yanından yükler). Aynı kod sunucu tarafı işler için Node'da da çalışır.
  • Tek dosya, sıfır bağımlılık. CDN'den tek <script> satırı ya da npm. Paket (sıkıştırılmış 4,7 MB) Bookman Old Style ile yazılmış belgeler için bir font da getirir.
  • Kayıpsız. Motorun anlamadığı parçalar bayt bayt korunur; yalnız değiştirdiğiniz yeniden yazılır. Değişmemiş bir docx ya da xlsx açıldığı haliyle, bayt bayt kaydedilir.
  • Yalnız okuyucu değil, hazır editör. Araç çubukları, klavye ve dokunmatik, geri al/yinele, pano, bul ve değiştir, yazdırma, PDF — Türkçe ya da İngilizce.
  • Web sayfaları ve uygulamalar. Her web sayfası ve çatı; mobil ve masaüstü uygulamalarda tek dosyalık WebView sayfasıyla.

Neler yapar

Excel (xlsx; xls salt okunur açılır ya da xlsx'e çevrilir)

  • Yalnız görünen alanı çizen Canvas ızgara; dondurulmuş bölmeler, gizli satır/sütun, sayfa sekmeleri.
  • Hücre düzenleme, biçim araç çubuğu, sayı biçimleri (Türkçe ve İngilizce yerel ayar), birleştirme, kenarlık, koşullu biçim, veri doğrulama, süzgeç ve sıralama.
  • Formüller: 265 fonksiyon, artımlı yeniden hesap, dinamik diziler (taşma, A1#), LET ve LAMBDA.
  • Grafikler (çizme, ekleme, düzenleme, kopyalama), pivot tablolar (yenileme, oluşturma, alan değiştirme, silme), görseller ve şekiller, notlar, sayfa koruması.
  • Yazdırma, baskı önizleme, sayfa yapısı, PDF.

Word (docx; doc ve RTF salt okunur açılır ya da docx'e çevrilir)

  • Sayfalı düzen: üstbilgi/altbilgi, dipnot, tablo, liste, görsel, kayan nesne, metin kutusu, grafik.
  • İmleç, seçim, IME, biçimlendirme, stiller, listeler, tablolar, görseller, bağlantılar, sekme durakları, sayfa yapısı ile düzenleme.
  • Değişiklik izleme (yazma, silme ve biçim izlenir; kabul/ret), yan panelli yorumlar, belge koruması.
  • Yazdırma ve seçilebilir metinli, bağlantılı, anahatlı PDF.

İkisinde de

  • Parola korumalı dosyalar: şifreli docx/xlsx/doc/xls açılır; docx/xlsx aynı parolayla kaydedilir.
  • Eşzamanlı düzenleme: aynı çalışma kitabını ya da belgeyi birden çok kişi düzenler. Aktarıcı yalnız iletileri sıraya koyar, her arka uçta yazılabilir; bağımlılıksız bir Node örneği server/ klasöründe gelir.
  • Dosyanın geldiği yere geri kaydetme (saveTo, ETag/If-Match, çakışma sorusu) ya da kendiliğinden kaydetme.
  • Mobil ve masaüstü uygulamalar için WebView köprüsü (dist/bymoffice.webview.html, internet gerektirmez).

Henüz olmayanlar kılavuzdaki "Henüz olmayanlar" tablosunda açıkça yazılı. En önemlisi: doc, xls ve RTF kendi biçimlerinde kaydedilemez — docx/xlsx olarak kaydedilir.

Kurulum

CDN — derleme gerekmez, global BymOffice tanımlanır:

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/bymoffice.min.js"></script>

npm

npm i bymoffice
import { mount, open } from 'bymoffice';

// Sayfada editör
const view = await mount(document.getElementById('editor'), { file: blobOrUrl, locale: 'tr' });

// Arayüzsüz: oku, değiştir, yaz (tarayıcı ya da Node)
const file = await open(bytes);
const saved = await file.save();

Paketleyici kullanıyorsanız node_modules/bymoffice/dist/fonts/ klasörünü sunduğunuz dosyalara kopyalayıp adresini verin: mount(el, { fontsUrl: '/assets/bymoffice-fonts/' }).

Yalnız ES modülü ve <script> çıktısı dağıtılır (CommonJS çıktısı yok). TypeScript tipleri pakette.

Çatılar ve uygulamalar

| Nerede | Nasıl | |---|---| | Düz HTML, Laravel/Blade, Django, Rails, PHP … | CDN'den <script>, ardından BymOffice.mount(...) | | React, Vue, Svelte, Angular | Bir effect / onMounted içinde import { mount } from 'bymoffice'; bileşen kalkarken destroy() | | Next.js, Nuxt | Yalnız tarayıcı tarafında: 'use client' bileşeni ya da SSR kapalı dinamik içe aktarma | | Flutter, React Native, yerel iOS/Android, Electron, Tauri | bymoffice.webview.html bir WebView'e yüklenir, iletilerle konuşulur (load, save, changed, error …) — bkz. köprü sözleşmesi | | Node | open(), düzenleme işlemleri ve save() ekransız çalışır |

Tablo bir tariftir, test raporu değil: motor bugün bir Laravel sayfasında ve bir Flutter web uygulamasında kullanılıyor; Next.js, React Native, Electron, Tauri ve gerçek mobil WebView'ler henüz denenmedi. Motorun kendisi her değişiklikte Chromium, Firefox, WebKit ve iki mobil profilde (iPhone, Pixel) sınanır. DecompressionStream olmayan eski WebView'lerde motor kendi inflate/deflate kodunu kullanır.

Geliştirme

pnpm install
pnpm build      # dist/: bymoffice.min.js (global BymOffice), bymoffice.esm.js, tipler, fontlar, WebView sayfası
pnpm site       # demo sitesi site-dist/ klasörüne
pnpm demo       # geliştirici test sayfası: http://127.0.0.1:4318/demo/index.html
pnpm verify     # tip denetimi, birim testleri, tarayıcı testleri, paket denetimi, dosya havuzunda gidiş-dönüş

Kılavuz ve kod yorumları motorun uyduğu kuralları anlatır (kayıpsız kaydetme, sessizce kaybetmek yerine reddetme, kötü niyetli dosyanın sayfayı dondurmasını önleyen sınırlar).

Fontlar ve üçüncü taraf içerik

Paket, Bookman Old Style'ı olmayan cihazlar için ölçüleri ona yakın TeX Gyre Bonum fontunu (GUST e-foundry) getirir. Dosyalar değiştirilmeden, GUST Font License ile dağıtılır ve yalnız gerektiğinde yüklenir. Ayrıntı: THIRD-PARTY-NOTICES.md.

Lisans

MIT