Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'builder-util-runtime' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
}
while (true) {
if (this.readState === ReadState.BODY) {
this.readState = ReadState.INIT
}
else {
this.partIndex++
let taskIndex = this.partIndexToTaskIndex.get(this.partIndex)
if (taskIndex == null) {
if (this.isFinished) {
taskIndex = this.options.end
}
else {
throw newError("taskIndex is null", "ERR_DATA_SPLITTER_TASK_INDEX_IS_NULL")
}
}
const prevTaskIndex = this.partIndex === 0 ? this.options.start : (this.partIndexToTaskIndex.get(this.partIndex - 1)!! + 1 /* prev part is download, next maybe copy */)
if (prevTaskIndex < taskIndex) {
await this.copyExistingData(prevTaskIndex, taskIndex)
}
else if (prevTaskIndex > taskIndex) {
throw newError("prevTaskIndex must be < taskIndex", "ERR_DATA_SPLITTER_TASK_INDEX_ASSERT_FAILED")
}
if (this.isFinished) {
this.onPartEnd()
this.finishHandler()
return
}
async getLatestVersion(): Promise {
const cancellationToken = new CancellationToken()
const channelFile = getChannelFilename(this.getDefaultChannelName())
const releaseInfo = await this.getLatestVersionInfo(cancellationToken)
const asset = releaseInfo.assets.find(it => it.name === channelFile)
if (asset == null) {
// html_url must be always, but just to be sure
throw newError(`Cannot find ${channelFile} in the release ${releaseInfo.html_url || releaseInfo.name}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND")
}
const url = new URL(asset.url)
let result: any
try {
result = safeLoad((await this.httpRequest(url, this.configureHeaders("application/octet-stream"), cancellationToken))!!)
}
catch (e) {
if (e instanceof HttpError && e.statusCode === 404) {
throw newError(`Cannot find ${channelFile} in the latest release artifacts (${url}): ${e.stack || e.message}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND")
}
throw e
}
(result as PrivateGitHubUpdateInfo).assets = releaseInfo.assets
return result
let taskIndex = this.partIndexToTaskIndex.get(this.partIndex)
if (taskIndex == null) {
if (this.isFinished) {
taskIndex = this.options.end
}
else {
throw newError("taskIndex is null", "ERR_DATA_SPLITTER_TASK_INDEX_IS_NULL")
}
}
const prevTaskIndex = this.partIndex === 0 ? this.options.start : (this.partIndexToTaskIndex.get(this.partIndex - 1)!! + 1 /* prev part is download, next maybe copy */)
if (prevTaskIndex < taskIndex) {
await this.copyExistingData(prevTaskIndex, taskIndex)
}
else if (prevTaskIndex > taskIndex) {
throw newError("prevTaskIndex must be < taskIndex", "ERR_DATA_SPLITTER_TASK_INDEX_ASSERT_FAILED")
}
if (this.isFinished) {
this.onPartEnd()
this.finishHandler()
return
}
start = this.searchHeaderListEnd(chunk, start)
if (start === -1) {
this.readState = ReadState.HEADER
return
}
}
private githubRequest(path: string, token: string | null, data: {[name: string]: any; } | null = null, method?: "GET" | "DELETE" | "PUT"): Promise {
// host can contains port, but node http doesn't support host as url does
const baseUrl = parseUrl(`https://${this.info.host || "api.github.com"}`)
return parseJson(httpExecutor.request(configureRequestOptions({
hostname: baseUrl.hostname,
port: baseUrl.port as any,
path: (this.info.host != null && this.info.host !== "github.com") ? `/api/v3${path.startsWith("/") ? path : `/${path}`}` : path,
headers: {accept: "application/vnd.github.v3+json"}
}, token, method), this.context.cancellationToken, data))
}
createRequestOptions(): RequestOptions {
const result = {
headers: {
...this.options.requestHeaders,
accept: "*/*",
},
}
configureRequestUrl(this.options.newUrl, result)
// user-agent, cache-control and other common options
configureRequestOptions(result)
return result
}
async getLatestVersion(): Promise {
const cancellationToken = new CancellationToken()
const feedXml: string = (await this.httpRequest(newUrlFromBase(`${this.basePath}.atom`, this.baseUrl), {
accept: "application/xml, application/atom+xml, text/xml, */*",
}, cancellationToken))!
const feed = parseXml(feedXml)
let latestRelease = feed.element("entry", false, `No published versions on GitHub`)
let version: string | null
try {
if (this.updater.allowPrerelease) {
// noinspection TypeScriptValidateJSTypes
version = latestRelease.element("link").attribute("href").match(hrefRegExp)!![1]
}
else {
version = await this.getLatestVersionString(cancellationToken)
for (const element of feed.getElements("entry")) {
async getLatestVersion(): Promise {
const cancellationToken = new CancellationToken()
const channelFile = getChannelFilename(this.getDefaultChannelName())
const releaseInfo = await this.getLatestVersionInfo(cancellationToken)
const asset = releaseInfo.assets.find(it => it.name === channelFile)
if (asset == null) {
// html_url must be always, but just to be sure
throw newError(`Cannot find ${channelFile} in the release ${releaseInfo.html_url || releaseInfo.name}`, "ERR_UPDATER_CHANNEL_FILE_NOT_FOUND")
}
const url = new URL(asset.url)
let result: any
try {
result = safeLoad((await this.httpRequest(url, this.configureHeaders("application/octet-stream"), cancellationToken))!!)
}
catch (e) {
if (e instanceof HttpError && e.statusCode === 404) {
createRequestOptions(): RequestOptions {
const result = {
headers: {
...this.options.requestHeaders,
accept: "*/*",
},
}
configureRequestUrl(this.options.newUrl, result)
// user-agent, cache-control and other common options
configureRequestOptions(result)
return result
}
if (!companyName) {
log.warn(`Manufacturer is not set for MSI — please set "author" in the package.json`)
}
const compression = this.packager.compression
const options = this.options
const iconPath = await this.packager.getIconPath()
return (await projectTemplate.value)({
...commonOptions,
isCreateDesktopShortcut: commonOptions.isCreateDesktopShortcut !== DesktopShortcutCreationPolicy.NEVER,
isRunAfterFinish: options.runAfterFinish !== false,
iconPath: iconPath == null ? null : this.vm.toVmFile(iconPath),
compressionLevel: compression === "store" ? "none" : "high",
version: appInfo.getVersionInWeirdWindowsForm(),
productName: appInfo.productName,
upgradeCode: (options.upgradeCode || UUID.v5(appInfo.id, ELECTRON_BUILDER_UPGRADE_CODE_NS_UUID)).toUpperCase(),
manufacturer: companyName || appInfo.productName,
appDescription: appInfo.description,
// https://stackoverflow.com/questions/1929038/compilation-error-ice80-the-64bitcomponent-uses-32bitdirectory
programFilesId: arch === Arch.x64 ? "ProgramFiles64Folder" : "ProgramFilesFolder",
// wix in the name because special wix format can be used in the name
installationDirectoryWixName: getWindowsInstallationDirName(appInfo, commonOptions.isPerMachine === true),
dirs,
files,
})
}
file: log.filePath(installerPath),
archs: Array.from(this.archs.keys()).map(it => Arch[it]).join(", "),
}
const isPerMachine = options.perMachine === true
if (!this.isPortable) {
logFields.oneClick = oneClick
logFields.perMachine = isPerMachine
}
await packager.info.callArtifactBuildStarted({
targetPresentableName: this.name,
file: installerPath,
arch: null,
}, logFields)
const guid = options.guid || UUID.v5(appInfo.id, ELECTRON_BUILDER_NS_UUID)
const uninstallAppKey = guid.replace(/\\/g, " - ")
const defines: any = {
APP_ID: appInfo.id,
APP_GUID: guid,
// Windows bug - entry in Software\Microsoft\Windows\CurrentVersion\Uninstall cannot have \ symbols (dir)
UNINSTALL_APP_KEY: uninstallAppKey,
PRODUCT_NAME: appInfo.productName,
PRODUCT_FILENAME: appInfo.productFilename,
APP_FILENAME: getWindowsInstallationDirName(appInfo, !oneClick || isPerMachine),
APP_DESCRIPTION: appInfo.description,
VERSION: appInfo.version,
PROJECT_DIR: packager.projectDir,
BUILD_RESOURCES_DIR: packager.info.buildResourcesDir,
APP_PACKAGE_NAME: appInfo.name