Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
186179d132 | |||
9666658a77 | |||
61f2ed9ef7 | |||
2224a22f0c | |||
c3c35c9b3e | |||
d9f75c236f | |||
61d7ac981b | |||
4501469365 | |||
c1df1f0db5 |
4
dist/index.d.ts
vendored
4
dist/index.d.ts
vendored
@ -1,8 +1,8 @@
|
||||
import { KeyValueStore } from 'npmextra';
|
||||
export declare class SmartUpdate {
|
||||
kvStore: KeyValueStore;
|
||||
check(npmnameArg: string, compareVersion: string): Promise<void>;
|
||||
check(npmnameArg: string, compareVersion: string, changelogUrlArg?: string): Promise<void>;
|
||||
private getNpmPackageFromRegistry(npmnameArg);
|
||||
private checkIfUpgrade(npmPackage, versionArg);
|
||||
private checkIfUpgrade(npmPackage, localVersionStringArg, changelogUrlArg?);
|
||||
}
|
||||
export declare let standardHandler: SmartUpdate;
|
||||
|
32
dist/index.js
vendored
32
dist/index.js
vendored
@ -14,27 +14,31 @@ class SmartUpdate {
|
||||
constructor() {
|
||||
this.kvStore = new plugins.npmextra.KeyValueStore('custom', 'global:smartupdate');
|
||||
}
|
||||
check(npmnameArg, compareVersion) {
|
||||
check(npmnameArg, compareVersion, changelogUrlArg) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let result = yield this.kvStore.readKey(npmnameArg);
|
||||
let timeStamp = new smarttime_1.TimeStamp();
|
||||
// the newData to write
|
||||
let timeStamp = new smarttime_1.TimeStamp();
|
||||
let newData = {
|
||||
lastCheck: timeStamp.milliSeconds,
|
||||
latestVersion: 'x.x.x',
|
||||
performedUpgrade: false
|
||||
};
|
||||
// the comparison data from the keyValue store
|
||||
let result = yield this.kvStore.readKey(npmnameArg);
|
||||
if (result) {
|
||||
let lastCheckTimeStamp = smarttime_1.TimeStamp.fromMilliSeconds(result.lastCheck);
|
||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ days: 1 });
|
||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ hours: 1 });
|
||||
if (!lastCheckTimeStamp.isOlderThan(timeStamp, compareTime)) {
|
||||
plugins.beautylog.log(`smartupdate: next check tomorrow: ${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked for today.`, 'pink')}`);
|
||||
newData.lastCheck = lastCheckTimeStamp.milliSeconds;
|
||||
let nextCheckInMinutes = (timeStamp.milliSeconds - lastCheckTimeStamp.milliSeconds) / 60000;
|
||||
plugins.beautylog.log(`smartupdate: next check in ${nextCheckInMinutes}: ` +
|
||||
`${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked within the last hour.`, 'pink')}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
let npmPackage = yield this.getNpmPackageFromRegistry(npmnameArg);
|
||||
newData.latestVersion = npmPackage.version;
|
||||
let upgradeBool = yield this.checkIfUpgrade(npmPackage, compareVersion);
|
||||
let upgradeBool = yield this.checkIfUpgrade(npmPackage, compareVersion, changelogUrlArg);
|
||||
if (upgradeBool) {
|
||||
}
|
||||
this.kvStore.writeKey(npmnameArg, newData);
|
||||
@ -48,16 +52,22 @@ class SmartUpdate {
|
||||
return npmPackage;
|
||||
});
|
||||
}
|
||||
checkIfUpgrade(npmPackage, versionArg) {
|
||||
checkIfUpgrade(npmPackage, localVersionStringArg, changelogUrlArg) {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
if (npmPackage.version === versionArg) {
|
||||
// create Version objects
|
||||
let versionNpm = new plugins.smartversion.SmartVersion(npmPackage.version);
|
||||
let versionLocal = new plugins.smartversion.SmartVersion(localVersionStringArg);
|
||||
if (!versionNpm.greaterThan(versionLocal)) {
|
||||
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`);
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`);
|
||||
plugins.beautylog.info(`Your version: ${versionArg} | version on npm: ${npmPackage.version}`);
|
||||
plugins.beautylog.warn(`!!! You should upgrade!!!`);
|
||||
plugins.beautylog.warn(`Your version: ${versionLocal.versionString} | version on npm: ${versionNpm.versionString}`);
|
||||
if (!process.env.CI && changelogUrlArg) {
|
||||
plugins.beautylog.log('trying to open changelog...');
|
||||
plugins.smartopen.openUrl(changelogUrlArg);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
@ -65,4 +75,4 @@ class SmartUpdate {
|
||||
}
|
||||
exports.SmartUpdate = SmartUpdate;
|
||||
exports.standardHandler = new SmartUpdate();
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsaURBQWdEO0FBRWhELHlDQUFxQztBQVVyQztJQUFBO1FBQ0UsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUErQzlFLENBQUM7SUE3Q08sS0FBSyxDQUFFLFVBQWtCLEVBQUUsY0FBc0I7O1lBQ3JELElBQUksTUFBTSxHQUFpQixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2pFLElBQUksU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1lBRS9CLHVCQUF1QjtZQUN2QixJQUFJLE9BQU8sR0FBRztnQkFDWixTQUFTLEVBQUUsU0FBUyxDQUFDLFlBQVk7Z0JBQ2pDLGFBQWEsRUFBRSxPQUFPO2dCQUN0QixnQkFBZ0IsRUFBRSxLQUFLO2FBQ3hCLENBQUE7WUFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNYLElBQUksa0JBQWtCLEdBQUcscUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3JFLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDekUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMscUNBQXFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsVUFBVSxzQ0FBc0MsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7b0JBQzVKLE1BQU0sQ0FBQTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFBO1lBQ2pFLE9BQU8sQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQTtZQUMxQyxJQUFJLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFBO1lBQ3ZFLEVBQUUsQ0FBQSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFFakIsQ0FBQztZQUNELElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0tBQUE7SUFFYSx5QkFBeUIsQ0FBRSxVQUFVOztZQUNqRCxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMvSCxJQUFJLFdBQVcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUE7WUFDcEQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxNQUFNLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDdEYsTUFBTSxDQUFDLFVBQVUsQ0FBQTtRQUNuQixDQUFDO0tBQUE7SUFFYSxjQUFjLENBQUUsVUFBdUMsRUFBRSxVQUFrQjs7WUFDdkYsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxzREFBc0QsT0FBTyxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3hJLE1BQU0sQ0FBQyxLQUFLLENBQUE7WUFDZCxDQUFDO1lBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ04sT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsK0JBQStCLFVBQVUsQ0FBQyxJQUFJLG9CQUFvQixDQUFDLENBQUE7Z0JBQzFGLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixVQUFVLHNCQUFzQixVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtnQkFDN0YsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtnQkFDbkQsTUFBTSxDQUFDLElBQUksQ0FBQTtZQUNiLENBQUM7UUFDSCxDQUFDO0tBQUE7Q0FDRjtBQWhERCxrQ0FnREM7QUFDVSxRQUFBLGVBQWUsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFBIn0=
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsaURBQWdEO0FBRWhELHlDQUFxQztBQVVyQztJQUFBO1FBQ0UsWUFBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUE7SUFvRTlFLENBQUM7SUFsRU8sS0FBSyxDQUFFLFVBQWtCLEVBQUUsY0FBc0IsRUFBRSxlQUF3Qjs7WUFFL0UsdUJBQXVCO1lBQ3ZCLElBQUksU0FBUyxHQUFHLElBQUkscUJBQVMsRUFBRSxDQUFBO1lBQy9CLElBQUksT0FBTyxHQUFHO2dCQUNaLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWTtnQkFDakMsYUFBYSxFQUFFLE9BQU87Z0JBQ3RCLGdCQUFnQixFQUFFLEtBQUs7YUFDeEIsQ0FBQTtZQUVELDhDQUE4QztZQUM5QyxJQUFJLE1BQU0sR0FBaUIsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUVqRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUNYLElBQUksa0JBQWtCLEdBQUcscUJBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7Z0JBQ3JFLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsd0JBQXdCLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDMUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDNUQsT0FBTyxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUE7b0JBQ25ELElBQUksa0JBQWtCLEdBQUcsQ0FBQyxTQUFTLENBQUMs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
|
4
dist/smartupdate.plugins.d.ts
vendored
4
dist/smartupdate.plugins.d.ts
vendored
@ -3,5 +3,7 @@ import * as beautylog from 'beautylog';
|
||||
import * as beautycolor from 'beautycolor';
|
||||
import * as npmextra from 'npmextra';
|
||||
import * as smartnpm from 'smartnpm';
|
||||
import * as smartopen from 'smartopen';
|
||||
import * as smarttime from 'smarttime';
|
||||
export { beautylog, beautycolor, npmextra, smartnpm, smarttime };
|
||||
import * as smartversion from 'smartversion';
|
||||
export { beautylog, beautycolor, npmextra, smartnpm, smartopen, smarttime, smartversion };
|
||||
|
6
dist/smartupdate.plugins.js
vendored
6
dist/smartupdate.plugins.js
vendored
@ -9,6 +9,10 @@ const npmextra = require("npmextra");
|
||||
exports.npmextra = npmextra;
|
||||
const smartnpm = require("smartnpm");
|
||||
exports.smartnpm = smartnpm;
|
||||
const smartopen = require("smartopen");
|
||||
exports.smartopen = smartopen;
|
||||
const smarttime = require("smarttime");
|
||||
exports.smarttime = smarttime;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR1cGRhdGUucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dXBkYXRlLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFFdkIsdUNBQXNDO0FBT3BDLDhCQUFTO0FBTlgsMkNBQTBDO0FBT3hDLGtDQUFXO0FBTmIscUNBQW9DO0FBT2xDLDRCQUFRO0FBTlYscUNBQW9DO0FBT2xDLDRCQUFRO0FBTlYsdUNBQXNDO0FBT3BDLDhCQUFTIn0=
|
||||
const smartversion = require("smartversion");
|
||||
exports.smartversion = smartversion;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnR1cGRhdGUucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0dXBkYXRlLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFFdkIsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsMkNBQTBDO0FBU3hDLGtDQUFXO0FBUmIscUNBQW9DO0FBU2xDLDRCQUFRO0FBUlYscUNBQW9DO0FBU2xDLDRCQUFRO0FBUlYsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsdUNBQXNDO0FBU3BDLDhCQUFTO0FBUlgsNkNBQTRDO0FBUzFDLG9DQUFZIn0=
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "smartupdate",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.8",
|
||||
"description": "update your tools in a smart way",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
@ -13,11 +13,13 @@
|
||||
"tapbundle": "^1.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"beautycolor": "^1.0.10",
|
||||
"beautycolor": "^1.0.11",
|
||||
"beautylog": "^6.1.10",
|
||||
"npmextra": "^2.0.9",
|
||||
"smartnpm": "^1.0.4",
|
||||
"smarttime": "^1.0.6",
|
||||
"smartopen": "^1.0.3",
|
||||
"smarttime": "^1.0.7",
|
||||
"smartversion": "^1.0.3",
|
||||
"typings-global": "^1.0.20"
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ import { expect, tap } from 'tapbundle'
|
||||
import * as smartupdate from '../ts/index'
|
||||
|
||||
tap.test('should check for a npm module', async () => {
|
||||
await smartupdate.standardHandler.check('npmts', '8.0.5')
|
||||
await smartupdate.standardHandler.check('npmts', '8.0.5', 'http://gitzone.gitlab.io/npmts/changelog.html')
|
||||
})
|
||||
|
||||
tap.start()
|
||||
|
45
ts/index.ts
45
ts/index.ts
@ -13,28 +13,39 @@ import { KeyValueStore } from 'npmextra'
|
||||
export class SmartUpdate {
|
||||
kvStore = new plugins.npmextra.KeyValueStore('custom', 'global:smartupdate')
|
||||
|
||||
async check (npmnameArg: string, compareVersion: string) {
|
||||
let result: ICacheStatus = await this.kvStore.readKey(npmnameArg)
|
||||
let timeStamp = new TimeStamp()
|
||||
|
||||
async check (npmnameArg: string, compareVersion: string, changelogUrlArg?: string) {
|
||||
|
||||
// the newData to write
|
||||
let timeStamp = new TimeStamp()
|
||||
let newData = {
|
||||
lastCheck: timeStamp.milliSeconds,
|
||||
latestVersion: 'x.x.x',
|
||||
performedUpgrade: false
|
||||
}
|
||||
|
||||
// the comparison data from the keyValue store
|
||||
let result: ICacheStatus = await this.kvStore.readKey(npmnameArg)
|
||||
|
||||
if (result) {
|
||||
let lastCheckTimeStamp = TimeStamp.fromMilliSeconds(result.lastCheck)
|
||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ days: 1 })
|
||||
let compareTime = plugins.smarttime.getMilliSecondsFromUnits({ hours: 1 })
|
||||
if (!lastCheckTimeStamp.isOlderThan(timeStamp, compareTime)) {
|
||||
plugins.beautylog.log(`smartupdate: next check tomorrow: ${plugins.beautycolor.coloredString(`${npmnameArg} has already been checked for today.`, 'pink')}`)
|
||||
newData.lastCheck = lastCheckTimeStamp.milliSeconds
|
||||
let nextCheckInMinutes = (timeStamp.milliSeconds - lastCheckTimeStamp.milliSeconds) / 60000
|
||||
plugins.beautylog.log(
|
||||
`smartupdate: next check in ${nextCheckInMinutes}: ` +
|
||||
`${plugins.beautycolor.coloredString(
|
||||
`${npmnameArg} has already been checked within the last hour.`
|
||||
, 'pink'
|
||||
)}`
|
||||
)
|
||||
return
|
||||
}
|
||||
}
|
||||
let npmPackage = await this.getNpmPackageFromRegistry(npmnameArg)
|
||||
newData.latestVersion = npmPackage.version
|
||||
let upgradeBool = await this.checkIfUpgrade(npmPackage, compareVersion)
|
||||
if(upgradeBool) {
|
||||
let upgradeBool = await this.checkIfUpgrade(npmPackage, compareVersion, changelogUrlArg)
|
||||
if (upgradeBool) {
|
||||
|
||||
}
|
||||
this.kvStore.writeKey(npmnameArg, newData)
|
||||
@ -47,14 +58,24 @@ export class SmartUpdate {
|
||||
return npmPackage
|
||||
}
|
||||
|
||||
private async checkIfUpgrade (npmPackage: plugins.smartnpm.NpmPackage, versionArg: string) {
|
||||
if (npmPackage.version === versionArg) {
|
||||
private async checkIfUpgrade (
|
||||
npmPackage: plugins.smartnpm.NpmPackage,
|
||||
localVersionStringArg: string,
|
||||
changelogUrlArg?: string
|
||||
) {
|
||||
// create Version objects
|
||||
let versionNpm = new plugins.smartversion.SmartVersion(npmPackage.version)
|
||||
let versionLocal = new plugins.smartversion.SmartVersion(localVersionStringArg)
|
||||
if (!versionNpm.greaterThan(versionLocal)) {
|
||||
plugins.beautylog.ok(`smartupdate: You are running the latest version of ${plugins.beautycolor.coloredString(npmPackage.name, 'pink')}`)
|
||||
return false
|
||||
} else {
|
||||
plugins.beautylog.warn(`There is a newer version of ${npmPackage.name} available on npm.`)
|
||||
plugins.beautylog.info(`Your version: ${versionArg} | version on npm: ${npmPackage.version}`)
|
||||
plugins.beautylog.warn(`!!! You should upgrade!!!`)
|
||||
plugins.beautylog.warn(`Your version: ${versionLocal.versionString} | version on npm: ${versionNpm.versionString}`)
|
||||
if (!process.env.CI && changelogUrlArg) {
|
||||
plugins.beautylog.log('trying to open changelog...')
|
||||
plugins.smartopen.openUrl(changelogUrlArg)
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
@ -4,12 +4,16 @@ import * as beautylog from 'beautylog'
|
||||
import * as beautycolor from 'beautycolor'
|
||||
import * as npmextra from 'npmextra'
|
||||
import * as smartnpm from 'smartnpm'
|
||||
import * as smartopen from 'smartopen'
|
||||
import * as smarttime from 'smarttime'
|
||||
import * as smartversion from 'smartversion'
|
||||
|
||||
export {
|
||||
beautylog,
|
||||
beautycolor,
|
||||
npmextra,
|
||||
smartnpm,
|
||||
smarttime
|
||||
smartopen,
|
||||
smarttime,
|
||||
smartversion
|
||||
}
|
||||
|
47
yarn.lock
47
yarn.lock
@ -53,8 +53,12 @@
|
||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-2.0.29.tgz#5002e14f75e2d71e564281df0431c8c1b4a2a36a"
|
||||
|
||||
"@types/node@*", "@types/node@^8.0.10":
|
||||
version "8.0.22"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.22.tgz#9c6bfee1f45f5e9952ff6b487e657ecca48c7777"
|
||||
version "8.0.24"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.24.tgz#06c580084d9add1fb40c1510ef0b448961246fb1"
|
||||
|
||||
"@types/open@^0.0.29":
|
||||
version "0.0.29"
|
||||
resolved "https://registry.yarnpkg.com/@types/open/-/open-0.0.29.tgz#3de910012674909db14d608d1fde44ffa7a9ecea"
|
||||
|
||||
"@types/promises-a-plus@*":
|
||||
version "0.0.27"
|
||||
@ -64,6 +68,10 @@
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.0.3.tgz#08e99d20f7abfc0fe202b6d5a0921bfafcdea8d0"
|
||||
|
||||
"@types/semver@^5.3.33":
|
||||
version "5.3.34"
|
||||
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-5.3.34.tgz#6fade409ceb8ae817c1f7f1cfa5375416e97045f"
|
||||
|
||||
"@types/shelljs@^0.7.2":
|
||||
version "0.7.4"
|
||||
resolved "https://registry.yarnpkg.com/@types/shelljs/-/shelljs-0.7.4.tgz#137b5f31306eaff4de120ffe5b9d74b297809cfc"
|
||||
@ -107,12 +115,11 @@ balanced-match@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
|
||||
|
||||
beautycolor@^1.0.10, beautycolor@^1.0.7, beautycolor@^1.0.9:
|
||||
version "1.0.10"
|
||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.10.tgz#4b50758e59115839b3bb2bfe8aaaec9e29c747dd"
|
||||
beautycolor@^1.0.11, beautycolor@^1.0.7, beautycolor@^1.0.9:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/beautycolor/-/beautycolor-1.0.11.tgz#71c5568d5a7ed5c144d3a54f753ad1b08862aea5"
|
||||
dependencies:
|
||||
ansi-256-colors "^1.1.0"
|
||||
tapbundle "^1.1.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
beautylog@^6.1.10:
|
||||
@ -495,6 +502,10 @@ onetime@^2.0.0:
|
||||
dependencies:
|
||||
mimic-fn "^1.0.0"
|
||||
|
||||
open@^0.0.5:
|
||||
version "0.0.5"
|
||||
resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc"
|
||||
|
||||
ora@^1.1.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ora/-/ora-1.3.0.tgz#80078dd2b92a934af66a3ad72a5b910694ede51a"
|
||||
@ -585,7 +596,7 @@ safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
|
||||
|
||||
semver@^5.3.0:
|
||||
semver@^5.3.0, semver@^5.4.1:
|
||||
version "5.4.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
|
||||
|
||||
@ -660,6 +671,14 @@ smartnpm@^1.0.4:
|
||||
smartrequest "^1.0.6"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
smartopen@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/smartopen/-/smartopen-1.0.3.tgz#11a5835b50103e09fc9702ec9a884605ad7e584d"
|
||||
dependencies:
|
||||
"@types/open" "^0.0.29"
|
||||
open "^0.0.5"
|
||||
typings-global "^1.0.20"
|
||||
|
||||
smartpath@^3.2.8:
|
||||
version "3.2.8"
|
||||
resolved "https://registry.yarnpkg.com/smartpath/-/smartpath-3.2.8.tgz#4834bd3a8bae2295baacadba23c87a501952f940"
|
||||
@ -692,12 +711,20 @@ smartshell@^1.0.6:
|
||||
typings-global "^1.0.19"
|
||||
which "^1.2.14"
|
||||
|
||||
smarttime@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/smarttime/-/smarttime-1.0.6.tgz#0412a021cff88e8e41b766103a2d9e42fe816ddc"
|
||||
smarttime@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/smarttime/-/smarttime-1.0.7.tgz#d3030d7cd71bf58d752e88c81f6f4fd59681efd1"
|
||||
dependencies:
|
||||
typings-global "^1.0.16"
|
||||
|
||||
smartversion@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/smartversion/-/smartversion-1.0.3.tgz#8b6b1553594a4df7fac8495bc2802b4a6f84a27c"
|
||||
dependencies:
|
||||
"@types/semver" "^5.3.33"
|
||||
semver "^5.4.1"
|
||||
typings-global "^1.0.16"
|
||||
|
||||
sprintf-js@~1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
|
||||
|
Reference in New Issue
Block a user