{"version":3,"file":"index.mjs","sources":["../src/utils/electron-dependencies.ts","../src/utils/env.ts","../src/utils/entry-file.ts","../src/utils/file-system.ts","../src/utils/node-builtin.ts","../src/utils/package/utils.ts","../src/utils/package/check.ts","../src/utils/package/parse.ts","../src/utils/framework/constants.ts","../src/utils/framework/utils/detect.ts","../src/apps/constants.ts","../src/apps/utils/directory.ts","../src/apps/main/config.ts","../src/apps/main/build.ts","../src/core/electron/create.ts","../src/core/vite/build.ts","../src/apps/main/dev.ts","../src/apps/preload/config.ts","../src/apps/preload/build.ts","../src/apps/preload/dev.ts","../src/constants.ts","../src/config/utils/env.ts","../src/config/utils/build.ts","../src/config/utils/find.ts","../src/config/module.ts","../src/apps/renderer/move.ts","../src/apps/renderer/config.ts","../src/apps/renderer/build.ts","../src/apps/renderer/ps.ts","../src/apps/renderer/dev.ts","../src/cli/build.ts","../src/cli/dev.ts","../src/cli/init.ts","../src/index.ts"],"sourcesContent":["/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function getElectronMainDependencies() : string[] {\n    return [\n        'app',\n        'auto-updater',\n        'browser-window',\n        'content-tracing',\n        'dialog',\n        'global-shortcut',\n        'ipc-main',\n        'menu',\n        'menu-item',\n        'power-monitor',\n        'power-save-blocker',\n        'protocol',\n        'session',\n        'tray',\n        'web-contents',\n    ];\n}\n\nexport function getElectronRendererDependencies() : string[] {\n    return [\n        'desktop-capturer',\n        'ipc-renderer',\n        'remote',\n        'web-frame',\n    ];\n}\n\nexport function getElectronDependencies(): string[] {\n    return [\n        'clipboard',\n        'crash-reporter',\n        'electron',\n        'ipc',\n        'native-image',\n        'original-fs',\n        'screen',\n        'shell',\n    ];\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from 'smob';\n\nexport function hasEnv(key: string) : boolean {\n    return hasOwnProperty(process.env, key);\n}\n\nexport function requireFromEnv<T>(key: string, alt?: T) : T | string {\n    if (\n        typeof process.env[key] === 'undefined' &&\n        typeof alt === 'undefined'\n    ) {\n        // eslint-disable-next-line no-console\n        console.error(`[APP ERROR] Missing variable: ${key}`);\n\n        return process.exit(1);\n    }\n\n    return process.env[key] ?? alt as T | string;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport process from 'node:process';\n\nconst extensions = [\n    '.js',\n    '.cjs',\n    '.mjs',\n    '.ts',\n    '.cts',\n    '.mts',\n];\n\nexport async function findEntryFile(root?: string, fileNames?: string[]) : Promise<string | undefined> {\n    const names : string[] = [\n        'index',\n        ...(fileNames || []),\n    ];\n    for (let i = 0; i < extensions.length; i++) {\n        for (let j = 0; j < names.length; j++) {\n            const checkPath = path.resolve(root || process.cwd(), `${names[j]}${extensions[i]}`);\n\n            try {\n                await fs.promises.access(checkPath, fs.constants.F_OK | fs.constants.R_OK);\n                return checkPath;\n            } catch (e) {\n                // continue ^^\n            }\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\n\nexport async function ensureDirectoryExists(input: string) : Promise<void> {\n    if (!path.isAbsolute(input)) {\n        input = path.join(process.cwd(), input);\n    }\n\n    try {\n        await fs.promises.access(input, fs.constants.R_OK | fs.constants.O_DIRECTORY);\n    } catch (e) {\n        await fs.promises.mkdir(input, { recursive: true });\n    }\n}\n\nexport async function ensureDirectoryNotExists(input: string) : Promise<void> {\n    if (!path.isAbsolute(input)) {\n        input = path.join(process.cwd(), input);\n    }\n\n    try {\n        await fs.promises.access(input, fs.constants.R_OK | fs.constants.O_DIRECTORY);\n        await fs.promises.rm(input, { recursive: true });\n    } catch (e) {\n        // do nothing\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function getNodeBuiltInModules() {\n    const modules : string[] = [\n        'assert',\n        'buffer',\n        'child_process',\n        'cluster',\n        'crypto',\n        'dgram',\n        'dns',\n        'domain',\n        'events',\n        'fs',\n        'http',\n        'https',\n        'net',\n        'os',\n        'path',\n        'punycode',\n        'querystring',\n        'readline',\n        'stream',\n        'string_decoder',\n        'timers',\n        'tls',\n        'tty',\n        'url',\n        'util',\n        'v8',\n        'vm',\n        'zlib',\n    ];\n\n    return [\n        ...modules,\n        ...modules.map((module) => `node:${module}`),\n    ];\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function removePackageVersionCaret(input: string) {\n    const caret = input.substring(0, 1);\n    return caret === '^' ? input.substring(1) : input;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from 'smob';\nimport semver from 'semver';\nimport type { PackageInfo } from './type';\nimport { removePackageVersionCaret } from './utils';\n\nexport function isValidPackageVersion(input: unknown) : boolean {\n    if (typeof input !== 'string') {\n        return false;\n    }\n\n    return !!semver.valid(removePackageVersionCaret(input));\n}\n\nexport function isPackageNameWithVersion(input: string) : boolean {\n    const index = input.indexOf('@');\n    return index > 0 && isValidPackageVersion(input.substring(index + 1));\n}\n\nexport function isPackageInfo(input: unknown) : input is PackageInfo {\n    if (!isObject(input)) {\n        return false;\n    }\n\n    if (typeof input.name !== 'string' || typeof input.version !== 'string') {\n        return false;\n    }\n\n    return isValidPackageVersion(input.version);\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { PackageInfo } from './type';\nimport { removePackageVersionCaret } from './utils';\n\nexport function parsePackageNameWithVersion(input: string) : PackageInfo {\n    const [\n        name,\n        version,\n    ] = input.split('@');\n\n    if (!version) {\n        throw new SyntaxError('The package version is missing in the input string.');\n    }\n\n    return {\n        name,\n        version: removePackageVersionCaret(version),\n    };\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\nexport enum Framework {\n    NUXT = 'nuxt',\n    NEXT = 'next',\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport { loadSync } from 'locter';\nimport { hasOwnProperty, isObject } from 'smob';\nimport { removePackageVersionCaret } from '../../package';\nimport type { PackageInfo } from '../../package';\nimport { Framework } from '../constants';\n\nfunction parsePackageJSONOutput(input: unknown) {\n    if (!isObject(input)) {\n        return undefined;\n    }\n\n    const { dependencies, devDependencies, peerDependencies } = input;\n\n    const dependencyMap : Record<string, string> = {\n        ...(dependencies || {}),\n        ...(devDependencies || {}),\n        ...(peerDependencies || {}),\n    };\n\n    if (\n        hasOwnProperty(dependencyMap, Framework.NUXT)\n    ) {\n        return {\n            name: Framework.NUXT,\n            version: removePackageVersionCaret(`${dependencyMap[Framework.NUXT]}`),\n        };\n    }\n\n    if (hasOwnProperty(dependencyMap, Framework.NEXT)) {\n        return {\n            name: Framework.NEXT,\n            version: removePackageVersionCaret(`${dependencyMap[Framework.NEXT]}`),\n        };\n    }\n\n    return undefined;\n}\n\nfunction buildPackageJSONPath(rootPath?: string) {\n    if (typeof rootPath === 'undefined') {\n        rootPath = process.cwd();\n    } else if (!path.isAbsolute(rootPath)) {\n        rootPath = path.join(process.cwd(), rootPath);\n    }\n\n    return path.join(rootPath, 'package.json');\n}\n\nexport function detectFrameworkSync(rootPath?: string) : PackageInfo | undefined {\n    const packageJsonFilePath = buildPackageJSONPath(rootPath);\n\n    if (!fs.existsSync(packageJsonFilePath)) {\n        return undefined;\n    }\n\n    const packageJson = loadSync(packageJsonFilePath);\n\n    return parsePackageJSONOutput(packageJson);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum AppName {\n    MAIN = 'main',\n    PRELOAD = 'preload',\n    RENDERER = 'renderer',\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { Config } from '../../config';\nimport { ensureDirectoryExists, ensureDirectoryNotExists } from '../../utils';\nimport { AppName } from '../constants';\n\nexport function getAppDirectoryPath(config: Config, app: `${AppName}`) {\n    let directoryPath : string;\n\n    switch (app) {\n        case AppName.MAIN: {\n            directoryPath = path.resolve(config.get('rootPath'), config.get('mainDirectory'));\n            break;\n        }\n        case AppName.PRELOAD: {\n            directoryPath = path.resolve(config.get('rootPath'), config.get('preloadDirectory'));\n            break;\n        }\n        default: {\n            directoryPath = path.resolve(config.get('rootPath'), config.get('rendererDirectory'));\n            break;\n        }\n    }\n\n    return directoryPath;\n}\n\nexport function getAppDestinationDirectoryPath(config: Config, app: `${AppName}`) {\n    return path.join(config.get('rootPath'), config.get('buildDirectory'), app);\n}\n\nexport function getBuildDirectoryPath(config: Config) {\n    return path.resolve(config.get('rootPath'), config.get('buildDirectory'));\n}\n\nexport async function clearBuildDirectory(config: Config) {\n    const entrypointDistDirectory = path.join(config.get('rootPath'), config.get('buildDirectory'));\n    await ensureDirectoryNotExists(entrypointDistDirectory);\n}\n\nexport async function createBuildDirectory(config: Config) {\n    const buildDirectory = path.join(config.get('rootPath'), config.get('buildDirectory'));\n    await ensureDirectoryExists(buildDirectory);\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport replace from '@rollup/plugin-replace';\nimport { load } from 'locter';\nimport { merge } from 'smob';\nimport type { InlineConfig } from 'vite';\nimport type { Config } from '../../config';\nimport {\n    findEntryFile,\n    getElectronDependencies,\n    getElectronMainDependencies,\n    getNodeBuiltInModules,\n} from '../../utils';\nimport { AppName } from '../constants';\nimport { getAppDestinationDirectoryPath, getAppDirectoryPath } from '../utils';\n\nexport async function buildMainConfig(\n    config: Config,\n) : Promise<InlineConfig> {\n    const packageJson = await load(path.join(config.get('rootPath'), 'package.json'));\n\n    const dependencies : string[] = Object.keys(packageJson.dependencies || {});\n    const peerDependencies : string[] = Object.keys(packageJson.peerDependencies || {});\n\n    const entryFile = await findEntryFile(path.join(config.get('rootPath'), config.get('mainDirectory')));\n    if (!entryFile) {\n        throw new Error('The main entrypoint file could not be located...');\n    }\n\n    const inlineConfig : InlineConfig = {\n        mode: config.get('env'),\n        root: getAppDirectoryPath(config, AppName.MAIN),\n        define: {\n            NODE_ENV: `\"${config.get('env')}\"`,\n            PORT: `\"${config.get('port')}\"`,\n        },\n        optimizeDeps: {\n            esbuildOptions: {\n                target: 'es2020',\n            },\n        },\n        build: {\n            watch: {},\n            emptyOutDir: false,\n            manifest: true,\n            target: 'es2020',\n            outDir: getAppDestinationDirectoryPath(config, AppName.MAIN),\n            lib: {\n                entry: entryFile,\n                fileName: 'index',\n                formats: ['cjs'],\n            },\n            rollupOptions: {\n                input: entryFile,\n                external: [\n                    ...dependencies,\n                    ...peerDependencies,\n\n                    // electron dependencies\n                    ...getElectronDependencies(),\n                    ...getElectronMainDependencies(),\n\n                    // node built-in internals\n                    ...getNodeBuiltInModules(),\n                ],\n\n                plugins: [\n                    replace({\n                        preventAssignment: true,\n                        uncrypto: 'crypto',\n                        'process.env.NODE_ENV': `\"${config.get('env')}\"`,\n                        'process.env.PORT': `\"${config.get('port')}\"`,\n                    }),\n                ],\n            },\n        },\n        server: {\n\n        },\n    };\n\n    const customConfig = config.get('mainConfig');\n    if (customConfig) {\n        return merge(customConfig(inlineConfig), inlineConfig);\n    }\n\n    return inlineConfig;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { build } from 'vite';\nimport type { Config } from '../../config';\nimport { buildMainConfig } from './config';\n\nexport async function buildMainApp(config: Config) {\n    const viteConfig = await buildMainConfig(config);\n    if (viteConfig.build?.watch) {\n        viteConfig.build.watch = null;\n    }\n\n    await build(viteConfig);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ChildProcess } from 'node:child_process';\nimport kill from 'tree-kill';\nimport spawn from 'cross-spawn';\nimport type { Logger } from 'vite';\nimport type { Config } from '../../config';\nimport { AppName } from '../../apps/constants';\nimport { getAppDestinationDirectoryPath } from '../../apps/utils';\n\ntype ElectronHandler = {\n    start: () => void,\n    stop: () => void,\n    restart: () => void\n    up: () => boolean\n};\nexport function createElectron(config: Config, logger: Logger) : ElectronHandler {\n    let myProcess : ChildProcess | undefined;\n\n    const start = () : void => {\n        if (myProcess) {\n            return;\n        }\n\n        myProcess = spawn('electron', [\n            getAppDestinationDirectoryPath(config, AppName.MAIN),\n        ], {\n            cwd: config.get('rootPath'),\n            stdio: 'inherit',\n        });\n\n        myProcess.on('message', (data) => {\n            logger.info(`${data}`);\n        });\n\n        myProcess.on('error', (e) => {\n            logger.error(e.message);\n        });\n\n        myProcess.on('exit', () => {\n            stop();\n        });\n    };\n\n    const stop = () : void => {\n        if (myProcess) {\n            myProcess.removeAllListeners();\n\n            if (myProcess.pid) {\n                kill(myProcess.pid);\n            } else {\n                myProcess.kill('SIGKILL');\n            }\n        }\n\n        myProcess = undefined;\n    };\n\n    const up = () => typeof myProcess !== 'undefined';\n\n    const restart = () => {\n        stop();\n        start();\n    };\n\n    return {\n        restart,\n        start,\n        stop,\n        up,\n    };\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { merge } from 'smob';\nimport { build } from 'vite';\nimport type { InlineConfig } from 'vite';\nimport type { ViteWatchHook } from './type';\n\nexport async function buildWithWatchHook(\n    config: InlineConfig,\n    watchHook: ViteWatchHook,\n) {\n    return new Promise<void>((resolve) => {\n        if (config.build?.watch) {\n            let firstBundle = true;\n            const closeBundle = (): void => {\n                if (firstBundle) {\n                    firstBundle = false;\n                    resolve();\n                } else {\n                    watchHook();\n                }\n            };\n\n            config = merge(config, {\n                plugins: [\n                    {\n                        name: 'vite:watcher',\n                        closeBundle,\n                    },\n                ],\n            } satisfies InlineConfig);\n        }\n\n        build(config).then(() => {\n            if (!config.build?.watch) {\n                resolve();\n            }\n        });\n    });\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Config } from '../../config';\nimport { buildWithWatchHook } from '../../core';\nimport type { ViteWatchHook } from '../../core';\nimport { buildMainConfig } from './config';\n\nexport async function startMainApp(\n    config: Config,\n    watchHook: ViteWatchHook,\n) {\n    const viteConfig = await buildMainConfig(config);\n\n    await buildWithWatchHook(viteConfig, watchHook);\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { load } from 'locter';\nimport { merge } from 'smob';\nimport type { InlineConfig } from 'vite';\nimport type { Config } from '../../config';\nimport {\n    findEntryFile,\n    getElectronDependencies,\n    getElectronMainDependencies,\n    getNodeBuiltInModules,\n} from '../../utils';\nimport { AppName } from '../constants';\nimport { getAppDestinationDirectoryPath, getAppDirectoryPath } from '../utils';\n\nexport async function buildPreloadConfig(\n    config: Config,\n) : Promise<InlineConfig | undefined> {\n    const packageJson = await load(path.join(config.get('rootPath'), 'package.json'));\n\n    const dependencies : string[] = Object.keys(packageJson.dependencies || {});\n    const peerDependencies : string[] = Object.keys(packageJson.peerDependencies || {});\n\n    const entryFile = await findEntryFile(path.join(config.get('rootPath'), config.get('preloadDirectory')));\n    if (!entryFile) {\n        return undefined;\n    }\n\n    const inlineConfig : InlineConfig = {\n        mode: config.get('env'),\n        root: getAppDirectoryPath(config, AppName.PRELOAD),\n        optimizeDeps: {\n            esbuildOptions: {\n                target: 'es2020',\n            },\n        },\n        build: {\n            watch: {},\n            emptyOutDir: true,\n            manifest: true,\n            target: 'es2020',\n            outDir: getAppDestinationDirectoryPath(config, AppName.PRELOAD),\n            lib: {\n                entry: entryFile,\n                fileName: 'index',\n                formats: ['cjs'],\n            },\n            rollupOptions: {\n                input: entryFile,\n                external: [\n                    ...dependencies,\n                    ...peerDependencies,\n\n                    // electron dependencies\n                    ...getElectronDependencies(),\n                    ...getElectronMainDependencies(),\n\n                    // node built-in internals\n                    ...getNodeBuiltInModules(),\n                ],\n            },\n        },\n    };\n\n    const customConfig = config.get('preloadConfig');\n    if (customConfig) {\n        return merge(customConfig(inlineConfig), inlineConfig);\n    }\n\n    return inlineConfig;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { build } from 'vite';\nimport type { Config } from '../../config';\nimport { buildPreloadConfig } from './config';\n\nexport async function buildPreloadApp(config: Config) {\n    const viteConfig = await buildPreloadConfig(config);\n    if (!viteConfig) {\n        return;\n    }\n\n    if (viteConfig.build?.watch) {\n        viteConfig.build.watch = null;\n    }\n\n    await build(viteConfig);\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { Config } from '../../config';\nimport { buildWithWatchHook } from '../../core';\nimport type { ViteWatchHook } from '../../core';\nimport { buildPreloadConfig } from './config';\n\nexport async function startPreloadApp(\n    config: Config,\n    watchHook: ViteWatchHook,\n) {\n    const viteConfig = await buildPreloadConfig(config);\n    if (!viteConfig) {\n        return;\n    }\n\n    await buildWithWatchHook(viteConfig, watchHook);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\n\nexport enum EnvironmentName {\n    PRODUCTION = 'production',\n    DEVELOPMENT = 'development',\n    TEST = 'test',\n}\n\nexport const ASSETS_PATH = path.join(__dirname, '..', 'assets');\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { EnvironmentName } from '../../constants';\nimport { hasEnv, requireFromEnv } from '../../utils';\nimport type { Options } from '../type';\n\nexport function extractConfigFromEnv() : Partial<Options> {\n    const config : Partial<Options> = {};\n\n    if (hasEnv('NODE_ENV')) {\n        config.env = requireFromEnv('NODE_ENV') as EnvironmentName;\n    }\n\n    return config;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport * as process from 'process';\nimport path from 'node:path';\nimport { Continu } from 'continu';\nimport { loadSync } from 'locter';\nimport { merge } from 'smob';\nimport zod from 'zod';\nimport { EnvironmentName } from '../../constants';\nimport {\n    Framework,\n    detectFrameworkSync,\n    isPackageInfo,\n    isPackageNameWithVersion,\n    parsePackageNameWithVersion, removePackageVersionCaret,\n} from '../../utils';\n\nimport type { PackageInfo } from '../../utils';\nimport type { Config, Options, OptionsInput } from '../type';\nimport { extractConfigFromEnv } from './env';\n\nexport function buildConfig(input: OptionsInput) : Config {\n    const raw = merge(extractConfigFromEnv(), input);\n\n    const instance = new Continu<Options, OptionsInput>({\n        defaults: {\n            port: 9000,\n            rootPath: process.cwd(),\n            buildDirectory: '.vitron',\n            preloadDirectory: 'src/preload',\n            rendererDirectory: 'src/renderer',\n            rendererBuildDirectory: 'dist',\n            mainDirectory: 'src/main',\n        },\n        transformers: {\n            rootPath: (input) => {\n                if (typeof input !== 'string') {\n                    return process.cwd();\n                }\n\n                return path.isAbsolute(input) ? `${input}` : path.join(process.cwd(), `${input}`);\n            },\n            framework: (input) => {\n                if (isPackageInfo(input)) {\n                    return input;\n                }\n\n                if (typeof input === 'string') {\n                    if (isPackageNameWithVersion(input)) {\n                        return parsePackageNameWithVersion(input);\n                    }\n\n                    const directoryPath = path.dirname(require.resolve(input));\n                    const packageJson = loadSync(path.join(directoryPath, 'package.json'));\n\n                    return {\n                        name: input,\n                        version: removePackageVersionCaret(`${packageJson.version}`),\n                    } as PackageInfo;\n                }\n\n                return undefined;\n            },\n        },\n        validators: {\n            env: (value) => zod.nativeEnum(EnvironmentName).safeParse(value),\n            port: (value) => zod.number().safeParse(value),\n            rootPath: (value) => zod.string().safeParse(value),\n\n            framework: (value) => zod.nativeEnum(Framework).or(zod.object({\n                name: zod.nativeEnum(Framework),\n                version: zod.string(),\n            })).safeParse(value),\n\n            buildDirectory: (value) => zod.string().safeParse(value),\n\n            preloadDirectory: (value) => zod.string().safeParse(value),\n            preloadConfig: (value) => zod.any().optional().safeParse(value),\n\n            mainDirectory: (value) => zod.string().safeParse(value),\n            mainConfig: (value) => zod.any().optional().safeParse(value),\n\n            rendererDirectory: (value) => zod.string().safeParse(value),\n            rendererBuildDirectory: (value) => zod.string().safeParse(value),\n            rendererBuildCommand: (value) => zod.function().returns(zod.any()).optional().safeParse(value),\n            rendererDevCommand: (value) => zod.function().returns(zod.any()).optional().safeParse(value),\n            rendererConfig: (value) => zod.any().optional().safeParse(value),\n        },\n    });\n\n    instance.setRaw(raw);\n\n    if (!instance.has('framework')) {\n        const framework = detectFrameworkSync(instance.get('rootPath'));\n        if (framework) {\n            instance.set('framework', framework);\n        }\n    }\n\n    return instance;\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { load, locateMany } from 'locter';\nimport { merge } from 'smob';\nimport type { OptionsInput } from '../type';\n\nexport async function loadOptions(path?: string) : Promise<OptionsInput> {\n    const items : OptionsInput[] = [];\n\n    const fileInfos = await locateMany('vitron.config.{ts,cts,mts,cjs,mjs,js,json}', {\n        path,\n    });\n\n    for (let i = 0; i < fileInfos.length; i++) {\n        const data = await load(fileInfos[i]);\n        if (data.default) {\n            items.push(data.default);\n            continue;\n        }\n\n        items.push(data);\n    }\n\n    return merge({}, ...items);\n}\n","/*\n * Copyright (c) 2021.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { getPort } from 'get-port-please';\nimport type { Config } from './type';\nimport { buildConfig, loadOptions } from './utils';\n\nlet instance : Config | undefined;\n\nexport async function createConfig(directoryPath: string) : Promise<Config> {\n    if (typeof instance !== 'undefined') {\n        return instance;\n    }\n\n    const input = await loadOptions(directoryPath);\n    instance = buildConfig(input);\n\n    // find open port\n    if (!instance.has('port')) {\n        const port = await getPort();\n        instance.set('port', port);\n    }\n\n    return instance;\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport type { Config } from '../../config';\nimport { ensureDirectoryExists } from '../../utils';\nimport { AppName } from '../constants';\nimport { getAppDirectoryPath } from '../utils';\n\nexport async function moveAppRendererDirectory(\n    config: Config,\n) {\n    const destinationBasePath = path.resolve(config.get('rootPath'), config.get('buildDirectory'));\n    await ensureDirectoryExists(destinationBasePath);\n\n    const sourcePath = getAppDirectoryPath(config, AppName.RENDERER);\n    const sourceDistPath = path.join(sourcePath, config.get('rendererBuildDirectory'));\n\n    const destinationPath = path.join(destinationBasePath, AppName.RENDERER);\n\n    try {\n        await fs.promises.access(destinationPath, fs.constants.R_OK);\n        await fs.promises.rm(destinationPath, { recursive: true });\n    } catch (e) {\n        //\n    }\n\n    fs.cpSync(\n        sourceDistPath,\n        destinationPath + path.sep,\n        { dereference: true, recursive: true },\n    );\n}\n","/*\n * Copyright (c) 2022-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport { load } from 'locter';\nimport { merge } from 'smob';\nimport type { InlineConfig } from 'vite';\nimport type { Config } from '../../config';\nimport type { EnvironmentName } from '../../constants';\nimport { getElectronDependencies, getElectronRendererDependencies } from '../../utils';\nimport { AppName } from '../constants';\nimport { getAppDestinationDirectoryPath, getAppDirectoryPath } from '../utils';\n\nexport async function buildRendererConfig(\n    config: Config,\n    env: `${EnvironmentName}`,\n) : Promise<InlineConfig> {\n    const packageJson = await load(path.join(config.get('rootPath'), 'package.json'));\n\n    const dependencies : string[] = Object.keys(packageJson.dependencies || {});\n    const peerDependencies : string[] = Object.keys(packageJson.peerDependencies || {});\n\n    const inlineConfig : InlineConfig = {\n        mode: env || config.get('env'),\n        root: getAppDirectoryPath(config, AppName.RENDERER),\n        build: {\n            emptyOutDir: false,\n            outDir: getAppDestinationDirectoryPath(config, AppName.RENDERER),\n            rollupOptions: {\n                external: [\n                    ...dependencies,\n                    ...peerDependencies,\n\n                    ...getElectronDependencies(),\n                    ...getElectronRendererDependencies(),\n                ],\n            },\n        },\n    };\n\n    if (config.has('rendererConfig')) {\n        merge(inlineConfig, config.get('rendererConfig')(inlineConfig));\n    }\n\n    return inlineConfig;\n}\n","/*\n * Copyright (c) 2021-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport type { SpawnOptions } from 'node:child_process';\nimport spawn from 'cross-spawn';\nimport semver from 'semver';\nimport { build } from 'vite';\nimport type { Config } from '../../config';\nimport { EnvironmentName } from '../../constants';\nimport { Framework, isPackageInfo } from '../../utils';\nimport { moveAppRendererDirectory } from './move';\nimport { buildRendererConfig } from './config';\n\nexport async function buildRendererApp(config: Config): Promise<void> {\n    const execOptions: SpawnOptions = {\n        cwd: config.get('rootPath'),\n        stdio: 'inherit',\n        detached: false,\n    };\n\n    const command = config.get('rendererBuildCommand');\n    if (command) {\n        spawn.sync(command(config.get()));\n        await moveAppRendererDirectory(config);\n        return;\n    }\n\n    const framework = config.get('framework');\n    if (isPackageInfo(framework)) {\n        switch (framework.name) {\n            case Framework.NUXT: {\n                if (semver.gte(framework.version, '3.0.0')) {\n                    spawn.sync('nuxi', ['build', config.get('rendererDirectory')], execOptions);\n                    spawn.sync('nuxi', ['generate', config.get('rendererDirectory')], execOptions);\n                } else {\n                    spawn.sync('nuxt', ['build', config.get('rendererDirectory')], execOptions);\n                    spawn.sync('nuxt', ['generate', config.get('rendererDirectory')], execOptions);\n                }\n                break;\n            }\n            case Framework.NEXT: {\n                spawn.sync('next', ['build', config.get('rendererDirectory')], execOptions);\n                spawn.sync('next', ['export', '-o', path.join(config.get('rendererDirectory'), 'dist')], execOptions);\n                break;\n            }\n        }\n\n        await moveAppRendererDirectory(config);\n        return;\n    }\n\n    const viteConfig = await buildRendererConfig(config, EnvironmentName.PRODUCTION);\n    await build(viteConfig);\n}\n","/*\n * Copyright (c) 2021-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ChildProcess, SpawnOptions } from 'node:child_process';\nimport spawn from 'cross-spawn';\nimport semver from 'semver';\nimport type { Config } from '../../config';\nimport { Framework, isPackageInfo } from '../../utils';\nimport type { PackageInfo } from '../../utils';\n\nexport function spawnRendererProcess(\n    config: Config,\n) : ChildProcess | undefined {\n    const execOptions: SpawnOptions = {\n        cwd: config.get('rootPath'),\n        stdio: 'inherit',\n        detached: false,\n    };\n\n    const command = config.get('rendererDevCommand');\n    if (command) {\n        return spawn(command(config.get()));\n    }\n\n    const framework = config.get('framework') as PackageInfo;\n    if (isPackageInfo(framework)) {\n        switch (framework.name) {\n            case Framework.NUXT: {\n                if (semver.gte(framework.version, '3.0.0')) {\n                    return spawn('nuxi', ['dev', config.get('rendererDirectory'), '-p', config.get('port').toString()], execOptions);\n                }\n\n                return spawn('nuxt', ['-p', config.get('port').toString(), config.get('rendererDirectory')], execOptions);\n            }\n            case Framework.NEXT: {\n                return spawn('next', ['-p', config.get('port').toString(), config.get('rendererDirectory')], execOptions);\n            }\n        }\n    }\n\n    return undefined;\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ChildProcess } from 'node:child_process';\nimport { createServer } from 'vite';\nimport type { UserConfig, ViteDevServer } from 'vite';\nimport type { Config } from '../../config';\nimport { EnvironmentName } from '../../constants';\nimport { spawnRendererProcess } from './ps';\nimport { buildRendererConfig } from './config';\n\ntype RendererProcess = {\n    start: () => Promise<void>,\n    stop: () => Promise<void>,\n    restart: () => Promise<void>\n    up: () => boolean,\n    reload: () => Promise<void>\n};\nexport function createRenderer(config: Config) : RendererProcess {\n    let myProcess : ChildProcess | undefined;\n\n    let viteConfig : UserConfig | undefined;\n    let viteServer: ViteDevServer | undefined;\n\n    const start = async () : Promise<void> => {\n        if (myProcess || viteServer) return;\n\n        myProcess = spawnRendererProcess(config);\n        if (myProcess) {\n            return;\n        }\n\n        if (!viteConfig) {\n            viteConfig = await buildRendererConfig(config, EnvironmentName.DEVELOPMENT);\n        }\n        viteServer = await createServer(viteConfig);\n\n        await viteServer.listen(config.get('port'));\n    };\n\n    const stop = async () : Promise<void> => {\n        if (myProcess) {\n            myProcess.removeAllListeners();\n            myProcess.kill();\n\n            myProcess = undefined;\n\n            return;\n        }\n\n        if (viteServer) {\n            await viteServer.close();\n            viteServer = undefined;\n        }\n    };\n\n    const restart = async () : Promise<void> => {\n        if (myProcess) {\n            await stop();\n            await start();\n        }\n\n        if (viteServer) {\n            await viteServer.restart();\n        }\n    };\n\n    const up = () => typeof myProcess !== 'undefined' || typeof viteServer !== 'undefined';\n\n    const reload = async () : Promise<void> => {\n        if (viteServer) {\n            viteServer.ws.send({ type: 'full-reload' });\n        } else {\n            await restart();\n        }\n    };\n\n    return {\n        restart,\n        start,\n        stop,\n        up,\n        reload,\n    };\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { SpawnSyncOptions } from 'node:child_process';\nimport type { Arguments, Argv, CommandModule } from 'yargs';\nimport spawn from 'cross-spawn';\nimport { buildMainApp } from '../apps/main';\nimport { buildPreloadApp } from '../apps/preload';\nimport { clearBuildDirectory, createBuildDirectory } from '../apps/utils';\nimport { createConfig } from '../config';\nimport { EnvironmentName } from '../constants';\nimport {\n\n    buildRendererApp,\n} from '../apps/renderer';\n\nexport interface BuildArguments extends Arguments {\n    root: string;\n    flags: string[];\n    config: string | 'electron-builder.yml';\n}\n\nexport class BuildCommand implements CommandModule {\n    command = 'build';\n\n    describe = 'Build application for production.';\n\n    builder(args: Argv) {\n        return args\n            .option('root', {\n                alias: 'r',\n                default: process.cwd(),\n                describe: 'Path to your project root directory.',\n            })\n            .option('flags', {\n                type: 'array',\n                alias: 'f',\n                default: [],\n                describe: 'Specify platform(s) and architecture(s) to build the application for.',\n                choices: ['all', 'mac', 'win', 'linux', 'ia32', 'x64', 'armv7l', 'arm64'],\n            })\n            .option('config', {\n                alias: 'c',\n                default: 'electron-builder.yml',\n                describe: 'Name of the electron-builder configuration file.',\n            });\n    }\n\n    async handler(raw: Arguments) {\n        const args : BuildArguments = raw as BuildArguments;\n        const builderArgs : string[] = [];\n\n        // Project directory\n        const rootPath = args.root || process.cwd();\n        builderArgs.push(...['--project', rootPath]);\n\n        // Config\n        const config = await createConfig(rootPath);\n        config.set('env', EnvironmentName.PRODUCTION);\n\n        const configFileName = args.config || 'electron-builder.yml';\n        builderArgs.push(...['--config', configFileName]);\n\n        // Flags\n        const flagsMapped = args.flags.map((flag) => `--${flag}`);\n        builderArgs.push(...flagsMapped);\n\n        // ----------------------------------------------------\n\n        await clearBuildDirectory(config);\n        await createBuildDirectory(config);\n\n        // ----------------------------------------------------\n\n        await buildRendererApp(config);\n\n        // ----------------------------------------------------\n\n        await buildMainApp(config);\n\n        // ----------------------------------------------------\n\n        await buildPreloadApp(config);\n\n        // ----------------------------------------------------\n\n        const spawnOptions: SpawnSyncOptions = {\n            cwd: rootPath,\n            stdio: 'inherit',\n        };\n\n        spawn.sync('electron-builder', builderArgs, spawnOptions);\n    }\n}\n","/*\n * Copyright (c) 2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport process from 'node:process';\nimport { createLogger } from 'vite';\nimport type { Arguments, Argv, CommandModule } from 'yargs';\nimport {\n    clearBuildDirectory,\n    createBuildDirectory,\n    createRenderer,\n    startMainApp,\n    startPreloadApp,\n} from '../apps';\nimport { createElectron } from '../core';\nimport { createConfig } from '../config';\nimport { EnvironmentName } from '../constants';\n\nexport interface DevArguments extends Arguments {\n    root: string;\n    port: string | null;\n}\n\nexport class DevCommand implements CommandModule {\n    command = 'dev';\n\n    describe = 'Run application in dev mode.';\n\n    builder(args: Argv) {\n        return args\n            .option('root', {\n                alias: 'r',\n                default: process.cwd(),\n                describe: 'Path to your project root directory.',\n            })\n            .option('port', {\n                alias: 'p',\n                default: null,\n                describe: 'Port of the application server in dev mode.',\n            });\n    }\n\n    async handler(raw: Arguments) {\n        try {\n            const args = raw as DevArguments;\n\n            const logger = createLogger();\n\n            // Project directory\n            const baseDirectoryPath = args.root || process.cwd();\n\n            // Config\n            const config = await createConfig(baseDirectoryPath);\n\n            // Port\n            const port = args.port ? parseInt(args.port, 10) : config.get('port');\n            config.set('port', port);\n\n            config.set('env', EnvironmentName.DEVELOPMENT);\n\n            // ----------------------------------------\n\n            await clearBuildDirectory(config);\n            await createBuildDirectory(config);\n\n            // ----------------------------------------\n\n            const electronProcess = createElectron(config, logger);\n            const rendererProcess = createRenderer(config);\n            /**\n             * Entrypoint\n             */\n            await startMainApp(config, async () => {\n                if (!electronProcess.up()) {\n                    return;\n                }\n\n                electronProcess.stop();\n\n                electronProcess.start();\n            });\n\n            /**\n             * Preload\n             */\n            await startPreloadApp(config, async () => {\n                if (!rendererProcess.up()) {\n                    return;\n                }\n\n                await rendererProcess.reload();\n            });\n\n            // ----------------------------------------\n\n            const killAllProcesses = async () => {\n                electronProcess.stop();\n\n                await rendererProcess.stop();\n\n                process.exit(0);\n            };\n\n            process.on('SIGINT', killAllProcesses);\n            process.on('SIGTERM', killAllProcesses);\n            process.on('exit', killAllProcesses);\n\n            // ----------------------------------------\n\n            await rendererProcess.start();\n            electronProcess.start();\n        } catch (e) {\n            // eslint-disable-next-line no-console\n            console.log(e);\n\n            throw e;\n        }\n    }\n}\n","/*\n * Copyright (c) 2021-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport path from 'node:path';\nimport fs from 'node:fs';\nimport type { Arguments, Argv, CommandModule } from 'yargs';\nimport { createConfig } from '../config';\nimport { ASSETS_PATH } from '../constants';\nimport { ensureDirectoryExists } from '../utils';\n\nasync function getFiles(dir: string, relativePath = '') : Promise<string[]> {\n    const direntMany = await fs.promises.readdir(dir, { withFileTypes: true });\n\n    let files : string[] = [];\n    // eslint-disable-next-line no-restricted-syntax\n    for (const dirent of direntMany) {\n        if (dirent.isDirectory()) {\n            files = [\n                ...files,\n                ...(await getFiles(path.resolve(dir, dirent.name), path.join(relativePath, dirent.name))),\n            ];\n        } else {\n            files.push(path.join(relativePath, dirent.name));\n        }\n    }\n\n    return files;\n}\n\nexport interface InitArguments extends Arguments {\n    root: string;\n}\n\nexport class InitCommand implements CommandModule {\n    command = 'init';\n\n    describe = 'Init the application file structure.';\n\n    builder(args: Argv) {\n        return args\n            .option('root', {\n                alias: 'r',\n                default: process.cwd(),\n                describe: 'Path to your project root directory.',\n            });\n    }\n\n    async handler(raw: Arguments) {\n        try {\n            const args: InitArguments = raw as InitArguments;\n\n            // Project directory\n            let baseDirectoryPath = args.root || process.cwd();\n            if (!path.isAbsolute(baseDirectoryPath)) {\n                baseDirectoryPath = path.join(process.cwd(), args.root);\n            }\n\n            // Config\n            const config = await createConfig(baseDirectoryPath);\n\n            const tplPath: string = path.join(ASSETS_PATH, 'templates');\n\n            const templateFiles = await getFiles(tplPath);\n            for (let i = 0; i < templateFiles.length; i++) {\n                const sourceFilePath = path.join(tplPath, templateFiles[i]);\n\n                const destinationFilePath = path.join(\n                    config.get('rootPath'),\n                    templateFiles[i],\n                );\n\n                const destinationDirectoryPath = path.dirname(destinationFilePath);\n                await ensureDirectoryExists(destinationDirectoryPath);\n\n                try {\n                    await fs.promises.access(destinationFilePath, fs.constants.F_OK | fs.constants.R_OK);\n                } catch (e) {\n                    const content = await fs.promises.readFile(\n                        path.join(sourceFilePath),\n                        { encoding: 'utf-8' },\n                    );\n\n                    await fs.promises.writeFile(\n                        destinationFilePath,\n                        content,\n                        { encoding: 'utf-8' },\n                    );\n                }\n            }\n        } catch (e) {\n            // eslint-disable-next-line no-console\n            console.log(e);\n\n            throw e;\n        }\n    }\n}\n","#!/usr/bin/env node\n\nimport yargs from 'yargs';\nimport { BuildCommand, DevCommand, InitCommand } from './cli';\n\n// eslint-disable-next-line no-unused-expressions,@typescript-eslint/no-unused-expressions\nyargs\n    .scriptName('vitron')\n    .usage('Usage: $0 <command> [options]')\n    .demandCommand(1)\n    .command(new BuildCommand())\n    .command(new DevCommand())\n    .command(new InitCommand())\n    .strict()\n    .alias('v', 'version')\n    .help('h')\n    .alias('h', 'help')\n    .argv;\n"],"names":["getElectronMainDependencies","getElectronRendererDependencies","getElectronDependencies","hasEnv","key","hasOwnProperty","process","env","requireFromEnv","alt","console","error","exit","extensions","findEntryFile","root","fileNames","names","i","length","j","checkPath","path","resolve","cwd","fs","promises","access","constants","F_OK","R_OK","e","undefined","ensureDirectoryExists","input","isAbsolute","join","O_DIRECTORY","mkdir","recursive","ensureDirectoryNotExists","rm","getNodeBuiltInModules","modules","map","module","removePackageVersionCaret","caret","substring","isValidPackageVersion","semver","valid","isPackageNameWithVersion","index","indexOf","isPackageInfo","isObject","name","version","parsePackageNameWithVersion","split","SyntaxError","Framework","parsePackageJSONOutput","dependencies","devDependencies","peerDependencies","dependencyMap","NUXT","NEXT","buildPackageJSONPath","rootPath","detectFrameworkSync","packageJsonFilePath","existsSync","packageJson","loadSync","AppName","getAppDirectoryPath","config","app","directoryPath","MAIN","get","PRELOAD","getAppDestinationDirectoryPath","clearBuildDirectory","entrypointDistDirectory","createBuildDirectory","buildDirectory","buildMainConfig","load","Object","keys","entryFile","Error","inlineConfig","mode","define","NODE_ENV","PORT","optimizeDeps","esbuildOptions","target","build","watch","emptyOutDir","manifest","outDir","lib","entry","fileName","formats","rollupOptions","external","plugins","replace","preventAssignment","uncrypto","server","customConfig","merge","buildMainApp","viteConfig","createElectron","logger","myProcess","start","spawn","stdio","on","data","info","message","stop","removeAllListeners","pid","kill","up","restart","buildWithWatchHook","watchHook","Promise","firstBundle","closeBundle","then","startMainApp","buildPreloadConfig","buildPreloadApp","startPreloadApp","EnvironmentName","ASSETS_PATH","__dirname","extractConfigFromEnv","buildConfig","raw","instance","Continu","defaults","port","preloadDirectory","rendererDirectory","rendererBuildDirectory","mainDirectory","transformers","framework","dirname","require","validators","value","zod","nativeEnum","safeParse","number","string","or","object","preloadConfig","any","optional","mainConfig","rendererBuildCommand","function","returns","rendererDevCommand","rendererConfig","setRaw","has","set","loadOptions","items","fileInfos","locateMany","default","push","createConfig","getPort","moveAppRendererDirectory","destinationBasePath","sourcePath","RENDERER","sourceDistPath","destinationPath","cpSync","sep","dereference","buildRendererConfig","buildRendererApp","execOptions","detached","command","sync","gte","PRODUCTION","spawnRendererProcess","toString","createRenderer","viteServer","DEVELOPMENT","createServer","listen","close","reload","ws","send","type","BuildCommand","builder","args","option","alias","describe","choices","handler","builderArgs","configFileName","flagsMapped","flags","flag","spawnOptions","DevCommand","createLogger","baseDirectoryPath","parseInt","electronProcess","rendererProcess","killAllProcesses","log","getFiles","dir","relativePath","direntMany","readdir","withFileTypes","files","dirent","isDirectory","InitCommand","tplPath","templateFiles","sourceFilePath","destinationFilePath","destinationDirectoryPath","content","readFile","encoding","writeFile","yargs","scriptName","usage","demandCommand","strict","help","argv"],"mappings":"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"}