本文整理汇总了TypeScript中builder-util-runtime.DigestTransform类的典型用法代码示例。如果您正苦于以下问题:TypeScript DigestTransform类的具体用法?TypeScript DigestTransform怎么用?TypeScript DigestTransform使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了DigestTransform类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: BluebirdPromise
await new BluebirdPromise((resolve, reject) => {
const streams: Array<any> = []
const digestTransform = new DigestTransform(this.blockAwareFileInfo.sha512)
// to simply debug, do manual validation to allow file to be fully written
digestTransform.isValidateOnEnd = false
streams.push(digestTransform)
// noinspection JSArrowFunctionCanBeReplacedWithShorthand
fileOut.on("finish", () => {
(fileOut.close as any)(() => {
try {
digestTransform.validate()
}
catch (e) {
reject(e)
return
}
resolve()
})
})
streams.push(fileOut)
let lastStream = null
for (const stream of streams) {
stream.on("error", reject)
if (lastStream == null) {
lastStream = stream
}
else {
lastStream = lastStream.pipe(stream)
}
}
const firstStream = streams[0]
let w: any
if (this.options.useMultipleRangeRequest) {
w = executeTasks(this, tasks, firstStream, oldFileFd, reject)
}
else {
let attemptCount = 0
let actualUrl: string | null = null
this.logger.info(`Differential download: ${this.options.newUrl}`)
w = (index: number) => {
if (index >= tasks.length) {
if (this.fileMetadataBuffer != null) {
firstStream.write(this.fileMetadataBuffer)
}
firstStream.end()
return
}
const operation = tasks[index++]
if (operation.kind === OperationKind.COPY) {
copyData(operation, firstStream, oldFileFd, reject, () => w(index))
}
else {
const requestOptions = this.createRequestOptions("get", actualUrl)
const range = `bytes=${operation.start}-${operation.end - 1}`
requestOptions.headers!!.Range = range;
(requestOptions as any).redirect = "manual"
const debug = this.logger.debug
if (debug != null) {
debug(`effective url: ${actualUrl == null ? "" : removeQuery(actualUrl)}, range: ${range}`)
}
const request = this.httpExecutor.doRequest(requestOptions, response => {
// Electron net handles redirects automatically, our NodeJS test server doesn't use redirects - so, we don't check 3xx codes.
if (response.statusCode >= 400) {
reject(createHttpError(response))
}
response.pipe(firstStream, {
end: false
})
response.once("end", () => {
if (++attemptCount === 100) {
attemptCount = 0
setTimeout(() => w(index), 1000)
}
else {
w(index)
}
})
})
request.on("redirect", (statusCode: number, method: string, redirectUrl: string) => {
this.logger.info(`Redirect to ${removeQuery(redirectUrl)}`)
actualUrl = redirectUrl
request.followRedirect()
})
this.httpExecutor.addErrorAndTimeoutHandlers(request, reject)
request.end()
}
}
}
if (signature == null) {
//.........这里部分代码省略.........
示例2: BluebirdPromise
await new BluebirdPromise((resolve, reject) => {
const streams: Array<any> = []
const digestTransform = new DigestTransform(this.packageInfo.sha512)
// to simply debug, do manual validation to allow file to be fully written
digestTransform.isValidateOnEnd = false
streams.push(digestTransform)
const fileOut = createWriteStream(this.options.packagePath)
fileOut.on("finish", () => {
(fileOut.close as any)(() => {
try {
digestTransform.validate()
}
catch (e) {
reject(e)
return
}
resolve()
})
})
streams.push(fileOut)
let lastStream = null
for (const stream of streams) {
stream.on("error", reject)
if (lastStream == null) {
lastStream = stream
}
else {
lastStream = lastStream.pipe(stream)
}
}
const firstStream = streams[0]
const w = (index: number) => {
if (index >= operations.length) {
firstStream.end(this.fileMetadataBuffer)
return
}
const operation = operations[index++]
if (operation.kind === OperationKind.COPY) {
const readStream = createReadStream(this.options.oldPackageFile, {
fd: oldFileFd,
autoClose: false,
start: operation.start,
// end is inclusive
end: operation.end - 1,
})
readStream.on("error", reject)
readStream.once("end", () => w(index))
readStream.pipe(firstStream, {
end: false
})
}
else {
// https://github.com/electron-userland/electron-builder/issues/1523#issuecomment-327084661
// todo to reduce http requests we need to consolidate non sequential download operations (Multipart ranges)
const requestOptions = this.createRequestOptions("get")
requestOptions.headers!!.Range = `bytes=${operation.start}-${operation.end - 1}`
const request = this.httpExecutor.doRequest(requestOptions, response => {
// Electron net handles redirects automatically, our NodeJS test server doesn't use redirects - so, we don't check 3xx codes.
if (response.statusCode >= 400) {
reject(new HttpError(response))
}
response.pipe(firstStream, {
end: false
})
response.once("end", () => w(index))
})
this.httpExecutor.addErrorAndTimeoutHandlers(request, reject)
request.end()
}
}
firstStream.write(signature, () => w(0))
})
示例3: catch
(fileOut.close as any)(() => {
try {
digestTransform.validate()
}
catch (e) {
reject(e)
return
}
resolve()
})