Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'firefox-profile' 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.
try {
fs.accessSync(manifestPath, fs.R_OK);
} catch (err) {
return Promise.reject(`Couldn't read ${manifestPath}`);
}
let manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
return createJetpackXpi(manifest, { addonDir, destDir }).then((xpiPath) => {
fs.renameSync(xpiPath, destFile);
});
}
}
// we perform some Voodoo tricks to extract the private _addonDetails method
// (which uses the _sanitizePref method) from FirefoxProfile
function FirefoxProfileVoodoo() {}
FirefoxProfileVoodoo.prototype._addonDetails = FirefoxProfile.prototype._addonDetails;
FirefoxProfileVoodoo.prototype._sanitizePref = FirefoxProfile.prototype._sanitizePref;
// and now more Voodoo tricks to turn the (blocking) callback-based method
// into a simple synchronous method
function getLegacyAddonId(addonPath: string): string {
let addonDetails: any;
let voodoo = new FirefoxProfileVoodoo();
voodoo._addonDetails(addonPath, result => addonDetails = result);
return addonDetails.id;
}
fs.accessSync(manifestPath, fs.R_OK);
} catch (err) {
return Promise.reject(`Couldn't read ${manifestPath}`);
}
let manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf8'));
return createJetpackXpi(manifest, { addonDir, destDir }).then((xpiPath) => {
fs.renameSync(xpiPath, destFile);
});
}
}
// we perform some Voodoo tricks to extract the private _addonDetails method
// (which uses the _sanitizePref method) from FirefoxProfile
function FirefoxProfileVoodoo() {}
FirefoxProfileVoodoo.prototype._addonDetails = FirefoxProfile.prototype._addonDetails;
FirefoxProfileVoodoo.prototype._sanitizePref = FirefoxProfile.prototype._sanitizePref;
// and now more Voodoo tricks to turn the (blocking) callback-based method
// into a simple synchronous method
function getLegacyAddonId(addonPath: string): string {
let addonDetails: any;
let voodoo = new FirefoxProfileVoodoo();
voodoo._addonDetails(addonPath, result => addonDetails = result);
return addonDetails.id;
}
export async function isDefaultProfile(
profilePathOrName: string,
ProfileFinder?: typeof FirefoxProfile.Finder = FirefoxProfile.Finder,
fsStat?: typeof fs.stat = fs.stat,
): Promise {
if (DEFAULT_PROFILES_NAMES.includes(profilePathOrName)) {
return true;
}
const baseProfileDir = ProfileFinder.locateUserDirectory();
const profilesIniPath = path.join(baseProfileDir, 'profiles.ini');
try {
await fsStat(profilesIniPath);
} catch (error) {
if (isErrorWithCode('ENOENT', error)) {
log.debug(`profiles.ini not found: ${error}`);
// No profiles exist yet, default to false (the default profile name contains a
// random generated component).
profileDirectory: config.srcProfileDir,
destinationDirectory: config.profileDir
},
(err, profile) => {
if (err || !profile) {
reject(err);
} else {
profile.shouldDeleteOnExit(false);
resolve(profile);
}
});
} else {
await fs.ensureDir(config.profileDir);
let profile = new FirefoxProfile({
destinationDirectory: config.profileDir
});
profile.shouldDeleteOnExit(false);
resolve(profile);
}
});
}
return new Promise(async (resolve, reject) => {
if (config.srcProfileDir) {
FirefoxProfile.copy({
profileDirectory: config.srcProfileDir,
destinationDirectory: config.profileDir
},
(err, profile) => {
if (err || !profile) {
reject(err);
} else {
profile.shouldDeleteOnExit(false);
resolve(profile);
}
});
} else {
await fs.ensureDir(config.profileDir);
let profile = new FirefoxProfile({
const profileIsDirPath = await isDirectory(profilePath);
if (profileIsDirPath) {
log.debug(`Using profile directory "${profilePath}"`);
destinationDirectory = profilePath;
} else {
log.debug(`Assuming ${profilePath} is a named profile`);
destinationDirectory = await getProfilePath(profilePath);
if (!destinationDirectory) {
throw new UsageError(
`The request "${profilePath}" profile name ` +
'cannot be resolved to a profile path'
);
}
}
const profile = new FirefoxProfile({destinationDirectory});
return await configureThisProfile(profile, {app, customPrefs});
}
export async function createProfile(
{
app,
configureThisProfile = configureProfile,
customPrefs = {},
}: CreateProfileParams = {},
): Promise {
const profile = new FirefoxProfile();
return await configureThisProfile(profile, {app, customPrefs});
}
onPrepare (config, caps) {
this.config = config
this.caps = caps
/**
* don't do anything if no profile is specified
*/
if (!config.firefoxProfile) {
return
}
this.profile = new FirefoxProfile()
for (let preference in config.firefoxProfile) {
/**
* extensions are getting set at the end
*/
if (SPECIAL_PROPERTIES.includes(preference)) {
continue
}
this.profile.setPreference(preference, config.firefoxProfile[preference])
}
if (this.config.firefoxProfile.proxy) {
this.profile.setProxy(this.config.firefoxProfile.proxy)
}