50 lines
1.5 KiB
JavaScript
50 lines
1.5 KiB
JavaScript
import PackageJson from '@npmcli/package-json'
|
|
import assert from 'node:assert'
|
|
import semver from 'semver'
|
|
|
|
let res = await fetch('https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery', {
|
|
method: 'POST',
|
|
headers: {
|
|
accept: 'application/json;api-version=7.2-preview.1;excludeUrls=true',
|
|
'content-type': 'application/json',
|
|
},
|
|
body: JSON.stringify({
|
|
assetTypes: null,
|
|
flags: 2151,
|
|
filters: [
|
|
{
|
|
criteria: [{ filterType: 7, value: 'bradlc.vscode-tailwindcss' }],
|
|
direction: 2,
|
|
pageSize: 100,
|
|
pageNumber: 1,
|
|
sortBy: 0,
|
|
sortOrder: 0,
|
|
pagingToken: null,
|
|
},
|
|
],
|
|
}),
|
|
})
|
|
|
|
let { results } = await res.json()
|
|
|
|
/** @type {string[]} */
|
|
let versions = results[0].extensions[0].versions.map(({ version }) => version)
|
|
|
|
// Determine the latest version of the extension
|
|
let latest = versions
|
|
.map((v) => semver.parse(v, { includePrerelease: true, loose: false }))
|
|
.filter((v) => v !== null)
|
|
.filter((v) => v.prerelease.length === 0)
|
|
.sort((a, b) => b.compare(a) || b.compareBuild(a))
|
|
.at(0)
|
|
|
|
// Require the minor version to be odd. This is done because
|
|
// the VSCode Marketplace suggests using odd numbers for
|
|
// pre-release builds and even ones for release builds
|
|
assert(latest && latest.minor % 2 === 1)
|
|
|
|
// Bump the patch version in `package.json`
|
|
let nextVersion = latest.inc('patch').format()
|
|
let pkg = await PackageJson.load('packages/vscode-tailwindcss/package.json')
|
|
await pkg.update({ version: nextVersion }).save()
|