added initial version for testing
This commit is contained in:
parent
de087ee1a9
commit
f6b8c64495
|
@ -0,0 +1,76 @@
|
|||
const core = require('@actions/core')
|
||||
const downloadVersion = require('../src/download-version')
|
||||
const fs = require('fs')
|
||||
const { t } = require('tar')
|
||||
|
||||
// Mock the GitHub Actions core library
|
||||
const setFailedMock = jest.spyOn(core, 'setFailed').mockImplementation()
|
||||
|
||||
describe('downloadVersion', () => {
|
||||
const tempDir = '/tmp/setup-flutter/temp'
|
||||
const tempCache = '/tmp/setup-flutter/cache'
|
||||
if (!fs.existsSync(tempDir)) {
|
||||
fs.mkdirSync(tempDir, { recursive: true })
|
||||
}
|
||||
if (!fs.existsSync(tempCache)) {
|
||||
fs.mkdirSync(tempCache, { recursive: true })
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
process.env['RUNNER_OS'] = 'macos'
|
||||
process.env['RUNNER_TEMP'] = tempDir
|
||||
process.env['RUNNER_TOOL_CACHE'] = tempCache
|
||||
jest.clearAllMocks()
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
fs.rm(tempDir, { recursive: true }, () => {
|
||||
core.info('tempDir removed')
|
||||
})
|
||||
fs.rm(tempCache, { recursive: true }, () => {
|
||||
core.info('tempCache removed')
|
||||
})
|
||||
})
|
||||
|
||||
const downloadVersionMock = jest.spyOn(downloadVersion, 'downloadVersion')
|
||||
const tarReleaseMock = {
|
||||
hash: 'b0366e0a3f089e15fd89c97604ab402fe26b724c',
|
||||
channel: 'stable',
|
||||
version: '3.16.3',
|
||||
dart_sdk_version: '3.2.3',
|
||||
dart_sdk_arch: 'x64',
|
||||
release_date: '2023-12-06T18:02:04.383556Z',
|
||||
archive: 'stable/linux/flutter_linux_3.16.3-stable.tar.xz',
|
||||
sha256: '22196f6e5d8b67cbdddf1fc94f62da07addb67da0210d0498cbcff6ddcb7127e'
|
||||
}
|
||||
|
||||
const zipReleaseMock = {
|
||||
hash: 'b0366e0a3f089e15fd89c97604ab402fe26b724c',
|
||||
channel: 'stable',
|
||||
version: '3.16.3',
|
||||
dart_sdk_version: '3.2.3',
|
||||
dart_sdk_arch: 'x64',
|
||||
release_date: '2023-12-06T17:56:58.013613Z',
|
||||
archive: 'stable/macos/flutter_macos_3.16.3-stable.zip',
|
||||
sha256: '0230d67d13817b65e2006bcd3330d72e4161f5c10b558afd1c72a818cd7c578e'
|
||||
}
|
||||
|
||||
it('no release defined', async () => {
|
||||
await downloadVersion.downloadVersion()
|
||||
expect(downloadVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'No release defined to download'
|
||||
)
|
||||
})
|
||||
|
||||
it('get zip version', async () => {
|
||||
await downloadVersion.downloadVersion(zipReleaseMock)
|
||||
expect(downloadVersionMock).toHaveReturned()
|
||||
}, 300000)
|
||||
|
||||
it('get tar version', async () => {
|
||||
await downloadVersion.downloadVersion(tarReleaseMock)
|
||||
expect(downloadVersionMock).toHaveReturned()
|
||||
}, 300000)
|
||||
})
|
|
@ -0,0 +1,134 @@
|
|||
const core = require('@actions/core')
|
||||
const getLatestVersion = require('../src/get-latest-version')
|
||||
const setFailedMock = jest.spyOn(core, 'setFailed').mockImplementation()
|
||||
const setOutputMock = jest.spyOn(core, 'setOutput').mockImplementation()
|
||||
|
||||
describe('getLatestVersion', () => {
|
||||
beforeEach(() => {
|
||||
process.env['RUNNER_OS'] = 'macos'
|
||||
process.env['RUNNER_ARCH'] = 'arm64'
|
||||
jest.clearAllMocks()
|
||||
})
|
||||
|
||||
const getLatestVersionMock = jest.spyOn(getLatestVersion, 'getLatestVersion')
|
||||
|
||||
it('[0] wrong os', async () => {
|
||||
process.env['RUNNER_OS'] = 'test'
|
||||
await getLatestVersion.getLatestVersion('', 'dev', 'x64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Failed to get the latest version'
|
||||
)
|
||||
})
|
||||
|
||||
it('[1] convert darwin to macos', async () => {
|
||||
await getLatestVersion.getLatestVersion('darwin', 'beta', '', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
}, 300000)
|
||||
|
||||
it('[2] gets the latest stable version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'stable', '', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[3] gets the latest beta version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'beta', '', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[4] gets the latest dev version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'dev', '', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[5] gets a specific version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'stable', '', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[6] gets a specific arch', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'stable', 'arm64', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[7] gets a specific arch and version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'stable', 'arm64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[8] gets the x64 as amd64 version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'stable', 'amd64', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('[9] no channel found', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'mock', '', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(1, 'Channel mock not found')
|
||||
})
|
||||
|
||||
it('[10] no version found for version', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'dev', '', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(1, expect.any(String))
|
||||
})
|
||||
|
||||
it('[11] no version found for arch', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'dev', 'x641', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Architecture x641 not found'
|
||||
)
|
||||
})
|
||||
|
||||
it('[12] no version found for version and arch', async () => {
|
||||
await getLatestVersion.getLatestVersion('', 'dev', 'x64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Version 3.16.3 with architecture x64 not found'
|
||||
)
|
||||
})
|
||||
})
|
|
@ -2,13 +2,22 @@
|
|||
* Unit tests for the action's main functionality, src/main.js
|
||||
*/
|
||||
const core = require('@actions/core')
|
||||
const tc = require('@actions/tool-cache')
|
||||
const main = require('../src/main')
|
||||
const fs = require('fs')
|
||||
const { t } = require('tar')
|
||||
|
||||
// Mock the GitHub Actions core library
|
||||
const debugMock = jest.spyOn(core, 'debug').mockImplementation()
|
||||
const getInputMock = jest.spyOn(core, 'getInput').mockImplementation()
|
||||
const getBooleanInput = jest.spyOn(core, 'getBooleanInput').mockImplementation()
|
||||
const addPathMock = jest.spyOn(core, 'addPath').mockImplementation()
|
||||
const exportVariableMock = jest
|
||||
.spyOn(core, 'exportVariable')
|
||||
.mockImplementation()
|
||||
const setFailedMock = jest.spyOn(core, 'setFailed').mockImplementation()
|
||||
const setOutputMock = jest.spyOn(core, 'setOutput').mockImplementation()
|
||||
const tcFindMock = jest.spyOn(tc, 'find').mockImplementation()
|
||||
|
||||
// Mock the action's main function
|
||||
const runMock = jest.spyOn(main, 'run')
|
||||
|
@ -16,211 +25,141 @@ const runMock = jest.spyOn(main, 'run')
|
|||
// Other utilities
|
||||
const timeRegex = /^\d{2}:\d{2}:\d{2}/
|
||||
|
||||
describe('action', () => {
|
||||
describe('run', () => {
|
||||
const tempDir = '/tmp/setup-flutter/temp'
|
||||
const tempCache = '/tmp/setup-flutter/cache'
|
||||
|
||||
beforeAll(() => {
|
||||
if (!fs.existsSync(tempDir)) {
|
||||
fs.mkdirSync(tempDir, { recursive: true })
|
||||
}
|
||||
if (!fs.existsSync(tempCache)) {
|
||||
fs.mkdirSync(tempCache, { recursive: true })
|
||||
}
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
process.env['RUNNER_OS'] = process.platform
|
||||
process.env['RUNNER_ARCH'] = process.arch
|
||||
process.env['RUNNER_TEMP'] = tempDir
|
||||
process.env['RUNNER_TOOL_CACHE'] = tempCache
|
||||
jest.clearAllMocks()
|
||||
})
|
||||
|
||||
it('sets the time output', async () => {
|
||||
// Set the action's inputs as return values from core.getInput()
|
||||
getInputMock.mockImplementation(name => {
|
||||
afterAll(() => {
|
||||
fs.rm(tempDir, { recursive: true }, () => {
|
||||
core.info('tempDir removed')
|
||||
})
|
||||
fs.rm(tempCache, { recursive: true }, () => {
|
||||
core.info('tempCache removed')
|
||||
})
|
||||
})
|
||||
|
||||
const setupMock = jest.spyOn(main, 'run')
|
||||
|
||||
it('[1] query only', async () => {
|
||||
getBooleanInput.mockImplementation(name => {
|
||||
switch (name) {
|
||||
case 'milliseconds':
|
||||
return '500'
|
||||
case 'query-only':
|
||||
return true
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
})
|
||||
|
||||
await main.run()
|
||||
expect(runMock).toHaveReturned()
|
||||
expect(setupMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenCalledWith('channel', 'stable')
|
||||
expect(setOutputMock).toHaveBeenCalledWith('version', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('architecture', process.arch)
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-path', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-key', expect.any(String))
|
||||
}, 300000)
|
||||
|
||||
// Verify that all of the core library functions were called correctly
|
||||
expect(debugMock).toHaveBeenNthCalledWith(1, 'Waiting 500 milliseconds ...')
|
||||
expect(debugMock).toHaveBeenNthCalledWith(
|
||||
it('[2] run without cache', async () => {
|
||||
getBooleanInput.mockImplementation(name => {
|
||||
switch (name) {
|
||||
case 'query-only':
|
||||
return false
|
||||
case 'cache':
|
||||
return false
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
})
|
||||
|
||||
await main.run()
|
||||
expect(setupMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenCalledWith('channel', 'stable')
|
||||
expect(setOutputMock).toHaveBeenCalledWith('version', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('architecture', process.arch)
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-path', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-key', expect.any(String))
|
||||
|
||||
expect(setOutputMock).toHaveBeenCalledWith(
|
||||
'doctor-output',
|
||||
expect.any(String)
|
||||
)
|
||||
expect(setOutputMock).toHaveBeenCalledWith(
|
||||
'version-output',
|
||||
expect.any(String)
|
||||
)
|
||||
expect(setOutputMock).toHaveBeenCalledWith(
|
||||
'precache-output',
|
||||
expect.any(String)
|
||||
)
|
||||
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(1, expect.any(String))
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(2, expect.any(String))
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(3, expect.any(String))
|
||||
expect(exportVariableMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'FLUTTER_HOME',
|
||||
expect.any(String)
|
||||
)
|
||||
expect(exportVariableMock).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
expect.stringMatching(timeRegex)
|
||||
'PUB_CACHE',
|
||||
expect.any(String)
|
||||
)
|
||||
expect(debugMock).toHaveBeenNthCalledWith(
|
||||
3,
|
||||
expect.stringMatching(timeRegex)
|
||||
)
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'time',
|
||||
expect.stringMatching(timeRegex)
|
||||
)
|
||||
})
|
||||
}, 300000)
|
||||
|
||||
it('sets a failed status', async () => {
|
||||
// Set the action's inputs as return values from core.getInput()
|
||||
getInputMock.mockImplementation(name => {
|
||||
it('[3] run with cache', async () => {
|
||||
getBooleanInput.mockImplementation(name => {
|
||||
switch (name) {
|
||||
case 'milliseconds':
|
||||
return 'this is not a number'
|
||||
case 'query-only':
|
||||
return false
|
||||
case 'cache':
|
||||
return true
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
})
|
||||
|
||||
await main.run()
|
||||
expect(runMock).toHaveReturned()
|
||||
|
||||
// Verify that all of the core library functions were called correctly
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'milliseconds not a number'
|
||||
)
|
||||
})
|
||||
|
||||
it('fails if no input is provided', async () => {
|
||||
// Set the action's inputs as return values from core.getInput()
|
||||
getInputMock.mockImplementation(name => {
|
||||
switch (name) {
|
||||
case 'milliseconds':
|
||||
throw new Error('Input required and not supplied: milliseconds')
|
||||
default:
|
||||
return ''
|
||||
}
|
||||
tcFindMock.mockImplementation(() => {
|
||||
return tempCache
|
||||
})
|
||||
|
||||
await main.run()
|
||||
expect(runMock).toHaveReturned()
|
||||
|
||||
// Verify that all of the core library functions were called correctly
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
expect(setupMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenCalledWith('used-cached', 'true')
|
||||
expect(setOutputMock).toHaveBeenCalledWith('channel', 'stable')
|
||||
expect(setOutputMock).toHaveBeenCalledWith('version', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('architecture', process.arch)
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-path', expect.any(String))
|
||||
expect(setOutputMock).toHaveBeenCalledWith('cache-key', expect.any(String))
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(1, expect.any(String))
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(2, expect.any(String))
|
||||
expect(addPathMock).toHaveBeenNthCalledWith(3, expect.any(String))
|
||||
expect(exportVariableMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Input required and not supplied: milliseconds'
|
||||
'FLUTTER_HOME',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('getLatestVersion', () => {
|
||||
beforeEach(() => {
|
||||
process.env['RUNNER_OS'] = 'macos'
|
||||
jest.clearAllMocks()
|
||||
})
|
||||
|
||||
const getLatestVersionMock = jest.spyOn(main, 'getLatestVersion')
|
||||
|
||||
it('wrong os', async () => {
|
||||
process.env['RUNNER_OS'] = 'test'
|
||||
await main.getLatestVersion('dev', 'x64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Failed to get the latest version'
|
||||
)
|
||||
})
|
||||
|
||||
it('convert darwin to macos', async () => {
|
||||
process.env['RUNNER_OS'] = 'darwin'
|
||||
await main.getLatestVersion('stable')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets the latest stable version', async () => {
|
||||
await main.getLatestVersion('stable')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets the latest beta version', async () => {
|
||||
await main.getLatestVersion('beta')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets the latest dev version', async () => {
|
||||
await main.getLatestVersion('dev')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets a specific version', async () => {
|
||||
await main.getLatestVersion('stable', '', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets a specific arch', async () => {
|
||||
await main.getLatestVersion('stable', 'arm64', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets a specific arch and version', async () => {
|
||||
await main.getLatestVersion('stable', 'arm64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('gets the x64 as amd64 version', async () => {
|
||||
await main.getLatestVersion('stable', 'amd64', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setOutputMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'version',
|
||||
expect.any(String)
|
||||
)
|
||||
})
|
||||
|
||||
it('no version found', async () => {
|
||||
await main.getLatestVersion('mock')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(1, 'Channel mock not found')
|
||||
})
|
||||
|
||||
it('no version found for version', async () => {
|
||||
await main.getLatestVersion('dev', '', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(1, 'Version 3.16.3 not found')
|
||||
})
|
||||
|
||||
it('no version found for arch', async () => {
|
||||
await main.getLatestVersion('dev', 'x641', '')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Architecture x641 not found'
|
||||
)
|
||||
})
|
||||
|
||||
it('no version found for version and arch', async () => {
|
||||
await main.getLatestVersion('dev', 'x64', '3.16.3')
|
||||
expect(getLatestVersionMock).toHaveReturned()
|
||||
expect(setFailedMock).toHaveBeenNthCalledWith(
|
||||
1,
|
||||
'Version 3.16.3 with architecture x64 not found'
|
||||
)
|
||||
})
|
||||
expect(exportVariableMock).toHaveBeenNthCalledWith(
|
||||
2,
|
||||
'PUB_CACHE',
|
||||
expect.any(String)
|
||||
)
|
||||
}, 300000)
|
||||
})
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
/**
|
||||
* Unit tests for src/wait.js
|
||||
*/
|
||||
const { wait } = require('../src/wait')
|
||||
const { expect } = require('@jest/globals')
|
||||
|
||||
describe('wait.js', () => {
|
||||
it('throws an invalid number', async () => {
|
||||
const input = parseInt('foo', 10)
|
||||
expect(isNaN(input)).toBe(true)
|
||||
|
||||
await expect(wait(input)).rejects.toThrow('milliseconds not a number')
|
||||
})
|
||||
|
||||
it('waits with a valid number', async () => {
|
||||
const start = new Date()
|
||||
await wait(500)
|
||||
const end = new Date()
|
||||
|
||||
const delta = Math.abs(end.getTime() - start.getTime())
|
||||
|
||||
expect(delta).toBeGreaterThan(450)
|
||||
})
|
||||
})
|
47
action.yml
47
action.yml
|
@ -1,18 +1,51 @@
|
|||
name: 'Setup Flutter'
|
||||
description: 'Setup Flutter SDK on GitHub Actions'
|
||||
author: 'Carlos Lapao'
|
||||
branding:
|
||||
icon: 'maximize'
|
||||
color: 'blue'
|
||||
|
||||
|
||||
# Define your inputs here.
|
||||
inputs:
|
||||
milliseconds:
|
||||
description: 'Your input description here'
|
||||
required: true
|
||||
default: '1000'
|
||||
flutter-version:
|
||||
description: 'The Flutter version to make available on the path'
|
||||
required: false
|
||||
default: 'any'
|
||||
channel:
|
||||
description: 'The Flutter build release channel'
|
||||
required: false
|
||||
default: 'stable'
|
||||
query-only:
|
||||
description: 'Query the Flutter SDK version without installing it'
|
||||
required: false
|
||||
default: 'false'
|
||||
cache:
|
||||
description: 'Cache the Flutter SDK'
|
||||
required: false
|
||||
default: 'true'
|
||||
cache-key:
|
||||
description: 'Identifier for the Flutter SDK cache'
|
||||
required: false
|
||||
cache-path:
|
||||
description: 'Flutter SDK cache path'
|
||||
required: false
|
||||
architecture:
|
||||
description: 'The architecture of Flutter SDK executable (x64 or arm64)'
|
||||
required: false
|
||||
default: '${{ runner.arch }}'
|
||||
|
||||
# Define your outputs here.
|
||||
outputs:
|
||||
time:
|
||||
description: 'Your output description here'
|
||||
cache-patch:
|
||||
description: 'Flutter SDK cache path'
|
||||
cache-key:
|
||||
description: 'Flutter SDK cache key'
|
||||
channel:
|
||||
description: 'The Flutter build release channel'
|
||||
version:
|
||||
description: 'The Flutter version to make available on the path'
|
||||
architecture:
|
||||
description: 'The architecture of Flutter SDK executable (x64 or arm64)'
|
||||
|
||||
runs:
|
||||
using: node20
|
||||
|
|
|
@ -1 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="106" height="20" role="img" aria-label="Coverage: 100%"><title>Coverage: 100%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="106" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="43" height="20" fill="#4c1"/><rect width="106" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="835" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="330">100%</text><text x="835" y="140" transform="scale(.1)" fill="#fff" textLength="330">100%</text></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="116" height="20" role="img" aria-label="Coverage: 88.12%"><title>Coverage: 88.12%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="116" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="53" height="20" fill="#dfb317"/><rect width="116" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">88.12%</text><text x="885" y="140" transform="scale(.1)" fill="#fff" textLength="430">88.12%</text></g></svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
163
package.json
163
package.json
|
@ -1,82 +1,85 @@
|
|||
{
|
||||
"name": "setup-flutter",
|
||||
"description": "Setup your GitHub Actions workflow with Flutter SDK",
|
||||
"version": "0.0.1",
|
||||
"author": "",
|
||||
"private": true,
|
||||
"homepage": "https://github.com/actions/javascript-action#readme",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/actions/javascript-action.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/actions/javascript-action/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"GitHub",
|
||||
"Actions",
|
||||
"JavaScript"
|
||||
],
|
||||
"exports": {
|
||||
".": "./dist/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"scripts": {
|
||||
"bundle": "npm run format:write && npm run package",
|
||||
"ci-test": "jest",
|
||||
"format:write": "prettier --write **/*.js",
|
||||
"format:check": "prettier --check **/*.js",
|
||||
"lint": "npx eslint . -c ./.github/linters/.eslintrc.yml",
|
||||
"package": "ncc build src/index.js --license licenses.txt",
|
||||
"package:watch": "npm run package -- --watch",
|
||||
"test": "(jest && make-coverage-badge --output-path ./badges/coverage.svg) || make-coverage-badge --output-path ./badges/coverage.svg",
|
||||
"all": "npm run format:write && npm run lint && npm run test && npm run package"
|
||||
},
|
||||
"license": "MIT",
|
||||
"eslintConfig": {
|
||||
"extends": "./.github/linters/.eslintrc.yml"
|
||||
},
|
||||
"jest": {
|
||||
"verbose": true,
|
||||
"clearMocks": true,
|
||||
"testEnvironment": "node",
|
||||
"moduleFileExtensions": [
|
||||
"js"
|
||||
"name": "setup-flutter",
|
||||
"description": "Setup your GitHub Actions workflow with Flutter SDK",
|
||||
"version": "0.0.1",
|
||||
"author": "",
|
||||
"private": true,
|
||||
"homepage": "https://github.com/actions/javascript-action#readme",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/actions/javascript-action.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/actions/javascript-action/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"GitHub",
|
||||
"Actions",
|
||||
"JavaScript"
|
||||
],
|
||||
"testMatch": [
|
||||
"**/*.test.js"
|
||||
],
|
||||
"testPathIgnorePatterns": [
|
||||
"/node_modules/",
|
||||
"/dist/"
|
||||
],
|
||||
"coverageReporters": [
|
||||
"json-summary",
|
||||
"text",
|
||||
"lcov"
|
||||
],
|
||||
"collectCoverage": true,
|
||||
"collectCoverageFrom": [
|
||||
"./src/**"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.1",
|
||||
"axios": "^1.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.5",
|
||||
"@babel/eslint-parser": "^7.23.3",
|
||||
"@babel/preset-env": "^7.23.5",
|
||||
"@vercel/ncc": "^0.38.1",
|
||||
"babel-preset-jest": "^29.6.3",
|
||||
"eslint": "^8.55.0",
|
||||
"eslint-plugin-github": "^4.10.1",
|
||||
"eslint-plugin-jest": "^27.6.0",
|
||||
"jest": "^29.7.0",
|
||||
"make-coverage-badge": "^1.2.0",
|
||||
"prettier": "^3.1.1"
|
||||
}
|
||||
}
|
||||
"exports": {
|
||||
".": "./dist/index.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20"
|
||||
},
|
||||
"scripts": {
|
||||
"bundle": "npm run format:write && npm run package",
|
||||
"ci-test": "jest",
|
||||
"format:write": "prettier --write **/*.js",
|
||||
"format:check": "prettier --check **/*.js",
|
||||
"lint": "npx eslint . -c ./.github/linters/.eslintrc.yml",
|
||||
"package": "ncc build src/index.js --license licenses.txt",
|
||||
"package:watch": "npm run package -- --watch",
|
||||
"test": "(jest && make-coverage-badge --output-path ./badges/coverage.svg) || make-coverage-badge --output-path ./badges/coverage.svg",
|
||||
"all": "npm run format:write && npm run lint && npm run test && npm run package"
|
||||
},
|
||||
"license": "MIT",
|
||||
"eslintConfig": {
|
||||
"extends": "./.github/linters/.eslintrc.yml"
|
||||
},
|
||||
"jest": {
|
||||
"verbose": true,
|
||||
"clearMocks": true,
|
||||
"testEnvironment": "node",
|
||||
"moduleFileExtensions": [
|
||||
"js"
|
||||
],
|
||||
"testMatch": [
|
||||
"**/*.test.js"
|
||||
],
|
||||
"testPathIgnorePatterns": [
|
||||
"/node_modules/",
|
||||
"/dist/"
|
||||
],
|
||||
"coverageReporters": [
|
||||
"json-summary",
|
||||
"text",
|
||||
"lcov"
|
||||
],
|
||||
"collectCoverage": true,
|
||||
"collectCoverageFrom": [
|
||||
"./src/**"
|
||||
]
|
||||
},
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/http-client": "^2.2.0",
|
||||
"@actions/tool-cache": "^2.0.1",
|
||||
"axios": "^1.6.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.23.5",
|
||||
"@babel/eslint-parser": "^7.23.3",
|
||||
"@babel/preset-env": "^7.23.5",
|
||||
"@vercel/ncc": "^0.38.1",
|
||||
"babel-preset-jest": "^29.6.3",
|
||||
"eslint": "^8.55.0",
|
||||
"eslint-plugin-github": "^4.10.1",
|
||||
"eslint-plugin-jest": "^27.6.0",
|
||||
"jest": "^29.7.0",
|
||||
"make-coverage-badge": "^1.2.0",
|
||||
"prettier": "^3.1.1"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
const decompressTempFolder = '__decompress_temp'
|
||||
const manifestBaseUrl =
|
||||
'https://storage.googleapis.com/flutter_infra_release/releases'
|
||||
|
||||
module.exports = {
|
||||
decompressTempFolder,
|
||||
manifestBaseUrl
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
const fs = require('fs')
|
||||
const stream = require('stream')
|
||||
const util = require('util')
|
||||
const core = require('@actions/core')
|
||||
const axios = require('axios')
|
||||
const tc = require('@actions/tool-cache')
|
||||
const path = require('path')
|
||||
const { clean } = require('./helpers')
|
||||
const { decompressTempFolder, manifestBaseUrl } = require('./constants')
|
||||
|
||||
/**
|
||||
* Downloads a release version from the specified URL and extracts it if necessary.
|
||||
* @param {Object} releaseEntity - The release entity containing information about the release.
|
||||
* @returns {Promise<void>} - A promise that resolves when the download and extraction are complete.
|
||||
*/
|
||||
async function downloadVersion(releaseEntity) {
|
||||
if (!releaseEntity || releaseEntity.archive === '') {
|
||||
core.setFailed('No release defined to download')
|
||||
return
|
||||
}
|
||||
|
||||
const finished = util.promisify(stream.finished)
|
||||
const filename = path.basename(releaseEntity.archive)
|
||||
const baseFolder = process.env['RUNNER_TEMP']
|
||||
const localFilePath = path.join(baseFolder, filename)
|
||||
const downloadUrl = `${manifestBaseUrl}/${releaseEntity.archive}`
|
||||
const tempFolder = path.join(baseFolder, decompressTempFolder)
|
||||
|
||||
clean(localFilePath)
|
||||
|
||||
core.info(`Downloading ${filename} from ${downloadUrl}`)
|
||||
const writer = fs.createWriteStream(localFilePath)
|
||||
const response = await axios.get(downloadUrl, { responseType: 'stream' })
|
||||
response.data.pipe(writer)
|
||||
|
||||
// Wait for the stream to finish
|
||||
await finished(writer)
|
||||
core.info(`Downloaded ${filename}`)
|
||||
|
||||
if (filename.endsWith('.zip')) {
|
||||
try {
|
||||
core.info(`Extracting ${filename} to ${baseFolder}`)
|
||||
const files = await tc.extractZip(localFilePath, tempFolder)
|
||||
core.info(`Extracted ${files} files`)
|
||||
return
|
||||
} catch (error) {
|
||||
clean(localFilePath)
|
||||
core.setFailed(`Error extracting ${filename}: ${error}`)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
if (filename.endsWith('.tar.xz')) {
|
||||
try {
|
||||
core.info(`Extracting ${filename} to ${localFilePath}`)
|
||||
const files = await tc.extractTar(localFilePath, tempFolder)
|
||||
core.info(`Extracted ${files} files`)
|
||||
return
|
||||
// const decompressor = new xz.Decompressor()
|
||||
// const reader = fs.createReadStream(localFilePath).pipe(decompressor)
|
||||
// const tarWriter = tar.extract(tempFolder)
|
||||
// reader.pipe(tarWriter)
|
||||
// return new Promise((resolve, reject) => {
|
||||
// tarWriter.on('finish', () => {
|
||||
// core.info(`Extracted ${filename}`)
|
||||
// resolve()
|
||||
// })
|
||||
// tarWriter.on('error', err => {
|
||||
// core.setFailed(`Error extracting ${filename}: ${err}`)
|
||||
// clean(localFilePath)
|
||||
// reject(err)
|
||||
// })
|
||||
// })
|
||||
} catch (error) {
|
||||
clean(localFilePath)
|
||||
core.setFailed(`Error extracting ${filename}: ${error}`)
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { downloadVersion }
|
|
@ -0,0 +1,112 @@
|
|||
const core = require('@actions/core')
|
||||
const axios = require('axios')
|
||||
const { manifestBaseUrl } = require('./constants')
|
||||
|
||||
/**
|
||||
* Retrieves the latest version of a Flutter SDK release based on the specified parameters.
|
||||
* @param {string} osName - The name of the operating system.
|
||||
* @param {string} channel - The release channel (e.g., stable, beta, dev).
|
||||
* @param {string} arch - The architecture (e.g., x64, arm64).
|
||||
* @param {string} version - The specific version of the Flutter SDK (optional).
|
||||
* @returns {Promise<Object>} - The filtered entry containing the latest version details.
|
||||
* @throws {Error} - If the latest version cannot be retrieved or if the specified version or architecture is not found.
|
||||
*/
|
||||
async function getLatestVersion(osName, channel, arch, version) {
|
||||
if (!osName || osName === '') {
|
||||
osName = process.env['RUNNER_OS']
|
||||
}
|
||||
if (osName === 'darwin') {
|
||||
osName = 'macos'
|
||||
}
|
||||
if (!channel || channel === '') {
|
||||
channel = 'stable'
|
||||
}
|
||||
if (!arch || arch === '') {
|
||||
arch = process.env['RUNNER_ARCH'].toLowerCase()
|
||||
}
|
||||
if (arch === 'amd64') {
|
||||
arch = 'x64'
|
||||
}
|
||||
|
||||
const json_path = `releases_${osName}.json`
|
||||
const manifestUrl = `${manifestBaseUrl}/${json_path}`
|
||||
|
||||
try {
|
||||
core.info('Getting latest version...')
|
||||
const response = await axios.get(manifestUrl)
|
||||
const channelHash = response.data.current_release[channel]
|
||||
if (!channelHash) {
|
||||
core.setFailed(`Channel ${channel} not found`)
|
||||
return
|
||||
}
|
||||
|
||||
const channelEntries = []
|
||||
for (const [key, value] of Object.entries(response.data.releases)) {
|
||||
if (!version || version === '') {
|
||||
if (value.channel === channel) {
|
||||
channelEntries.push(value)
|
||||
}
|
||||
} else {
|
||||
if (arch && arch !== '') {
|
||||
if (
|
||||
value.version === version &&
|
||||
value.dart_sdk_arch === arch &&
|
||||
value.channel === channel
|
||||
) {
|
||||
channelEntries.push(value)
|
||||
}
|
||||
} else {
|
||||
channelEntries.push(value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let filteredEntry = {}
|
||||
|
||||
for (const entry of channelEntries) {
|
||||
if (version && version !== '' && arch && arch !== '') {
|
||||
if (entry.version === version && entry.dart_sdk_arch === arch) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
} else if (version && version !== '') {
|
||||
if (entry.version === version) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
} else if (arch && arch !== '') {
|
||||
if (entry.dart_sdk_arch === arch) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!filteredEntry.version) {
|
||||
if (version && version !== '' && arch && arch !== '') {
|
||||
core.setFailed(`Version ${version} with architecture ${arch} not found`)
|
||||
return
|
||||
}
|
||||
if (version && version !== '') {
|
||||
core.setFailed(`Version ${version} not found`)
|
||||
return
|
||||
}
|
||||
if (arch && arch !== '') {
|
||||
core.setFailed(`Architecture ${arch} not found`)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
core.setOutput('version', filteredEntry.version)
|
||||
core.setOutput('channel', filteredEntry.channel)
|
||||
core.setOutput('arch', filteredEntry.dart_sdk_arch)
|
||||
core.setOutput('archive', filteredEntry.archive)
|
||||
core.setOutput('hash', filteredEntry.sha256)
|
||||
core.info(`Latest version: ${filteredEntry.version}`)
|
||||
return filteredEntry
|
||||
}
|
||||
} catch (error) {
|
||||
core.setFailed('Failed to get the latest version')
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { getLatestVersion }
|
|
@ -0,0 +1,45 @@
|
|||
const core = require('@actions/core')
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const { decompressTempFolder } = require('./constants')
|
||||
|
||||
/**
|
||||
* Generates a cache key based on the provided release entity.
|
||||
* If no release entity is provided, the cache key is generated based on the current environment variables.
|
||||
*
|
||||
* @param {Object} releaseEntity - The release entity object.
|
||||
* @returns {string} The generated cache key.
|
||||
*/
|
||||
function getCacheKey(releaseEntity) {
|
||||
const cacheKey = core.getInput('cache-key')
|
||||
if (cacheKey && cacheKey !== '') {
|
||||
return cacheKey
|
||||
}
|
||||
|
||||
if (!releaseEntity) {
|
||||
return `flutter-${process.env['RUNNER_OS']}-${process.env['RUNNER_ARCH']}`
|
||||
}
|
||||
|
||||
return `flutter-${releaseEntity.channel}-${releaseEntity.version}-${releaseEntity.dart_sdk_arch}-${releaseEntity.hash}-${releaseEntity.sha256}`
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans up the temporary folder used for decompression.
|
||||
*/
|
||||
function clean() {
|
||||
const baseFolder = process.env['RUNNER_TEMP']
|
||||
const tempFolder = path.join(baseFolder, decompressTempFolder)
|
||||
if (fs.existsSync(tempFolder)) {
|
||||
core.info(`Cleaning up ${tempFolder}`)
|
||||
fs.rm(tempFolder, { recursive: true }, err => {
|
||||
if (err) {
|
||||
core.warning(`Error cleaning up ${tempFolder}: ${err}`)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getCacheKey,
|
||||
clean
|
||||
}
|
265
src/main.js
265
src/main.js
|
@ -1,6 +1,20 @@
|
|||
/**
|
||||
* @fileoverview This file contains the main logic for the setup-flutter action.
|
||||
* It exports the `run` and `getLatestVersion` functions.
|
||||
* The `run` function is the entry point of the action and handles the main workflow.
|
||||
* The `getLatestVersion` function retrieves the latest version of Flutter based on the specified channel, architecture, and version.
|
||||
*/
|
||||
|
||||
const fs = require('fs')
|
||||
const core = require('@actions/core')
|
||||
const axios = require('axios')
|
||||
const { wait } = require('./wait')
|
||||
const path = require('path')
|
||||
const { getLatestVersion } = require('./get-latest-version')
|
||||
const exec = require('@actions/exec')
|
||||
const { clean, getCacheKey } = require('./helpers')
|
||||
const { downloadVersion } = require('./download-version')
|
||||
const tc = require('@actions/tool-cache')
|
||||
|
||||
const decompressTempFolder = '__decompress_temp'
|
||||
|
||||
/**
|
||||
* The main function for the action.
|
||||
|
@ -8,109 +22,166 @@ const { wait } = require('./wait')
|
|||
*/
|
||||
async function run() {
|
||||
try {
|
||||
const ms = core.getInput('milliseconds', { required: true })
|
||||
let arch = core.getInput('architecture')
|
||||
const version = core.getInput('flutter-version')
|
||||
let channel = core.getInput('channel')
|
||||
|
||||
// Debug logs are only output if the `ACTIONS_STEP_DEBUG` secret is true
|
||||
core.debug(`Waiting ${ms} milliseconds ...`)
|
||||
let osName = process.env['RUNNER_OS']
|
||||
if (osName === 'darwin') {
|
||||
osName = 'macos'
|
||||
}
|
||||
|
||||
// Log the current timestamp, wait, then log the new timestamp
|
||||
core.debug(new Date().toTimeString())
|
||||
await wait(parseInt(ms, 10))
|
||||
core.debug(new Date().toTimeString())
|
||||
if (!arch || arch === '') {
|
||||
arch = process.env['RUNNER_ARCH'].toLowerCase()
|
||||
}
|
||||
|
||||
// Set outputs for other workflow steps to use
|
||||
core.setOutput('time', new Date().toTimeString())
|
||||
if (!channel || channel === '') {
|
||||
channel = 'stable'
|
||||
}
|
||||
|
||||
// sometimes the x64 architecture is reported as amd64
|
||||
if (arch !== undefined && arch !== '') {
|
||||
if (arch === 'amd64') {
|
||||
arch = 'x64'
|
||||
}
|
||||
}
|
||||
|
||||
const releaseEntity = await getLatestVersion(osName, channel, arch, version)
|
||||
|
||||
const baseFolder = process.env['RUNNER_TEMP']
|
||||
const tempFolder = path.join(baseFolder, decompressTempFolder)
|
||||
const flutterFolder = path.join(tempFolder, 'flutter')
|
||||
let cacheBaseFolder = core.getInput('cache-path')
|
||||
if (!cacheBaseFolder || cacheBaseFolder === '') {
|
||||
cacheBaseFolder = process.env['RUNNER_TOOL_CACHE']
|
||||
}
|
||||
|
||||
const cacheFolder = path.join(cacheBaseFolder, getCacheKey(releaseEntity))
|
||||
if (core.getBooleanInput('query-only')) {
|
||||
core.setOutput('channel', releaseEntity.channel)
|
||||
core.setOutput('version', releaseEntity.version)
|
||||
core.setOutput('architecture', releaseEntity.dart_sdk_arch)
|
||||
core.setOutput('cache-path', cacheFolder)
|
||||
core.setOutput('cache-key', getCacheKey(releaseEntity))
|
||||
} else {
|
||||
const flutterDirectory = tc.find(
|
||||
'flutter',
|
||||
releaseEntity.version,
|
||||
releaseEntity.dart_sdk_arch
|
||||
)
|
||||
if (flutterDirectory) {
|
||||
core.info(
|
||||
`Found Flutter in cache ${flutterDirectory}, skipping installation`
|
||||
)
|
||||
core.setOutput('used-cached', 'true')
|
||||
core.addPath(path.join(flutterDirectory, 'bin'))
|
||||
core.exportVariable('FLUTTER_HOME', flutterDirectory)
|
||||
core.exportVariable(
|
||||
'PUB_CACHE',
|
||||
path.join(flutterDirectory, '.pub-cache')
|
||||
)
|
||||
core.addPath(path.join(flutterDirectory, 'bin'))
|
||||
core.addPath(
|
||||
path.join(flutterDirectory, 'bin', 'cache', 'dart-sdk', 'bin')
|
||||
)
|
||||
core.addPath(path.join(flutterDirectory, '.pub-cache', 'bin'))
|
||||
|
||||
core.setOutput('channel', releaseEntity.channel)
|
||||
core.setOutput('version', releaseEntity.version)
|
||||
core.setOutput('architecture', releaseEntity.dart_sdk_arch)
|
||||
core.setOutput('cache-path', cacheFolder)
|
||||
core.setOutput('cache-key', getCacheKey(releaseEntity))
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
await downloadVersion(releaseEntity)
|
||||
} catch (error) {
|
||||
core.setFailed(error)
|
||||
return
|
||||
}
|
||||
|
||||
core.info(`Installing Flutter ${releaseEntity.version}...`)
|
||||
|
||||
fs.mkdirSync(cacheFolder, { recursive: true })
|
||||
try {
|
||||
fs.renameSync(flutterFolder, cacheFolder)
|
||||
} catch (error) {
|
||||
core.error(`Error moving ${flutterFolder} to ${cacheFolder}: ${error}`)
|
||||
core.setFailed(
|
||||
`Error moving ${flutterFolder} to ${cacheFolder}: ${error}`
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
let output = ''
|
||||
let errorOutput = ''
|
||||
|
||||
const options = {}
|
||||
options.listeners = {
|
||||
stdout: data => {
|
||||
output += data.toString()
|
||||
},
|
||||
stderr: data => {
|
||||
errorOutput += data.toString()
|
||||
}
|
||||
}
|
||||
await exec.exec(
|
||||
`"${path.join(cacheFolder, 'bin', 'flutter')}"`,
|
||||
['doctor', '-v'],
|
||||
options
|
||||
)
|
||||
core.setOutput('doctor-output', output)
|
||||
|
||||
output = ''
|
||||
errorOutput = ''
|
||||
await exec.exec(
|
||||
`"${path.join(cacheFolder, 'bin', 'flutter')}"`,
|
||||
['--version'],
|
||||
options
|
||||
)
|
||||
core.setOutput('version-output', output)
|
||||
|
||||
output = ''
|
||||
errorOutput = ''
|
||||
await exec.exec(
|
||||
`"${path.join(cacheFolder, 'bin', 'flutter')}"`,
|
||||
['precache'],
|
||||
options
|
||||
)
|
||||
core.setOutput('precache-output', output)
|
||||
|
||||
core.exportVariable('FLUTTER_HOME', path.join(cacheFolder))
|
||||
core.exportVariable('PUB_CACHE', path.join(cacheFolder, '.pub-cache'))
|
||||
core.addPath(path.join(cacheFolder, 'bin'))
|
||||
core.addPath(path.join(cacheFolder, 'bin', 'cache', 'dart-sdk', 'bin'))
|
||||
core.addPath(path.join(cacheFolder, '.pub-cache', 'bin'))
|
||||
|
||||
core.setOutput('channel', releaseEntity.channel)
|
||||
core.setOutput('version', releaseEntity.version)
|
||||
core.setOutput('architecture', releaseEntity.dart_sdk_arch)
|
||||
core.setOutput('cache-path', cacheFolder)
|
||||
core.setOutput('cache-key', getCacheKey(releaseEntity))
|
||||
clean()
|
||||
|
||||
if (core.getBooleanInput('cache')) {
|
||||
core.info(`Caching ${cacheFolder}...`)
|
||||
const cachePath = await tc.cacheDir(
|
||||
cacheFolder,
|
||||
'flutter',
|
||||
releaseEntity.version,
|
||||
releaseEntity.dart_sdk_arch
|
||||
)
|
||||
core.info(`Cache ID: ${cachePath}`)
|
||||
core.addPath(cachePath)
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
// Fail the workflow run if an error occurs
|
||||
core.setFailed(error.message)
|
||||
}
|
||||
}
|
||||
|
||||
async function getLatestVersion(channel, arch, version) {
|
||||
let osName = process.env['RUNNER_OS']
|
||||
if (osName === 'darwin') {
|
||||
osName = 'macos'
|
||||
}
|
||||
|
||||
// sometimes the x64 architecture is reported as amd64
|
||||
if (arch !== undefined && arch !== '') {
|
||||
if (arch === 'amd64') {
|
||||
arch = 'x64'
|
||||
}
|
||||
}
|
||||
|
||||
const manifestBaseUrl =
|
||||
'https://storage.googleapis.com/flutter_infra_release/releases'
|
||||
const json_path = `releases_${osName}.json`
|
||||
const manifestUrl = `${manifestBaseUrl}/${json_path}`
|
||||
|
||||
try {
|
||||
core.info('Getting latest version...')
|
||||
const response = await axios.get(manifestUrl)
|
||||
const channelHash = response.data.current_release[channel]
|
||||
if (!channelHash) {
|
||||
core.setFailed(`Channel ${channel} not found`)
|
||||
return
|
||||
}
|
||||
|
||||
const channelEntries = []
|
||||
for (const [key, value] of Object.entries(response.data.releases)) {
|
||||
if (value.hash === channelHash) {
|
||||
channelEntries.push(value)
|
||||
}
|
||||
}
|
||||
|
||||
if ((!arch || arch === '') && (!version || version === '')) {
|
||||
core.setOutput('version', channelEntries[0].version)
|
||||
core.info(`Latest version: ${channelEntries[0].version}`)
|
||||
return channelEntries[0].version
|
||||
}
|
||||
|
||||
let filteredEntry = {}
|
||||
|
||||
for (const entry of channelEntries) {
|
||||
if (version && version !== '' && arch && arch !== '') {
|
||||
if (entry.version === version && entry.dart_sdk_arch === arch) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
} else if (version && version !== '') {
|
||||
if (entry.version === version) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
} else if (arch && arch !== '') {
|
||||
if (entry.dart_sdk_arch === arch) {
|
||||
filteredEntry = entry
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!filteredEntry.version) {
|
||||
if (version && version !== '' && arch && arch !== '') {
|
||||
core.setFailed(`Version ${version} with architecture ${arch} not found`)
|
||||
return
|
||||
}
|
||||
if (version && version !== '') {
|
||||
core.setFailed(`Version ${version} not found`)
|
||||
return
|
||||
}
|
||||
if (arch && arch !== '') {
|
||||
core.setFailed(`Architecture ${arch} not found`)
|
||||
return
|
||||
}
|
||||
} else {
|
||||
core.setOutput('version', filteredEntry.version)
|
||||
core.info(`Latest version: ${filteredEntry.version}`)
|
||||
return filteredEntry.version
|
||||
}
|
||||
} catch (error) {
|
||||
core.setFailed('Failed to get the latest version')
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
run,
|
||||
getLatestVersion
|
||||
run
|
||||
}
|
||||
|
|
17
src/wait.js
17
src/wait.js
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* Wait for a number of milliseconds.
|
||||
*
|
||||
* @param {number} milliseconds The number of milliseconds to wait.
|
||||
* @returns {Promise<string>} Resolves with 'done!' after the wait is over.
|
||||
*/
|
||||
async function wait(milliseconds) {
|
||||
return new Promise(resolve => {
|
||||
if (isNaN(milliseconds)) {
|
||||
throw new Error('milliseconds not a number')
|
||||
}
|
||||
|
||||
setTimeout(() => resolve('done!'), milliseconds)
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = { wait }
|
462
yarn.lock
462
yarn.lock
|
@ -7,7 +7,7 @@
|
|||
resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf"
|
||||
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
|
||||
|
||||
"@actions/core@^1.10.1":
|
||||
"@actions/core@^1.10.1", "@actions/core@^1.2.6":
|
||||
version "1.10.1"
|
||||
resolved "https://registry.yarnpkg.com/@actions/core/-/core-1.10.1.tgz#61108e7ac40acae95ee36da074fa5850ca4ced8a"
|
||||
integrity sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==
|
||||
|
@ -15,7 +15,14 @@
|
|||
"@actions/http-client" "^2.0.1"
|
||||
uuid "^8.3.2"
|
||||
|
||||
"@actions/http-client@^2.0.1":
|
||||
"@actions/exec@^1.0.0", "@actions/exec@^1.1.1":
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@actions/exec/-/exec-1.1.1.tgz#2e43f28c54022537172819a7cf886c844221a611"
|
||||
integrity sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==
|
||||
dependencies:
|
||||
"@actions/io" "^1.0.1"
|
||||
|
||||
"@actions/http-client@^2.0.1", "@actions/http-client@^2.2.0":
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@actions/http-client/-/http-client-2.2.0.tgz#f8239f375be6185fcd07765efdcf0031ad5df1a0"
|
||||
integrity sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==
|
||||
|
@ -23,6 +30,23 @@
|
|||
tunnel "^0.0.6"
|
||||
undici "^5.25.4"
|
||||
|
||||
"@actions/io@^1.0.1", "@actions/io@^1.1.1":
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/@actions/io/-/io-1.1.3.tgz#4cdb6254da7962b07473ff5c335f3da485d94d71"
|
||||
integrity sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q==
|
||||
|
||||
"@actions/tool-cache@^2.0.1":
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/@actions/tool-cache/-/tool-cache-2.0.1.tgz#8a649b9c07838d9d750c9864814e66a7660ab720"
|
||||
integrity sha512-iPU+mNwrbA8jodY8eyo/0S/QqCKDajiR8OxWTnSk/SnYg0sj8Hp4QcUEVC1YFpHWXtrfbQrE13Jz4k4HXJQKcA==
|
||||
dependencies:
|
||||
"@actions/core" "^1.2.6"
|
||||
"@actions/exec" "^1.0.0"
|
||||
"@actions/http-client" "^2.0.1"
|
||||
"@actions/io" "^1.1.1"
|
||||
semver "^6.1.0"
|
||||
uuid "^3.3.2"
|
||||
|
||||
"@ampproject/remapping@^2.2.0":
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
|
||||
|
@ -1789,6 +1813,11 @@ axobject-query@^3.2.1:
|
|||
dependencies:
|
||||
dequal "^2.0.3"
|
||||
|
||||
b4a@^1.6.4:
|
||||
version "1.6.4"
|
||||
resolved "https://registry.yarnpkg.com/b4a/-/b4a-1.6.4.tgz#ef1c1422cae5ce6535ec191baeed7567443f36c9"
|
||||
integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==
|
||||
|
||||
babel-jest@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
|
||||
|
@ -1878,11 +1907,24 @@ balanced-match@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
||||
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
||||
|
||||
base64-js@^1.3.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
|
||||
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
||||
|
||||
big-integer@^1.6.44:
|
||||
version "1.6.52"
|
||||
resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85"
|
||||
integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==
|
||||
|
||||
bl@^1.0.0:
|
||||
version "1.2.3"
|
||||
resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7"
|
||||
integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==
|
||||
dependencies:
|
||||
readable-stream "^2.3.5"
|
||||
safe-buffer "^5.1.1"
|
||||
|
||||
bplist-parser@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.2.0.tgz#43a9d183e5bf9d545200ceac3e712f79ebbe8d0e"
|
||||
|
@ -1922,11 +1964,42 @@ bser@2.1.1:
|
|||
dependencies:
|
||||
node-int64 "^0.4.0"
|
||||
|
||||
buffer-alloc-unsafe@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0"
|
||||
integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==
|
||||
|
||||
buffer-alloc@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec"
|
||||
integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==
|
||||
dependencies:
|
||||
buffer-alloc-unsafe "^1.1.0"
|
||||
buffer-fill "^1.0.0"
|
||||
|
||||
buffer-crc32@~0.2.3:
|
||||
version "0.2.13"
|
||||
resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
|
||||
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
|
||||
|
||||
buffer-fill@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c"
|
||||
integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==
|
||||
|
||||
buffer-from@^1.0.0:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
|
||||
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
||||
|
||||
buffer@^5.2.1:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
|
||||
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
||||
dependencies:
|
||||
base64-js "^1.3.1"
|
||||
ieee754 "^1.1.13"
|
||||
|
||||
bundle-name@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/bundle-name/-/bundle-name-3.0.0.tgz#ba59bcc9ac785fb67ccdbf104a2bf60c099f0e1a"
|
||||
|
@ -1985,6 +2058,11 @@ char-regex@^1.0.2:
|
|||
resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
|
||||
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
|
||||
|
||||
chownr@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece"
|
||||
integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==
|
||||
|
||||
ci-info@^3.2.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
|
||||
|
@ -2045,6 +2123,11 @@ combined-stream@^1.0.8:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^2.8.1:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
||||
concat-map@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
|
@ -2062,6 +2145,11 @@ core-js-compat@^3.31.0, core-js-compat@^3.33.1:
|
|||
dependencies:
|
||||
browserslist "^4.22.2"
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||
|
||||
create-jest@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
|
||||
|
@ -2103,6 +2191,59 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
|
|||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1"
|
||||
integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==
|
||||
dependencies:
|
||||
file-type "^5.2.0"
|
||||
is-stream "^1.1.0"
|
||||
tar-stream "^1.5.2"
|
||||
|
||||
decompress-tarbz2@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b"
|
||||
integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==
|
||||
dependencies:
|
||||
decompress-tar "^4.1.0"
|
||||
file-type "^6.1.0"
|
||||
is-stream "^1.1.0"
|
||||
seek-bzip "^1.0.5"
|
||||
unbzip2-stream "^1.0.9"
|
||||
|
||||
decompress-targz@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee"
|
||||
integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==
|
||||
dependencies:
|
||||
decompress-tar "^4.1.1"
|
||||
file-type "^5.2.0"
|
||||
is-stream "^1.1.0"
|
||||
|
||||
decompress-unzip@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69"
|
||||
integrity sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==
|
||||
dependencies:
|
||||
file-type "^3.8.0"
|
||||
get-stream "^2.2.0"
|
||||
pify "^2.3.0"
|
||||
yauzl "^2.4.2"
|
||||
|
||||
decompress@^4.2.1:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118"
|
||||
integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==
|
||||
dependencies:
|
||||
decompress-tar "^4.0.0"
|
||||
decompress-tarbz2 "^4.0.0"
|
||||
decompress-targz "^4.0.0"
|
||||
decompress-unzip "^4.0.1"
|
||||
graceful-fs "^4.1.10"
|
||||
make-dir "^1.0.0"
|
||||
pify "^2.3.0"
|
||||
strip-dirs "^2.0.0"
|
||||
|
||||
dedent@^1.0.0:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.1.tgz#4f3fc94c8b711e9bb2800d185cd6ad20f2a90aff"
|
||||
|
@ -2220,6 +2361,13 @@ emoji-regex@^9.2.2:
|
|||
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
|
||||
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
||||
|
||||
end-of-stream@^1.0.0, end-of-stream@^1.1.0:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
|
||||
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
||||
dependencies:
|
||||
once "^1.4.0"
|
||||
|
||||
error-ex@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
|
||||
|
@ -2650,6 +2798,11 @@ fast-diff@^1.1.2:
|
|||
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
|
||||
integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
|
||||
|
||||
fast-fifo@^1.1.0, fast-fifo@^1.2.0:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c"
|
||||
integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
|
||||
|
||||
fast-glob@^3.2.9, fast-glob@^3.3.0:
|
||||
version "3.3.2"
|
||||
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
|
||||
|
@ -2685,6 +2838,13 @@ fb-watchman@^2.0.0:
|
|||
dependencies:
|
||||
bser "2.1.1"
|
||||
|
||||
fd-slicer@~1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
|
||||
integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
|
||||
dependencies:
|
||||
pend "~1.2.0"
|
||||
|
||||
file-entry-cache@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027"
|
||||
|
@ -2692,6 +2852,21 @@ file-entry-cache@^6.0.1:
|
|||
dependencies:
|
||||
flat-cache "^3.0.4"
|
||||
|
||||
file-type@^3.8.0:
|
||||
version "3.9.0"
|
||||
resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9"
|
||||
integrity sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==
|
||||
|
||||
file-type@^5.2.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6"
|
||||
integrity sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==
|
||||
|
||||
file-type@^6.1.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919"
|
||||
integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==
|
||||
|
||||
fill-range@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
|
||||
|
@ -2750,6 +2925,18 @@ form-data@^4.0.0:
|
|||
combined-stream "^1.0.8"
|
||||
mime-types "^2.1.12"
|
||||
|
||||
fs-constants@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
|
||||
integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
|
||||
|
||||
fs-minipass@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb"
|
||||
integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
|
||||
fs.realpath@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
|
||||
|
@ -2805,6 +2992,14 @@ get-package-type@^0.1.0:
|
|||
resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
|
||||
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
||||
|
||||
get-stream@^2.2.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de"
|
||||
integrity sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==
|
||||
dependencies:
|
||||
object-assign "^4.0.1"
|
||||
pinkie-promise "^2.0.0"
|
||||
|
||||
get-stream@^6.0.0, get-stream@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
|
||||
|
@ -2882,7 +3077,7 @@ gopd@^1.0.1:
|
|||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
graceful-fs@^4.2.9:
|
||||
graceful-fs@^4.1.10, graceful-fs@^4.2.9:
|
||||
version "4.2.11"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
|
||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||
|
@ -2953,6 +3148,11 @@ human-signals@^4.3.0:
|
|||
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2"
|
||||
integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==
|
||||
|
||||
ieee754@^1.1.13:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
||||
|
||||
ignore@^5.0.5, ignore@^5.2.0, ignore@^5.2.4:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
|
||||
|
@ -2987,7 +3187,7 @@ inflight@^1.0.4:
|
|||
once "^1.3.0"
|
||||
wrappy "1"
|
||||
|
||||
inherits@2:
|
||||
inherits@2, inherits@~2.0.3:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
@ -3114,6 +3314,11 @@ is-map@^2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127"
|
||||
integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==
|
||||
|
||||
is-natural-number@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8"
|
||||
integrity sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==
|
||||
|
||||
is-negative-zero@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
|
||||
|
@ -3156,6 +3361,11 @@ is-shared-array-buffer@^1.0.2:
|
|||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
is-stream@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
|
||||
integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
|
||||
|
||||
is-stream@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
|
||||
|
@ -3219,6 +3429,11 @@ isarray@^2.0.5:
|
|||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
||||
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
||||
|
||||
isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
|
@ -3825,6 +4040,13 @@ make-coverage-badge@^1.2.0:
|
|||
dependencies:
|
||||
mri "1.1.4"
|
||||
|
||||
make-dir@^1.0.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c"
|
||||
integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==
|
||||
dependencies:
|
||||
pify "^3.0.0"
|
||||
|
||||
make-dir@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e"
|
||||
|
@ -3891,6 +4113,36 @@ minimist@^1.2.0, minimist@^1.2.6:
|
|||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
||||
|
||||
minipass@^3.0.0:
|
||||
version "3.3.6"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a"
|
||||
integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
minipass@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d"
|
||||
integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
|
||||
|
||||
minizlib@^2.1.1:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931"
|
||||
integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==
|
||||
dependencies:
|
||||
minipass "^3.0.0"
|
||||
yallist "^4.0.0"
|
||||
|
||||
mkdirp-classic@^0.5.2:
|
||||
version "0.5.3"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
|
||||
integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
|
||||
|
||||
mkdirp@^1.0.3:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
|
||||
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
|
||||
|
||||
mri@1.1.4:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a"
|
||||
|
@ -3911,6 +4163,11 @@ natural-compare@^1.4.0:
|
|||
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
|
||||
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
||||
|
||||
node-addon-api@^1.6.1:
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-1.7.2.tgz#3df30b95720b53c24e59948b49532b662444f54d"
|
||||
integrity sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==
|
||||
|
||||
node-int64@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
|
||||
|
@ -3940,6 +4197,11 @@ npm-run-path@^5.1.0:
|
|||
dependencies:
|
||||
path-key "^4.0.0"
|
||||
|
||||
object-assign@^4.0.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
|
||||
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
||||
|
||||
object-inspect@^1.13.1, object-inspect@^1.9.0:
|
||||
version "1.13.1"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
|
||||
|
@ -3997,7 +4259,7 @@ object.values@^1.1.6, object.values@^1.1.7:
|
|||
define-properties "^1.2.0"
|
||||
es-abstract "^1.22.1"
|
||||
|
||||
once@^1.3.0:
|
||||
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
|
||||
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
||||
|
@ -4120,6 +4382,11 @@ path-type@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
|
||||
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
||||
|
||||
pend@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
|
||||
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
|
||||
|
||||
picocolors@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||
|
@ -4130,6 +4397,28 @@ picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1:
|
|||
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
|
||||
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
||||
|
||||
pify@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
|
||||
integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
|
||||
|
||||
pify@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176"
|
||||
integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==
|
||||
|
||||
pinkie-promise@^2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
|
||||
integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==
|
||||
dependencies:
|
||||
pinkie "^2.0.0"
|
||||
|
||||
pinkie@^2.0.0:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
|
||||
integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==
|
||||
|
||||
pirates@^4.0.4:
|
||||
version "4.0.6"
|
||||
resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
|
@ -4168,6 +4457,11 @@ pretty-format@^29.7.0:
|
|||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
process-nextick-args@~2.0.0:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
||||
|
||||
prompts@^2.0.1:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
|
||||
|
@ -4181,6 +4475,14 @@ proxy-from-env@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
|
||||
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
||||
|
||||
pump@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
|
||||
integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
|
||||
dependencies:
|
||||
end-of-stream "^1.1.0"
|
||||
once "^1.3.1"
|
||||
|
||||
punycode@^2.1.0:
|
||||
version "2.3.1"
|
||||
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
|
||||
|
@ -4196,11 +4498,29 @@ queue-microtask@^1.2.2:
|
|||
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
|
||||
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
||||
|
||||
queue-tick@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/queue-tick/-/queue-tick-1.0.1.tgz#f6f07ac82c1fd60f82e098b417a80e52f1f4c142"
|
||||
integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==
|
||||
|
||||
react-is@^18.0.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||
|
||||
readable-stream@^2.3.0, readable-stream@^2.3.5:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
|
||||
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
|
||||
dependencies:
|
||||
core-util-is "~1.0.0"
|
||||
inherits "~2.0.3"
|
||||
isarray "~1.0.0"
|
||||
process-nextick-args "~2.0.0"
|
||||
safe-buffer "~5.1.1"
|
||||
string_decoder "~1.1.1"
|
||||
util-deprecate "~1.0.1"
|
||||
|
||||
reflect.getprototypeof@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3"
|
||||
|
@ -4337,6 +4657,16 @@ safe-array-concat@^1.0.1:
|
|||
has-symbols "^1.0.3"
|
||||
isarray "^2.0.5"
|
||||
|
||||
safe-buffer@^5.1.1:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
|
||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||
|
||||
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
|
||||
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
||||
|
||||
safe-regex-test@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295"
|
||||
|
@ -4346,7 +4676,14 @@ safe-regex-test@^1.0.0:
|
|||
get-intrinsic "^1.1.3"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
semver@^6.3.0, semver@^6.3.1:
|
||||
seek-bzip@^1.0.5:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4"
|
||||
integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==
|
||||
dependencies:
|
||||
commander "^2.8.1"
|
||||
|
||||
semver@^6.1.0, semver@^6.3.0, semver@^6.3.1:
|
||||
version "6.3.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
|
||||
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
||||
|
@ -4438,6 +4775,14 @@ stack-utils@^2.0.3:
|
|||
dependencies:
|
||||
escape-string-regexp "^2.0.0"
|
||||
|
||||
streamx@^2.15.0:
|
||||
version "2.15.6"
|
||||
resolved "https://registry.yarnpkg.com/streamx/-/streamx-2.15.6.tgz#28bf36997ebc7bf6c08f9eba958735231b833887"
|
||||
integrity sha512-q+vQL4AAz+FdfT137VF69Cc/APqUbxy+MDOImRrMvchJpigHj9GksgDU2LYbO9rx7RX6osWgxJB2WxhYv4SZAw==
|
||||
dependencies:
|
||||
fast-fifo "^1.1.0"
|
||||
queue-tick "^1.0.1"
|
||||
|
||||
string-length@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
|
||||
|
@ -4482,6 +4827,13 @@ string.prototype.trimstart@^1.0.7:
|
|||
define-properties "^1.2.0"
|
||||
es-abstract "^1.22.1"
|
||||
|
||||
string_decoder@~1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
|
||||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
||||
dependencies:
|
||||
safe-buffer "~5.1.0"
|
||||
|
||||
strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
||||
version "6.0.1"
|
||||
resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
|
||||
|
@ -4499,6 +4851,13 @@ strip-bom@^4.0.0:
|
|||
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
|
||||
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
|
||||
|
||||
strip-dirs@^2.0.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5"
|
||||
integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==
|
||||
dependencies:
|
||||
is-natural-number "^4.0.1"
|
||||
|
||||
strip-final-newline@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
|
||||
|
@ -4553,6 +4912,49 @@ synckit@^0.8.5:
|
|||
"@pkgr/utils" "^2.4.2"
|
||||
tslib "^2.6.2"
|
||||
|
||||
tar-fs@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-3.0.4.tgz#a21dc60a2d5d9f55e0089ccd78124f1d3771dbbf"
|
||||
integrity sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==
|
||||
dependencies:
|
||||
mkdirp-classic "^0.5.2"
|
||||
pump "^3.0.0"
|
||||
tar-stream "^3.1.5"
|
||||
|
||||
tar-stream@^1.5.2:
|
||||
version "1.6.2"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555"
|
||||
integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==
|
||||
dependencies:
|
||||
bl "^1.0.0"
|
||||
buffer-alloc "^1.2.0"
|
||||
end-of-stream "^1.0.0"
|
||||
fs-constants "^1.0.0"
|
||||
readable-stream "^2.3.0"
|
||||
to-buffer "^1.1.1"
|
||||
xtend "^4.0.0"
|
||||
|
||||
tar-stream@^3.1.5:
|
||||
version "3.1.6"
|
||||
resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-3.1.6.tgz#6520607b55a06f4a2e2e04db360ba7d338cc5bab"
|
||||
integrity sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==
|
||||
dependencies:
|
||||
b4a "^1.6.4"
|
||||
fast-fifo "^1.2.0"
|
||||
streamx "^2.15.0"
|
||||
|
||||
tar@^6.2.0:
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.0.tgz#b14ce49a79cb1cd23bc9b016302dea5474493f73"
|
||||
integrity sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==
|
||||
dependencies:
|
||||
chownr "^2.0.0"
|
||||
fs-minipass "^2.0.0"
|
||||
minipass "^5.0.0"
|
||||
minizlib "^2.1.1"
|
||||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
|
||||
test-exclude@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
|
||||
|
@ -4567,6 +4969,11 @@ text-table@^0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
|
||||
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
||||
|
||||
through@^2.3.8:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
|
||||
|
||||
titleize@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/titleize/-/titleize-3.0.0.tgz#71c12eb7fdd2558aa8a44b0be83b8a76694acd53"
|
||||
|
@ -4577,6 +4984,11 @@ tmpl@1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
|
||||
integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
|
||||
|
||||
to-buffer@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80"
|
||||
integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==
|
||||
|
||||
to-fast-properties@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"
|
||||
|
@ -4697,6 +5109,14 @@ unbox-primitive@^1.0.2:
|
|||
has-symbols "^1.0.3"
|
||||
which-boxed-primitive "^1.0.2"
|
||||
|
||||
unbzip2-stream@^1.0.9:
|
||||
version "1.4.3"
|
||||
resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
|
||||
integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
|
||||
dependencies:
|
||||
buffer "^5.2.1"
|
||||
through "^2.3.8"
|
||||
|
||||
undici-types@~5.26.4:
|
||||
version "5.26.5"
|
||||
resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
|
||||
|
@ -4752,6 +5172,16 @@ uri-js@^4.2.2:
|
|||
dependencies:
|
||||
punycode "^2.1.0"
|
||||
|
||||
util-deprecate@~1.0.1:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
uuid@^3.3.2:
|
||||
version "3.4.0"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
uuid@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
|
||||
|
@ -4852,6 +5282,18 @@ write-file-atomic@^4.0.2:
|
|||
imurmurhash "^0.1.4"
|
||||
signal-exit "^3.0.7"
|
||||
|
||||
xtend@^4.0.0:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
xz@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/xz/-/xz-2.0.2.tgz#6f9effc94319c96e8919be8779a3af2689742dd1"
|
||||
integrity sha512-K0rWxVLh2yRuvM0alMiwzxkkygUZcrJ8pNZ0JT0yTGoZ0FyqwHnY6Mbt7BcATP9abMVeCpiEqmear2ixHZSaLQ==
|
||||
dependencies:
|
||||
node-addon-api "^1.6.1"
|
||||
|
||||
y18n@^5.0.5:
|
||||
version "5.0.8"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
|
||||
|
@ -4885,6 +5327,14 @@ yargs@^17.3.1:
|
|||
y18n "^5.0.5"
|
||||
yargs-parser "^21.1.1"
|
||||
|
||||
yauzl@^2.4.2:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
|
||||
integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
|
||||
dependencies:
|
||||
buffer-crc32 "~0.2.3"
|
||||
fd-slicer "~1.1.0"
|
||||
|
||||
yocto-queue@^0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
|
|
Loading…
Reference in New Issue