Skip to content

Commit

Permalink
feat: colorize semver diff
Browse files Browse the repository at this point in the history
  • Loading branch information
bluelovers committed Jun 11, 2020
1 parent 5cac98b commit d31149d
Show file tree
Hide file tree
Showing 33 changed files with 1,367 additions and 614 deletions.
9 changes: 6 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@
"sort-package-json:ws": "npx yarn-tool ws exec yarn-tool sort"
},
"resolutions": {},
"dependencies": {
"array-hyper-unique": "^1.1.2",
"chalk": "< 3 && >= 2",
"semver": "^7.3.2"
},
"devDependencies": {
"@bluelovers/fast-glob": "^3.0.4",
"@bluelovers/tsconfig": "^1.0.19",
Expand All @@ -42,11 +47,9 @@
"@types/semver": "^7.2.0",
"@types/validate-npm-package-name": "^3.0.0",
"@types/yargs": "^15.0.5",
"array-hyper-unique": "^1.1.2",
"chai": "^4.2.0",
"jest": "^26.0.1",
"mocha": "^7.2.0",
"semver": "^7.3.2",
"mocha": "^8.0.1",
"ts-jest": "^26.1.0"
},
"peerDependencies": {
Expand Down
1 change: 1 addition & 0 deletions packages/@lazy-node/semver-part/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,6 @@
export type { Operator, Options } from 'semver';
export * from './lib/_core';
export * from './lib/compare';
export * from './lib/parse';
declare const _default: typeof import(".");
export default _default;
1 change: 1 addition & 0 deletions packages/@lazy-node/semver-part/index.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions packages/@lazy-node/semver-part/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ export * from './lib/_core';

export * from './lib/compare';

export * from './lib/parse';

export default exports as typeof import('./index');
2 changes: 1 addition & 1 deletion packages/@lazy-node/semver-part/lib/_core.d.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export declare function _versionUnsafe(part: string, defaultValue?: string): string;
export declare function _version(part1: string): string;
export declare function _versionSafe(part: string): string;
export declare function _part(part1: string, part2: string): [string, string];
export declare function partsToVersion(parts: string[]): string;
export declare function versionToParts(version: string): string[];
16 changes: 8 additions & 8 deletions packages/@lazy-node/semver-part/lib/_core.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions packages/@lazy-node/semver-part/lib/_core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,18 @@ export function _versionUnsafe(part: string, defaultValue?: string)
return `0.0.${part ?? defaultValue ?? 0}`;
}

export function _version(part1: string)
export function _versionSafe(part: string)
{
if (/^\d+\.\d+\./.test(part1))
if (/^\d+\.\d+\./.test(part))
{
return part1
return part
}
else if (/^\d+\.(?:[^\.]+)$/.test(part1))
else if (/^\d+\.(?:[^\.]+)$/.test(part))
{
return '0.' + part1
return '0.' + part
}

return _versionUnsafe(part1)
return _versionUnsafe(part)
}

export function _part(part1: string, part2: string): [string, string]
Expand Down
6 changes: 4 additions & 2 deletions packages/@lazy-node/semver-part/lib/compare.d.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
export type { Operator, Options } from 'semver';
/// <reference types="node" />
import { Operator, Options } from 'semver';
export type { Operator, Options } from 'semver';
export declare type IOptionsOrLoose = boolean | Options;
export declare type ICompareReturnType = 1 | 0 | -1;
export declare function compare(part1: string, part2: string, optionsOrLoose?: boolean | Options): 0 | 1 | -1;
export declare function compare(part1: string, part2: string, optionsOrLoose?: boolean | Options): import("readline").Direction;
export declare function eq(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function neq(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function gt(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function gte(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function lt(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function lte(part1: string, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function cmp(part1: string, operator: Operator, part2: string, optionsOrLoose?: boolean | Options): boolean;
export declare function tryCompare(v1: string, v2: string, optionsOrLoose?: IOptionsOrLoose): import("readline").Direction;
9 changes: 8 additions & 1 deletion packages/@lazy-node/semver-part/lib/compare.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 11 additions & 10 deletions packages/@lazy-node/semver-part/lib/compare.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,10 @@ import { _part } from './_core';

import _compare from 'semver/functions/compare';

import _eq from 'semver/functions/eq';
import _neq from 'semver/functions/neq';

import _gt from 'semver/functions/gt';
import _gte from 'semver/functions/gte';

import _lt from 'semver/functions/lt';
import _lte from 'semver/functions/lte';

import _cmp from 'semver/functions/cmp';
import { Operator, Options } from 'semver';

export type { Operator, Options } from 'semver';
import { Operator, Options } from 'semver';

export type IOptionsOrLoose = boolean | Options
export type ICompareReturnType = 1 | 0 | -1
Expand Down Expand Up @@ -63,3 +54,13 @@ export function cmp(part1: string, operator: Operator, part2: string, optionsOrL

return _cmp(v1, operator, v2, optionsOrLoose)
}

export function tryCompare(v1: string, v2: string, optionsOrLoose?: IOptionsOrLoose)
{
try
{
return compare(v1, v2, optionsOrLoose);
}
catch (e)
{}
}
17 changes: 17 additions & 0 deletions packages/@lazy-node/semver-part/lib/parse.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/// <reference types="node" />
export declare type IParseVersionsFindIndex = 0 | 1 | 2;
export declare function parseVersions(versionOld: string, versionNew: string): {
versionOld: string;
versionNew: string;
partsOld: string[];
partsNew: string[];
index: IParseVersionsFindIndex;
};
export declare function parseVersionsAndCompare(versionOld: string, versionNew: string): {
comp: import("readline").Direction;
versionOld: string;
versionNew: string;
partsOld: string[];
partsNew: string[];
index: IParseVersionsFindIndex;
};
29 changes: 29 additions & 0 deletions packages/@lazy-node/semver-part/lib/parse.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 36 additions & 0 deletions packages/@lazy-node/semver-part/lib/parse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { versionToParts } from './_core';
import { tryCompare } from './compare';

export type IParseVersionsFindIndex = 0 | 1 | 2;

export function parseVersions(versionOld: string, versionNew: string)
{
const partsNew = versionToParts(versionNew);
const partsOld = versionToParts(versionOld);

let index: IParseVersionsFindIndex = partsNew.findIndex((part, i) => part !== partsOld[i]) as any;

index = index >= 0 ? index : partsNew.length as any;

return {
versionOld,
versionNew,

partsOld,
partsNew,

index,
}
}

export function parseVersionsAndCompare(versionOld: string, versionNew: string)
{
const data = parseVersions(versionOld, versionNew)

let comp = tryCompare(data.partsNew[data.index], data.partsOld[data.index]);

return {
...data,
comp,
}
}
97 changes: 97 additions & 0 deletions packages/@yarn-tool/semver-diff/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
.idea
node_modules
~ci.list.txt
~ci.log.txt
~ci.errors.txt
*.stackdump
*.bak
*.old
package-lock.json
test/**/*.js
test/**/*.d.ts
test/*.js
test/*.d.ts
test/temp*
test/**/*.map
tests/**/*.js
tests/**/*.d.ts
tests/*.js
tests/*.d.ts
tests/temp*
tests/**/*.map
bin/*.d.ts
bin/**/*.d.ts
/packages/*/bin/*.d.ts
/packages/*/test/**/*.js
/packages/*/test/**/*.d.ts
/packages/*/test/*.js
/packages/*/test/*.d.ts
/packages/*/test/temp*
/packages/*/tests/**/*.js
/packages/*/tests/**/*.d.ts
/packages/*/tests/*.js
/packages/*/tests/*.d.ts
/packages/*/tests/temp*
**/node_modules
*.tgz
/tsconfig.json.tpl
/.eslintrc.json.tpl
!tsconfig.json
!.eslintrc.json
yarn-error.log
*.log
.git
yarn.lock
.env.local
.env.*.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.vue.js
*.vue.d.ts
*.vue.js.map
vue.config.d.ts
vue.config.js.map
.nyc_output
coverage
/*.tpl
!.forestry
!.vuepress
!.github
!.gitee
!.gitlab
.git

*.tsbuildinfo
tsconfig.esm.json.tpl

.browserslistrc
.nvmrc

/.eslintignore
/package.d.ts
.nycrc
.mocharc.yml
#jest.config.js
node_modules/.cache
.yarn-integrity
jest.config.d.ts
jest.config.js.map
/report.*.json
*.js.map
/now.json
.nyc_output
.coverage-cache
.reify-cache
*.spec.d.ts
*.spec.js
.nowignore
*/**/.github
!/.github
!npm-shrinkwrap.json

0 comments on commit d31149d

Please sign in to comment.