mirror of
https://github.com/gradle/wrapper-validation-action
synced 2024-11-23 17:22:01 +00:00
Hardcode known wrapper checksums to avoid network requests
This commit is contained in:
parent
2572bdd97b
commit
bb2ea9bd17
8 changed files with 1208 additions and 11 deletions
92
.github/workflows/update-checksums-file.js
vendored
Normal file
92
.github/workflows/update-checksums-file.js
vendored
Normal file
|
@ -0,0 +1,92 @@
|
|||
/*
|
||||
* Updates the `wrapper-checksums.json` file
|
||||
*
|
||||
* This is intended to be executed by the GitHub workflow, but can also be run
|
||||
* manually.
|
||||
*/
|
||||
|
||||
// @ts-check
|
||||
|
||||
const httpm = require('typed-rest-client/HttpClient')
|
||||
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
|
||||
/**
|
||||
* @returns {Promise<void>}
|
||||
*/
|
||||
async function main() {
|
||||
const httpc = new httpm.HttpClient(
|
||||
'gradle/wrapper-validation-action/update-checksums-workflow',
|
||||
undefined,
|
||||
{allowRetries: true, maxRetries: 3}
|
||||
)
|
||||
|
||||
/**
|
||||
* @param {string} url
|
||||
* @returns {Promise<string>}
|
||||
*/
|
||||
async function httpGetText(url) {
|
||||
const response = await httpc.get(url)
|
||||
return await response.readBody()
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} ApiVersionEntry
|
||||
* @property {string} version - version name
|
||||
* @property {string=} wrapperChecksumUrl - wrapper checksum URL; not present for old versions
|
||||
* @property {boolean} snapshot - whether this is a snapshot version
|
||||
*/
|
||||
|
||||
/**
|
||||
* @returns {Promise<ApiVersionEntry[]>}
|
||||
*/
|
||||
async function httpGetVersions() {
|
||||
return JSON.parse(
|
||||
await httpGetText('https://services.gradle.org/versions/all')
|
||||
)
|
||||
}
|
||||
|
||||
const versions = (await httpGetVersions())
|
||||
// Only include versions with checksum
|
||||
.filter(e => e.wrapperChecksumUrl !== undefined)
|
||||
// Ignore snapshots; they are changing frequently so no point in including them in checksums file
|
||||
.filter(e => !e.snapshot)
|
||||
console.info(`Got ${versions.length} relevant Gradle versions`)
|
||||
|
||||
// Note: For simplicity don't sort the entries but keep the order from the API; this also has the
|
||||
// advantage that the latest versions come first, so compared to appending versions at the end
|
||||
// this will not cause redundant Git diff due to trailing `,` being forbidden by JSON
|
||||
|
||||
/**
|
||||
* @typedef {Object} FileVersionEntry
|
||||
* @property {string} version
|
||||
* @property {string} checksum
|
||||
*/
|
||||
/** @type {FileVersionEntry[]} */
|
||||
const fileVersions = []
|
||||
for (const entry of versions) {
|
||||
/** @type {string} */
|
||||
// @ts-ignore
|
||||
const checksumUrl = entry.wrapperChecksumUrl
|
||||
const checksum = await httpGetText(checksumUrl)
|
||||
fileVersions.push({version: entry.version, checksum})
|
||||
}
|
||||
|
||||
const jsonPath = path.resolve(
|
||||
__dirname,
|
||||
'..',
|
||||
'..',
|
||||
'src',
|
||||
'wrapper-checksums.json'
|
||||
)
|
||||
console.info(`Writing checksums file to ${jsonPath}`)
|
||||
// Write pretty-printed JSON (and add trailing line break)
|
||||
fs.writeFileSync(jsonPath, JSON.stringify(fileVersions, null, 2) + '\n')
|
||||
}
|
||||
|
||||
main().catch(e => {
|
||||
console.error(e)
|
||||
// Manually set error exit code, otherwise error is logged but script exits successfully
|
||||
process.exitCode = 1
|
||||
})
|
49
.github/workflows/update-checksums-file.yml
vendored
Normal file
49
.github/workflows/update-checksums-file.yml
vendored
Normal file
|
@ -0,0 +1,49 @@
|
|||
name: 'Update Wrapper checksums file'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Run weekly (at arbitrary time)
|
||||
- cron: '24 5 * * 6'
|
||||
# Support running workflow manually
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update-checksums:
|
||||
name: Update checksums
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20.x
|
||||
cache: npm
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
npm install typed-rest-client@1.8.11 --no-save
|
||||
|
||||
- name: Update checksums file
|
||||
run: node ./.github/workflows/update-checksums-file.js
|
||||
|
||||
# If there are no changes, this action will not create a pull request
|
||||
- name: Create or update pull request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
with:
|
||||
branch: wrapper-checksums-update
|
||||
commit-message: Update known wrapper checksums
|
||||
title: Update known wrapper checksums
|
||||
# Note: Unfortunately this action cannot trigger the regular workflows for the PR automatically, see
|
||||
# https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#triggering-further-workflow-runs
|
||||
# Therefore suggest below to close and then reopen the PR
|
||||
body: |
|
||||
Automatically generated pull request to update the known wrapper checksums.
|
||||
|
||||
In case of conflicts, manually run the workflow from the [Actions tab](https://github.com/gradle/wrapper-validation-action/actions/workflows/update-checksums-file.yml), the changes will then be force-pushed onto this pull request branch.
|
||||
Do not manually update the pull request branch; those changes might get overwritten.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> GitHub workflows have not been executed for this pull request yet. Before merging, close and then directly reopen this pull request to trigger the workflows.
|
|
@ -6,7 +6,7 @@ jest.setTimeout(30000)
|
|||
|
||||
test('fetches wrapper jars checksums', async () => {
|
||||
const validChecksums = await checksums.fetchValidChecksums(false)
|
||||
expect(validChecksums.length).toBeGreaterThan(10)
|
||||
expect(validChecksums.size).toBeGreaterThan(10)
|
||||
})
|
||||
|
||||
describe('retry', () => {
|
||||
|
@ -25,7 +25,7 @@ describe('retry', () => {
|
|||
})
|
||||
|
||||
const validChecksums = await checksums.fetchValidChecksums(false)
|
||||
expect(validChecksums.length).toBeGreaterThan(10)
|
||||
expect(validChecksums.size).toBeGreaterThan(10)
|
||||
nock.isDone()
|
||||
})
|
||||
})
|
||||
|
|
|
@ -12,6 +12,30 @@ test('succeeds if all found wrapper jars are valid', async () => {
|
|||
])
|
||||
|
||||
expect(result.isValid()).toBe(true)
|
||||
// Only hardcoded and explicitly allowed checksums should have been used
|
||||
expect(result.fetchedChecksums).toBe(false)
|
||||
|
||||
expect(result.toDisplayString()).toBe(
|
||||
'✓ Found known Gradle Wrapper JAR files:\n' +
|
||||
' e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 __tests__/data/invalid/gradle-wrapper.jar\n' +
|
||||
' e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 __tests__/data/invalid/gradlе-wrapper.jar\n' + // homoglyph
|
||||
' 3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce __tests__/data/valid/gradle-wrapper.jar'
|
||||
)
|
||||
})
|
||||
|
||||
test('succeeds if all found wrapper jars are valid (and checksums are fetched from Gradle API)', async () => {
|
||||
const knownValidChecksums = new Map<string, Set<string>>()
|
||||
const result = await validate.findInvalidWrapperJars(
|
||||
baseDir,
|
||||
1,
|
||||
false,
|
||||
['e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'],
|
||||
knownValidChecksums
|
||||
)
|
||||
|
||||
expect(result.isValid()).toBe(true)
|
||||
// Should have fetched checksums because no known checksums were provided
|
||||
expect(result.fetchedChecksums).toBe(true)
|
||||
|
||||
expect(result.toDisplayString()).toBe(
|
||||
'✓ Found known Gradle Wrapper JAR files:\n' +
|
||||
|
|
|
@ -1,14 +1,40 @@
|
|||
import * as httpm from 'typed-rest-client/HttpClient'
|
||||
|
||||
import fileWrapperChecksums from './wrapper-checksums.json'
|
||||
|
||||
const httpc = new httpm.HttpClient(
|
||||
'gradle/wrapper-validation-action',
|
||||
undefined,
|
||||
{allowRetries: true, maxRetries: 3}
|
||||
)
|
||||
|
||||
function getKnownValidChecksums(): Map<string, Set<string>> {
|
||||
const versionsMap = new Map<string, Set<string>>()
|
||||
for (const entry of fileWrapperChecksums) {
|
||||
const checksum = entry.checksum
|
||||
|
||||
let versionNames = versionsMap.get(checksum)
|
||||
if (versionNames === undefined) {
|
||||
versionNames = new Set()
|
||||
versionsMap.set(checksum, versionNames)
|
||||
}
|
||||
|
||||
versionNames.add(entry.version)
|
||||
}
|
||||
|
||||
return versionsMap
|
||||
}
|
||||
|
||||
/**
|
||||
* Known checksums from previously published Wrapper versions.
|
||||
*
|
||||
* Maps from the checksum to the names of the Gradle versions whose wrapper has this checksum.
|
||||
*/
|
||||
export const KNOWN_VALID_CHECKSUMS = getKnownValidChecksums()
|
||||
|
||||
export async function fetchValidChecksums(
|
||||
allowSnapshots: boolean
|
||||
): Promise<string[]> {
|
||||
): Promise<Set<string>> {
|
||||
const all = await httpGetJsonArray('https://services.gradle.org/versions/all')
|
||||
const withChecksum = all.filter(
|
||||
entry =>
|
||||
|
@ -27,7 +53,7 @@ export async function fetchValidChecksums(
|
|||
const checksums = await Promise.all(
|
||||
checksumUrls.map(async (url: string) => httpGetText(url))
|
||||
)
|
||||
return [...new Set(checksums)]
|
||||
return new Set(checksums)
|
||||
}
|
||||
|
||||
async function httpGetJsonArray(url: string): Promise<unknown[]> {
|
||||
|
|
|
@ -6,7 +6,11 @@ export async function findInvalidWrapperJars(
|
|||
gitRepoRoot: string,
|
||||
minWrapperCount: number,
|
||||
allowSnapshots: boolean,
|
||||
allowChecksums: string[]
|
||||
allowedChecksums: string[],
|
||||
knownValidChecksums: Map<
|
||||
string,
|
||||
Set<string>
|
||||
> = checksums.KNOWN_VALID_CHECKSUMS
|
||||
): Promise<ValidationResult> {
|
||||
const wrapperJars = await find.findWrapperJars(gitRepoRoot)
|
||||
const result = new ValidationResult([], [])
|
||||
|
@ -16,14 +20,28 @@ export async function findInvalidWrapperJars(
|
|||
)
|
||||
}
|
||||
if (wrapperJars.length > 0) {
|
||||
const validChecksums = await checksums.fetchValidChecksums(allowSnapshots)
|
||||
validChecksums.push(...allowChecksums)
|
||||
const notYetValidatedWrappers = []
|
||||
for (const wrapperJar of wrapperJars) {
|
||||
const sha = await hash.sha256File(wrapperJar)
|
||||
if (!validChecksums.includes(sha)) {
|
||||
result.invalid.push(new WrapperJar(wrapperJar, sha))
|
||||
} else {
|
||||
if (allowedChecksums.includes(sha) || knownValidChecksums.has(sha)) {
|
||||
result.valid.push(new WrapperJar(wrapperJar, sha))
|
||||
} else {
|
||||
notYetValidatedWrappers.push(new WrapperJar(wrapperJar, sha))
|
||||
}
|
||||
}
|
||||
|
||||
// Otherwise fall back to fetching checksums from Gradle API and compare against them
|
||||
if (notYetValidatedWrappers.length > 0) {
|
||||
result.fetchedChecksums = true
|
||||
const fetchedValidChecksums =
|
||||
await checksums.fetchValidChecksums(allowSnapshots)
|
||||
|
||||
for (const wrapperJar of notYetValidatedWrappers) {
|
||||
if (!fetchedValidChecksums.has(wrapperJar.checksum)) {
|
||||
result.invalid.push(wrapperJar)
|
||||
} else {
|
||||
result.valid.push(wrapperJar)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,6 +51,7 @@ export async function findInvalidWrapperJars(
|
|||
export class ValidationResult {
|
||||
valid: WrapperJar[]
|
||||
invalid: WrapperJar[]
|
||||
fetchedChecksums = false
|
||||
errors: string[] = []
|
||||
|
||||
constructor(valid: WrapperJar[], invalid: WrapperJar[]) {
|
||||
|
|
986
src/wrapper-checksums.json
Normal file
986
src/wrapper-checksums.json
Normal file
|
@ -0,0 +1,986 @@
|
|||
[
|
||||
{
|
||||
"version": "8.6-rc-4",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.6-rc-3",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.6-rc-2",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.6-rc-1",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.6-milestone-1",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.5",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.5-rc-4",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.5-rc-3",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.5-rc-2",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.5-rc-1",
|
||||
"checksum": "d3b261c2820e9e3d8d639ed084900f11f4a86050a8f83342ade7b6bc9b0d2bdd"
|
||||
},
|
||||
{
|
||||
"version": "8.4",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "7.6.3",
|
||||
"checksum": "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3"
|
||||
},
|
||||
{
|
||||
"version": "8.4-rc-3",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.4-rc-2",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.4-rc-1",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.3",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.3-rc-4",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.3-rc-3",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.3-rc-2",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.3-rc-1",
|
||||
"checksum": "0336f591bc0ec9aa0c9988929b93ecc916b3c1d52aed202c7381db144aa0ef15"
|
||||
},
|
||||
{
|
||||
"version": "8.2.1",
|
||||
"checksum": "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4"
|
||||
},
|
||||
{
|
||||
"version": "8.2",
|
||||
"checksum": "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4"
|
||||
},
|
||||
{
|
||||
"version": "7.6.2",
|
||||
"checksum": "14dfa961b6704bb3decdea06502781edaa796a82e6da41cd2e1962b14fbe21a3"
|
||||
},
|
||||
{
|
||||
"version": "8.2-rc-3",
|
||||
"checksum": "a8451eeda314d0568b5340498b36edf147a8f0d692c5ff58082d477abe9146e4"
|
||||
},
|
||||
{
|
||||
"version": "8.2-rc-2",
|
||||
"checksum": "5c9a1a6f50b4f8c0264b1ac69013bef9f8363733275fafa56c70c84be3276bb8"
|
||||
},
|
||||
{
|
||||
"version": "8.2-rc-1",
|
||||
"checksum": "55e949185c26ba3ddcd2c6a4217d043bfa0ce3cc002bbbb52b709a181a513e81"
|
||||
},
|
||||
{
|
||||
"version": "8.2-milestone-1",
|
||||
"checksum": "55e949185c26ba3ddcd2c6a4217d043bfa0ce3cc002bbbb52b709a181a513e81"
|
||||
},
|
||||
{
|
||||
"version": "8.1.1",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.1",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.1-rc-4",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.1-rc-3",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.1-rc-2",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.1-rc-1",
|
||||
"checksum": "ed2c26eba7cfb93cc2b7785d05e534f07b5b48b5e7fc941921cd098628abca58"
|
||||
},
|
||||
{
|
||||
"version": "8.0.2",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "7.6.1",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "6.9.4",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "8.0.1",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-rc-5",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-rc-4",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-rc-3",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-rc-2",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-rc-1",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-6",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-5",
|
||||
"checksum": "91941f522fbfd4431cf57e445fc3d5200c85f957bda2de5251353cf11174f4b5"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-4",
|
||||
"checksum": "577b2de036000db2e0f04f2ec842a4f1e648c8b6f9c87f29a8d896acb1732538"
|
||||
},
|
||||
{
|
||||
"version": "7.6",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.6-rc-4",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.6-rc-3",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.6-rc-2",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-3",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.6-rc-1",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "6.9.3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-2",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "8.0-milestone-1",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.6-milestone-1",
|
||||
"checksum": "c5a643cf80162e665cc228f7b16f343fef868e47d3a4836f62e18b7e17ac018a"
|
||||
},
|
||||
{
|
||||
"version": "7.5.1",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5-rc-5",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5-rc-4",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5-rc-3",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5-rc-2",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.5-rc-1",
|
||||
"checksum": "91a239400bb638f36a1795d8fdf7939d532cdc7d794d1119b7261aac158b1e60"
|
||||
},
|
||||
{
|
||||
"version": "7.4.2",
|
||||
"checksum": "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590"
|
||||
},
|
||||
{
|
||||
"version": "7.4.1",
|
||||
"checksum": "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590"
|
||||
},
|
||||
{
|
||||
"version": "7.4",
|
||||
"checksum": "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590"
|
||||
},
|
||||
{
|
||||
"version": "7.4-rc-2",
|
||||
"checksum": "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590"
|
||||
},
|
||||
{
|
||||
"version": "7.4-rc-1",
|
||||
"checksum": "575098db54a998ff1c6770b352c3b16766c09848bee7555dab09afc34e8cf590"
|
||||
},
|
||||
{
|
||||
"version": "7.3.3",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3.3-rc-1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "6.9.2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.3.2",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3.1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3-rc-5",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3-rc-4",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3-rc-3",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3-rc-2",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.3-rc-1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "6.9.1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.2",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.2-rc-3",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.2-rc-2",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.2-rc-1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.1.1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.1-rc-2",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.1-rc-1",
|
||||
"checksum": "33ad4583fd7ee156f533778736fa1b4940bd83b433934d1cc4e9f608e99a6a89"
|
||||
},
|
||||
{
|
||||
"version": "7.0.2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0.1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.9",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.9-rc-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.9-rc-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0-rc-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0-rc-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0-milestone-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0-milestone-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8.3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8.2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "7.0-milestone-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8.1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-rc-5",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-rc-4",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-rc-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-rc-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7.1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-milestone-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-milestone-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.8-milestone-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7-rc-5",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7-rc-4",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7-rc-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7-rc-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.7-rc-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6.1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-6",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-5",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-4",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-rc-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-milestone-3",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.5.1",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.6-milestone-2",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.6-milestone-1",
|
||||
"checksum": "e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637"
|
||||
},
|
||||
{
|
||||
"version": "6.5",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.5-rc-1",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4.1",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.5-milestone-2",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.5-milestone-1",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4-rc-4",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4-rc-3",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4-rc-2",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.4-rc-1",
|
||||
"checksum": "70239e6ca1f0d5e3b2808ef6d82390cf9ad58d3a3a0d271677a51d1b89475857"
|
||||
},
|
||||
{
|
||||
"version": "6.3",
|
||||
"checksum": "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06"
|
||||
},
|
||||
{
|
||||
"version": "6.3-rc-4",
|
||||
"checksum": "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06"
|
||||
},
|
||||
{
|
||||
"version": "6.3-rc-3",
|
||||
"checksum": "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06"
|
||||
},
|
||||
{
|
||||
"version": "6.3-rc-2",
|
||||
"checksum": "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06"
|
||||
},
|
||||
{
|
||||
"version": "6.3-rc-1",
|
||||
"checksum": "1cef53de8dc192036e7b0cc47584449b0cf570a00d560bfaa6c9eabe06e1fc06"
|
||||
},
|
||||
{
|
||||
"version": "6.2.2",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.2.1",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.2",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.2-rc-3",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.2-rc-2",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.2-rc-1",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1.1",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1-rc-3",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1-rc-2",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1-rc-1",
|
||||
"checksum": "96f793a18e056c23ffeec67c1f3bb8eccff5a4a407fc9ceac183527e7eedf4b6"
|
||||
},
|
||||
{
|
||||
"version": "6.1-milestone-3",
|
||||
"checksum": "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce"
|
||||
},
|
||||
{
|
||||
"version": "6.1-milestone-2",
|
||||
"checksum": "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce"
|
||||
},
|
||||
{
|
||||
"version": "6.1-milestone-1",
|
||||
"checksum": "3888c76faa032ea8394b8a54e04ce2227ab1f4be64f65d450f8509fe112d38ce"
|
||||
},
|
||||
{
|
||||
"version": "6.0.1",
|
||||
"checksum": "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e"
|
||||
},
|
||||
{
|
||||
"version": "6.0",
|
||||
"checksum": "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e"
|
||||
},
|
||||
{
|
||||
"version": "6.0-rc-3",
|
||||
"checksum": "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e"
|
||||
},
|
||||
{
|
||||
"version": "5.6.4",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "6.0-rc-2",
|
||||
"checksum": "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e"
|
||||
},
|
||||
{
|
||||
"version": "6.0-rc-1",
|
||||
"checksum": "28b330c20a9a73881dfe9702df78d4d78bf72368e8906c70080ab6932462fe9e"
|
||||
},
|
||||
{
|
||||
"version": "5.6.3",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.6.2",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.6.1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.6",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.6-rc-2",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.6-rc-1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5.1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5-rc-4",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5-rc-3",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5-rc-2",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.5-rc-1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.4.1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.4",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.4-rc-1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.3.1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.3",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.3-rc-3",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.3-rc-2",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.3-rc-1",
|
||||
"checksum": "3dc39ad650d40f6c029bd8ff605c6d95865d657dbfdeacdb079db0ddfffedf9f"
|
||||
},
|
||||
{
|
||||
"version": "5.2.1",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.2",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.2-rc-1",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.1.1",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.1",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.1-rc-3",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.1-rc-2",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "5.1-rc-1",
|
||||
"checksum": "76b12da7f4a7cdd025e5996811a2e49bf5df0fb62d72554ab555c0e434b63aae"
|
||||
},
|
||||
{
|
||||
"version": "4.10.3",
|
||||
"checksum": "660ab018b8e319e9ae779fdb1b7ac47d0321bde953bf0eb4545f14952cfdcaa3"
|
||||
},
|
||||
{
|
||||
"version": "5.1-milestone-1",
|
||||
"checksum": "8ff6bee43c55efc0cce9e1147860a76fc970398fbef587e64b6e7a5a7e0291df"
|
||||
},
|
||||
{
|
||||
"version": "5.0",
|
||||
"checksum": "f1a597a1f2b23089deec11d5b924d074f9e4ed810f2093be7021ded01c8073ad"
|
||||
},
|
||||
{
|
||||
"version": "4.10.2",
|
||||
"checksum": "ad63ba21fb91e490e0f6fd0ca7d4049241f0f68a454b0b3075c041c4554e611c"
|
||||
},
|
||||
{
|
||||
"version": "4.10.1",
|
||||
"checksum": "d8a69ca8efe271d8de080c42a2ea4b08fc9e85c41aa2d163255c70d9da239db0"
|
||||
},
|
||||
{
|
||||
"version": "4.10",
|
||||
"checksum": "778e7f46bd67eaea2de5bcbdbb40878c6614656014ba59a72ce8648eaf43a925"
|
||||
},
|
||||
{
|
||||
"version": "4.9",
|
||||
"checksum": "e55e7e47a79e04c26363805b31e2f40b7a9cc89ea12113be7de750a3b2cede85"
|
||||
},
|
||||
{
|
||||
"version": "4.8.1",
|
||||
"checksum": "080e30657661539701b66827b96eb0043191e0a7a73090e8a57bd6735e5af5c5"
|
||||
},
|
||||
{
|
||||
"version": "4.8",
|
||||
"checksum": "4160d5a6d8d6efc6af336582bbbba8194e4d7a742835f7b0fd3964cbd419c994"
|
||||
},
|
||||
{
|
||||
"version": "4.7",
|
||||
"checksum": "7d6fe0a055f133226409de2457fb0e887d1f6b096f36c8d5fd76fb7a9357cd45"
|
||||
},
|
||||
{
|
||||
"version": "4.6",
|
||||
"checksum": "381dff8aa434499aa93bc25572b049c8c586a67faff2c02f375e4f23e17e49de"
|
||||
},
|
||||
{
|
||||
"version": "4.5.1",
|
||||
"checksum": "3bf04e39ed259ff0a1217a875199a11775855d2a29207b98318ac79178249de8"
|
||||
},
|
||||
{
|
||||
"version": "4.5",
|
||||
"checksum": "d283a04caee0e97b666b09e50ab394834934bee6225c2e9cd4650afdeac43828"
|
||||
},
|
||||
{
|
||||
"version": "4.4.1",
|
||||
"checksum": "4e318d74d06aa7b998091345c397a3c7c4b291b59da31e6f9c772a596711acac"
|
||||
},
|
||||
{
|
||||
"version": "4.4",
|
||||
"checksum": "88b5b31f390a268ab3773df580d83fd1e388f49c2b685f78a16600577bd72fe2"
|
||||
},
|
||||
{
|
||||
"version": "4.3.1",
|
||||
"checksum": "383f4efa709b52632a520708e8a07353961970941ab3867ab8ac182132ce1c54"
|
||||
},
|
||||
{
|
||||
"version": "4.3",
|
||||
"checksum": "ba496e7e0e03ffa432eaf715bb1466fac2ffc8491a71e7164a5438c48c79d8ea"
|
||||
},
|
||||
{
|
||||
"version": "4.2.1",
|
||||
"checksum": "c536e519e65a4bb787e071c6a90d23bd219c9d409a2123db649d3684acbf3ae7"
|
||||
},
|
||||
{
|
||||
"version": "4.2",
|
||||
"checksum": "53aa048fef3c06a8442c6a44df5edd2e8c791ee883e42ded6189c7eed112095d"
|
||||
},
|
||||
{
|
||||
"version": "4.1",
|
||||
"checksum": "f4d953f31fbf6c38a8c330d19171c8ba6e0d1ff59d4d5c5c2d3ed821c9f3d5a3"
|
||||
},
|
||||
{
|
||||
"version": "3.2.1",
|
||||
"checksum": "020ef0245a07b33ca48b12f59415e7e5083cf701ef02690464a8cc2ab3984608"
|
||||
},
|
||||
{
|
||||
"version": "3.2",
|
||||
"checksum": "d2d3abae74e89cc4200f48d4a08a7e5960363c33ee62272ef5ffbb39f4c7f83e"
|
||||
},
|
||||
{
|
||||
"version": "3.1",
|
||||
"checksum": "0f49043be582d7a39b671f924c66bd9337b92fa88ff5951225acc60560053067"
|
||||
},
|
||||
{
|
||||
"version": "3.0",
|
||||
"checksum": "42d7a2f636983aa09d21dfeb6e90d21d7a8dad905351390643ce60cc82c8f8a9"
|
||||
},
|
||||
{
|
||||
"version": "2.14.1",
|
||||
"checksum": "8e47da0b2656354d059609cae9d44b196d4f9b14512e688ffee4e0eb7e723ae9"
|
||||
},
|
||||
{
|
||||
"version": "2.14",
|
||||
"checksum": "b5ca811c057b3eb4164c78f4155d667c6092ff98ba91a4c90d29e127426f37a7"
|
||||
},
|
||||
{
|
||||
"version": "2.13",
|
||||
"checksum": "0c3c576e28b44eddcab6b8b4854f484363dfbcd047657d41654e839835da2c53"
|
||||
},
|
||||
{
|
||||
"version": "2.12",
|
||||
"checksum": "4894520b03c007bf38e983bf933320c483a9790010d997029fa8985dc6128559"
|
||||
},
|
||||
{
|
||||
"version": "2.11",
|
||||
"checksum": "0bc7b16a0a3fa52af674de44d1fea48abc4dee3431f3d4829cd9ea329836e596"
|
||||
},
|
||||
{
|
||||
"version": "2.10",
|
||||
"checksum": "16caeaf66d57a0d1d2087fef6a97efa62de8da69afa5b908f40db35afc4342da"
|
||||
},
|
||||
{
|
||||
"version": "2.9",
|
||||
"checksum": "b92386e36a96da6be89e91f71087d1394a26c0450231ba0b22e28ee1ee8fa14b"
|
||||
},
|
||||
{
|
||||
"version": "2.8",
|
||||
"checksum": "198159fcd7d29533c0d37423d66c44729982d5280c9e2c7c5f4b7bc6a9317f6b"
|
||||
},
|
||||
{
|
||||
"version": "2.7",
|
||||
"checksum": "d7e1975ccf2dc079d4f0b1010febdad466506d1565c5aa8017c88ebc5e471604"
|
||||
},
|
||||
{
|
||||
"version": "2.6",
|
||||
"checksum": "695089a2b306f55f0bd63140fbcc5ead8c383819018188ce484cd5a055bec6e4"
|
||||
},
|
||||
{
|
||||
"version": "2.5",
|
||||
"checksum": "718d7b25ea60b357fc4cb2212ce10b3f03dfd0e6fe5f23f565b15553ec46bb7e"
|
||||
},
|
||||
{
|
||||
"version": "2.4",
|
||||
"checksum": "98420079ffe3e24b1013180d9b9bc2e2ee6a9d867ee232004b75a961d9c18e27"
|
||||
},
|
||||
{
|
||||
"version": "2.3",
|
||||
"checksum": "b18a1114ebe81fb7502d40ad9a4f86cef82fff244a865ad45533b4d5e7ff0cc8"
|
||||
},
|
||||
{
|
||||
"version": "2.2.1",
|
||||
"checksum": "5f73d431fd1c5dcc2cf11555b8e486c43249c1099f678ccc6088b05be600a2e1"
|
||||
},
|
||||
{
|
||||
"version": "2.2",
|
||||
"checksum": "fa9b4294d47cf8db7039cb9b2435de3dd1accb0d3d67926705775a0579dfa397"
|
||||
},
|
||||
{
|
||||
"version": "2.1",
|
||||
"checksum": "5e27c39c2336c25748f279d8b105162d14b1a39eb7839d0b658432282d0ce79f"
|
||||
},
|
||||
{
|
||||
"version": "2.0",
|
||||
"checksum": "80a33ca14e3bca3116bc8749550397f739f126190c82bb6399fdc8d10f49661f"
|
||||
},
|
||||
{
|
||||
"version": "1.12",
|
||||
"checksum": "dea5ceba47b58df0b7f69a65b24357527c1927ccc72b6d4ed90658d39e461b29"
|
||||
},
|
||||
{
|
||||
"version": "1.11",
|
||||
"checksum": "a14b54dd3790f5ce1dc08ebbf4b5bcc05f76c4554b43accb84696c970f29aba0"
|
||||
},
|
||||
{
|
||||
"version": "1.10",
|
||||
"checksum": "6a6c15e222a0458aa33985b87f67954f4222410b43b1e26866197d0a77d93cbc"
|
||||
},
|
||||
{
|
||||
"version": "1.9",
|
||||
"checksum": "134337ea7c13221f9d1a1c14288a5cf8af9f6060167b903b724b115cf5a0cf73"
|
||||
},
|
||||
{
|
||||
"version": "1.8",
|
||||
"checksum": "13f23a24252ddca0a0fabef212e3c854f5895b081c09d015c91587a5df9bf9f7"
|
||||
},
|
||||
{
|
||||
"version": "1.7",
|
||||
"checksum": "7af529cc3331d38b3d8f8344ddd9b2d3744542b55b68318abd8bb1a6f3812a1c"
|
||||
},
|
||||
{
|
||||
"version": "1.6",
|
||||
"checksum": "66dbcc9f0bc33789ea0bdb4d49c8ea037047bda5647ef696c47bdca65f785159"
|
||||
},
|
||||
{
|
||||
"version": "1.5",
|
||||
"checksum": "9598ffdf7ee26949d8b861ece267c70c802f21f7fc52596693834792d155195a"
|
||||
},
|
||||
{
|
||||
"version": "1.4",
|
||||
"checksum": "c95985b7b5684e133c5d45044fd90faaf6c8f7cd2493d61a11c2b8c5b71ef514"
|
||||
},
|
||||
{
|
||||
"version": "1.3",
|
||||
"checksum": "95513eccca99e1ae1aeadc4f69cabd0e7fb64821d3f26c46a489df844c8a7353"
|
||||
},
|
||||
{
|
||||
"version": "1.2",
|
||||
"checksum": "5c91fa893665f3051eae14578fac2df14e737423387e75ffbeccd35f335a3d8b"
|
||||
},
|
||||
{
|
||||
"version": "1.1",
|
||||
"checksum": "22c56a9780daeee00e5bf31621f991b68e73eff6fe8afca628a1fe2c50c6038e"
|
||||
},
|
||||
{
|
||||
"version": "1.0",
|
||||
"checksum": "87e50531ca7aab675f5bb65755ef78328afd64cf0877e37ad876047a8a014055"
|
||||
}
|
||||
]
|
|
@ -6,7 +6,8 @@
|
|||
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
"esModuleInterop": true, /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
|
||||
"resolveJsonModule": true, /* Enable importing JSON files as module; used for importing wrapper checksums JSON */
|
||||
},
|
||||
"exclude": ["node_modules", "**/*.test.ts"]
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue