@electron/fiddle-core
Advanced tools
Comparing version
@@ -6,3 +6,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.runFromCommandLine = void 0; | ||
exports.runFromCommandLine = runFromCommandLine; | ||
const util_1 = require("util"); | ||
@@ -71,2 +71,1 @@ const debug_1 = __importDefault(require("debug")); | ||
} | ||
exports.runFromCommandLine = runFromCommandLine; |
@@ -15,2 +15,5 @@ export declare class Fiddle { | ||
export type FiddleSource = Fiddle | string | Iterable<[string, string]>; | ||
export interface FiddleFactoryCreateOptions { | ||
packAsAsar?: boolean; | ||
} | ||
export declare class FiddleFactory { | ||
@@ -23,3 +26,4 @@ private readonly fiddles; | ||
fromEntries(src: Iterable<[string, string]>): Promise<Fiddle>; | ||
create(src: FiddleSource): Promise<Fiddle | undefined>; | ||
create(src: FiddleSource, options?: FiddleFactoryCreateOptions): Promise<Fiddle | undefined>; | ||
private packageFiddleAsAsar; | ||
} |
@@ -32,2 +32,3 @@ "use strict"; | ||
const path = __importStar(require("path")); | ||
const asar = __importStar(require("@electron/asar")); | ||
const debug_1 = __importDefault(require("debug")); | ||
@@ -102,17 +103,40 @@ const simple_git_1 = __importDefault(require("simple-git")); | ||
} | ||
async create(src) { | ||
if (src instanceof Fiddle) | ||
return src; | ||
if (typeof src === 'string') { | ||
if (fs.existsSync(src)) | ||
return this.fromFolder(src); | ||
if (/^[0-9A-Fa-f]{32}$/.test(src)) | ||
return this.fromGist(src); | ||
if (/^https:/.test(src) || /\.git$/.test(src)) | ||
return this.fromRepo(src); | ||
return; | ||
async create(src, options) { | ||
let fiddle; | ||
if (src instanceof Fiddle) { | ||
fiddle = src; | ||
} | ||
return this.fromEntries(src); | ||
else if (typeof src === 'string') { | ||
if (fs.existsSync(src)) { | ||
fiddle = await this.fromFolder(src); | ||
} | ||
else if (/^[0-9A-Fa-f]{32}$/.test(src)) { | ||
fiddle = await this.fromGist(src); | ||
} | ||
else if (/^https:/.test(src) || /\.git$/.test(src)) { | ||
fiddle = await this.fromRepo(src); | ||
} | ||
else { | ||
return; | ||
} | ||
} | ||
else { | ||
fiddle = await this.fromEntries(src); | ||
} | ||
const { packAsAsar } = options || {}; | ||
if (packAsAsar) { | ||
fiddle = await this.packageFiddleAsAsar(fiddle); | ||
} | ||
return fiddle; | ||
} | ||
async packageFiddleAsAsar(fiddle) { | ||
const sourceDir = path.dirname(fiddle.mainPath); | ||
const asarOutputDir = path.join(this.fiddles, hashString(sourceDir)); | ||
const asarFilePath = path.join(asarOutputDir, 'app.asar'); | ||
await asar.createPackage(sourceDir, asarFilePath); | ||
const packagedFiddle = new Fiddle(asarFilePath, fiddle.source); | ||
await fs.remove(sourceDir); | ||
return packagedFiddle; | ||
} | ||
} | ||
exports.FiddleFactory = FiddleFactory; |
#!/usr/bin/env node | ||
import { DefaultPaths, Paths } from './paths'; | ||
import { ElectronBinary, Installer, InstallerParams, InstallState, InstallStateEvent, Mirrors, ProgressObject } from './installer'; | ||
import { Fiddle, FiddleFactory, FiddleSource } from './fiddle'; | ||
import { Fiddle, FiddleFactory, FiddleSource, FiddleFactoryCreateOptions } from './fiddle'; | ||
import { BisectResult, Runner, RunnerOptions, RunnerSpawnOptions, TestResult } from './runner'; | ||
import { BaseVersions, ElectronVersions, ElectronVersionsCreateOptions, ReleaseInfo, SemOrStr, SemVer, Versions, compareVersions } from './versions'; | ||
import { runFromCommandLine } from './command-line'; | ||
export { BaseVersions, BisectResult, DefaultPaths, ElectronBinary, ElectronVersions, ElectronVersionsCreateOptions, Fiddle, FiddleFactory, FiddleSource, InstallState, InstallStateEvent, Installer, InstallerParams, Mirrors, Paths, ProgressObject, ReleaseInfo, Runner, RunnerOptions, RunnerSpawnOptions, SemOrStr, SemVer, TestResult, Versions, compareVersions, runFromCommandLine, }; | ||
export { BaseVersions, BisectResult, DefaultPaths, ElectronBinary, ElectronVersions, ElectronVersionsCreateOptions, Fiddle, FiddleFactory, FiddleFactoryCreateOptions, FiddleSource, InstallState, InstallStateEvent, Installer, InstallerParams, Mirrors, Paths, ProgressObject, ReleaseInfo, Runner, RunnerOptions, RunnerSpawnOptions, SemOrStr, SemVer, TestResult, Versions, compareVersions, runFromCommandLine, }; |
@@ -1,2 +0,1 @@ | ||
/// <reference types="node" /> | ||
import { EventEmitter } from 'events'; | ||
@@ -3,0 +2,0 @@ import { Paths } from './paths'; |
@@ -55,3 +55,3 @@ "use strict"; | ||
InstallState["installed"] = "installed"; | ||
})(InstallState = exports.InstallState || (exports.InstallState = {})); | ||
})(InstallState || (exports.InstallState = InstallState = {})); | ||
/** | ||
@@ -58,0 +58,0 @@ * Manage downloading and installing Electron versions. |
@@ -1,3 +0,1 @@ | ||
/// <reference types="node" /> | ||
/// <reference types="node" /> | ||
import { Writable } from 'stream'; | ||
@@ -15,2 +13,3 @@ import { ChildProcess, SpawnOptions } from 'child_process'; | ||
showConfig?: boolean; | ||
runFromAsar?: boolean; | ||
} | ||
@@ -17,0 +16,0 @@ export type RunnerSpawnOptions = SpawnOptions & RunnerOptions; |
@@ -129,3 +129,5 @@ "use strict"; | ||
const version = versionIn instanceof semver_1.SemVer ? versionIn.version : versionIn; | ||
const fiddle = await this.fiddleFactory.create(fiddleIn); | ||
const fiddle = await this.fiddleFactory.create(fiddleIn, { | ||
packAsAsar: opts.runFromAsar, | ||
}); | ||
if (!fiddle) | ||
@@ -132,0 +134,0 @@ throw new Error(`Invalid fiddle: "${(0, util_1.inspect)(fiddleIn)}"`); |
@@ -29,3 +29,4 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.ElectronVersions = exports.BaseVersions = exports.compareVersions = exports.SemVer = void 0; | ||
exports.ElectronVersions = exports.BaseVersions = exports.SemVer = void 0; | ||
exports.compareVersions = compareVersions; | ||
const fs = __importStar(require("fs-extra")); | ||
@@ -51,3 +52,2 @@ const semver_1 = require("semver"); | ||
} | ||
exports.compareVersions = compareVersions; | ||
// ts type guards | ||
@@ -54,0 +54,0 @@ function hasVersion(val) { |
@@ -7,3 +7,3 @@ { | ||
"name": "@electron/fiddle-core", | ||
"version": "1.3.4", | ||
"version": "1.4.0", | ||
"description": "Run fiddles from anywhere, on any Electron release", | ||
@@ -18,2 +18,5 @@ "main": "dist/index.js", | ||
], | ||
"publishConfig": { | ||
"provenance": true | ||
}, | ||
"scripts": { | ||
@@ -36,2 +39,3 @@ "build": "tsc -b", | ||
"dependencies": { | ||
"@electron/asar": "^3.3.1", | ||
"@electron/get": "^2.0.0", | ||
@@ -61,9 +65,9 @@ "debug": "^4.3.3", | ||
"eslint-config-prettier": "^8.8.0", | ||
"eslint-plugin-prettier": "^4.2.1", | ||
"eslint-plugin-prettier": "^5.2.1", | ||
"jest": "^29.7.0", | ||
"nock": "^13.3.8", | ||
"npm-run-all": "^4.1.5", | ||
"prettier": "^2.5.1", | ||
"prettier": "^3.4.2", | ||
"ts-jest": "^29.1.1", | ||
"typescript": "^4.9.5" | ||
"typescript": "^5.6.3" | ||
}, | ||
@@ -70,0 +74,0 @@ "engines": { |
# @electron/fiddle-core | ||
[](https://circleci.com/gh/electron/fiddle-core) | ||
[](https://github.com/electron/fiddle-core/actions/workflows/test.yml) | ||
[](https://npmjs.org/package/@electron/fiddle-core) | ||
@@ -5,0 +5,0 @@ |
72220
1.83%18
5.88%1540
1.78%11
10%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added