ฐานเดียว ใช้ได้ทั้ง Node และ browser
CKN Core คือไลบรารีพื้นฐานที่รวมงานซ้ำๆ ของระบบธุรกิจไว้ที่เดียว ตั้งแต่ตารางข้อมูล เรียก API ส่งข้อความ real-time ไปจนถึงการคำนวณและ security โดยไม่พึ่ง dependency ภายนอก ทุก package อื่นใน CKN สร้างบนฐานนี้ ทำให้ทีมของคุณเขียนโค้ดน้อยลง ตรวจสอบง่ายขึ้น และเป็นเจ้าของ stack ได้เต็มที่
สิ่งที่ CKN Core ทำได้
ตารางข้อมูลและ model
จัดการข้อมูลแบบตารางในหน่วยความจำได้เหมือนเขียน SQL เบาๆ และแปลงเป็น model สำหรับ API และ database ได้ทันที
- Table: where, join, groupBy, pivot, aggregate
- ส่งออก CSV, Markdown, HTML แบบแบ่ง chunk
- Model พร้อม audit field แปลง camelCase กับ snake_case
- อ่าน CSV, XML และตรวจ JSON Schema ในตัว
เชื่อมต่อระบบภายนอก
client สำหรับ HTTP และ WebSocket ที่มี timeout, retry และเพดานขนาดข้อมูลให้เลือกใช้ ระบบจึงไม่ค้างเมื่อปลายทางมีปัญหา
- Api: GET, POST, PUT, PATCH, DELETE พร้อม bearer token
- retry แบบ backoff รองรับ Retry-After
- Socket: reconnect อัตโนมัติและ queue ที่กำหนดขนาดได้
- อ่าน streaming และ server-sent events
ปลอดภัยตั้งแต่ค่าเริ่มต้น
กันความเสี่ยงที่พบบ่อยตั้งแต่ชั้นล่างสุด เช่น เรียก URL ที่ไม่ปลอดภัย หรือ secret หลุดเข้า log
- assertSafeUrl กัน private network และ protocol ที่ไม่อนุญาต
- redactSecrets ซ่อนค่า token และรหัสผ่านใน log
- sha256, hmacSha256 และ UUID ผ่าน crypto มาตรฐาน
- Semaphore, Mutex, RateLimiter คุมการทำงานพร้อมกัน
คำนวณธุรกิจและรูปแบบไทย
เครื่องมือคำนวณที่งานโรงงาน บัญชี และโลจิสติกส์ใช้บ่อย พร้อมการจัดรูปแบบวันที่ เงิน และข้อความภาษาไทย
- matrix, regression, แตก BOM และ allocate ต้นทุนแบบ reciprocal
- แปลงหน่วยด้วย createUnitConverter
- formatCurrency และ formatDate รองรับ th-TH และ time zone
- cron expression พร้อม time zone และ DST
ค้นหา วิเคราะห์ และข้อมูลไบนารี
โครงสร้างข้อมูลสำหรับงานค้นหาและวิเคราะห์ขนาดใหญ่ เขียนเองทั้งหมด ไม่ต้องพึ่งไลบรารีภายนอก
- ค้นหาเอกสารคล้ายกันด้วย VectorBatch และ HnswIndex
- ค้นหาข้อความไทยและอังกฤษด้วย BM25 (InvertedIndex)
- Graph สำหรับเส้นทางและ dependency, ColumnFrame สำหรับข้อมูลหลายล้านแถว
- RunningStats, StreamingQuantile และ format ไบนารี CKNB
แก้ไขเอกสารร่วมกันแบบ real-time
โมเดลเอกสารแบบ CRDT ให้หลายคนแก้ไฟล์เดียวกันพร้อมกัน แม้บางคนออฟไลน์ แล้วข้อมูลรวมกันได้ตรงกันทุกเครื่อง
- DocumentModel: text, list, map, register, counter
- ข้อความ rich text ด้วย mark เช่น ตัวหนา
- สิทธิ์เขียนรายฟิลด์ด้วย canWrite
- ทดสอบการรวมข้อมูลด้วย fuzz test แบบสุ่ม
ตัวเลขที่วัดจริง
ตัวเลขทั้งหมดวัดจริงบน Node 24 จากเอกสารของ package ผลจะแตกต่างตามเครื่องและข้อมูลของคุณ
ตัวเลขจากชุดทดสอบและ benchmark ภายในของ CKN ผลจริงขึ้นกับเครื่องและปริมาณข้อมูลของแต่ละระบบ
ธุรกิจของคุณได้อะไร
ต้นทุนและการเป็นเจ้าของ
ไม่มี dependency ภายนอกใน runtime จึงไม่มีค่า license ต่อเนื่องจากไลบรารีเบื้องหลัง ไม่ต้องรอคนอื่นแก้บั๊ก และไม่ต้องเสี่ยงว่าไลบรารีจะถูกเลิกพัฒนา ซอร์สอยู่ในมือเราและคุณแก้ไขต่อยอดได้
ส่งมอบเร็วขึ้น
งานที่ทีมต้องเขียนซ้ำทุกโปรเจกต์ เช่น ตาราง รายงาน เรียก API และ retry มีให้พร้อมใช้ และโค้ดชุดเดียวกันทำงานได้ทั้งฝั่ง server และ browser ทีมจึงใช้เวลากับกฎธุรกิจของคุณมากกว่างานพื้นฐาน
ความเสี่ยงต่ำลง
ระบบมี timeout, เพดานขนาดข้อมูล และการป้องกัน URL กับ secret ในตัว พร้อมชุด test 43 ไฟล์และตัวอย่างใน guide ที่รันตรวจทุกครั้ง ผลคือระบบที่ค้างหรือหลุดข้อมูลได้ยากขึ้น
ตัวอย่าง: เรียก API แล้วสรุปยอดรายภูมิภาค
ใช้งานอยู่ในส่วนต่าง ๆ ของ CKN stack
- เป็นฐานของ package อื่นใน CKN Technology ทั้ง data, server, ui, ai และ providers
- ใช้ในบริการธุรกิจและบริการแพลตฟอร์มของ CKN
- รองรับแอปที่ต้องแก้เอกสารร่วมกันและค้นหาข้อมูลขนาดใหญ่
import { Api, Table } from "@ckn-technology/core";
const api = new Api("https://api.example.com/v1/orders", { cache: false, timeoutMs: 10_000, retries: 2 });
api.setBearerToken(token).setQuery({ status: "open" });
const result = await api.get();
if (!result.ok) throw new Error(`HTTP ${result.status}`);
const orders = Table.toTable(result.data);
for (const [region, group] of orders.groupBy("region")) {
console.log(region, group.count(), group.sum("amount"));
}
const page = orders.query().where((r) => r.amount > 1000).orderByDesc("amount").take(20).toTable();
