blun-king-cli 9.1.588 → 9.1.589
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/CHANGELOG.md +1 -1
- package/bin/update-notice.js +37 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/bin/update-notice.js
CHANGED
|
@@ -47,7 +47,7 @@ const SEMVER_PATTERN = new RegExp(
|
|
|
47
47
|
+ `(?:-(${SEMVER_IDENTIFIER}(?:\\.${SEMVER_IDENTIFIER})*))?`
|
|
48
48
|
+ '(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$',
|
|
49
49
|
);
|
|
50
|
-
const
|
|
50
|
+
const LEGACY_MANIFEST_KEYS = Object.freeze([
|
|
51
51
|
'install',
|
|
52
52
|
'latest',
|
|
53
53
|
'minSupported',
|
|
@@ -55,6 +55,29 @@ const MANIFEST_KEYS = Object.freeze([
|
|
|
55
55
|
'notesUrl',
|
|
56
56
|
'releasedAt',
|
|
57
57
|
]);
|
|
58
|
+
const RELEASE_NOTES_MANIFEST_KEYS = Object.freeze([
|
|
59
|
+
'install', 'latest', 'minSupported', 'name', 'notesUrl', 'releaseNotes', 'releasedAt',
|
|
60
|
+
]);
|
|
61
|
+
const MANIFEST_KEYS = Object.freeze([
|
|
62
|
+
'install', 'integrity', 'latest', 'minSupported', 'name', 'notesUrl', 'releaseNotes', 'releasedAt',
|
|
63
|
+
]);
|
|
64
|
+
|
|
65
|
+
function parseReleaseNotes(value) {
|
|
66
|
+
if (!Array.isArray(value) || value.length > 8) return undefined;
|
|
67
|
+
const notes = [];
|
|
68
|
+
for (const note of value) {
|
|
69
|
+
if (!isBoundedText(note, 240)) return undefined;
|
|
70
|
+
notes.push(note);
|
|
71
|
+
}
|
|
72
|
+
return Object.freeze(notes);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function validIntegrity(value) {
|
|
76
|
+
if (typeof value !== 'string') return false;
|
|
77
|
+
const match = /^sha512-([A-Za-z0-9+/]+={0,2})$/u.exec(value);
|
|
78
|
+
if (!match) return false;
|
|
79
|
+
return Buffer.from(match[1], 'base64').length === 64;
|
|
80
|
+
}
|
|
58
81
|
const ENDPOINT_LIMITS = new Map([
|
|
59
82
|
[REGISTRY_URL, 1024 * 1024],
|
|
60
83
|
[FALLBACK_MANIFEST_URL, 64 * 1024],
|
|
@@ -195,8 +218,13 @@ function isIsoTimestamp(value) {
|
|
|
195
218
|
}
|
|
196
219
|
|
|
197
220
|
function parseFallbackManifest(value) {
|
|
198
|
-
const record = exactDataRecord(value, MANIFEST_KEYS)
|
|
221
|
+
const record = exactDataRecord(value, MANIFEST_KEYS)
|
|
222
|
+
|| exactDataRecord(value, RELEASE_NOTES_MANIFEST_KEYS)
|
|
223
|
+
|| exactDataRecord(value, LEGACY_MANIFEST_KEYS);
|
|
199
224
|
const notesUrl = record ? canonicalOfficialNotesUrl(record.notesUrl) : undefined;
|
|
225
|
+
const releaseNotes = record && Object.hasOwn(record, 'releaseNotes')
|
|
226
|
+
? parseReleaseNotes(record.releaseNotes)
|
|
227
|
+
: undefined;
|
|
200
228
|
if (!record
|
|
201
229
|
|| record.name !== PACKAGE_NAME
|
|
202
230
|
|| !parseSemver(record.latest)
|
|
@@ -204,6 +232,8 @@ function parseFallbackManifest(value) {
|
|
|
204
232
|
|| compareSemver(record.minSupported, record.latest) === 1
|
|
205
233
|
|| !isIsoTimestamp(record.releasedAt)
|
|
206
234
|
|| !notesUrl
|
|
235
|
+
|| (Object.hasOwn(record, 'integrity') && !validIntegrity(record.integrity))
|
|
236
|
+
|| (Object.hasOwn(record, 'releaseNotes') && releaseNotes === undefined)
|
|
207
237
|
|| !isBoundedText(record.install, 256)) {
|
|
208
238
|
return undefined;
|
|
209
239
|
}
|
|
@@ -213,6 +243,8 @@ function parseFallbackManifest(value) {
|
|
|
213
243
|
minSupported: record.minSupported,
|
|
214
244
|
releasedAt: record.releasedAt,
|
|
215
245
|
notesUrl,
|
|
246
|
+
...(Object.hasOwn(record, 'integrity') ? { integrity: record.integrity } : {}),
|
|
247
|
+
...(releaseNotes === undefined ? {} : { releaseNotes }),
|
|
216
248
|
install: record.install,
|
|
217
249
|
});
|
|
218
250
|
}
|
|
@@ -245,7 +277,9 @@ function resolveEffectiveRelease(currentVersion, registryTags, fallbackManifest)
|
|
|
245
277
|
if (compareSemver(version, currentVersion) <= 0) return undefined;
|
|
246
278
|
|
|
247
279
|
if (validFallback && compareSemver(validFallback.latest, version) === 0) {
|
|
248
|
-
return { channel: 'stable', version, notesUrl: validFallback.notesUrl
|
|
280
|
+
return { channel: 'stable', version, notesUrl: validFallback.notesUrl,
|
|
281
|
+
...(validFallback.releaseNotes === undefined ? {} : { releaseNotes: validFallback.releaseNotes }),
|
|
282
|
+
};
|
|
249
283
|
}
|
|
250
284
|
return { channel: 'stable', version };
|
|
251
285
|
}
|