@burgan-tech/morph-touch-runtime
v0.0.38
Published
morph-touch - Runtime Package for engine deployment
Readme
morph-touch
Burgan vNext domain paketi. Bu repo bir uygulama değil; vNext motorunun çalıştırdığı
bileşen tanımlarını (JSON + .csx script'leri) barındırır.
İş bileşenleri morph-touch/ altında, vNext'in beklediği klasör düzeninde tutulur:
| Klasör | İçerik | | --- | --- | | morph-touch/Workflows/ | State machine tanımları (akışlar) | | morph-touch/Tasks/ | Akışların çağırdığı task'lar (HTTP, Script, Dapr, Notification …) | | morph-touch/Functions/ | Runtime'ın dışa açtığı REST endpoint'leri | | morph-touch/Schemas/ | JSON Schema veri sözleşmeleri | | morph-touch/Views/ | UI view tanımları | | morph-touch/Extensions/ | Instance okumalarında veri zenginleştirme | | morph-touch/Mappings/ | Paylaşılan script helper bileşenleri |
Klasör isimleri ve domain adı vnext.config.json içindeki paths /
domain alanlarından okunur; kök dizindeki tüm araçlar bu dosyayı kaynak kabul eder.
Kök dizindeki .js dosyaları
Beş adet Node.js aracı var; hiçbiri runtime'da çalışmaz, tamamı geliştirme/CI zinciri içindir.
index.js — paket API'si
package.json'daki main. Domain bileşenlerini programatik okumak için ince bir katman:
getSchemas(), getWorkflows(), getTasks(), getViews(), getFunctions(),
getExtensions(), getMappings() ilgili klasörü tarar ve { dosyaAdı: içerik } sözlüğü
döner. Ek olarak getPathsConfig(), getDomainName(), getComponentPath(type) ve
getAvailableTypes() sunar. Klasör yollarını vnext.config.json'dan çözer, dosya yoksa
varsayılanlara düşer. .meta ve src klasörlerini atlar; Mappings iç içe klasör
düzeninde olduğu için recursive taranır.
validate.js ve test.js bu modülün üzerinden çalışır.
validate.js — doğrulama (npm run validate)
Repo'nun asıl kalite kapısı. Sırayla şunları kontrol eder:
package.jsonyapısı, zorunlu alanları ve@burgan-tech/scope'uindex.jsgiriş noktasının yüklenebilirliği ve beklenen fonksiyonları export etmesivnext.config.jsongeçerliliği- Domain klasör yapısının varlığı
- Tüm JSON dosyalarının syntax'ı — hata satır/kolon bilgisiyle, VS Code'da tıklanabilir
file://linki olarak raporlanır - Şema doğrulama: her bileşen
@burgan-tech/vnext-schemapaketindeki ilgili şemaya göre Ajv ile denetlenir (draft-07 ve 2019-09 birlikte desteklenir) - Modül fonksiyonlarının gerçekten çalıştığı,
filesdizisindeki kritik dosyaların var olduğu ve sürümün semver'e uyduğu
Hata varsa sıfırdan farklı exit code döner; CI ve build.js buna güvenir.
build.js — paketleme (npm run build)
Domain'i dist/ altına deploy edilebilir pakete dönüştürür. İlk adım olarak
node validate.js çalıştırır — doğrulama patlarsa build durur (--skip-validation ile
atlanabilir). İki build tipi var:
-t runtime(varsayılan) — tüm domain klasörü, JSON'lar normalize edilip.csxgibi destek dosyaları olduğu gibi kopyalanarak. vNext motoruna deploy edilen paket budur.-t reference— yalnızcavnext.config.json→exportsaltında listelenen bileşenler. Başka domain'lerin bu domain'e referans verebilmesi için.
Diğer seçenekler: -o <dir> çıktı klasörü, -h yardım. Kısayollar:
npm run build:runtime, npm run build:reference.
test.js — smoke test (npm test)
Bağımlılık gerektirmeyen, elle yazılmış 10 adımlık test koşucusu. index.js'in
yüklenebildiğini, beklenen fonksiyonları export ettiğini, getter'ların obje döndürdüğünü,
package.json / vnext.config.json'ın geçerli olduğunu, domain klasör yapısının durduğunu
ve domain altındaki tüm JSON'ların parse edilebildiğini doğrular. Şema doğrulaması yapmaz
— o validate.js'in işi.
sync-schema-version.js — sürüm eşitleme (npm run sync-schema)
vnext.config.json → schemaVersion değerini tek doğru kaynak kabul eder ve
package.json'daki @burgan-tech/vnext-schema bağımlılığını ^<schemaVersion> olarak
günceller. İki dosyanın sessizce birbirinden ayrılmasını engeller. postinstall ve
prepublishOnly adımlarında otomatik çalışır; dosyayı değiştirdiyse npm install
gerektiğini uyarır.
npm script'leri
| Komut | Yaptığı iş |
| --- | --- |
| npm run validate | Şema + JSON doğrulaması (validate.js) |
| npm test | index.js smoke testleri (test.js) |
| npm run build | Runtime paketi dist/ altına |
| npm run build:runtime | Aynısı, tip açıkça belirtilmiş |
| npm run build:reference | Sadece exports bileşenleriyle referans paketi |
| npm run sync-schema | Şema sürümünü package.json'a yaz |
Kökteki test-domain-detection.sh ise .js zincirinin parçası
değil; CI'da (.github/workflows/check-sonar.yml) domain klasörünün bulunabildiğini ve
JSON'ların jq ile parse edildiğini bağımsız olarak kontrol eden bir yardımcı script'tir.
Testler
.NET entegrasyon testleri tests/ altında, kendi README'siyle birlikte durur — bunlar gerçek vNext stack'ini Testcontainers ile ayağa kaldırır, yukarıdaki Node araçlarından ayrı bir zincirdir.
