prpm-dbp 0.10.1 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -134,6 +134,8 @@ Pengguna kemudian menarik versi baharu dengan `npx skills update`.
134
134
 
135
135
  Pilihan: `--refresh`, `--had <n>`, `--delay <ms>`, `--json`, `--cepat`, `--pedoman`.
136
136
 
137
+ `--luar-talian` tidak pernah menyentuh rangkaian. Wajib untuk laluan permintaan aplikasi: dokumen penuh dari cache mengambil 0.19 saat, manakala satu perkataan baharu daripada PRPM mengambil beberapa saat.
138
+
137
139
  `--pedoman` membenarkan penjanaan imbuhan menurut peraturan DBP apabila kamus tiada jawapan. Ketepatannya diukur 88-98% terhadap 66,000 perkataan sebenar, jadi ia mati secara lalai dan hasilnya sentiasa ditanda.
138
140
 
139
141
  ## Guna sebagai library
package/SKILL.md CHANGED
@@ -237,6 +237,26 @@ Dua puluh dua kes kabur yang tinggal itu sah: `قلقله` boleh dibaca `qalqala
237
237
  | §12 serapan Inggeris | Kamus sudah meliputinya; tiada penjanaan diperlukan. |
238
238
  | §16.2, §18 | Tidak memerlukan kod: perbezaannya sudah dikodkan dalam jarak teks Rumi. Ada ujian yang mengunci tingkah laku ini. |
239
239
 
240
+ ## Menyambung ke aplikasi
241
+
242
+ Kelajuan diukur pada 406 perkataan:
243
+
244
+ | Keadaan | Masa |
245
+ |---|---|
246
+ | Semua dari cache | **0.19 saat** |
247
+ | Dua perkataan baharu (perlu rangkaian) | **30.7 saat** |
248
+
249
+ Perbezaan itu menentukan cara ia disambung. **Dalam laluan permintaan aplikasi, gunakan `--luar-talian` sentiasa.** Mod itu tidak pernah menyentuh rangkaian: perkataan yang tiada dalam cache dilaporkan belum disahkan, bukan diambil secara segerak sambil pengguna menunggu.
250
+
251
+ Urutan yang disyorkan:
252
+
253
+ 1. **Panaskan cache di luar talian** daripada kosa kata projek anda: `npx prpm-dbp warm senarai.txt`
254
+ 2. **Hantar cache itu bersama aplikasi** (salin `~/.cache/prpm-dbp/cache.json`, atau tetapkan `PRPM_CACHE`)
255
+ 3. **Jalankan dengan `--luar-talian`** dalam laluan permintaan
256
+ 4. **Kumpul medan `belumDisahkan`** dan panaskan cache secara berkala di luar talian
257
+
258
+ Dengan cara ini pengguna tidak pernah menunggu PRPM, dan PRPM tidak pernah menerima trafik daripada aplikasi anda.
259
+
240
260
  ## Rantai kepercayaan
241
261
 
242
262
  Setiap ejaan Jawi yang dikeluarkan membawa asal-usulnya. Jangan runtuhkan lapisan ini.
package/bin/cli.js CHANGED
@@ -34,7 +34,8 @@ const BANTUAN = `prpm-dbp — semak Bahasa Melayu dan Jawi terhadap PRPM DBP
34
34
  npx prpm-dbp install [--link] pasang sebagai Claude Code skill
35
35
 
36
36
  Pilihan: --refresh --had <n> --delay <ms> --json --cepat
37
- --pedoman jana imbuhan ikut peraturan DBP (88-98% tepat, hasil ditanda)
37
+ --pedoman jana imbuhan ikut peraturan DBP (88-98% tepat, hasil ditanda)
38
+ --luar-talian jangan sentuh rangkaian langsung (wajib untuk laluan permintaan app)
38
39
 
39
40
  Cache: ${CACHE_PATH}
40
41
  `
@@ -49,6 +50,7 @@ function huraiArgs(argv) {
49
50
  else if (a === '--link') pilihan.link = true
50
51
  else if (a === '--cepat') pilihan.cepat = true
51
52
  else if (a === '--pedoman') pilihan.pedoman = true
53
+ else if (a === '--luar-talian') pilihan.luarTalian = true
52
54
  else if (a === '--jenis') pilihan.jenis = argv[++i]
53
55
  else if (a === '--had') pilihan.had = Number(argv[++i])
54
56
  else if (a === '--delay') pilihan.delay = Number(argv[++i])
@@ -79,7 +81,12 @@ async function main() {
79
81
  }
80
82
 
81
83
  const cache = await loadCache()
82
- const opts = { refresh: pilihan.refresh, delay: pilihan.delay, onProgress: progres }
84
+ const opts = {
85
+ refresh: pilihan.refresh,
86
+ delay: pilihan.delay,
87
+ onProgress: progres,
88
+ luarTalian: pilihan.luarTalian,
89
+ }
83
90
 
84
91
  switch (perintah) {
85
92
  case 'lookup': {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prpm-dbp",
3
- "version": "0.10.1",
3
+ "version": "0.11.0",
4
4
  "description": "Semak ejaan Bahasa Melayu dan Jawi terhadap PRPM Dewan Bahasa dan Pustaka. CLI dan skill untuk AI agent.",
5
5
  "keywords": [
6
6
  "bahasa-melayu",
package/src/prpm.js CHANGED
@@ -130,11 +130,25 @@ export async function fetchPage(kata, { timeout = 20000 } = {}) {
130
130
 
131
131
  const tidur = (ms) => new Promise((r) => setTimeout(r, ms))
132
132
 
133
- export async function lookup(kata, cache, { refresh = false, delay = 400, perluPenuh = false } = {}) {
133
+ export async function lookup(
134
+ kata,
135
+ cache,
136
+ { refresh = false, delay = 400, perluPenuh = false, luarTalian = false } = {},
137
+ ) {
134
138
  const key = String(kata).trim().toLowerCase()
135
139
  if (!key) return null
136
140
 
137
141
  const simpanan = cache[key]
142
+
143
+ // Mod luar talian TIDAK PERNAH menyentuh rangkaian. Ini wajib untuk
144
+ // laluan permintaan aplikasi: satu perkataan yang belum dicache mengambil
145
+ // beberapa saat, manakala keseluruhan dokumen dari cache mengambil 0.2
146
+ // saat. Perkataan yang tiada dalam cache dilaporkan belum disahkan,
147
+ // bukan diambil secara segerak sambil pengguna menunggu.
148
+ if (luarTalian) {
149
+ if (simpanan) return { ...simpanan, dariCache: true }
150
+ return { kata: key, dijumpai: false, jawi: null, jawiVarian: [], entri: [], nota: 'tiada dalam cache (mod luar talian)', url: `${BASE_URL}?keyword=${encodeURIComponent(key)}` }
151
+ }
138
152
  // Rekod benih membawa ejaan sahaja, tanpa definisi, supaya pakej kekal
139
153
  // kecil. Bila pemanggil betul-betul perlukan definisi, ambil semula.
140
154
  const cukup = simpanan && !(perluPenuh && simpanan.ringkas)