diff --git a/electron-builder/electron-builder-tests.ts b/electron-builder/electron-builder-tests.ts new file mode 100644 index 0000000000..d37de84c5c --- /dev/null +++ b/electron-builder/electron-builder-tests.ts @@ -0,0 +1,54 @@ +/// + +import * as factory from "electron-builder"; +const builder = factory.init(); + +function callback(err: Error) { + const msg = err.message; +} + +builder.build({ + appPath: ".", + out: "out", + platform: "win", + config: { + osx: { + title: "myapplication", + icon: "icon.icns", + "icon-size": 80, + background: "installer.png", + contents: [ + { x: 438, y: 344, type: "link", path: "/Applications" }, + { x: 192, y: 344, type: "file" }, + ] + }, + win: { + title: "myapplication", + icon: "icon.ico" + } + } +}, callback); + +const bldr = require("electron-builder").init(); + +bldr.build({ + appPath: ".", + out: "out", + platform: "osx", + config: { + osx: { + title: "myapplication", + icon: "icon.icns", + "icon-size": 80, + background: "installer.png", + contents: [ + { x: 438, y: 344, type: "link", path: "/Applications" }, + { x: 192, y: 344, type: "file" }, + ] + }, + win: { + title: "myapplication", + icon: "icon.ico" + } + } +}, callback); diff --git a/electron-builder/electron-builder.d.ts b/electron-builder/electron-builder.d.ts new file mode 100644 index 0000000000..560937ab4e --- /dev/null +++ b/electron-builder/electron-builder.d.ts @@ -0,0 +1,90 @@ +// Type definitions for electron-builder v2.0.2 +// Project: https://github.com/loopline-systems/electron-builder +// Definitions by: Maxime LUCE +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare namespace ElectronBuilder { + + /** Electron-builder Options. */ + export interface Options { + /** Source application path. */ + appPath: string; + + /** Platforms to build. Allowed values: win, osx, all. */ + platform: string; + + /** Path or Object. Configuration for build. */ + config: string | Config; + + /** The output directory. */ + out?: string; + + } + + /** Build configuration by platforms. */ + export interface Config { + /** Configurations for Mac OS X. */ + osx: { + /** Installer title. */ + title: string; + /** Installer background. */ + background: string; + /** Installer icon. */ + icon: string; + /** Installer icon size. */ + "icon-size": number; + /** Installer custom contents. */ + contents: [OsxContents, OsxContents] + }; + + /** Configurations for Windows. */ + win: { + /** Installer title. */ + title: string; + /** Installer icon. */ + icon: string; + }; + } + + /** OSX Installer custom contents. */ + export interface OsxContents { + /** Horizontal position on installer screen (in pixels). */ + x: number; + /** Vertical position on installer screen (in pixels). */ + y: number; + /** Content type. Allowed values are "file", "link". */ + type: string; + /** Link only. Customize link destination path. */ + path?: string; + } + + /** Electron-builder done callback. */ + export interface Callback { + /** + * Callback wich is called when electron-builder is done. + * @param err - Contains errors if any. + */ + (err: Error): void + } + + /** Prototype for electron-builder. */ + export interface Builder { + /** + * Build the installer for given platform. + * + * @param opts - Options to configure installer. + * @param callback - Callback which is called when building is done or an error occured. + */ + build(opts: Options, callback: Callback): void; + } +} + +declare module "electron-builder" { + export function init(): ElectronBuilder.Builder; +} + +interface NodeRequireFunction { + (id: "electron-builder"): { init(): ElectronBuilder.Builder }; +} diff --git a/electron-packager/electron-packager-tests.ts b/electron-packager/electron-packager-tests.ts new file mode 100644 index 0000000000..00a29143a4 --- /dev/null +++ b/electron-packager/electron-packager-tests.ts @@ -0,0 +1,41 @@ +/// + +import * as packager from "electron-packager"; + +function callback(err: Error, appPath: string) { + const + msg = err.message, + index = appPath.indexOf("test"); +} + +packager({ + dir: ".", + name: "myapplication", + platform: "win32", + arch: "all", + version: "0.34.0" +}, callback); + +packager({ + dir: ".", + name: "myapplication", + version: "0.34.0", + all: true +}, callback); + +const pkger = require("electron-packager"); + +pkger({ + dir: ".", + name: "myapplication", + platform: "win32", + arch: "all", + version: "0.34.0" +}, callback); + +pkger({ + dir: ".", + name: "myapplication", + version: "0.34.0", + all: true +}, callback); diff --git a/electron-packager/electron-packager.d.ts b/electron-packager/electron-packager.d.ts new file mode 100644 index 0000000000..a25e89fc8a --- /dev/null +++ b/electron-packager/electron-packager.d.ts @@ -0,0 +1,115 @@ +// Type definitions for electron-packager v5.1.0 +// Project: https://github.com/maxogden/electron-packager +// Definitions by: Maxime LUCE +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare namespace ElectronPackager { + /** Electron-packager Options. */ + export interface Options { + /** The source directory. */ + dir: string; + /** The application name. */ + name: string; + /** + * Allowed values: linux, win32, darwin, all. Not required if `all` is used. + * Arbitrary combinations of individual platforms are also supported via a comma-delimited string or array of strings. + */ + platform?: string | string[]; + /** Allowed values: ia32, x64, all Not required if `all` is used. */ + arch?: string; + /** Electron version (without the "v"). See https://github.com/atom/electron/releases. */ + version: string; + + /** Shortcut for `--arch=all --platform=all`. */ + all?: boolean; + /** The output directory. */ + out?: string; + /** + * Currently you must look for conversion tools in order to supply an icon in the format required by the platform: + * - OS X: `.icns` + * - Windows: `.ico` + * + * For Linux builds, this option is not required, as the dock/window list icon is set via the icon option in the BrowserWindow contructor. + * Setting the icon in the file manager is not currently supported. + * + * If the file extension is omitted, it is auto-completed to the correct extension based on the platform, + * including when `--platform=all` is in effect. + */ + icon?: string; + + /** The bundle identifier to use in the app plist. */ + "app-bundle-id"?: string; + /** The release version to set for the app. */ + "app-version"?: string; + /** The build version to set for the app (OS X only). */ + "build-version"?: string; + /** The bundle identifier to use in the app helper plist. */ + "helper-bundle-id"?: string; + /** Object hash of application metadata to embed into the executable (Windows only). */ + "version-string"?: VersionString; + + /** The directory of cached electron downloads. Defaults to "$HOME/.electron". */ + cache?: string; + /** Do not copy files into App whose filenames regex .match this string. */ + ignore?: RegExp; + /** Runs `npm prune --production` on the app. */ + prune?: boolean; + /** If output directory for a platform already exists, replaces it rather than skipping it. */ + overwrite?: boolean; + /** Packages the source code within your app into an archive. */ + asar?: boolean; + /** Unpacks the files to app.asar.unpacked directory whose filenames regex .match this string. */ + "asar-unpack"?: string; + /** Should contain the identity to be used when running `codesign` (OS X only). */ + sign?: string; + } + + /** Object hash of application metadata to embed into the executable (Windows only). */ + export interface VersionString { + CompanyName?: string; + LegalCopyright?: string; + FileDescription?: string; + OriginalFilename?: string; + FileVersion?: string; + ProductVersion?: string; + ProductName?: string; + InternalName?: string; + } + + /** Electron-packager done callback. */ + export interface Callback { + /** + * Callback wich is called when electron-packager is done. + * + * @param err - Contains errors if any. + * @param appPath - Path to the newly created application. + */ + (err: Error, appPath: string): void + } + + /** Electron-packager function */ + export interface Packager { + /** + * This will: + * - Find or download the correct release of Electron + * - Use that version of electron to create a app in /-- + * + * You should be able to launch the app on the platform you built for. If not, check your settings and try again. + * + * @param opts - Options to configure packaging. + * @param callback - Callback which is called when packaging is done or an error occured. + */ + (opts: Options, callback: Callback): void; + } +} + +declare module "electron-packager" { + const packager: ElectronPackager.Packager; + export = packager; +} + +interface NodeRequireFunction { + (id: "electron-packager"): ElectronPackager.Packager; +}