@tappify/cli 1.2.1 → 1.3.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/dist/src/core/config/config.service.d.ts +2 -0
- package/dist/src/core/config/config.service.js.map +1 -1
- package/dist/src/core/update/update-notifier.d.ts +2 -0
- package/dist/src/core/update/update-notifier.js +71 -0
- package/dist/src/core/update/update-notifier.js.map +1 -0
- package/dist/src/main.js +2 -0
- package/dist/src/main.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../src/core/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gDAAwB;
|
|
1
|
+
{"version":3,"file":"config.service.js","sourceRoot":"","sources":["../../../../src/core/config/config.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAC5C,gDAAwB;AAcjB,IAAM,aAAa,GAAnB,MAAM,aAAa;IACP,KAAK,CAAsB;IAE5C;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,cAAI,CAAgB;YACnC,WAAW,EAAE,SAAS;YACtB,QAAQ,EAAE;gBACR,UAAU,EAAE,+BAA+B;aAC5C;SACF,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAgC,GAAM;QACvC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,GAAG,CAAgC,GAAM,EAAE,KAAuB;QAChE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,CAAgC,GAAM;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,eAAe;QACb,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;CACF,CAAA;AA/BY,sCAAa;wBAAb,aAAa;IADzB,IAAA,mBAAU,GAAE;;GACA,aAAa,CA+BzB"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isNewer = isNewer;
|
|
4
|
+
exports.notifyUpdate = notifyUpdate;
|
|
5
|
+
const config_service_js_1 = require("../../core/config/config.service.js");
|
|
6
|
+
const PACKAGE = '@tappify/cli';
|
|
7
|
+
const REGISTRY = 'https://registry.npmjs.org';
|
|
8
|
+
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
9
|
+
const FETCH_TIMEOUT_MS = 2000;
|
|
10
|
+
function isNewer(latest, current) {
|
|
11
|
+
const core = (v) => v.split(/[-+]/)[0].split('.').map(Number);
|
|
12
|
+
const a = core(latest);
|
|
13
|
+
const b = core(current);
|
|
14
|
+
for (let i = 0; i < 3; i++) {
|
|
15
|
+
const x = a[i] ?? 0;
|
|
16
|
+
const y = b[i] ?? 0;
|
|
17
|
+
if (Number.isNaN(x) || Number.isNaN(y))
|
|
18
|
+
return false;
|
|
19
|
+
if (x > y)
|
|
20
|
+
return true;
|
|
21
|
+
if (x < y)
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
async function fetchLatest() {
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
29
|
+
try {
|
|
30
|
+
const res = await fetch(`${REGISTRY}/${encodeURIComponent(PACKAGE)}/latest`, {
|
|
31
|
+
signal: controller.signal,
|
|
32
|
+
});
|
|
33
|
+
if (!res.ok)
|
|
34
|
+
return null;
|
|
35
|
+
const data = (await res.json());
|
|
36
|
+
return data.version ?? null;
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
clearTimeout(timer);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
async function resolveLatest(config) {
|
|
46
|
+
const checkedAt = config.get('updateCheckedAt') ?? 0;
|
|
47
|
+
const cached = config.get('latestVersion');
|
|
48
|
+
if (Date.now() - checkedAt < CHECK_INTERVAL_MS && cached)
|
|
49
|
+
return cached;
|
|
50
|
+
const latest = await fetchLatest();
|
|
51
|
+
if (latest) {
|
|
52
|
+
config.set('updateCheckedAt', Date.now());
|
|
53
|
+
config.set('latestVersion', latest);
|
|
54
|
+
return latest;
|
|
55
|
+
}
|
|
56
|
+
return cached ?? null;
|
|
57
|
+
}
|
|
58
|
+
async function notifyUpdate(currentVersion) {
|
|
59
|
+
try {
|
|
60
|
+
const config = new config_service_js_1.ConfigService();
|
|
61
|
+
const latest = await resolveLatest(config);
|
|
62
|
+
if (!latest || !isNewer(latest, currentVersion))
|
|
63
|
+
return;
|
|
64
|
+
const chalk = (await import('chalk')).default;
|
|
65
|
+
process.stderr.write(`\n${chalk.yellow('▲ Update available')} ${chalk.dim(currentVersion)} → ${chalk.green(latest)}\n` +
|
|
66
|
+
` Run ${chalk.cyan('npm i -g @tappify/cli')} (or your installer) to update.\n\n`);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=update-notifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-notifier.js","sourceRoot":"","sources":["../../../../src/core/update/update-notifier.ts"],"names":[],"mappings":"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"}
|
package/dist/src/main.js
CHANGED
|
@@ -5,6 +5,7 @@ const nest_commander_1 = require("nest-commander");
|
|
|
5
5
|
const node_fs_1 = require("node:fs");
|
|
6
6
|
const node_path_1 = require("node:path");
|
|
7
7
|
const app_module_1 = require("./app.module");
|
|
8
|
+
const update_notifier_js_1 = require("./core/update/update-notifier.js");
|
|
8
9
|
const logger = new common_1.Logger(bootstrap.name);
|
|
9
10
|
const { version } = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.join)(__dirname, '../../package.json'), 'utf8'));
|
|
10
11
|
async function bootstrap() {
|
|
@@ -14,6 +15,7 @@ async function bootstrap() {
|
|
|
14
15
|
return;
|
|
15
16
|
}
|
|
16
17
|
await nest_commander_1.CommandFactory.run(app_module_1.AppModule, { version });
|
|
18
|
+
await (0, update_notifier_js_1.notifyUpdate)(version);
|
|
17
19
|
}
|
|
18
20
|
bootstrap().catch(error => {
|
|
19
21
|
logger.error(error);
|
package/dist/src/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,mDAAgD;AAChD,qCAAuC;AACvC,yCAAiC;AACjC,6CAAyC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";;AAAA,2CAAwC;AACxC,mDAAgD;AAChD,qCAAuC;AACvC,yCAAiC;AACjC,6CAAyC;AACzC,yEAAgE;AAEhE,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAG1C,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAC5B,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CACrC,CAAC;AAEzB,KAAK,UAAU,SAAS;IAGtB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,MAAM,+BAAc,CAAC,GAAG,CAAC,sBAAS,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAEjD,MAAM,IAAA,iCAAY,EAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACxB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|