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 CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "lapeh",
3
- "version": "1.0.3",
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();