conventional-changelog 7.0.0 → 7.0.2
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/ConventionalChangelog.d.ts +120 -0
- package/dist/ConventionalChangelog.d.ts.map +1 -0
- package/dist/ConventionalChangelog.js +429 -0
- package/dist/cli/cli.d.ts +82 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +161 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +36 -0
- package/dist/cli/options.d.ts +6 -0
- package/dist/cli/options.d.ts.map +1 -0
- package/dist/cli/options.js +47 -0
- package/dist/cli/utils.d.ts +3 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +25 -0
- package/dist/hostedGitInfo.d.ts +3 -0
- package/dist/hostedGitInfo.d.ts.map +1 -0
- package/dist/hostedGitInfo.js +118 -0
- package/dist/hostedGitInfo.mock.d.ts +2496 -0
- package/dist/hostedGitInfo.mock.d.ts.map +1 -0
- package/dist/hostedGitInfo.mock.js +4161 -0
- package/dist/hosts/bitbucket.d.ts +7 -0
- package/dist/hosts/bitbucket.d.ts.map +1 -0
- package/dist/hosts/bitbucket.js +20 -0
- package/dist/hosts/github.d.ts +7 -0
- package/dist/hosts/github.d.ts.map +1 -0
- package/dist/hosts/github.js +17 -0
- package/dist/hosts/gitlab.d.ts +7 -0
- package/dist/hosts/gitlab.d.ts.map +1 -0
- package/dist/hosts/gitlab.js +16 -0
- package/dist/hosts/index.d.ts +3 -0
- package/dist/hosts/index.d.ts.map +1 -0
- package/dist/hosts/index.js +9 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +64 -0
- package/package.json +4 -4
package/dist/cli/cli.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createReadStream, createWriteStream } from 'fs';
|
|
3
|
+
import {} from '../index.js';
|
|
4
|
+
import { parseOptions, parseCommitsOptions, parseTagsOptions } from './options.js';
|
|
5
|
+
import { loadDataFile, isFileExists } from './utils.js';
|
|
6
|
+
export const flags = {
|
|
7
|
+
infile: {
|
|
8
|
+
shortFlag: 'i',
|
|
9
|
+
default: 'CHANGELOG.md',
|
|
10
|
+
type: 'string'
|
|
11
|
+
},
|
|
12
|
+
outfile: {
|
|
13
|
+
shortFlag: 'o',
|
|
14
|
+
type: 'string'
|
|
15
|
+
},
|
|
16
|
+
stdout: {
|
|
17
|
+
type: 'boolean'
|
|
18
|
+
},
|
|
19
|
+
preset: {
|
|
20
|
+
shortFlag: 'p',
|
|
21
|
+
type: 'string'
|
|
22
|
+
},
|
|
23
|
+
pkg: {
|
|
24
|
+
shortFlag: 'k',
|
|
25
|
+
type: 'string'
|
|
26
|
+
},
|
|
27
|
+
append: {
|
|
28
|
+
shortFlag: 'a',
|
|
29
|
+
type: 'boolean'
|
|
30
|
+
},
|
|
31
|
+
releaseCount: {
|
|
32
|
+
shortFlag: 'r',
|
|
33
|
+
type: 'number'
|
|
34
|
+
},
|
|
35
|
+
skipUnstable: {
|
|
36
|
+
type: 'boolean'
|
|
37
|
+
},
|
|
38
|
+
outputUnreleased: {
|
|
39
|
+
shortFlag: 'u',
|
|
40
|
+
type: 'boolean'
|
|
41
|
+
},
|
|
42
|
+
verbose: {
|
|
43
|
+
shortFlag: 'v',
|
|
44
|
+
type: 'boolean'
|
|
45
|
+
},
|
|
46
|
+
config: {
|
|
47
|
+
shortFlag: 'n',
|
|
48
|
+
type: 'string'
|
|
49
|
+
},
|
|
50
|
+
context: {
|
|
51
|
+
shortFlag: 'c',
|
|
52
|
+
type: 'string'
|
|
53
|
+
},
|
|
54
|
+
firstRelease: {
|
|
55
|
+
shortFlag: 'f',
|
|
56
|
+
type: 'boolean'
|
|
57
|
+
},
|
|
58
|
+
lernaPackage: {
|
|
59
|
+
shortFlag: 'l',
|
|
60
|
+
type: 'string'
|
|
61
|
+
},
|
|
62
|
+
tagPrefix: {
|
|
63
|
+
shortFlag: 't',
|
|
64
|
+
type: 'string'
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export async function runProgram(generator, flags) {
|
|
68
|
+
let { infile, outfile, stdout, verbose, pkg, preset, config, context } = flags;
|
|
69
|
+
generator.readPackage(pkg);
|
|
70
|
+
if (preset) {
|
|
71
|
+
generator.loadPreset(preset);
|
|
72
|
+
}
|
|
73
|
+
if (config) {
|
|
74
|
+
const configOptions = await loadDataFile(config);
|
|
75
|
+
if (configOptions.tags) {
|
|
76
|
+
generator.tags(configOptions.tags);
|
|
77
|
+
}
|
|
78
|
+
if (configOptions.commits || configOptions.parser) {
|
|
79
|
+
generator.commits(configOptions.commits || {}, configOptions.parser);
|
|
80
|
+
}
|
|
81
|
+
if (configOptions.writer) {
|
|
82
|
+
generator.writer(configOptions.writer);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (context) {
|
|
86
|
+
const writerContext = await loadDataFile(context);
|
|
87
|
+
if (writerContext) {
|
|
88
|
+
generator.context(writerContext);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
const options = parseOptions(flags);
|
|
92
|
+
if (options) {
|
|
93
|
+
generator.options(options);
|
|
94
|
+
}
|
|
95
|
+
const tagsOptions = parseTagsOptions(flags);
|
|
96
|
+
if (tagsOptions) {
|
|
97
|
+
generator.tags(tagsOptions);
|
|
98
|
+
}
|
|
99
|
+
const commitsOptions = parseCommitsOptions(flags);
|
|
100
|
+
if (commitsOptions) {
|
|
101
|
+
generator.commits(commitsOptions);
|
|
102
|
+
}
|
|
103
|
+
if (verbose) {
|
|
104
|
+
generator.options({
|
|
105
|
+
debug(namespace, payload) {
|
|
106
|
+
console.info(`[${namespace}]:`, payload);
|
|
107
|
+
},
|
|
108
|
+
warn(namespace, payload) {
|
|
109
|
+
console.warn(`[${namespace}]:`, payload);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
outfile ||= infile;
|
|
114
|
+
const sameFile = !stdout && infile === outfile;
|
|
115
|
+
const changelog = generator.write();
|
|
116
|
+
const streams = [];
|
|
117
|
+
if (infile && options?.releaseCount !== 0) {
|
|
118
|
+
const isInfileExists = await isFileExists(infile);
|
|
119
|
+
const input = isInfileExists
|
|
120
|
+
? createReadStream(infile)
|
|
121
|
+
: [];
|
|
122
|
+
if (!isInfileExists && verbose) {
|
|
123
|
+
console.warn(`"${infile}" does not exist.`);
|
|
124
|
+
}
|
|
125
|
+
if (sameFile) {
|
|
126
|
+
if (options?.append) {
|
|
127
|
+
streams.push(changelog);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
const buffer = [];
|
|
131
|
+
for await (const chunk of changelog) {
|
|
132
|
+
buffer.push(chunk);
|
|
133
|
+
}
|
|
134
|
+
for await (const chunk of input) {
|
|
135
|
+
buffer.push(chunk);
|
|
136
|
+
}
|
|
137
|
+
streams.push(buffer);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (options?.append) {
|
|
141
|
+
streams.push(input, changelog);
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
streams.push(changelog, input);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
streams.push(changelog);
|
|
149
|
+
}
|
|
150
|
+
const output = (outfile && !stdout
|
|
151
|
+
? createWriteStream(outfile, {
|
|
152
|
+
flags: sameFile && options?.append ? 'a' : 'w'
|
|
153
|
+
})
|
|
154
|
+
: process.stdout);
|
|
155
|
+
for (const stream of streams) {
|
|
156
|
+
for await (const chunk of stream) {
|
|
157
|
+
output.write(chunk);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NsaS9jbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFFTCxnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2xCLE1BQU0sSUFBSSxDQUFBO0FBQ1gsT0FBTyxFQUdOLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sRUFDTCxZQUFZLEVBQ1osbUJBQW1CLEVBQ25CLGdCQUFnQixFQUNqQixNQUFNLGNBQWMsQ0FBQTtBQUNyQixPQUFPLEVBQ0wsWUFBWSxFQUNaLFlBQVksRUFDYixNQUFNLFlBQVksQ0FBQTtBQW9CbkIsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ25CLE1BQU0sRUFBRTtRQUNOLFNBQVMsRUFBRSxHQUFHO1FBQ2QsT0FBTyxFQUFFLGNBQWM7UUFDdkIsSUFBSSxFQUFFLFFBQVE7S0FDZjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxHQUFHO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZjtJQUNELE1BQU0sRUFBRTtRQUNOLElBQUksRUFBRSxTQUFTO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ04sU0FBUyxFQUFFLEdBQUc7UUFDZCxJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsU0FBUyxFQUFFLEdBQUc7UUFDZCxJQUFJLEVBQUUsUUFBUTtLQUNmO0lBQ0QsTUFBTSxFQUFFO1FBQ04sU0FBUyxFQUFFLEdBQUc7UUFDZCxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELFlBQVksRUFBRTtRQUNaLFNBQVMsRUFBRSxHQUFHO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZjtJQUNELFlBQVksRUFBRTtRQUNaLElBQUksRUFBRSxTQUFTO0tBQ2hCO0lBQ0QsZ0JBQWdCLEVBQUU7UUFDaEIsU0FBUyxFQUFFLEdBQUc7UUFDZCxJQUFJLEVBQUUsU0FBUztLQUNoQjtJQUNELE9BQU8sRUFBRTtRQUNQLFNBQVMsRUFBRSxH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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import meow from 'meow';
|
|
3
|
+
import { ConventionalChangelog } from '../index.js';
|
|
4
|
+
import { flags, runProgram } from './cli.js';
|
|
5
|
+
const cli = meow(`
|
|
6
|
+
Usage
|
|
7
|
+
conventional-changelog
|
|
8
|
+
|
|
9
|
+
Example
|
|
10
|
+
conventional-changelog -i changelog -o CHANGELOG.md
|
|
11
|
+
|
|
12
|
+
Options
|
|
13
|
+
-i, --infile Read the CHANGELOG from this file (default: CHANGELOG.md)
|
|
14
|
+
-o, --outfile Write the CHANGELOG to this file (default: infile)
|
|
15
|
+
--stdout Output the result to stdout
|
|
16
|
+
-p, --preset Name of the preset you want to use
|
|
17
|
+
-k, --pkg A filepath of where your package.json is located (default: closest package.json)
|
|
18
|
+
-a, --append Should the newer release be appended to the older release (default: false)
|
|
19
|
+
-f, --first-release Generate the CHANGELOG for the first time
|
|
20
|
+
-r, --release-count How many releases to be generated from the latest (default: 1)
|
|
21
|
+
If 0, the whole changelog will be regenerated and the outfile will be overwritten
|
|
22
|
+
--skip-unstable If given, unstable tags will be skipped, e.g., x.x.x-alpha.1, x.x.x-rc.2
|
|
23
|
+
-u, --output-unreleased Output unreleased changelog
|
|
24
|
+
-v, --verbose Verbose output. Use this for debugging (default: false)
|
|
25
|
+
-n, --config A filepath of your config script
|
|
26
|
+
-c, --context A filepath of a json that is used to define template variables
|
|
27
|
+
-l, --lerna-package Generate a changelog for a specific lerna package (:pkg-name@1.0.0)
|
|
28
|
+
-t, --tag-prefix Tag prefix to consider when reading the tags
|
|
29
|
+
--commit-path Generate a changelog scoped to a specific directory
|
|
30
|
+
`, {
|
|
31
|
+
importMeta: import.meta,
|
|
32
|
+
booleanDefault: undefined,
|
|
33
|
+
flags
|
|
34
|
+
});
|
|
35
|
+
await runProgram(new ConventionalChangelog(process.cwd()), cli.flags);
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ25ELE9BQU8sRUFDTCxLQUFLLEVBQ0wsVUFBVSxFQUNYLE1BQU0sVUFBVSxDQUFBO0FBRWpCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXlCaEIsRUFBRTtJQUNELFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSTtJQUN2QixjQUFjLEVBQUUsU0FBUztJQUN6QixLQUFLO0NBQ04sQ0FBQyxDQUFBO0FBRUYsTUFBTSxVQUFVLENBQ2QsSUFBSSxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsRUFDeEMsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFBIn0=
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { GetCommitsParams, GetSemverTagsParams } from '@conventional-changelog/git-client';
|
|
2
|
+
import type { Options } from '../types.js';
|
|
3
|
+
export declare function parseOptions(options: Record<string, unknown>): Options | null;
|
|
4
|
+
export declare function parseTagsOptions(options: Record<string, unknown>): GetSemverTagsParams | null;
|
|
5
|
+
export declare function parseCommitsOptions(options: Record<string, unknown>): GetCommitsParams | null;
|
|
6
|
+
//# sourceMappingURL=options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/cli/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,mBAAmB,EACpB,MAAM,oCAAoC,CAAA;AAE3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,GAAG,IAAI,CAuB7E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,GAAG,IAAI,CAoB7F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,gBAAgB,GAAG,IAAI,CAY7F"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { packagePrefix } from '@conventional-changelog/git-client';
|
|
2
|
+
export function parseOptions(options) {
|
|
3
|
+
const result = {};
|
|
4
|
+
if (typeof options.append === 'boolean') {
|
|
5
|
+
result.append = options.append;
|
|
6
|
+
}
|
|
7
|
+
if (options.firstRelease === true) {
|
|
8
|
+
result.releaseCount = 0;
|
|
9
|
+
}
|
|
10
|
+
else if (typeof options.releaseCount === 'number') {
|
|
11
|
+
result.releaseCount = options.releaseCount;
|
|
12
|
+
}
|
|
13
|
+
if (typeof options.outputUnreleased === 'boolean') {
|
|
14
|
+
result.outputUnreleased = options.outputUnreleased;
|
|
15
|
+
}
|
|
16
|
+
if (!Object.keys(result).length) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
export function parseTagsOptions(options) {
|
|
22
|
+
const result = {};
|
|
23
|
+
if (typeof options.tagPrefix === 'string') {
|
|
24
|
+
result.prefix = options.tagPrefix;
|
|
25
|
+
}
|
|
26
|
+
if (typeof options.lernaPackage === 'string') {
|
|
27
|
+
result.prefix = packagePrefix(options.lernaPackage);
|
|
28
|
+
}
|
|
29
|
+
if (options.skipUnstable) {
|
|
30
|
+
result.skipUnstable = true;
|
|
31
|
+
}
|
|
32
|
+
if (!Object.keys(result).length) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
export function parseCommitsOptions(options) {
|
|
38
|
+
const result = {};
|
|
39
|
+
if (typeof options.commitPath === 'string') {
|
|
40
|
+
result.path = options.commitPath;
|
|
41
|
+
}
|
|
42
|
+
if (!Object.keys(result).length) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGkvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFHbEUsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFnQztJQUMzRCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUE7SUFFMUIsSUFBSSxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1FBQ3ZDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQTtLQUMvQjtJQUVELElBQUksT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJLEVBQUU7UUFDakMsTUFBTSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUE7S0FDeEI7U0FDQyxJQUFJLE9BQU8sT0FBTyxDQUFDLFlBQVksS0FBSyxRQUFRLEVBQUU7UUFDNUMsTUFBTSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFBO0tBQzNDO0lBRUgsSUFBSSxPQUFPLE9BQU8sQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7UUFDakQsTUFBTSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQTtLQUNuRDtJQUVELElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRTtRQUMvQixPQUFPLElBQUksQ0FBQTtLQUNaO0lBRUQsT0FBTyxNQUFNLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWdDO0lBQy9ELE1BQU0sTUFBTSxHQUF3QixFQUFFLENBQUE7SUFFdEMsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1FBQ3pDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQTtLQUNsQztJQUVELElBQUksT0FBTyxPQUFPLENBQUMsWUFBWSxLQUFLLFFBQVEsRUFBRTtRQUM1QyxNQUFNLENBQUMsTUFBTSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUE7S0FDcEQ7SUFFRCxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUU7UUFDeEIsTUFBTSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUE7S0FDM0I7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUE7S0FDWjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQztBQUVELE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFnQztJQUNsRSxNQUFNLE1BQU0sR0FBcUIsRUFBRSxDQUFBO0lBRW5DLElBQUksT0FBTyxPQUFPLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtRQUMxQyxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUE7S0FDakM7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7UUFDL0IsT0FBTyxJQUFJLENBQUE7S0FDWjtJQUVELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cli/utils.ts"],"names":[],"mappings":"AAWA,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpE;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { resolve, extname } from 'path';
|
|
2
|
+
import { pathToFileURL } from 'url';
|
|
3
|
+
import { readFile, stat } from 'fs/promises';
|
|
4
|
+
function relativeResolve(filePath) {
|
|
5
|
+
return pathToFileURL(resolve(process.cwd(), filePath));
|
|
6
|
+
}
|
|
7
|
+
export async function loadDataFile(filePath) {
|
|
8
|
+
const resolvedFilePath = relativeResolve(filePath);
|
|
9
|
+
const ext = extname(resolvedFilePath.toString());
|
|
10
|
+
if (ext === '.json') {
|
|
11
|
+
return JSON.parse(await readFile(resolvedFilePath, 'utf8'));
|
|
12
|
+
}
|
|
13
|
+
// @ts-expect-error Dynamic import actually works with file URLs
|
|
14
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
15
|
+
return (await import(resolvedFilePath)).default;
|
|
16
|
+
}
|
|
17
|
+
export async function isFileExists(filePath) {
|
|
18
|
+
try {
|
|
19
|
+
return (await stat(filePath)).isFile();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUE7QUFDbkMsT0FBTyxFQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0wsTUFBTSxhQUFhLENBQUE7QUFFcEIsU0FBUyxlQUFlLENBQUMsUUFBZ0I7SUFDdkMsT0FBTyxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBQ3hELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLFlBQVksQ0FBQyxRQUFnQjtJQUNqRCxNQUFNLGdCQUFnQixHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUNsRCxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtJQUVoRCxJQUFJLEdBQUcsS0FBSyxPQUFPLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFXLENBQUE7S0FDdEU7SUFFRCxnRUFBZ0U7SUFDaEUsc0VBQXNFO0lBQ3RFLE9BQU8sQ0FBQyxNQUFNLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsT0FBaUIsQ0FBQTtBQUMzRCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxZQUFZLENBQUMsUUFBZ0I7SUFDakQsSUFBSTtRQUNGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0tBQ3ZDO0lBQUMsTUFBTTtRQUNOLE9BQU8sS0FBSyxDQUFBO0tBQ2I7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hostedGitInfo.d.ts","sourceRoot":"","sources":["../src/hostedGitInfo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,aAAa,EACd,MAAM,YAAY,CAAA;AA6DnB,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAuFrE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
function getType(domain) {
|
|
2
|
+
if (domain.includes('github')) {
|
|
3
|
+
return 'github';
|
|
4
|
+
}
|
|
5
|
+
if (domain.includes('gitlab')) {
|
|
6
|
+
return 'gitlab';
|
|
7
|
+
}
|
|
8
|
+
if (domain.includes('bitbucket')) {
|
|
9
|
+
return 'bitbucket';
|
|
10
|
+
}
|
|
11
|
+
if (domain.includes('git.sr.ht')) {
|
|
12
|
+
return 'sourcehut';
|
|
13
|
+
}
|
|
14
|
+
return '';
|
|
15
|
+
}
|
|
16
|
+
function getHost(type) {
|
|
17
|
+
switch (type) {
|
|
18
|
+
case 'github':
|
|
19
|
+
return 'https://github.com';
|
|
20
|
+
case 'gitlab':
|
|
21
|
+
return 'https://gitlab.com';
|
|
22
|
+
case 'bitbucket':
|
|
23
|
+
return 'https://bitbucket.org';
|
|
24
|
+
case 'sourcehut':
|
|
25
|
+
return 'https://git.sr.ht';
|
|
26
|
+
default:
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function getRepositoryUrl(type, host, owner, project, branch) {
|
|
31
|
+
if (!host) {
|
|
32
|
+
return '';
|
|
33
|
+
}
|
|
34
|
+
let treepath = '';
|
|
35
|
+
if (branch) {
|
|
36
|
+
if (type === 'bitbucket') {
|
|
37
|
+
treepath = `/src/${encodeURIComponent(branch)}`;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
treepath = `/tree/${encodeURIComponent(branch)}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return `${host}/${owner}/${project}${treepath}`;
|
|
44
|
+
}
|
|
45
|
+
export function parseHostedGitUrl(input) {
|
|
46
|
+
// github edge case with branch in the url
|
|
47
|
+
let matches = input.match(/^(?:https:\/\/)?github\.com\/([^/]+)\/([^/.#]+)(?:\/tree\/[^/]+)?$/);
|
|
48
|
+
if (matches) {
|
|
49
|
+
return {
|
|
50
|
+
url: input,
|
|
51
|
+
type: 'github',
|
|
52
|
+
host: 'https://github.com',
|
|
53
|
+
owner: matches[1],
|
|
54
|
+
project: matches[2]
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
let type;
|
|
58
|
+
let host;
|
|
59
|
+
let owner;
|
|
60
|
+
let project;
|
|
61
|
+
// git+ssh and ssh urls
|
|
62
|
+
matches = input.match(/^(?:(?:git\+)?ssh:\/\/(?:[^@]+@)?|[^@]+@)(?:www\.)?([^@:]+):([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
|
|
63
|
+
if (matches) {
|
|
64
|
+
type = getType(matches[1]);
|
|
65
|
+
host = `https://${matches[1]}`;
|
|
66
|
+
owner = matches[2];
|
|
67
|
+
project = matches[3];
|
|
68
|
+
return {
|
|
69
|
+
url: getRepositoryUrl(type, host, owner, project, matches[4]),
|
|
70
|
+
type,
|
|
71
|
+
host,
|
|
72
|
+
owner,
|
|
73
|
+
project
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
// git+https and https urls
|
|
77
|
+
matches = input.match(/^(?:(?:git\+)?https|git):\/\/(?:[^@]+@)?(?:www\.)?([^@/]+)\/([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
|
|
78
|
+
if (matches) {
|
|
79
|
+
type = getType(matches[1]);
|
|
80
|
+
host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`;
|
|
81
|
+
owner = matches[2];
|
|
82
|
+
project = matches[3];
|
|
83
|
+
return {
|
|
84
|
+
url: getRepositoryUrl(type, host, owner, project, matches[4]),
|
|
85
|
+
type,
|
|
86
|
+
host,
|
|
87
|
+
owner,
|
|
88
|
+
project
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
// shortcuts
|
|
92
|
+
matches = input.match(/^(?:([^@:]+):)?(?:[^@:]+@|[^@:]*:[^@:]+@)?([^/#]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/);
|
|
93
|
+
if (matches) {
|
|
94
|
+
type = matches[1] || 'github';
|
|
95
|
+
host = getHost(type);
|
|
96
|
+
owner = matches[2];
|
|
97
|
+
project = matches[3];
|
|
98
|
+
return {
|
|
99
|
+
url: getRepositoryUrl(type, host, owner, project, matches[4]),
|
|
100
|
+
type,
|
|
101
|
+
host,
|
|
102
|
+
owner,
|
|
103
|
+
project
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
matches = input.match(/^\w+:\/\/([^/]+)(\/[^#]+)?/);
|
|
107
|
+
if (matches) {
|
|
108
|
+
type = getType(matches[1]);
|
|
109
|
+
host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`;
|
|
110
|
+
return {
|
|
111
|
+
url: `${host}${matches[2]?.replace(/\/?\.git.*/, '') || ''}`,
|
|
112
|
+
type,
|
|
113
|
+
host
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkR2l0SW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ob3N0ZWRHaXRJbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBWTtJQUMzQixRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssUUFBUTtZQUNYLE9BQU8sb0JBQW9CLENBQUE7UUFDN0IsS0FBSyxRQUFRO1lBQ1gsT0FBTyxvQkFBb0IsQ0FBQTtRQUM3QixLQUFLLFdBQVc7WUFDZCxPQUFPLHVCQUF1QixDQUFBO1FBQ2hDLEtBQUssV0FBVztZQUNkLE9BQU8sbUJBQW1CLENBQUE7UUFDNUI7WUFDRSxPQUFPLEVBQUUsQ0FBQTtLQUNaO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLElBQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLE9BQWUsRUFDZixNQUFjO0lBRWQsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFFakIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFD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
|