quicklify 1.0.2 → 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.
Files changed (39) hide show
  1. package/README.md +58 -14
  2. package/README.tr.md +58 -14
  3. package/dist/commands/destroy.d.ts.map +1 -1
  4. package/dist/commands/destroy.js +5 -0
  5. package/dist/commands/destroy.js.map +1 -1
  6. package/dist/commands/doctor.d.ts +1 -0
  7. package/dist/commands/doctor.d.ts.map +1 -1
  8. package/dist/commands/doctor.js +70 -1
  9. package/dist/commands/doctor.js.map +1 -1
  10. package/dist/commands/init.d.ts.map +1 -1
  11. package/dist/commands/init.js +37 -13
  12. package/dist/commands/init.js.map +1 -1
  13. package/dist/commands/restore.d.ts +1 -0
  14. package/dist/commands/restore.d.ts.map +1 -1
  15. package/dist/commands/restore.js +15 -0
  16. package/dist/commands/restore.js.map +1 -1
  17. package/dist/commands/secure.d.ts.map +1 -1
  18. package/dist/commands/secure.js +9 -1
  19. package/dist/commands/secure.js.map +1 -1
  20. package/dist/commands/snapshot.d.ts.map +1 -1
  21. package/dist/commands/snapshot.js +5 -0
  22. package/dist/commands/snapshot.js.map +1 -1
  23. package/dist/index.js +4 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/types/index.d.ts +1 -0
  26. package/dist/types/index.d.ts.map +1 -1
  27. package/dist/utils/errorMapper.d.ts +3 -0
  28. package/dist/utils/errorMapper.d.ts.map +1 -0
  29. package/dist/utils/errorMapper.js +79 -0
  30. package/dist/utils/errorMapper.js.map +1 -0
  31. package/dist/utils/openBrowser.d.ts +4 -0
  32. package/dist/utils/openBrowser.d.ts.map +1 -0
  33. package/dist/utils/openBrowser.js +58 -0
  34. package/dist/utils/openBrowser.js.map +1 -0
  35. package/dist/utils/updateCheck.d.ts +12 -0
  36. package/dist/utils/updateCheck.d.ts.map +1 -0
  37. package/dist/utils/updateCheck.js +108 -0
  38. package/dist/utils/updateCheck.js.map +1 -0
  39. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from "fs";
2
+ import { homedir } from "os";
3
+ import { join } from "path";
4
+ import axios from "axios";
5
+ import { logger } from "./logger.js";
6
+ const CONFIG_DIR = join(homedir(), ".quicklify");
7
+ export const UPDATE_CHECK_FILE = join(CONFIG_DIR, ".update-check");
8
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
9
+ const REQUEST_TIMEOUT_MS = 3000; // 3 seconds
10
+ /**
11
+ * Compare two semver-like version strings.
12
+ * Returns true if latest > current.
13
+ */
14
+ export function isNewerVersion(current, latest) {
15
+ // Strip leading 'v' if present
16
+ const cleanCurrent = current.replace(/^v/, "");
17
+ const cleanLatest = latest.replace(/^v/, "");
18
+ const currentParts = cleanCurrent.split(".").map(Number);
19
+ const latestParts = cleanLatest.split(".").map(Number);
20
+ // Compare major, minor, patch
21
+ for (let i = 0; i < Math.max(currentParts.length, latestParts.length); i++) {
22
+ const currentPart = currentParts[i] || 0;
23
+ const latestPart = latestParts[i] || 0;
24
+ if (latestPart > currentPart) {
25
+ return true;
26
+ }
27
+ if (latestPart < currentPart) {
28
+ return false;
29
+ }
30
+ }
31
+ return false;
32
+ }
33
+ function readCache() {
34
+ try {
35
+ if (!existsSync(UPDATE_CHECK_FILE)) {
36
+ return null;
37
+ }
38
+ const content = readFileSync(UPDATE_CHECK_FILE, "utf-8");
39
+ const cache = JSON.parse(content);
40
+ if (typeof cache.lastCheck !== "number" ||
41
+ typeof cache.latestVersion !== "string" ||
42
+ !/^\d+\.\d+\.\d+/.test(cache.latestVersion)) {
43
+ return null;
44
+ }
45
+ return cache;
46
+ }
47
+ catch {
48
+ return null;
49
+ }
50
+ }
51
+ function writeCache(cache) {
52
+ try {
53
+ if (!existsSync(CONFIG_DIR)) {
54
+ mkdirSync(CONFIG_DIR, { recursive: true });
55
+ }
56
+ writeFileSync(UPDATE_CHECK_FILE, JSON.stringify(cache), { mode: 0o600 });
57
+ }
58
+ catch {
59
+ // Silently ignore write errors
60
+ }
61
+ }
62
+ async function fetchLatestVersion() {
63
+ try {
64
+ const response = await axios.get("https://registry.npmjs.org/quicklify/latest", {
65
+ timeout: REQUEST_TIMEOUT_MS,
66
+ });
67
+ const version = response.data?.version;
68
+ if (typeof version === "string" && /^\d+\.\d+\.\d+/.test(version)) {
69
+ return version;
70
+ }
71
+ return null;
72
+ }
73
+ catch {
74
+ return null;
75
+ }
76
+ }
77
+ /**
78
+ * Check for updates and display a message if a newer version is available.
79
+ * This function never throws - all errors are silently caught.
80
+ */
81
+ export async function checkForUpdate(currentVersion) {
82
+ try {
83
+ const cache = readCache();
84
+ const now = Date.now();
85
+ // Use cached version if it's fresh (less than 24 hours old)
86
+ if (cache && now - cache.lastCheck < CHECK_INTERVAL_MS) {
87
+ if (isNewerVersion(currentVersion, cache.latestVersion)) {
88
+ logger.info(`Update available: ${currentVersion} → ${cache.latestVersion} — Run: npm i -g quicklify`);
89
+ }
90
+ return;
91
+ }
92
+ // Fetch latest version from npm registry
93
+ const latestVersion = await fetchLatestVersion();
94
+ if (!latestVersion) {
95
+ return;
96
+ }
97
+ // Save to cache
98
+ writeCache({ lastCheck: now, latestVersion });
99
+ // Display update message if newer version available
100
+ if (isNewerVersion(currentVersion, latestVersion)) {
101
+ logger.info(`Update available: ${currentVersion} → ${latestVersion} — Run: npm i -g quicklify`);
102
+ }
103
+ }
104
+ catch {
105
+ // Silently ignore all errors - update check is non-blocking
106
+ }
107
+ }
108
+ //# sourceMappingURL=updateCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../src/utils/updateCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAEnE,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;AAC1D,MAAM,kBAAkB,GAAG,IAAI,CAAC,CAAC,YAAY;AAO7C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAc;IAC5D,+BAA+B;IAC/B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvD,8BAA8B;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEvC,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAgB,CAAC;QACjD,IACE,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;YACnC,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ;YACvC,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAC3C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAkB;IACpC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,6CAA6C,EAAE;YAC9E,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;QACvC,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClE,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,cAAsB;IACzD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,4DAA4D;QAC5D,IAAI,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,iBAAiB,EAAE,CAAC;YACvD,IAAI,cAAc,CAAC,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxD,MAAM,CAAC,IAAI,CACT,qBAAqB,cAAc,MAAM,KAAK,CAAC,aAAa,4BAA4B,CACzF,CAAC;YACJ,CAAC;YACD,OAAO;QACT,CAAC;QAED,yCAAyC;QACzC,MAAM,aAAa,GAAG,MAAM,kBAAkB,EAAE,CAAC;QACjD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;QAE9C,oDAAoD;QACpD,IAAI,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,IAAI,CACT,qBAAqB,cAAc,MAAM,aAAa,4BAA4B,CACnF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;IAC9D,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quicklify",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "Automate Coolify deployment on cloud providers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",