@kodrunhq/claudefy 1.2.0 → 1.3.1

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 (36) hide show
  1. package/dist/backup-manager/backup-manager.d.ts +1 -0
  2. package/dist/backup-manager/backup-manager.js +9 -1
  3. package/dist/backup-manager/backup-manager.js.map +1 -1
  4. package/dist/cli.js +16 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/pull.js +19 -8
  7. package/dist/commands/pull.js.map +1 -1
  8. package/dist/commands/push.d.ts +8 -0
  9. package/dist/commands/push.js +215 -114
  10. package/dist/commands/push.js.map +1 -1
  11. package/dist/commands/restore.d.ts +12 -0
  12. package/dist/commands/restore.js +71 -0
  13. package/dist/commands/restore.js.map +1 -0
  14. package/dist/encryptor/encryptor.d.ts +6 -4
  15. package/dist/encryptor/encryptor.js +23 -15
  16. package/dist/encryptor/encryptor.js.map +1 -1
  17. package/dist/encryptor/file-encryptor.d.ts +4 -4
  18. package/dist/encryptor/file-encryptor.js +10 -8
  19. package/dist/encryptor/file-encryptor.js.map +1 -1
  20. package/dist/encryptor/line-encryptor.d.ts +6 -6
  21. package/dist/encryptor/line-encryptor.js +14 -12
  22. package/dist/encryptor/line-encryptor.js.map +1 -1
  23. package/dist/index.js +5 -3
  24. package/dist/index.js.map +1 -1
  25. package/dist/merger/merger.d.ts +1 -7
  26. package/dist/merger/merger.js +17 -6
  27. package/dist/merger/merger.js.map +1 -1
  28. package/dist/path-mapper/path-mapper.d.ts +1 -1
  29. package/dist/path-mapper/path-mapper.js +19 -8
  30. package/dist/path-mapper/path-mapper.js.map +1 -1
  31. package/dist/secret-scanner/scanner.js +13 -1
  32. package/dist/secret-scanner/scanner.js.map +1 -1
  33. package/dist/update-check.d.ts +5 -0
  34. package/dist/update-check.js +83 -0
  35. package/dist/update-check.js.map +1 -0
  36. package/package.json +2 -3
@@ -0,0 +1,5 @@
1
+ export declare const CACHE_FILE = "update-check.json";
2
+ export declare function shouldCheck(claudefyDir: string): Promise<boolean>;
3
+ export declare function writeCache(claudefyDir: string, latestVersion: string): Promise<void>;
4
+ export declare function isNewer(latest: string, current: string): boolean;
5
+ export declare function checkForUpdates(currentVersion: string, claudefyDir: string): Promise<void>;
@@ -0,0 +1,83 @@
1
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ export const CACHE_FILE = "update-check.json";
5
+ const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
6
+ const REGISTRY_URL = "https://registry.npmjs.org/@kodrunhq/claudefy/latest";
7
+ const FETCH_TIMEOUT_MS = 3000;
8
+ export async function shouldCheck(claudefyDir) {
9
+ const cachePath = join(claudefyDir, CACHE_FILE);
10
+ if (!existsSync(cachePath))
11
+ return true;
12
+ try {
13
+ const data = JSON.parse(await readFile(cachePath, "utf-8"));
14
+ return Date.now() - data.lastCheck > CHECK_INTERVAL_MS;
15
+ }
16
+ catch {
17
+ return true;
18
+ }
19
+ }
20
+ export async function writeCache(claudefyDir, latestVersion) {
21
+ await mkdir(claudefyDir, { recursive: true });
22
+ const cachePath = join(claudefyDir, CACHE_FILE);
23
+ const data = { lastCheck: Date.now(), latestVersion };
24
+ await writeFile(cachePath, JSON.stringify(data));
25
+ }
26
+ async function getCachedVersion(claudefyDir) {
27
+ const cachePath = join(claudefyDir, CACHE_FILE);
28
+ if (!existsSync(cachePath))
29
+ return null;
30
+ try {
31
+ const data = JSON.parse(await readFile(cachePath, "utf-8"));
32
+ return data.latestVersion;
33
+ }
34
+ catch {
35
+ return null;
36
+ }
37
+ }
38
+ export function isNewer(latest, current) {
39
+ const parseSegment = (s) => parseInt(s, 10) || 0;
40
+ const l = latest.split(".").map(parseSegment);
41
+ const c = current.split(".").map(parseSegment);
42
+ for (let i = 0; i < 3; i++) {
43
+ if ((l[i] ?? 0) > (c[i] ?? 0))
44
+ return true;
45
+ if ((l[i] ?? 0) < (c[i] ?? 0))
46
+ return false;
47
+ }
48
+ return false;
49
+ }
50
+ export async function checkForUpdates(currentVersion, claudefyDir) {
51
+ try {
52
+ if (!(await shouldCheck(claudefyDir))) {
53
+ const cached = await getCachedVersion(claudefyDir);
54
+ if (cached && isNewer(cached, currentVersion)) {
55
+ process.stderr.write(`\nUpdate available: ${currentVersion} → ${cached} — run "npm update -g @kodrunhq/claudefy"\n\n`);
56
+ }
57
+ return;
58
+ }
59
+ const controller = new AbortController();
60
+ const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
61
+ timeout.unref();
62
+ let res;
63
+ try {
64
+ res = await fetch(REGISTRY_URL, { signal: controller.signal });
65
+ }
66
+ finally {
67
+ clearTimeout(timeout);
68
+ }
69
+ if (!res.ok)
70
+ return;
71
+ const data = (await res.json());
72
+ if (!data.version)
73
+ return;
74
+ await writeCache(claudefyDir, data.version);
75
+ if (isNewer(data.version, currentVersion)) {
76
+ process.stderr.write(`\nUpdate available: ${currentVersion} → ${data.version} — run "npm update -g @kodrunhq/claudefy"\n\n`);
77
+ }
78
+ }
79
+ catch {
80
+ // Silent on any failure
81
+ }
82
+ }
83
+ //# sourceMappingURL=update-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kodrunhq/claudefy",
3
- "version": "1.2.0",
3
+ "version": "1.3.1",
4
4
  "description": "Sync your Claude Code environment across machines",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -53,8 +53,7 @@
53
53
  "chalk": "^5.6.2",
54
54
  "commander": "^14.0.3",
55
55
  "deepmerge": "^4.3.1",
56
- "simple-git": "^3.32.3",
57
- "update-notifier": "^7.3.1"
56
+ "simple-git": "^3.32.3"
58
57
  },
59
58
  "devDependencies": {
60
59
  "@eslint/js": "^10.0.1",