keep-a-changelog 3.0.4 → 3.0.5
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/{types/bin.d.ts → bin.d.ts} +0 -1
- package/bin.js +201 -205
- package/mod.d.ts +5 -0
- package/mod.js +1 -0
- package/package.json +30 -28
- package/src/Change.d.ts +8 -0
- package/src/Change.js +29 -30
- package/src/Changelog.d.ts +24 -0
- package/src/Changelog.js +113 -114
- package/src/Release.d.ts +29 -0
- package/src/Release.js +205 -189
- package/src/deps.js +1 -0
- package/src/parser.d.ts +13 -0
- package/src/parser.js +216 -165
- package/src/settings.d.ts +15 -0
- package/src/settings.js +57 -57
- package/CHANGELOG.md +0 -192
- package/types/mod.d.ts +0 -5
- package/types/src/Change.d.ts +0 -8
- package/types/src/Changelog.d.ts +0 -25
- package/types/src/Release.d.ts +0 -29
- package/types/src/parser.d.ts +0 -16
- package/types/src/settings.d.ts +0 -17
- /package/{types/src → src}/deps.d.ts +0 -0
package/bin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
1
|
+
#!/usr/bin/env -S deno run --allow-read --allow-write --allow-env
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { parseArgs } from "node:util";
|
|
4
4
|
import { cwd, exit } from "node:process";
|
|
@@ -7,231 +7,226 @@ import { parse as parseIni } from "ini";
|
|
|
7
7
|
import { Changelog, parser, Release } from "./mod.js";
|
|
8
8
|
import getSettingsForURL from "./src/settings.js";
|
|
9
9
|
const { values } = parseArgs({
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
},
|
|
15
|
-
file: {
|
|
16
|
-
type: "string",
|
|
17
|
-
default: "CHANGELOG.md",
|
|
18
|
-
},
|
|
19
|
-
format: {
|
|
20
|
-
type: "string",
|
|
21
|
-
default: "compact",
|
|
22
|
-
},
|
|
23
|
-
release: {
|
|
24
|
-
type: "boolean",
|
|
25
|
-
},
|
|
26
|
-
init: {
|
|
27
|
-
type: "boolean",
|
|
28
|
-
},
|
|
29
|
-
create: {
|
|
30
|
-
type: "string",
|
|
31
|
-
},
|
|
32
|
-
url: {
|
|
33
|
-
type: "string",
|
|
34
|
-
},
|
|
35
|
-
https: {
|
|
36
|
-
type: "boolean",
|
|
37
|
-
default: true,
|
|
38
|
-
},
|
|
39
|
-
quiet: {
|
|
40
|
-
type: "boolean",
|
|
41
|
-
},
|
|
42
|
-
head: {
|
|
43
|
-
type: "string",
|
|
44
|
-
},
|
|
45
|
-
combine: {
|
|
46
|
-
type: "boolean",
|
|
47
|
-
},
|
|
48
|
-
"bullet-style": {
|
|
49
|
-
type: "string",
|
|
50
|
-
default: "-",
|
|
51
|
-
},
|
|
52
|
-
"latest-release": {
|
|
53
|
-
type: "boolean",
|
|
54
|
-
},
|
|
55
|
-
"latest-release-full": {
|
|
56
|
-
type: "boolean",
|
|
57
|
-
},
|
|
58
|
-
"no-v-prefix": {
|
|
59
|
-
type: "boolean",
|
|
60
|
-
},
|
|
61
|
-
"no-sort-releases": {
|
|
62
|
-
type: "boolean",
|
|
63
|
-
},
|
|
10
|
+
options: {
|
|
11
|
+
help: {
|
|
12
|
+
type: "boolean",
|
|
13
|
+
short: "h"
|
|
64
14
|
},
|
|
15
|
+
file: {
|
|
16
|
+
type: "string",
|
|
17
|
+
default: "CHANGELOG.md"
|
|
18
|
+
},
|
|
19
|
+
format: {
|
|
20
|
+
type: "string",
|
|
21
|
+
default: "compact"
|
|
22
|
+
},
|
|
23
|
+
release: {
|
|
24
|
+
type: "boolean"
|
|
25
|
+
},
|
|
26
|
+
init: {
|
|
27
|
+
type: "boolean"
|
|
28
|
+
},
|
|
29
|
+
create: {
|
|
30
|
+
type: "string"
|
|
31
|
+
},
|
|
32
|
+
url: {
|
|
33
|
+
type: "string"
|
|
34
|
+
},
|
|
35
|
+
https: {
|
|
36
|
+
type: "boolean",
|
|
37
|
+
default: true
|
|
38
|
+
},
|
|
39
|
+
quiet: {
|
|
40
|
+
type: "boolean"
|
|
41
|
+
},
|
|
42
|
+
head: {
|
|
43
|
+
type: "string"
|
|
44
|
+
},
|
|
45
|
+
combine: {
|
|
46
|
+
type: "boolean"
|
|
47
|
+
},
|
|
48
|
+
"bullet-style": {
|
|
49
|
+
type: "string",
|
|
50
|
+
default: "-"
|
|
51
|
+
},
|
|
52
|
+
"latest-release": {
|
|
53
|
+
type: "boolean"
|
|
54
|
+
},
|
|
55
|
+
"latest-release-full": {
|
|
56
|
+
type: "boolean"
|
|
57
|
+
},
|
|
58
|
+
"no-v-prefix": {
|
|
59
|
+
type: "boolean"
|
|
60
|
+
},
|
|
61
|
+
"no-sort-releases": {
|
|
62
|
+
type: "boolean"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
65
|
});
|
|
66
66
|
const file = join(cwd(), values.file);
|
|
67
67
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
changelog.format = values.format;
|
|
75
|
-
changelog.bulletStyle = values["bullet-style"];
|
|
76
|
-
save(file, changelog, true);
|
|
77
|
-
exit(0);
|
|
78
|
-
}
|
|
79
|
-
const changelog = parser(readFileSync(file, { encoding: "utf8" }), {
|
|
80
|
-
autoSortReleases: !values["no-sort-releases"],
|
|
81
|
-
});
|
|
68
|
+
if (values.help) {
|
|
69
|
+
showHelp();
|
|
70
|
+
exit(0);
|
|
71
|
+
}
|
|
72
|
+
if (values.init) {
|
|
73
|
+
const changelog = new Changelog("Changelog").addRelease(new Release("0.1.0", new Date(), "First version"));
|
|
82
74
|
changelog.format = values.format;
|
|
83
75
|
changelog.bulletStyle = values["bullet-style"];
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
let version = values.create || undefined;
|
|
139
|
-
if (version === "major" || version === "minor" || version === "patch") {
|
|
140
|
-
const latestRelease = changelog.releases.find((release) => release.parsedVersion);
|
|
141
|
-
if (!latestRelease) {
|
|
142
|
-
console.error("No releases found to bump version from.");
|
|
143
|
-
exit(1);
|
|
144
|
-
}
|
|
145
|
-
let { major, minor, patch } = latestRelease.parsedVersion;
|
|
146
|
-
if (version === "major") {
|
|
147
|
-
major += 1;
|
|
148
|
-
minor = 0;
|
|
149
|
-
patch = 0;
|
|
150
|
-
}
|
|
151
|
-
else if (version === "minor") {
|
|
152
|
-
minor += 1;
|
|
153
|
-
patch = 0;
|
|
154
|
-
}
|
|
155
|
-
else if (version === "patch") {
|
|
156
|
-
patch += 1;
|
|
157
|
-
}
|
|
158
|
-
version = `${major}.${minor}.${patch}`;
|
|
159
|
-
}
|
|
160
|
-
const release = changelog.releases.find((release) => release.version === version);
|
|
161
|
-
if (release) {
|
|
162
|
-
console.warn("Release already exists.");
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
changelog.addRelease(new Release(version));
|
|
76
|
+
save(file, changelog, true);
|
|
77
|
+
exit(0);
|
|
78
|
+
}
|
|
79
|
+
const changelog = parser(readFileSync(file, {
|
|
80
|
+
encoding: "utf8"
|
|
81
|
+
}), {
|
|
82
|
+
autoSortReleases: !values["no-sort-releases"]
|
|
83
|
+
});
|
|
84
|
+
changelog.format = values.format;
|
|
85
|
+
changelog.bulletStyle = values["bullet-style"];
|
|
86
|
+
if (values["no-v-prefix"]) {
|
|
87
|
+
changelog.tagNameBuilder = (release)=>String(release.version);
|
|
88
|
+
}
|
|
89
|
+
if (values["latest-release"]) {
|
|
90
|
+
const release = changelog.releases.find((release)=>release.date && release.version);
|
|
91
|
+
if (release) {
|
|
92
|
+
console.log(release.version?.toString());
|
|
93
|
+
}
|
|
94
|
+
exit(0);
|
|
95
|
+
}
|
|
96
|
+
if (values["latest-release-full"]) {
|
|
97
|
+
const release = changelog.releases.find((release)=>release.date && release.version);
|
|
98
|
+
if (release) {
|
|
99
|
+
console.log(release.toString());
|
|
100
|
+
}
|
|
101
|
+
exit(0);
|
|
102
|
+
}
|
|
103
|
+
if (values.release) {
|
|
104
|
+
const release = changelog.releases.find((release)=>{
|
|
105
|
+
if (release.date) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
if (typeof values.release === "string") {
|
|
109
|
+
return !release.version || values.release === release.version.toString();
|
|
110
|
+
}
|
|
111
|
+
return !!release.version;
|
|
112
|
+
});
|
|
113
|
+
if (release) {
|
|
114
|
+
release.date = new Date();
|
|
115
|
+
if (typeof values.release === "string") {
|
|
116
|
+
release.setVersion(values.release);
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
console.error("Not found any valid unreleased version");
|
|
120
|
+
exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
if (values.combine) {
|
|
124
|
+
const combinedReleases = changelog.releases.reduce((acc, release)=>{
|
|
125
|
+
if (release.version) {
|
|
126
|
+
if (acc[release.version]) {
|
|
127
|
+
acc[release.version].combineChanges(release.changes);
|
|
128
|
+
} else {
|
|
129
|
+
acc[release.version] = release;
|
|
166
130
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
131
|
+
}
|
|
132
|
+
return acc;
|
|
133
|
+
}, {});
|
|
134
|
+
changelog.releases = Object.values(combinedReleases);
|
|
135
|
+
}
|
|
136
|
+
if (values.create) {
|
|
137
|
+
let version = values.create || undefined;
|
|
138
|
+
if (version === "major" || version === "minor" || version === "patch") {
|
|
139
|
+
const latestRelease = changelog.releases.find((release)=>release.parsedVersion);
|
|
140
|
+
if (!latestRelease) {
|
|
141
|
+
console.error("No releases found to bump version from.");
|
|
173
142
|
exit(1);
|
|
174
|
-
|
|
143
|
+
}
|
|
144
|
+
let { major, minor, patch } = latestRelease.parsedVersion;
|
|
145
|
+
if (version === "major") {
|
|
146
|
+
major += 1;
|
|
147
|
+
minor = 0;
|
|
148
|
+
patch = 0;
|
|
149
|
+
} else if (version === "minor") {
|
|
150
|
+
minor += 1;
|
|
151
|
+
patch = 0;
|
|
152
|
+
} else if (version === "patch") {
|
|
153
|
+
patch += 1;
|
|
154
|
+
}
|
|
155
|
+
version = `${major}.${minor}.${patch}`;
|
|
156
|
+
}
|
|
157
|
+
const release = changelog.releases.find((release)=>release.version === version);
|
|
158
|
+
if (release) {
|
|
159
|
+
console.warn("Release already exists.");
|
|
160
|
+
} else {
|
|
161
|
+
changelog.addRelease(new Release(version));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
save(file, changelog);
|
|
165
|
+
} catch (err) {
|
|
166
|
+
console.error(red(err.message));
|
|
167
|
+
if (!values.quiet) {
|
|
168
|
+
exit(1);
|
|
169
|
+
}
|
|
175
170
|
}
|
|
176
171
|
function save(file, changelog, isNew = false) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
172
|
+
changelog.url = values.url || changelog.url || getRemoteUrl(values.https);
|
|
173
|
+
if (!changelog.url) {
|
|
174
|
+
console.error(red('Please, set the repository url with --url="https://github.com/username/repository"'));
|
|
175
|
+
changelog.url = "https://example.com";
|
|
176
|
+
}
|
|
177
|
+
if (changelog.url) {
|
|
178
|
+
const settings = getSettingsForURL(changelog.url);
|
|
179
|
+
if (settings) {
|
|
180
|
+
changelog.head = settings.head;
|
|
181
|
+
changelog.tagLinkBuilder = settings.tagLink;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
if (values.head) {
|
|
185
|
+
changelog.head = values.head;
|
|
186
|
+
}
|
|
187
|
+
writeFileSync(file, changelog.toString());
|
|
188
|
+
if (isNew) {
|
|
189
|
+
console.log(green("Generated new file"), file);
|
|
190
|
+
} else {
|
|
191
|
+
console.log(green("Updated file"), file);
|
|
192
|
+
}
|
|
199
193
|
}
|
|
200
194
|
function red(message) {
|
|
201
|
-
|
|
195
|
+
return "\u001b[" + 31 + "m" + message + "\u001b[" + 39 + "m";
|
|
202
196
|
}
|
|
203
197
|
function green(message) {
|
|
204
|
-
|
|
198
|
+
return "\u001b[" + 32 + "m" + message + "\u001b[" + 39 + "m";
|
|
205
199
|
}
|
|
206
200
|
function normalizeUrl(url, https) {
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
201
|
+
// remove .git suffix
|
|
202
|
+
url = url.replace(/\.git$/, "");
|
|
203
|
+
// normalize git@host urls
|
|
204
|
+
if (url.startsWith("git@")) {
|
|
205
|
+
url = url.replace(/^git@([^:]+):(.*)$/, (https ? "https" : "http") + "://$1/$2");
|
|
206
|
+
}
|
|
207
|
+
// remove trailing slashes
|
|
208
|
+
url = url.replace(/\/+$/, "");
|
|
209
|
+
return new URL(url);
|
|
216
210
|
}
|
|
217
211
|
function getRemoteUrl(https = true) {
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
catch (err) {
|
|
229
|
-
console.error(red(err.message));
|
|
230
|
-
// Ignore
|
|
212
|
+
try {
|
|
213
|
+
const file = join(cwd(), ".git", "config");
|
|
214
|
+
const content = readFileSync(file, {
|
|
215
|
+
encoding: "utf8"
|
|
216
|
+
});
|
|
217
|
+
const data = parseIni(content);
|
|
218
|
+
const origin = data['remote "origin"'];
|
|
219
|
+
if (!origin?.url) {
|
|
220
|
+
return;
|
|
231
221
|
}
|
|
222
|
+
return normalizeUrl(origin.url, https).href;
|
|
223
|
+
} catch (err) {
|
|
224
|
+
console.error(red(err.message));
|
|
225
|
+
// Ignore
|
|
226
|
+
}
|
|
232
227
|
}
|
|
233
228
|
function showHelp() {
|
|
234
|
-
|
|
229
|
+
console.log(`keep-a-changelog
|
|
235
230
|
|
|
236
231
|
Usage: keep-a-changelog [options]
|
|
237
232
|
|
|
@@ -256,3 +251,4 @@ Options:
|
|
|
256
251
|
--help, -h Show this help message
|
|
257
252
|
`);
|
|
258
253
|
}
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvb3NjYXJvdGVyby93d3cva2VlcC1hLWNoYW5nZWxvZy9iaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBqb2luIH0gZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0IHsgcGFyc2VBcmdzIH0gZnJvbSBcIm5vZGU6dXRpbFwiO1xuaW1wb3J0IHsgY3dkLCBleGl0IH0gZnJvbSBcIm5vZGU6cHJvY2Vzc1wiO1xuaW1wb3J0IHsgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlSW5pIH0gZnJvbSBcImluaVwiO1xuaW1wb3J0IHsgQ2hhbmdlbG9nLCBwYXJzZXIsIFJlbGVhc2UgfSBmcm9tIFwiLi9tb2QuanNcIjtcbmltcG9ydCBnZXRTZXR0aW5nc0ZvclVSTCBmcm9tIFwiLi9zcmMvc2V0dGluZ3MuanNcIjtcblxuY29uc3QgeyB2YWx1ZXMgfSA9IHBhcnNlQXJncyh7XG4gIG9wdGlvbnM6IHtcbiAgICBoZWxwOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgIHNob3J0OiBcImhcIixcbiAgICB9LFxuICAgIGZpbGU6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZWZhdWx0OiBcIkNIQU5HRUxPRy5tZFwiLFxuICAgIH0sXG4gICAgZm9ybWF0OiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgZGVmYXVsdDogXCJjb21wYWN0XCIsXG4gICAgfSxcbiAgICByZWxlYXNlOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICB9LFxuICAgIGluaXQ6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIH0sXG4gICAgY3JlYXRlOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgdXJsOiB7XG4gICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIH0sXG4gICAgaHR0cHM6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICB9LFxuICAgIHF1aWV0OiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICB9LFxuICAgIGhlYWQ6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICBjb21iaW5lOiB7XG4gICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICB9LFxuICAgIFwiYnVsbGV0LXN0eWxlXCI6IHtcbiAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICBkZWZhdWx0OiBcIi1cIixcbiAgICB9LFxuICAgIFwibGF0ZXN0LXJlbGVhc2VcIjoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgfSxcbiAgICBcImxhdGVzdC1yZWxlYXNlLWZ1bGxcIjoge1xuICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgfSxcbiAgICBcIm5vLXYtcHJlZml4XCI6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIH0sXG4gICAgXCJuby1zb3J0LXJlbGVhc2VzXCI6IHtcbiAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIH0sXG4gIH0sXG59KTtcblxuY29uc3QgZmlsZSA9IGpvaW4oY3dkKCksIHZhbHVlcy5maWxlKTtcblxudHJ5IHtcbiAgaWYgKHZhbHVlcy5oZWxwKSB7XG4gICAgc2hvd0hlbHAoKTtcbiAgICBleGl0KDApO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5pbml0KSB7XG4gICAgY29uc3QgY2hhbmdlbG9nID0gbmV3IENoYW5nZWxvZyhcIkNoYW5nZWxvZ1wiKS5hZGRSZWxlYXNlKFxuICAgICAgbmV3IFJlbGVhc2UoXCIwLjEuMFwiLCBuZXcgRGF0ZSgpLCBcIkZpcnN0IHZlcnNpb25cIiksXG4gICAgKTtcblxuICAgIGNoYW5nZWxvZy5mb3JtYXQgPSB2YWx1ZXMuZm9ybWF0IGFzIFwiY29tcGFjdFwiIHwgXCJtYXJrZG93bmxpbnRcIjtcbiAgICBjaGFuZ2Vsb2cuYnVsbGV0U3R5bGUgPSB2YWx1ZXNbXCJidWxsZXQtc3R5bGVcIl0gYXMgXCItXCIgfCBcIipcIiB8IFwiK1wiO1xuXG4gICAgc2F2ZShmaWxlLCBjaGFuZ2Vsb2csIHRydWUpO1xuICAgIGV4aXQoMCk7XG4gIH1cblxuICBjb25zdCBjaGFuZ2Vsb2cgPSBwYXJzZXIocmVhZEZpbGVTeW5jKGZpbGUsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pLCB7XG4gICAgYXV0b1NvcnRSZWxlYXNlczogIXZhbHVlc1tcIm5vLXNvcnQtcmVsZWFzZXNcIl0sXG4gIH0pO1xuICBjaGFuZ2Vsb2cuZm9ybWF0ID0gdmFsdWVzLmZvcm1hdCBhcyBcImNvbXBhY3RcIiB8IFwibWFya2Rvd25saW50XCI7XG4gIGNoYW5nZWxvZy5idWxsZXRTdHlsZSA9IHZhbHVlc1tcImJ1bGxldC1zdHlsZVwiXSBhcyBcIi1cIiB8IFwiKlwiIHwgXCIrXCI7XG4gIGlmICh2YWx1ZXNbXCJuby12LXByZWZpeFwiXSkge1xuICAgIGNoYW5nZWxvZy50YWdOYW1lQnVpbGRlciA9IChyZWxlYXNlKSA9PiBTdHJpbmcocmVsZWFzZS52ZXJzaW9uKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXNbXCJsYXRlc3QtcmVsZWFzZVwiXSkge1xuICAgIGNvbnN0IHJlbGVhc2UgPSBjaGFuZ2Vsb2cucmVsZWFzZXMuZmluZCgocmVsZWFzZSkgPT5cbiAgICAgIHJlbGVhc2UuZGF0ZSAmJiByZWxlYXNlLnZlcnNpb25cbiAgICApO1xuXG4gICAgaWYgKHJlbGVhc2UpIHtcbiAgICAgIGNvbnNvbGUubG9nKHJlbGVhc2UudmVyc2lvbj8udG9TdHJpbmcoKSk7XG4gICAgfVxuXG4gICAgZXhpdCgwKTtcbiAgfVxuXG4gIGlmICh2YWx1ZXNbXCJsYXRlc3QtcmVsZWFzZS1mdWxsXCJdKSB7XG4gICAgY29uc3QgcmVsZWFzZSA9IGNoYW5nZWxvZy5yZWxlYXNlcy5maW5kKChyZWxlYXNlKSA9PlxuICAgICAgcmVsZWFzZS5kYXRlICYmIHJlbGVhc2UudmVyc2lvblxuICAgICk7XG5cbiAgICBpZiAocmVsZWFzZSkge1xuICAgICAgY29uc29sZS5sb2cocmVsZWFzZS50b1N0cmluZygpKTtcbiAgICB9XG5cbiAgICBleGl0KDApO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5yZWxlYXNlKSB7XG4gICAgY29uc3QgcmVsZWFzZSA9IGNoYW5nZWxvZy5yZWxlYXNlcy5maW5kKChyZWxlYXNlKSA9PiB7XG4gICAgICBpZiAocmVsZWFzZS5kYXRlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZXMucmVsZWFzZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gIXJlbGVhc2UudmVyc2lvbiB8fFxuICAgICAgICAgIHZhbHVlcy5yZWxlYXNlID09PSByZWxlYXNlLnZlcnNpb24udG9TdHJpbmcoKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuICEhcmVsZWFzZS52ZXJzaW9uO1xuICAgIH0pO1xuXG4gICAgaWYgKHJlbGVhc2UpIHtcbiAgICAgIHJlbGVhc2UuZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICBpZiAodHlwZW9mIHZhbHVlcy5yZWxlYXNlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJlbGVhc2Uuc2V0VmVyc2lvbih2YWx1ZXMucmVsZWFzZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJOb3QgZm91bmQgYW55IHZhbGlkIHVucmVsZWFzZWQgdmVyc2lvblwiKTtcbiAgICAgIGV4aXQoMSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHZhbHVlcy5jb21iaW5lKSB7XG4gICAgY29uc3QgY29tYmluZWRSZWxlYXNlcyA9IGNoYW5nZWxvZy5yZWxlYXNlcy5yZWR1Y2UoKGFjYywgcmVsZWFzZSkgPT4ge1xuICAgICAgaWYgKHJlbGVhc2UudmVyc2lvbikge1xuICAgICAgICBpZiAoYWNjW3JlbGVhc2UudmVyc2lvbl0pIHtcbiAgICAgICAgICBhY2NbcmVsZWFzZS52ZXJzaW9uXS5jb21iaW5lQ2hhbmdlcyhyZWxlYXNlLmNoYW5nZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjY1tyZWxlYXNlLnZlcnNpb25dID0gcmVsZWFzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB0eXBlb2YgY2hhbmdlbG9nLnJlbGVhc2VzWzBdPik7XG5cbiAgICBjaGFuZ2Vsb2cucmVsZWFzZXMgPSBPYmplY3QudmFsdWVzKGNvbWJpbmVkUmVsZWFzZXMpO1xuICB9XG5cbiAgaWYgKHZhbHVlcy5jcmVhdGUpIHtcbiAgICBsZXQgdmVyc2lvbiA9IHZhbHVlcy5jcmVhdGUgfHwgdW5kZWZpbmVkO1xuXG4gICAgaWYgKHZlcnNpb24gPT09IFwibWFqb3JcIiB8fCB2ZXJzaW9uID09PSBcIm1pbm9yXCIgfHwgdmVyc2lvbiA9PT0gXCJwYXRjaFwiKSB7XG4gICAgICBjb25zdCBsYXRlc3RSZWxlYXNlID0gY2hhbmdlbG9nLnJlbGVhc2VzLmZpbmQoKHJlbGVhc2UpID0+XG4gICAgICAgIHJlbGVhc2UucGFyc2VkVmVyc2lvblxuICAgICAgKTtcblxuICAgICAgaWYgKCFsYXRlc3RSZWxlYXNlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJObyByZWxlYXNlcyBmb3VuZCB0byBidW1wIHZlcnNpb24gZnJvbS5cIik7XG4gICAgICAgIGV4aXQoMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCB7IG1ham9yLCBtaW5vciwgcGF0Y2ggfSA9IGxhdGVzdFJlbGVhc2UucGFyc2VkVmVyc2lvbiE7XG5cbiAgICAgIGlmICh2ZXJzaW9uID09PSBcIm1ham9yXCIpIHtcbiAgICAgICAgbWFqb3IgKz0gMTtcbiAgICAgICAgbWlub3IgPSAwO1xuICAgICAgICBwYXRjaCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHZlcnNpb24gPT09IFwibWlub3JcIikge1xuICAgICAgICBtaW5vciArPSAxO1xuICAgICAgICBwYXRjaCA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHZlcnNpb24gPT09IFwicGF0Y2hcIikge1xuICAgICAgICBwYXRjaCArPSAxO1xuICAgICAgfVxuXG4gICAgICB2ZXJzaW9uID0gYCR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9YDtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlID0gY2hhbmdlbG9nLnJlbGVhc2VzLmZpbmQoKHJlbGVhc2UpID0+XG4gICAgICByZWxlYXNlLnZlcnNpb24gPT09IHZlcnNpb25cbiAgICApO1xuXG4gICAgaWYgKHJlbGVhc2UpIHtcbiAgICAgIGNvbnNvbGUud2FybihcIlJlbGVhc2UgYWxyZWFkeSBleGlzdHMuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjaGFuZ2Vsb2cuYWRkUmVsZWFzZShuZXcgUmVsZWFzZSh2ZXJzaW9uKSk7XG4gICAgfVxuICB9XG5cbiAgc2F2ZShmaWxlLCBjaGFuZ2Vsb2cpO1xufSBjYXRjaCAoZXJyKSB7XG4gIGNvbnNvbGUuZXJyb3IocmVkKChlcnIgYXMgRXJyb3IpLm1lc3NhZ2UpKTtcblxuICBpZiAoIXZhbHVlcy5xdWlldCkge1xuICAgIGV4aXQoMSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2F2ZShmaWxlOiBzdHJpbmcsIGNoYW5nZWxvZzogQ2hhbmdlbG9nLCBpc05ldyA9IGZhbHNlKSB7XG4gIGNoYW5nZWxvZy51cmwgPSB2YWx1ZXMudXJsIHx8IGNoYW5nZWxvZy51cmwgfHwgZ2V0UmVtb3RlVXJsKHZhbHVlcy5odHRwcyk7XG5cbiAgaWYgKCFjaGFuZ2Vsb2cudXJsKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgIHJlZChcbiAgICAgICAgJ1BsZWFzZSwgc2V0IHRoZSByZXBvc2l0b3J5IHVybCB3aXRoIC0tdXJsPVwiaHR0cHM6Ly9naXRodWIuY29tL3VzZXJuYW1lL3JlcG9zaXRvcnlcIicsXG4gICAgICApLFxuICAgICk7XG4gICAgY2hhbmdlbG9nLnVybCA9IFwiaHR0cHM6Ly9leGFtcGxlLmNvbVwiO1xuICB9XG5cbiAgaWYgKGNoYW5nZWxvZy51cmwpIHtcbiAgICBjb25zdCBzZXR0aW5ncyA9IGdldFNldHRpbmdzRm9yVVJMKGNoYW5nZWxvZy51cmwpO1xuXG4gICAgaWYgKHNldHRpbmdzKSB7XG4gICAgICBjaGFuZ2Vsb2cuaGVhZCA9IHNldHRpbmdzLmhlYWQ7XG4gICAgICBjaGFuZ2Vsb2cudGFnTGlua0J1aWxkZXIgPSBzZXR0aW5ncy50YWdMaW5rO1xuICAgIH1cbiAgfVxuXG4gIGlmICh2YWx1ZXMuaGVhZCkge1xuICAgIGNoYW5nZWxvZy5oZWFkID0gdmFsdWVzLmhlYWQ7XG4gIH1cblxuICB3cml0ZUZpbGVTeW5jKGZpbGUsIGNoYW5nZWxvZy50b1N0cmluZygpKTtcblxuICBpZiAoaXNOZXcpIHtcbiAgICBjb25zb2xlLmxvZyhncmVlbihcIkdlbmVyYXRlZCBuZXcgZmlsZVwiKSwgZmlsZSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc29sZS5sb2coZ3JlZW4oXCJVcGRhdGVkIGZpbGVcIiksIGZpbGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlZChtZXNzYWdlOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFwiXFx1MDAxYltcIiArIDMxICsgXCJtXCIgKyBtZXNzYWdlICsgXCJcXHUwMDFiW1wiICsgMzkgKyBcIm1cIjtcbn1cblxuZnVuY3Rpb24gZ3JlZW4obWVzc2FnZTogc3RyaW5nKSB7XG4gIHJldHVybiBcIlxcdTAwMWJbXCIgKyAzMiArIFwibVwiICsgbWVzc2FnZSArIFwiXFx1MDAxYltcIiArIDM5ICsgXCJtXCI7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVVybCh1cmw6IHN0cmluZywgaHR0cHM6IGJvb2xlYW4pIHtcbiAgLy8gcmVtb3ZlIC5naXQgc3VmZml4XG4gIHVybCA9IHVybC5yZXBsYWNlKC9cXC5naXQkLywgXCJcIik7XG5cbiAgLy8gbm9ybWFsaXplIGdpdEBob3N0IHVybHNcbiAgaWYgKHVybC5zdGFydHNXaXRoKFwiZ2l0QFwiKSkge1xuICAgIHVybCA9IHVybC5yZXBsYWNlKFxuICAgICAgL15naXRAKFteOl0rKTooLiopJC8sXG4gICAgICAoaHR0cHMgPyBcImh0dHBzXCIgOiBcImh0dHBcIikgKyBcIjovLyQxLyQyXCIsXG4gICAgKTtcbiAgfVxuXG4gIC8vIHJlbW92ZSB0cmFpbGluZyBzbGFzaGVzXG4gIHVybCA9IHVybC5yZXBsYWNlKC9cXC8rJC8sIFwiXCIpO1xuICByZXR1cm4gbmV3IFVSTCh1cmwpO1xufVxuXG5mdW5jdGlvbiBnZXRSZW1vdGVVcmwoaHR0cHMgPSB0cnVlKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZmlsZSA9IGpvaW4oY3dkKCksIFwiLmdpdFwiLCBcImNvbmZpZ1wiKTtcbiAgICBjb25zdCBjb250ZW50ID0gcmVhZEZpbGVTeW5jKGZpbGUsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pO1xuICAgIGNvbnN0IGRhdGEgPSBwYXJzZUluaShjb250ZW50KTtcbiAgICBjb25zdCBvcmlnaW4gPSBkYXRhWydyZW1vdGUgXCJvcmlnaW5cIiddIGFzIHsgdXJsPzogc3RyaW5nIH07XG5cbiAgICBpZiAoIW9yaWdpbj8udXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5vcm1hbGl6ZVVybChvcmlnaW4udXJsLCBodHRwcykuaHJlZjtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihyZWQoKGVyciBhcyBFcnJvcikubWVzc2FnZSkpO1xuICAgIC8vIElnbm9yZVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3dIZWxwKCkge1xuICBjb25zb2xlLmxvZyhga2VlcC1hLWNoYW5nZWxvZ1xuXG5Vc2FnZToga2VlcC1hLWNoYW5nZWxvZyBbb3B0aW9uc11cblxuT3B0aW9uczpcbiAgLS1maWxlLCAtZiAgICAgICAgICAgICAgICBDaGFuZ2Vsb2cgZmlsZSAoZGVmYXVsdDogQ0hBTkdFTE9HLm1kKVxuICAtLWZvcm1hdCAgICAgICAgICAgICAgICAgIE91dHB1dCBmb3JtYXQgKGRlZmF1bHQ6IGNvbXBhY3QpXG4gIC0tYnVsbGV0LXN0eWxlICAgICAgICAgICAgQnVsbGV0IHBvaW50IHN0eWxlIChkZWZhdWx0OiAtKVxuICAtLXVybCAgICAgICAgICAgICAgICAgICAgIFJlcG9zaXRvcnkgVVJMXG5cbiAgLS1pbml0ICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplIGEgbmV3IGNoYW5nZWxvZyBmaWxlXG4gIC0tbGF0ZXN0LXJlbGVhc2UgICAgICAgICAgUHJpbnQgdGhlIGxhdGVzdCByZWxlYXNlIHZlcnNpb25cbiAgLS1sYXRlc3QtcmVsZWFzZS1mdWxsICAgICBQcmludCB0aGUgbGF0ZXN0IHJlbGVhc2VcblxuICAtLXJlbGVhc2UgICAgICAgICAgICAgICAgIFNldCB0aGUgZGF0ZSBvZiB0aGUgc3BlY2lmaWVkIHJlbGVhc2VcbiAgLS1jb21iaW5lICAgICAgICAgICAgICAgICBDb21iaW5lIGNoYW5nZXMgZnJvbSByZWxlYXNlcyB3aXRoIHRoZSBzYW1lIHZlcnNpb25cbiAgLS1jcmVhdGUgICAgICAgICAgICAgICAgICBDcmVhdGUgYSBuZXcgcmVsZWFzZS4gT3B0aW9uYWxseSBhY2NlcHRzIGEgdmVyc2lvbiBudW1iZXIgb3IgJ3BhdGNoJywgJ21pbm9yJyBvciAnbWFqb3InXG5cbiAgLS1uby12LXByZWZpeCAgICAgICAgICAgICBEbyBub3QgYWRkIGEgXCJ2XCIgcHJlZml4IHRvIHRoZSB2ZXJzaW9uXG4gIC0tbm8tc29ydC1yZWxlYXNlcyAgICAgICAgRG8gbm90IHNvcnQgcmVsZWFzZXNcbiAgLS1oZWFkICAgICAgICAgICAgICAgICAgICBTZXQgdGhlIEhFQUQgbGlua1xuICAtLXF1aWV0ICAgICAgICAgICAgICAgICAgIERvIG5vdCBwcmludCBlcnJvcnNcbiAgLS1oZWxwLCAtaCAgICAgICAgICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdlXG5gKTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxTQUFTLElBQUksUUFBUSxZQUFZ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
|
package/mod.d.ts
ADDED
package/mod.js
CHANGED
|
@@ -3,3 +3,4 @@ import Change from "./src/Change.js";
|
|
|
3
3
|
import Changelog from "./src/Changelog.js";
|
|
4
4
|
import Release from "./src/Release.js";
|
|
5
5
|
export { Change, Changelog, parser, Release };
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZpbGU6Ly8vVXNlcnMvb3NjYXJvdGVyby93d3cva2VlcC1hLWNoYW5nZWxvZy9tb2QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhcnNlciBmcm9tIFwiLi9zcmMvcGFyc2VyLmpzXCI7XG5pbXBvcnQgQ2hhbmdlIGZyb20gXCIuL3NyYy9DaGFuZ2UuanNcIjtcbmltcG9ydCBDaGFuZ2Vsb2cgZnJvbSBcIi4vc3JjL0NoYW5nZWxvZy5qc1wiO1xuaW1wb3J0IFJlbGVhc2UgZnJvbSBcIi4vc3JjL1JlbGVhc2UuanNcIjtcblxuZXhwb3J0IHsgQ2hhbmdlLCBDaGFuZ2Vsb2csIHBhcnNlciwgUmVsZWFzZSB9O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxrQkFBa0I7QUFDckMsT0FBTyxZQUFZLGtCQUFrQjtBQUNyQyxPQUFPLGVBQWUscUJBQXFCO0FBQzNDLE9BQU8sYUFBYSxtQkFBbUI7QUFFdkMsU0FBUyxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxPQUFPLEdBQUcifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "keep-a-changelog",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.5",
|
|
4
4
|
"description": "Parse and generate changelogs following the [keepachangelog](https://keepachangelog.com/) format.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -21,55 +21,57 @@
|
|
|
21
21
|
"bin": {
|
|
22
22
|
"changelog": "./bin.js"
|
|
23
23
|
},
|
|
24
|
+
"main": "./mod.js",
|
|
25
|
+
"types": "./mod.d.ts",
|
|
24
26
|
"dependencies": {
|
|
25
|
-
"ini": "6.0.0",
|
|
26
|
-
"semver": "7.7.4"
|
|
27
|
+
"ini": "^6.0.0",
|
|
28
|
+
"semver": "^7.7.4"
|
|
27
29
|
},
|
|
28
30
|
"exports": {
|
|
29
31
|
".": {
|
|
30
|
-
"types": "./
|
|
32
|
+
"types": "./mod.d.ts",
|
|
31
33
|
"import": "./mod.js",
|
|
32
34
|
"default": "./mod.js"
|
|
33
35
|
},
|
|
34
|
-
"./
|
|
35
|
-
"types": "./
|
|
36
|
-
"import": "./bin.js",
|
|
37
|
-
"default": "./bin.js"
|
|
38
|
-
},
|
|
39
|
-
"./mod.js": {
|
|
40
|
-
"types": "./types/mod.d.ts",
|
|
36
|
+
"./mod.ts": {
|
|
37
|
+
"types": "./mod.d.ts",
|
|
41
38
|
"import": "./mod.js",
|
|
42
39
|
"default": "./mod.js"
|
|
43
40
|
},
|
|
44
|
-
"./
|
|
45
|
-
"types": "./
|
|
41
|
+
"./bin.ts": {
|
|
42
|
+
"types": "./bin.d.ts",
|
|
43
|
+
"import": "./bin.js",
|
|
44
|
+
"default": "./bin.js"
|
|
45
|
+
},
|
|
46
|
+
"./src/Change.ts": {
|
|
47
|
+
"types": "./src/Change.d.ts",
|
|
46
48
|
"import": "./src/Change.js",
|
|
47
49
|
"default": "./src/Change.js"
|
|
48
50
|
},
|
|
49
|
-
"./src/
|
|
50
|
-
"types": "./
|
|
51
|
+
"./src/settings.ts": {
|
|
52
|
+
"types": "./src/settings.d.ts",
|
|
53
|
+
"import": "./src/settings.js",
|
|
54
|
+
"default": "./src/settings.js"
|
|
55
|
+
},
|
|
56
|
+
"./src/Changelog.ts": {
|
|
57
|
+
"types": "./src/Changelog.d.ts",
|
|
51
58
|
"import": "./src/Changelog.js",
|
|
52
59
|
"default": "./src/Changelog.js"
|
|
53
60
|
},
|
|
54
|
-
"./src/
|
|
55
|
-
"types": "./
|
|
56
|
-
"import": "./src/deps.js",
|
|
57
|
-
"default": "./src/deps.js"
|
|
58
|
-
},
|
|
59
|
-
"./src/parser.js": {
|
|
60
|
-
"types": "./types/src/parser.d.ts",
|
|
61
|
+
"./src/parser.ts": {
|
|
62
|
+
"types": "./src/parser.d.ts",
|
|
61
63
|
"import": "./src/parser.js",
|
|
62
64
|
"default": "./src/parser.js"
|
|
63
65
|
},
|
|
64
|
-
"./src/Release.
|
|
65
|
-
"types": "./
|
|
66
|
+
"./src/Release.ts": {
|
|
67
|
+
"types": "./src/Release.d.ts",
|
|
66
68
|
"import": "./src/Release.js",
|
|
67
69
|
"default": "./src/Release.js"
|
|
68
70
|
},
|
|
69
|
-
"./src/
|
|
70
|
-
"types": "./
|
|
71
|
-
"import": "./src/
|
|
72
|
-
"default": "./src/
|
|
71
|
+
"./src/deps.ts": {
|
|
72
|
+
"types": "./src/deps.d.ts",
|
|
73
|
+
"import": "./src/deps.js",
|
|
74
|
+
"default": "./src/deps.js"
|
|
73
75
|
}
|
|
74
76
|
}
|
|
75
77
|
}
|
package/src/Change.d.ts
ADDED