lapeh 1.0.3 → 1.0.4
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/package.json +2 -2
- package/scripts/check-update.js +87 -0
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lapeh",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Framework API Express yang siap pakai (Standardized)",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"lapeh": "bin/index.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
|
-
"dev": "nodemon src/index.ts",
|
|
10
|
+
"dev": "node scripts/check-update.js && nodemon src/index.ts",
|
|
11
11
|
"first": "node scripts/init-project.js",
|
|
12
12
|
"build": "tsc",
|
|
13
13
|
"start": "node dist/src/index.js",
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const https = require('https');
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
|
|
5
|
+
// --- KONFIGURASI ---
|
|
6
|
+
// Ganti URL ini dengan URL raw package.json dari repository GitHub/GitLab Anda
|
|
7
|
+
// Contoh: 'https://raw.githubusercontent.com/username/project-name/main/package.json'
|
|
8
|
+
// Jika package dipublish ke NPM, Anda bisa menggunakan registry NPM.
|
|
9
|
+
const REPO_VERSION_URL = 'https://registry.npmjs.org/lapeh/latest';
|
|
10
|
+
const TIMEOUT = 2000; // Timeout 2 detik agar tidak terlalu lama menunggu
|
|
11
|
+
|
|
12
|
+
const packageJson = require('../package.json');
|
|
13
|
+
const currentVersion = packageJson.version;
|
|
14
|
+
|
|
15
|
+
function checkForUpdates() {
|
|
16
|
+
if (!REPO_VERSION_URL) return;
|
|
17
|
+
|
|
18
|
+
const req = https.get(REPO_VERSION_URL, {
|
|
19
|
+
headers: { 'User-Agent': 'NodeJS Update Checker' },
|
|
20
|
+
timeout: TIMEOUT
|
|
21
|
+
}, (res) => {
|
|
22
|
+
let data = '';
|
|
23
|
+
|
|
24
|
+
if (res.statusCode !== 200) {
|
|
25
|
+
// Silent fail jika URL tidak bisa diakses
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
res.on('data', (chunk) => {
|
|
30
|
+
data += chunk;
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
res.on('end', () => {
|
|
34
|
+
try {
|
|
35
|
+
const remoteJson = JSON.parse(data);
|
|
36
|
+
// Jika cek ke NPM, version ada di root object atau 'version'
|
|
37
|
+
// Jika cek ke raw github, structure sama dengan package.json
|
|
38
|
+
const latestVersion = remoteJson.version || remoteJson['dist-tags']?.latest;
|
|
39
|
+
|
|
40
|
+
if (latestVersion && isNewer(latestVersion, currentVersion)) {
|
|
41
|
+
showUpdateMessage(latestVersion, currentVersion);
|
|
42
|
+
}
|
|
43
|
+
} catch (e) {
|
|
44
|
+
// Ignore parsing errors
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
req.on('error', (e) => {
|
|
50
|
+
// Ignore network errors
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
req.end();
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function isNewer(latest, current) {
|
|
57
|
+
const lParts = latest.split('.').map(Number);
|
|
58
|
+
const cParts = current.split('.').map(Number);
|
|
59
|
+
|
|
60
|
+
for (let i = 0; i < 3; i++) {
|
|
61
|
+
if (lParts[i] > cParts[i]) return true;
|
|
62
|
+
if (lParts[i] < cParts[i]) return false;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function showUpdateMessage(latest, current) {
|
|
68
|
+
const reset = "\x1b[0m";
|
|
69
|
+
const bright = "\x1b[1m";
|
|
70
|
+
const fgYellow = "\x1b[33m";
|
|
71
|
+
const fgCyan = "\x1b[36m";
|
|
72
|
+
|
|
73
|
+
console.log('\n');
|
|
74
|
+
console.log(`${fgYellow}┌─────────────────────────────────────────────────────────────┐${reset}`);
|
|
75
|
+
console.log(`${fgYellow}│ │${reset}`);
|
|
76
|
+
console.log(`${fgYellow}│ ${bright}UPDATE FRAMEWORK TERSEDIA!${reset}${fgYellow} │${reset}`);
|
|
77
|
+
console.log(`${fgYellow}│ │${reset}`);
|
|
78
|
+
console.log(`${fgYellow}│ Versi Lokal : ${fgCyan}${current}${reset}${fgYellow} │${reset}`);
|
|
79
|
+
console.log(`${fgYellow}│ Versi Terbaru : ${fgCyan}${latest}${reset}${fgYellow} │${reset}`);
|
|
80
|
+
console.log(`${fgYellow}│ │${reset}`);
|
|
81
|
+
console.log(`${fgYellow}│ Silakan cek repository untuk melihat perubahan terbaru. │${reset}`);
|
|
82
|
+
console.log(`${fgYellow}│ │${reset}`);
|
|
83
|
+
console.log(`${fgYellow}└─────────────────────────────────────────────────────────────┘${reset}`);
|
|
84
|
+
console.log('\n');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
checkForUpdates();
|