mirror of
https://github.com/balena-io/etcher.git
synced 2025-07-24 03:36:36 +00:00
commit
c2e23855b3
@ -1,17 +0,0 @@
|
||||
# sass-lint config generated by make-sass-lint-config v0.1.2
|
||||
|
||||
files:
|
||||
include: lib/gui/scss/**/*.scss
|
||||
options:
|
||||
formatter: stylish
|
||||
merge-default-rules: false
|
||||
rules:
|
||||
no-css-comments: 0
|
||||
no-important: 0
|
||||
no-qualifying-elements: 0
|
||||
placeholder-in-extend: 0
|
||||
property-sort-order: 0
|
||||
quotes:
|
||||
- 1
|
||||
- style: double
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
import * as _ from 'lodash';
|
||||
import * as React from 'react';
|
||||
import { Flex } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import { v4 as uuidV4 } from 'uuid';
|
||||
|
||||
import * as flashState from '../../models/flash-state';
|
||||
|
@ -14,12 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { faCheckCircle, faCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import CircleSvg from '@fortawesome/fontawesome-free/svgs/solid/circle.svg';
|
||||
import CheckCircleSvg from '@fortawesome/fontawesome-free/svgs/solid/check-circle.svg';
|
||||
import * as _ from 'lodash';
|
||||
import outdent from 'outdent';
|
||||
import * as React from 'react';
|
||||
import { Txt, Flex } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
|
||||
import { progress } from '../../../../shared/messages';
|
||||
import { bytesToMegabytes } from '../../../../shared/units';
|
||||
@ -58,12 +59,10 @@ export function FlashResults({
|
||||
}}
|
||||
>
|
||||
<Flex alignItems="center">
|
||||
<FontAwesomeIcon
|
||||
icon={faCheckCircle}
|
||||
color={allDevicesFailed ? '#c6c8c9' : '#1ac135'}
|
||||
<CheckCircleSvg
|
||||
width="24px"
|
||||
fill={allDevicesFailed ? '#c6c8c9' : '#1ac135'}
|
||||
style={{
|
||||
width: '24px',
|
||||
height: '24px',
|
||||
margin: '0 15px 0 0',
|
||||
}}
|
||||
/>
|
||||
@ -78,9 +77,9 @@ export function FlashResults({
|
||||
alignItems="center"
|
||||
tooltip={type === 'failed' ? errors : undefined}
|
||||
>
|
||||
<FontAwesomeIcon
|
||||
color={type === 'failed' ? '#ff4444' : '#1ac135'}
|
||||
icon={faCircle}
|
||||
<CircleSvg
|
||||
width="14px"
|
||||
fill={type === 'failed' ? '#ff4444' : '#1ac135'}
|
||||
/>
|
||||
<Txt ml={10}>{quantity}</Txt>
|
||||
<Txt ml={10}>{progress[type](quantity)}</Txt>
|
||||
|
@ -15,7 +15,10 @@
|
||||
*/
|
||||
|
||||
import * as React from 'react';
|
||||
import { Button, Flex, ProgressBar, Txt } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import Button from 'rendition/dist_esm5/components/Button';
|
||||
import ProgressBar from 'rendition/dist_esm5/components/ProgressBar';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
import { default as styled } from 'styled-components';
|
||||
|
||||
import { fromFlashState } from '../../modules/progress-status';
|
||||
|
@ -15,7 +15,8 @@
|
||||
*/
|
||||
|
||||
import * as React from 'react';
|
||||
import { Flex, Txt } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
|
||||
import DriveSvg from '../../../assets/drive.svg';
|
||||
import ImageSvg from '../../../assets/image.svg';
|
||||
|
@ -14,12 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { faGithub } from '@fortawesome/free-brands-svg-icons';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import GithubSvg from '@fortawesome/fontawesome-free/svgs/brands/github.svg';
|
||||
import * as _ from 'lodash';
|
||||
import * as os from 'os';
|
||||
import * as React from 'react';
|
||||
import { Checkbox, Flex, Txt } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import Checkbox from 'rendition/dist_esm5/components/Checkbox';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
|
||||
import { version, packageType } from '../../../../../package.json';
|
||||
import * as settings from '../../models/settings';
|
||||
@ -149,7 +150,11 @@ export function SettingsModal({ toggleModal }: SettingsModalProps) {
|
||||
)
|
||||
}
|
||||
>
|
||||
<FontAwesomeIcon icon={faGithub} style={{ marginRight: 8 }} />
|
||||
<GithubSvg
|
||||
height="1em"
|
||||
fill="currentColor"
|
||||
style={{ marginRight: 8 }}
|
||||
/>
|
||||
<Txt style={{ borderBottom: '1px solid #00aeef' }}>{version}</Txt>
|
||||
</Flex>
|
||||
</Flex>
|
||||
|
@ -14,26 +14,21 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
faFile,
|
||||
faLink,
|
||||
faExclamationTriangle,
|
||||
} from '@fortawesome/free-solid-svg-icons';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import FileSvg from '@fortawesome/fontawesome-free/svgs/solid/file.svg';
|
||||
import LinkSvg from '@fortawesome/fontawesome-free/svgs/solid/link.svg';
|
||||
import ExclamationTriangleSvg from '@fortawesome/fontawesome-free/svgs/solid/exclamation-triangle.svg';
|
||||
import { sourceDestination } from 'etcher-sdk';
|
||||
import { ipcRenderer, IpcRendererEvent } from 'electron';
|
||||
import * as _ from 'lodash';
|
||||
import { GPTPartition, MBRPartition } from 'partitioninfo';
|
||||
import * as path from 'path';
|
||||
import * as React from 'react';
|
||||
import {
|
||||
ButtonProps,
|
||||
Card as BaseCard,
|
||||
Input,
|
||||
Modal as SmallModal,
|
||||
Txt,
|
||||
Flex,
|
||||
} from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import { ButtonProps } from 'rendition/dist_esm5/components/Button';
|
||||
import SmallModal from 'rendition/dist_esm5/components/Modal';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
import BaseCard from 'rendition/dist_esm5/components/Card';
|
||||
import Input from 'rendition/dist_esm5/components/Input';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import * as errors from '../../../../shared/errors';
|
||||
@ -127,10 +122,7 @@ const URLSelector = ({
|
||||
cancel: () => void;
|
||||
}) => {
|
||||
const [imageURL, setImageURL] = React.useState('');
|
||||
const [recentImages, setRecentImages]: [
|
||||
URL[],
|
||||
(value: React.SetStateAction<URL[]>) => void,
|
||||
] = React.useState([]);
|
||||
const [recentImages, setRecentImages] = React.useState<URL[]>([]);
|
||||
const [loading, setLoading] = React.useState(false);
|
||||
React.useEffect(() => {
|
||||
const fetchRecentUrlImages = async () => {
|
||||
@ -254,7 +246,7 @@ export class SourceSelector extends React.Component<
|
||||
SourceSelectorProps,
|
||||
SourceSelectorState
|
||||
> {
|
||||
private unsubscribe: () => void;
|
||||
private unsubscribe: (() => void) | undefined;
|
||||
private afterSelected: SourceSelectorProps['afterSelected'];
|
||||
|
||||
constructor(props: SourceSelectorProps) {
|
||||
@ -284,7 +276,7 @@ export class SourceSelector extends React.Component<
|
||||
}
|
||||
|
||||
public componentWillUnmount() {
|
||||
this.unsubscribe();
|
||||
this.unsubscribe?.();
|
||||
ipcRenderer.removeListener('select-image', this.onSelectImage);
|
||||
}
|
||||
|
||||
@ -531,7 +523,7 @@ export class SourceSelector extends React.Component<
|
||||
flow={{
|
||||
onClick: this.openImageSelector,
|
||||
label: 'Flash from file',
|
||||
icon: <FontAwesomeIcon icon={faFile} />,
|
||||
icon: <FileSvg height="1em" fill="currentColor" />,
|
||||
}}
|
||||
/>
|
||||
<FlowSelector
|
||||
@ -539,7 +531,7 @@ export class SourceSelector extends React.Component<
|
||||
flow={{
|
||||
onClick: this.openURLSelector,
|
||||
label: 'Flash from URL',
|
||||
icon: <FontAwesomeIcon icon={faLink} />,
|
||||
icon: <LinkSvg height="1em" fill="currentColor" />,
|
||||
}}
|
||||
/>
|
||||
</>
|
||||
@ -550,10 +542,7 @@ export class SourceSelector extends React.Component<
|
||||
<SmallModal
|
||||
titleElement={
|
||||
<span>
|
||||
<FontAwesomeIcon
|
||||
style={{ color: '#fca321' }}
|
||||
icon={faExclamationTriangle}
|
||||
/>{' '}
|
||||
<ExclamationTriangleSvg fill="#fca321" height="1em" />{' '}
|
||||
<span>{this.state.warning.title}</span>
|
||||
</span>
|
||||
}
|
||||
|
@ -14,9 +14,11 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import ExclamationTriangleSvg from '@fortawesome/fontawesome-free/svgs/solid/exclamation-triangle.svg';
|
||||
import { Drive as DrivelistDrive } from 'drivelist';
|
||||
import * as React from 'react';
|
||||
import { Txt, Flex, FlexProps } from 'rendition';
|
||||
import { Flex, FlexProps } from 'rendition/dist_esm5/components/Flex';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
|
||||
import {
|
||||
getDriveImageCompatibilityStatuses,
|
||||
@ -31,8 +33,6 @@ import {
|
||||
StepNameButton,
|
||||
} from '../../styled-components';
|
||||
import { middleEllipsis } from '../../utils/middle-ellipsis';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
interface TargetSelectorProps {
|
||||
targets: any[];
|
||||
@ -63,7 +63,7 @@ function DriveCompatibilityWarning({
|
||||
const messages = compatibilityWarnings.map((warning) => warning.message);
|
||||
return (
|
||||
<Flex tooltip={messages.join(', ')} {...props}>
|
||||
<FontAwesomeIcon icon={faExclamationTriangle} />
|
||||
<ExclamationTriangleSvg fill="currentColor" height="1em" />
|
||||
</Flex>
|
||||
);
|
||||
}
|
||||
|
@ -14,22 +14,16 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import {
|
||||
faChevronDown,
|
||||
faExclamationTriangle,
|
||||
} from '@fortawesome/free-solid-svg-icons';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import ExclamationTriangleSvg from '@fortawesome/fontawesome-free/svgs/solid/exclamation-triangle.svg';
|
||||
import ChevronDownSvg from '@fortawesome/fontawesome-free/svgs/solid/chevron-down.svg';
|
||||
import { scanner, sourceDestination } from 'etcher-sdk';
|
||||
import * as React from 'react';
|
||||
import {
|
||||
Badge,
|
||||
Table,
|
||||
Txt,
|
||||
Flex,
|
||||
Link,
|
||||
TableColumn,
|
||||
ModalProps,
|
||||
} from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import { ModalProps } from 'rendition/dist_esm5/components/Modal';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
import Badge from 'rendition/dist_esm5/components/Badge';
|
||||
import Link from 'rendition/dist_esm5/components/Link';
|
||||
import Table, { TableColumn } from 'rendition/dist_esm5/components/Table';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import {
|
||||
@ -164,7 +158,7 @@ export class TargetSelectorModal extends React.Component<
|
||||
TargetSelectorModalProps,
|
||||
TargetSelectorModalState
|
||||
> {
|
||||
unsubscribe: () => void;
|
||||
private unsubscribe: (() => void) | undefined;
|
||||
tableColumns: Array<TableColumn<Target>>;
|
||||
|
||||
constructor(props: TargetSelectorModalProps) {
|
||||
@ -188,10 +182,7 @@ export class TargetSelectorModal extends React.Component<
|
||||
render: (description: string, drive: Target) => {
|
||||
return isDrivelistDrive(drive) && drive.isSystem ? (
|
||||
<Flex alignItems="center">
|
||||
<FontAwesomeIcon
|
||||
style={{ color: '#fca321' }}
|
||||
icon={faExclamationTriangle}
|
||||
/>
|
||||
<ExclamationTriangleSvg height="1em" fill="#fca321" />
|
||||
<Txt ml={8}>{description}</Txt>
|
||||
</Flex>
|
||||
) : (
|
||||
@ -323,7 +314,7 @@ export class TargetSelectorModal extends React.Component<
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
this.unsubscribe();
|
||||
this.unsubscribe?.();
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -427,7 +418,7 @@ export class TargetSelectorModal extends React.Component<
|
||||
onClick={() => this.setState({ showSystemDrives: true })}
|
||||
>
|
||||
<Flex alignItems="center">
|
||||
<FontAwesomeIcon icon={faChevronDown} />
|
||||
<ChevronDownSvg height="1em" fill="currentColor" />
|
||||
<Txt ml={8}>Show {numberOfHiddenSystemDrives} hidden</Txt>
|
||||
</Flex>
|
||||
</Link>
|
||||
|
@ -18,7 +18,7 @@ import * as _ from 'lodash';
|
||||
import * as resinCorvus from 'resin-corvus/browser';
|
||||
|
||||
import * as packageJSON from '../../../../package.json';
|
||||
import { getConfig, hasProps } from '../../../shared/utils';
|
||||
import { getConfig } from '../../../shared/utils';
|
||||
import * as settings from '../models/settings';
|
||||
import { store } from '../models/store';
|
||||
|
||||
@ -55,7 +55,8 @@ async function initConfig() {
|
||||
await installCorvus();
|
||||
let validatedConfig = null;
|
||||
try {
|
||||
const config = await getConfig();
|
||||
const configUrl = await settings.get('configUrl');
|
||||
const config = await getConfig(configUrl);
|
||||
const mixpanel = _.get(config, ['analytics', 'mixpanel'], {});
|
||||
mixpanelSample = mixpanel.probability || DEFAULT_PROBABILITY;
|
||||
if (isClientEligible(mixpanelSample)) {
|
||||
@ -88,7 +89,7 @@ function validateMixpanelConfig(config: {
|
||||
const mixpanelConfig = {
|
||||
api_host: 'https://api.mixpanel.com',
|
||||
};
|
||||
if (hasProps(config, ['HTTP_PROTOCOL', 'api_host'])) {
|
||||
if (config.HTTP_PROTOCOL !== undefined && config.api_host !== undefined) {
|
||||
mixpanelConfig.api_host = `${config.HTTP_PROTOCOL}://${config.api_host}`;
|
||||
}
|
||||
return mixpanelConfig;
|
||||
|
@ -93,7 +93,11 @@ function terminateServer() {
|
||||
}
|
||||
|
||||
function writerArgv(): string[] {
|
||||
let entryPoint = electron.remote.app.getAppPath();
|
||||
let entryPoint = path.join(
|
||||
electron.remote.app.getAppPath(),
|
||||
'generated',
|
||||
'child-writer.js',
|
||||
);
|
||||
// AppImages run over FUSE, so the files inside the mount point
|
||||
// can only be accessed by the user that mounted the AppImage.
|
||||
// This means we can't re-spawn Etcher as root from the same
|
||||
|
@ -23,7 +23,7 @@ import { join } from 'path';
|
||||
import { env } from 'process';
|
||||
import { promisify } from 'util';
|
||||
|
||||
import { tmpFileDisposer } from '../../../shared/utils';
|
||||
import { tmpFileDisposer } from '../../../shared/tmp';
|
||||
|
||||
const readFileAsync = promisify(readFile);
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
import { scanner } from 'etcher-sdk';
|
||||
import * as React from 'react';
|
||||
import { Flex } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import { TargetSelector } from '../../components/target-selector/target-selector-button';
|
||||
import { TargetSelectorModal } from '../../components/target-selector/target-selector-modal';
|
||||
import {
|
||||
|
@ -14,10 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import CircleSvg from '@fortawesome/fontawesome-free/svgs/solid/circle.svg';
|
||||
import * as _ from 'lodash';
|
||||
import * as path from 'path';
|
||||
import * as React from 'react';
|
||||
import { Flex, Modal, Txt } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import Modal from 'rendition/dist_esm5/components/Modal';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
|
||||
import * as constraints from '../../../../shared/drive-constraints';
|
||||
import * as messages from '../../../../shared/messages';
|
||||
@ -34,8 +37,6 @@ import * as notification from '../../os/notification';
|
||||
import { selectAllTargets } from './DriveSelector';
|
||||
|
||||
import FlashSvg from '../../../assets/flash.svg';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import { faCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
|
||||
const COMPLETED_PERCENTAGE = 100;
|
||||
const SPEED_PRECISION = 2;
|
||||
@ -286,7 +287,7 @@ export class FlashStep extends React.PureComponent<
|
||||
|
||||
{Boolean(this.props.failed) && (
|
||||
<Flex color="#fff" alignItems="center" mt={35}>
|
||||
<FontAwesomeIcon color="#ff4444" icon={faCircle} />
|
||||
<CircleSvg height="1em" fill="#ff4444" />
|
||||
<Txt ml={10}>{this.props.failed}</Txt>
|
||||
<Txt ml={10}>{messages.progress.failed(this.props.failed)}</Txt>
|
||||
</Flex>
|
||||
|
@ -14,13 +14,14 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { faCog, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';
|
||||
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
||||
import CogSvg from '@fortawesome/fontawesome-free/svgs/solid/cog.svg';
|
||||
import QuestionCircleSvg from '@fortawesome/fontawesome-free/svgs/solid/question-circle.svg';
|
||||
|
||||
import { sourceDestination } from 'etcher-sdk';
|
||||
import * as _ from 'lodash';
|
||||
import * as path from 'path';
|
||||
import * as React from 'react';
|
||||
import { Flex } from 'rendition';
|
||||
import { Flex } from 'rendition/dist_esm5/components/Flex';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { FeaturedProject } from '../../components/featured-project/featured-project';
|
||||
@ -193,14 +194,14 @@ export class MainPage extends React.Component<
|
||||
}}
|
||||
>
|
||||
<Icon
|
||||
icon={<FontAwesomeIcon icon={faCog} />}
|
||||
icon={<CogSvg height="1em" fill="currentColor" />}
|
||||
plain
|
||||
tabIndex={5}
|
||||
onClick={() => this.setState({ hideSettings: false })}
|
||||
/>
|
||||
{!settings.getSync('disableExternalLinks') && (
|
||||
<Icon
|
||||
icon={<FontAwesomeIcon icon={faQuestionCircle} />}
|
||||
icon={<QuestionCircleSvg height="1em" fill="currentColor" />}
|
||||
onClick={() =>
|
||||
openExternal(
|
||||
selectionState.getImageSupportUrl() ||
|
||||
|
@ -15,16 +15,12 @@
|
||||
*/
|
||||
|
||||
import * as React from 'react';
|
||||
import {
|
||||
Button,
|
||||
ButtonProps,
|
||||
Modal as ModalBase,
|
||||
Provider,
|
||||
Txt,
|
||||
Flex,
|
||||
FlexProps,
|
||||
Theme as renditionTheme,
|
||||
} from 'rendition';
|
||||
import { Flex, FlexProps } from 'rendition/dist_esm5/components/Flex';
|
||||
import Button, { ButtonProps } from 'rendition/dist_esm5/components/Button';
|
||||
import ModalBase from 'rendition/dist_esm5/components/Modal';
|
||||
import Provider from 'rendition/dist_esm5/components/Provider';
|
||||
import Txt from 'rendition/dist_esm5/components/Txt';
|
||||
import renditionTheme from 'rendition/dist_esm5/theme';
|
||||
import styled from 'styled-components';
|
||||
import { space } from 'styled-system';
|
||||
|
||||
|
@ -14,26 +14,24 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { delay } from 'bluebird';
|
||||
import * as electron from 'electron';
|
||||
import { autoUpdater } from 'electron-updater';
|
||||
import { promises as fs } from 'fs';
|
||||
import { platform } from 'os';
|
||||
import * as _ from 'lodash';
|
||||
import * as path from 'path';
|
||||
import * as semver from 'semver';
|
||||
|
||||
import { packageType, version } from '../../package.json';
|
||||
import * as EXIT_CODES from '../shared/exit-codes';
|
||||
import { getConfig } from '../shared/utils';
|
||||
import { delay, getConfig } from '../shared/utils';
|
||||
import * as settings from './app/models/settings';
|
||||
import * as analytics from './app/modules/analytics';
|
||||
import { logException } from './app/modules/analytics';
|
||||
import { buildWindowMenu } from './menu';
|
||||
|
||||
const customProtocol = 'etcher';
|
||||
const scheme = `${customProtocol}://`;
|
||||
const updatablePackageTypes = ['appimage', 'nsis', 'dmg'];
|
||||
const packageUpdatable = _.includes(updatablePackageTypes, packageType);
|
||||
const packageUpdatable = updatablePackageTypes.includes(packageType);
|
||||
let packageUpdated = false;
|
||||
|
||||
async function checkForUpdates(interval: number) {
|
||||
@ -51,7 +49,7 @@ async function checkForUpdates(interval: number) {
|
||||
packageUpdated = true;
|
||||
}
|
||||
} catch (err) {
|
||||
analytics.logException(err);
|
||||
logException(err);
|
||||
}
|
||||
}
|
||||
await delay(interval);
|
||||
@ -114,6 +112,14 @@ electron.app.on('open-url', async (event, data) => {
|
||||
await selectImageURL(data);
|
||||
});
|
||||
|
||||
interface AutoUpdaterConfig {
|
||||
autoDownload?: boolean;
|
||||
autoInstallOnAppQuit?: boolean;
|
||||
allowPrerelease?: boolean;
|
||||
fullChangelog?: boolean;
|
||||
allowDowngrade?: boolean;
|
||||
}
|
||||
|
||||
async function createMainWindow() {
|
||||
const fullscreen = Boolean(await settings.get('fullscreen'));
|
||||
const defaultWidth = 800;
|
||||
@ -171,27 +177,24 @@ async function createMainWindow() {
|
||||
|
||||
page.once('did-frame-finish-load', async () => {
|
||||
autoUpdater.on('error', (err) => {
|
||||
analytics.logException(err);
|
||||
logException(err);
|
||||
});
|
||||
if (packageUpdatable) {
|
||||
try {
|
||||
const onlineConfig = await getConfig();
|
||||
const autoUpdaterConfig = _.get(
|
||||
onlineConfig,
|
||||
['autoUpdates', 'autoUpdaterConfig'],
|
||||
{
|
||||
autoDownload: false,
|
||||
},
|
||||
);
|
||||
_.merge(autoUpdater, autoUpdaterConfig);
|
||||
const checkForUpdatesTimer = _.get(
|
||||
onlineConfig,
|
||||
['autoUpdates', 'checkForUpdatesTimer'],
|
||||
300000,
|
||||
);
|
||||
const configUrl = await settings.get('configUrl');
|
||||
const onlineConfig = await getConfig(configUrl);
|
||||
const autoUpdaterConfig: AutoUpdaterConfig = onlineConfig?.autoUpdates
|
||||
?.autoUpdaterConfig ?? {
|
||||
autoDownload: false,
|
||||
};
|
||||
for (const [key, value] of Object.entries(autoUpdaterConfig)) {
|
||||
autoUpdater[key as keyof AutoUpdaterConfig] = value;
|
||||
}
|
||||
const checkForUpdatesTimer =
|
||||
onlineConfig?.autoUpdates?.checkForUpdatesTimer ?? 300000;
|
||||
checkForUpdates(checkForUpdatesTimer);
|
||||
} catch (err) {
|
||||
analytics.logException(err);
|
||||
logException(err);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -14,16 +14,15 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { delay } from 'bluebird';
|
||||
import { Drive as DrivelistDrive } from 'drivelist';
|
||||
import * as sdk from 'etcher-sdk';
|
||||
import { cleanupTmpFiles } from 'etcher-sdk/build/tmp';
|
||||
import * as _ from 'lodash';
|
||||
import * as ipc from 'node-ipc';
|
||||
|
||||
import { File, Http } from 'etcher-sdk/build/source-destination';
|
||||
import { toJSON } from '../../shared/errors';
|
||||
import { GENERAL_ERROR, SUCCESS } from '../../shared/exit-codes';
|
||||
import { delay } from '../../shared/utils';
|
||||
import { SourceOptions } from '../app/components/source-selector/source-selector';
|
||||
|
||||
ipc.config.id = process.env.IPC_CLIENT_ID as string;
|
||||
@ -213,7 +212,7 @@ ipc.connectTo(IPC_SERVER_ID, () => {
|
||||
* writer.on('fail', onFail)
|
||||
*/
|
||||
const onFail = (
|
||||
destination: sdk.sourceDestination.BlockDevice,
|
||||
destination: sdk.sourceDestination.SourceDestination,
|
||||
error: Error,
|
||||
) => {
|
||||
ipc.of[IPC_SERVER_ID].emit('fail', {
|
||||
@ -241,12 +240,15 @@ ipc.connectTo(IPC_SERVER_ID, () => {
|
||||
});
|
||||
const { SourceType } = options;
|
||||
let source;
|
||||
if (SourceType === File.name) {
|
||||
source = new File({
|
||||
if (SourceType === sdk.sourceDestination.File.name) {
|
||||
source = new sdk.sourceDestination.File({
|
||||
path: options.imagePath,
|
||||
});
|
||||
} else {
|
||||
source = new Http({ url: options.imagePath, avoidRandomAccess: true });
|
||||
source = new sdk.sourceDestination.Http({
|
||||
url: options.imagePath,
|
||||
avoidRandomAccess: true,
|
||||
});
|
||||
}
|
||||
try {
|
||||
const results = await writeAndValidate({
|
||||
|
@ -17,11 +17,11 @@
|
||||
import * as _ from 'lodash';
|
||||
|
||||
function createErrorDetails(options: {
|
||||
title: string | ((error: Error) => string);
|
||||
description: string | ((error: Error) => string);
|
||||
title: string | ((error: Error & { path: string }) => string);
|
||||
description: string;
|
||||
}): {
|
||||
title: (error: Error) => string;
|
||||
description: (error: Error) => string;
|
||||
title: (error: Error & { path: string }) => string;
|
||||
description: (error: Error & { path: string }) => string;
|
||||
} {
|
||||
return _.pick(
|
||||
_.mapValues(options, (value) => {
|
||||
|
@ -25,7 +25,7 @@ import { promisify } from 'util';
|
||||
|
||||
import { sudo as catalinaSudo } from './catalina-sudo/sudo';
|
||||
import * as errors from './errors';
|
||||
import { tmpFileDisposer } from './utils';
|
||||
import { tmpFileDisposer } from './tmp';
|
||||
|
||||
const execAsync = promisify(childProcess.exec);
|
||||
const execFileAsync = promisify(childProcess.execFile);
|
||||
|
24
lib/shared/tmp.ts
Normal file
24
lib/shared/tmp.ts
Normal file
@ -0,0 +1,24 @@
|
||||
import * as Bluebird from 'bluebird';
|
||||
import * as tmp from 'tmp';
|
||||
|
||||
function tmpFileAsync(
|
||||
options: tmp.FileOptions,
|
||||
): Promise<{ path: string; cleanup: () => void }> {
|
||||
return new Promise((resolve, reject) => {
|
||||
tmp.file(options, (error, path, _fd, cleanup) => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve({ path, cleanup });
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function tmpFileDisposer(
|
||||
options: tmp.FileOptions,
|
||||
): Bluebird.Disposer<{ path: string; cleanup: () => void }> {
|
||||
return Bluebird.resolve(tmpFileAsync(options)).disposer(({ cleanup }) => {
|
||||
cleanup();
|
||||
});
|
||||
}
|
@ -14,19 +14,13 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import * as Bluebird from 'bluebird';
|
||||
import * as _ from 'lodash';
|
||||
import * as request from 'request';
|
||||
import * as tmp from 'tmp';
|
||||
import { promisify } from 'util';
|
||||
import axios from 'axios';
|
||||
import { Dictionary } from 'lodash';
|
||||
|
||||
import * as errors from './errors';
|
||||
import * as settings from '../gui/app/models/settings';
|
||||
|
||||
const getAsync = promisify(request.get);
|
||||
|
||||
export function isValidPercentage(percentage: any): boolean {
|
||||
return _.every([_.isNumber(percentage), percentage >= 0, percentage <= 100]);
|
||||
return typeof percentage === 'number' && percentage >= 0 && percentage <= 100;
|
||||
}
|
||||
|
||||
export function percentageToFloat(percentage: any) {
|
||||
@ -38,62 +32,18 @@ export function percentageToFloat(percentage: any) {
|
||||
return percentage / 100;
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Check if obj has one or many specific props
|
||||
*/
|
||||
export function hasProps(obj: _.Dictionary<any>, props: string[]): boolean {
|
||||
return _.every(props, (prop) => {
|
||||
return _.has(obj, prop);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Get etcher configs stored online
|
||||
* @param {String} - url where config.json is stored
|
||||
*/
|
||||
export async function getConfig(): Promise<_.Dictionary<any>> {
|
||||
const configUrl =
|
||||
(await settings.get('configUrl')) ||
|
||||
'https://balena.io/etcher/static/config.json';
|
||||
return (await getAsync({ url: configUrl, json: true })).body;
|
||||
export async function getConfig(configUrl?: string): Promise<Dictionary<any>> {
|
||||
configUrl = configUrl ?? 'https://balena.io/etcher/static/config.json';
|
||||
const response = await axios.get(configUrl, { responseType: 'json' });
|
||||
return response.data;
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary returns { path: String, cleanup: Function }
|
||||
*
|
||||
* @example
|
||||
* const {path, cleanup } = await tmpFileAsync()
|
||||
* console.log(path)
|
||||
* cleanup()
|
||||
*/
|
||||
function tmpFileAsync(
|
||||
options: tmp.FileOptions,
|
||||
): Promise<{ path: string; cleanup: () => void }> {
|
||||
return new Promise((resolve, reject) => {
|
||||
tmp.file(options, (error, path, _fd, cleanup) => {
|
||||
if (error) {
|
||||
reject(error);
|
||||
} else {
|
||||
resolve({ path, cleanup });
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @summary Disposer for tmpFileAsync, calls cleanup()
|
||||
*
|
||||
* @returns {Disposer<{ path: String, cleanup: Function }>}
|
||||
*
|
||||
* @example
|
||||
* await Bluebird.using(tmpFileDisposer(), ({ path }) => {
|
||||
* console.log(path);
|
||||
* })
|
||||
*/
|
||||
export function tmpFileDisposer(
|
||||
options: tmp.FileOptions,
|
||||
): Bluebird.Disposer<{ path: string; cleanup: () => void }> {
|
||||
return Bluebird.resolve(tmpFileAsync(options)).disposer(({ cleanup }) => {
|
||||
cleanup();
|
||||
export async function delay(duration: number): Promise<void> {
|
||||
await new Promise((resolve) => {
|
||||
setTimeout(resolve, duration);
|
||||
});
|
||||
}
|
||||
|
30
lib/start.ts
30
lib/start.ts
@ -1,30 +0,0 @@
|
||||
/*
|
||||
* Copyright 2016 balena.io
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
// See http://electron.atom.io/docs/v0.37.7/api/environment-variables/#electronrunasnode
|
||||
//
|
||||
// Notice that if running electron with `ELECTRON_RUN_AS_NODE`, the binary
|
||||
// *won't* attempt to load the `app.asar` application by default, therefore
|
||||
// if passing `ELECTRON_RUN_AS_NODE`, you have to pass the path to the asar
|
||||
// or the entry point file (this file) manually as an argument.
|
||||
|
||||
import { env } from 'process';
|
||||
|
||||
if (env.ELECTRON_RUN_AS_NODE) {
|
||||
import('./gui/modules/child-writer');
|
||||
} else {
|
||||
import('./gui/etcher');
|
||||
}
|
559
npm-shrinkwrap.json
generated
559
npm-shrinkwrap.json
generated
@ -2630,9 +2630,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/runtime-corejs2": {
|
||||
"version": "7.10.3",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.10.3.tgz",
|
||||
"integrity": "sha512-enKvnR/kKFbZFgXYo165wtSA5OeiTlgsnU4jV3vpKRhfWUJjLS6dfVcjIPeRcgJbgEgdgu0I+UyBWqu6c0GumQ==",
|
||||
"version": "7.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs2/-/runtime-corejs2-7.10.4.tgz",
|
||||
"integrity": "sha512-9sArmpZDQsnR1yyAcU51DxQrntWxt0LUKjPp3pIyo7kVLfaqKt8muppcT87QmFkXV5H50qXAF8JWOjk0jaXRYA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-js": "^2.6.5",
|
||||
@ -2753,6 +2753,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@balena/udif": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@balena/udif/-/udif-1.0.4.tgz",
|
||||
"integrity": "sha512-FeZ/kBFPxFKj5MesnUIdkZWSLBbjY/dK8yGMm5qwfKKFmYOcAU1IQ40ocrp6QZb3B6syjB7/ORrUhwwBMqbl0Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"apple-data-compression": "^0.4.1",
|
||||
"apple-plist": "^0.3.0",
|
||||
"cyclic-32": "^1.1.0",
|
||||
"unbzip2-stream": "github:balena-io-modules/unbzip2-stream#4a54f56a25b58950f9e4277c56db2912d62242e7"
|
||||
}
|
||||
},
|
||||
"@braintree/sanitize-url": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-3.1.0.tgz",
|
||||
@ -2847,22 +2859,27 @@
|
||||
"integrity": "sha512-gtis2/5yLdfI6n0ia0jH7NJs5i/Z/8M/ZbQL6jXQhCthEOe5Cr5NcQPhgTvFxNOtURE03/ZqUcEskdn2M+QaBg==",
|
||||
"dev": true
|
||||
},
|
||||
"@fortawesome/fontawesome-svg-core": {
|
||||
"version": "1.2.28",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.28.tgz",
|
||||
"integrity": "sha512-4LeaNHWvrneoU0i8b5RTOJHKx7E+y7jYejplR7uSVB34+mp3Veg7cbKk7NBCLiI4TyoWS1wh9ZdoyLJR8wSAdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.28"
|
||||
}
|
||||
"@fortawesome/fontawesome-free": {
|
||||
"version": "5.13.1",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.13.1.tgz",
|
||||
"integrity": "sha512-D819f34FLHeBN/4xvw0HR0u7U2G7RqjPSggXqf7LktsxWQ48VAfGwvMrhcVuaZV2fF069c/619RdgCCms0DHhw==",
|
||||
"dev": true
|
||||
},
|
||||
"@fortawesome/free-brands-svg-icons": {
|
||||
"version": "5.13.0",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-5.13.0.tgz",
|
||||
"integrity": "sha512-/6xXiJFCMEQxqxXbL0FPJpwq5Cv6MRrjsbJEmH/t5vOvB4dILDpnY0f7zZSlA8+TG7jwlt12miF/yZpZkykucA==",
|
||||
"@fortawesome/fontawesome-svg-core": {
|
||||
"version": "1.2.29",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.29.tgz",
|
||||
"integrity": "sha512-xmPmP2t8qrdo8RyKihTkGb09RnZoc+7HFBCnr0/6ZhStdGDSLeEd7ajV181+2W29NWIFfylO13rU+s3fpy3cnA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.28"
|
||||
"@fortawesome/fontawesome-common-types": "^0.2.29"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": {
|
||||
"version": "0.2.29",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.29.tgz",
|
||||
"integrity": "sha512-cY+QfDTbZ7XVxzx7jxbC98Oxr/zc7R2QpTLqTxqlfyXDrAJjzi/xUIqAUsygELB62JIrbsWxtSRhayKFkGI7MA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"@fortawesome/free-regular-svg-icons": {
|
||||
@ -2951,6 +2968,25 @@
|
||||
"integrity": "sha512-bliu3CfMWLxMJaW8UK7+6Q1iPQoXbP9BK14yvid2pZL+OgqKgmnY6O9pazIi5Ca9NVTviNcN8WCz1TicUiABQw==",
|
||||
"dev": true
|
||||
},
|
||||
"@rjsf/core": {
|
||||
"version": "2.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@rjsf/core/-/core-2.2.1.tgz",
|
||||
"integrity": "sha512-XUpUUF1EParZjFIfgZXzu0lP8YWK/R+38UfXuP7JEu8NqopRdw6J4XqVhcYjJtdULsi3lr279CSOmJuyzokJGg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/runtime-corejs2": "^7.8.7",
|
||||
"@types/json-schema": "^7.0.4",
|
||||
"ajv": "^6.7.0",
|
||||
"core-js": "^2.5.7",
|
||||
"json-schema-merge-allof": "^0.6.0",
|
||||
"jsonpointer": "^4.0.1",
|
||||
"lodash": "^4.17.15",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-app-polyfill": "^1.0.4",
|
||||
"react-is": "^16.9.0",
|
||||
"shortid": "^2.2.14"
|
||||
}
|
||||
},
|
||||
"@ronomon/direct-io": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@ronomon/direct-io/-/direct-io-3.0.1.tgz",
|
||||
@ -3611,20 +3647,10 @@
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"@types/react-jsonschema-form": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-jsonschema-form/-/react-jsonschema-form-1.7.3.tgz",
|
||||
"integrity": "sha512-YiUCSnTA84e8g3zQobA+Iheh3+i3pb7TiIIXT4oEHwenhyrHVB5vPSIi/QeURy6PwVP1LfSCGOAHFRDpE/hAtQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/json-schema": "*",
|
||||
"@types/react": "*"
|
||||
}
|
||||
},
|
||||
"@types/react-native": {
|
||||
"version": "0.62.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.62.14.tgz",
|
||||
"integrity": "sha512-ItBgiEQks2Mid6GsiLBx75grNH0glaKemTK9V7G+vSnvP+Zk3x1Wr+aTy4dJxRPPMg14DAJyYePLZwj2cigXbw==",
|
||||
"version": "0.63.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.63.1.tgz",
|
||||
"integrity": "sha512-mo2DAgliCqdNyivBa0/JL8JIkebt9TU0ATmsvtUvypIP5qN+YJekbVPpHt6WLXEZyBm7LtmIqxbjIHqeoaojsg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/react": "*"
|
||||
@ -3665,9 +3691,9 @@
|
||||
}
|
||||
},
|
||||
"@types/sanitize-html": {
|
||||
"version": "1.23.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-1.23.2.tgz",
|
||||
"integrity": "sha512-s00omSXGjemcNGXChE44grxYLPCkxdp/rdxGCb4FcGyH0aOjFOacrnP0P394Ktp+IKeBk1Q7VsGJ+cOa2GZ5hw==",
|
||||
"version": "1.23.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/sanitize-html/-/sanitize-html-1.23.3.tgz",
|
||||
"integrity": "sha512-Isg8N0ifKdDq6/kaNlIcWfapDXxxquMSk2XC5THsOICRyOIhQGds95XH75/PL/g9mExi4bL8otIqJM/Wo96WxA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"htmlparser2": "^4.1.0"
|
||||
@ -3712,9 +3738,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/styled-components": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.0.tgz",
|
||||
"integrity": "sha512-ZFlLCuwF5r+4Vb7JUmd+Yr2S0UBdBGmI7ctFTgJMypIp3xOHI4LCFVn2dKMvpk6xDB2hLRykrEWMBwJEpUAUIQ==",
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/styled-components/-/styled-components-5.1.1.tgz",
|
||||
"integrity": "sha512-fIjKvDU1LJExBZWEQilHqzfpOK4KUwBsj5zC79lxa94ekz8oDQSBNcayMACBImxIuevF+NbBGL9O/2CQ67Zhig==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@types/hoist-non-react-statics": "*",
|
||||
@ -4270,6 +4296,15 @@
|
||||
"bloodline": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"apple-plist": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/apple-plist/-/apple-plist-0.3.0.tgz",
|
||||
"integrity": "sha512-JG1KFeAlKsPz4Fk4Av8P3xg50C2oAOJ+qRVDE4aGTvzZublYjOeG5FlB1HNxNST7uf1R55zOQr0lKdffW6SsxQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"htmlparser2": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"aproba": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||
@ -4619,12 +4654,6 @@
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
|
||||
"dev": true
|
||||
},
|
||||
"balena-temen": {
|
||||
"version": "0.5.7",
|
||||
"resolved": "https://registry.npmjs.org/balena-temen/-/balena-temen-0.5.7.tgz",
|
||||
"integrity": "sha512-ud6CJAdPXXy7UGN+ws1iKNl4W1egqxA4STOWlbQjER7xGt/L7AWVZDkUXcrBrLaDwFDd+uSwi+AhqFp+yrplNw==",
|
||||
"dev": true
|
||||
},
|
||||
"base": {
|
||||
"version": "0.11.2",
|
||||
"resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
|
||||
@ -4751,24 +4780,14 @@
|
||||
}
|
||||
},
|
||||
"blockmap": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/blockmap/-/blockmap-4.0.1.tgz",
|
||||
"integrity": "sha512-ktam+finx4xUQQNbKRBD6VXiULFCb814/N50QBWyD2e6nrWc3QvuMISDLKnSnK64pTnQUMA9dRWpyGFK9ZIchw==",
|
||||
"version": "4.0.2",
|
||||
"resolved": "https://registry.npmjs.org/blockmap/-/blockmap-4.0.2.tgz",
|
||||
"integrity": "sha512-jeQSY/yAc/URhOoK/odQtqaIV9wiSB5KKRfERD1pnlkyOciBQwYuZ9Lvt/v8dCdVmn53vNlMKLm4h5Esy+WcnQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^3.1.0",
|
||||
"debug": "^4.1.1",
|
||||
"tslib": "^2.0.0",
|
||||
"xml-js": "^1.6.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"debug": {
|
||||
"version": "3.2.6",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
|
||||
"integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"bloodline": {
|
||||
@ -5452,6 +5471,14 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"chromium-pickle-js": {
|
||||
@ -5855,6 +5882,29 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"compute-gcd": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/compute-gcd/-/compute-gcd-1.2.0.tgz",
|
||||
"integrity": "sha1-/B7eW2UAHpUCJlAvRlQ4Y+T+oQ4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"validate.io-array": "^1.0.3",
|
||||
"validate.io-function": "^1.0.2",
|
||||
"validate.io-integer-array": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"compute-lcm": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/compute-lcm/-/compute-lcm-1.1.0.tgz",
|
||||
"integrity": "sha1-q9ltBAtBsKFm+JlEtci3xRHiGtU=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"compute-gcd": "^1.2.0",
|
||||
"validate.io-array": "^1.0.3",
|
||||
"validate.io-function": "^1.0.2",
|
||||
"validate.io-integer-array": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
@ -7282,9 +7332,9 @@
|
||||
}
|
||||
},
|
||||
"electron": {
|
||||
"version": "9.0.5",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-9.0.5.tgz",
|
||||
"integrity": "sha512-bnL9H48LuQ250DML8xUscsKiuSu+xv5umXbpBXYJ0BfvYVmFfNbG3jCfhrsH7aP6UcQKVxOG1R/oQExd0EFneQ==",
|
||||
"version": "9.1.1",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-9.1.1.tgz",
|
||||
"integrity": "sha512-BYvroBLV9x7G4iN33P/IxeZqwjl62/9VuBAF1CoM0m6OeheaiLog1ZMKLlCqVXycJvvrAvLHc454DDEmwnqqhA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@electron/get": "^1.0.1",
|
||||
@ -8035,12 +8085,23 @@
|
||||
"optional": true
|
||||
},
|
||||
"encoding": {
|
||||
"version": "0.1.12",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
|
||||
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
|
||||
"version": "0.1.13",
|
||||
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
|
||||
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"iconv-lite": "~0.4.13"
|
||||
"iconv-lite": "^0.6.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"iconv-lite": {
|
||||
"version": "0.6.2",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
|
||||
"integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"end-of-stream": {
|
||||
@ -8299,11 +8360,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"etcher-sdk": {
|
||||
"version": "4.1.17",
|
||||
"resolved": "https://registry.npmjs.org/etcher-sdk/-/etcher-sdk-4.1.17.tgz",
|
||||
"integrity": "sha512-cmsPI08f/uArgpWWvJLDKOYOLk99kUooQCKnbdWORwXvKCAnp7i2CAz2KMUDZ3csgsMx7a+JWFw+27/8NGr+Uw==",
|
||||
"version": "4.1.19",
|
||||
"resolved": "https://registry.npmjs.org/etcher-sdk/-/etcher-sdk-4.1.19.tgz",
|
||||
"integrity": "sha512-3O24ZDDZ7ykiF40Ygw/hJRZMTMiNDwCsylotrHOJFMu9khZPoj8MMhO9DIJDS1Muym4AAp0t8OtMWuqLN0N6XA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@balena/udif": "^1.0.3",
|
||||
"@ronomon/direct-io": "^3.0.1",
|
||||
"axios": "^0.19.2",
|
||||
"blockmap": "^4.0.1",
|
||||
@ -8312,17 +8374,17 @@
|
||||
"crc": "^3.8.0",
|
||||
"debug": "^3.1.0",
|
||||
"drivelist": "^9.0.0",
|
||||
"file-disk": "^6.0.1",
|
||||
"file-disk": "^7.0.1",
|
||||
"file-type": "^8.0.0",
|
||||
"lodash": "^4.17.10",
|
||||
"lzma-native": "^6.0.0",
|
||||
"mountutils": "^1.3.18",
|
||||
"node-raspberrypi-usbboot": "^0.2.4",
|
||||
"outdent": "^0.7.0",
|
||||
"partitioninfo": "^5.3.5",
|
||||
"resin-image-fs": "^5.0.8",
|
||||
"partitioninfo": "^6.0.0",
|
||||
"resin-image-fs": "^6.0.0",
|
||||
"rwmutex": "^1.0.0",
|
||||
"udif": "^0.17.0",
|
||||
"tslib": "^2.0.0",
|
||||
"unbzip2-stream": "github:balena-io-modules/unbzip2-stream#4a54f56a25b58950f9e4277c56db2912d62242e7",
|
||||
"unzip-stream": "^0.3.0",
|
||||
"xxhash": "^0.3.0",
|
||||
@ -8687,6 +8749,15 @@
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
|
||||
"integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
|
||||
"dev": true
|
||||
},
|
||||
"promise": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
|
||||
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asap": "~2.0.3"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -8721,12 +8792,13 @@
|
||||
}
|
||||
},
|
||||
"file-disk": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-disk/-/file-disk-6.0.1.tgz",
|
||||
"integrity": "sha512-bR+G6P2wc1Oq7nASGgDVE8xjnTZVrAKdXlIJCW6IHlqT9tgdwTl9V1mBZiWDyyPzXRe+GJeXlZhfRsL8oBSD3Q==",
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/file-disk/-/file-disk-7.0.1.tgz",
|
||||
"integrity": "sha512-uTW9b0uLgu80+5K5FkefrrWHkk6klvF7oPRPC/yNnwkdqLeVY8af91bduU84o86RnZo5HJ2Cgg5HN10qGqld4A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.5.3"
|
||||
"bluebird": "^3.7.2",
|
||||
"tslib": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"file-loader": {
|
||||
@ -9455,12 +9527,6 @@
|
||||
"integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
|
||||
"dev": true
|
||||
},
|
||||
"graceful-readlink": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
|
||||
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
|
||||
"dev": true
|
||||
},
|
||||
"grapheme-splitter": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
|
||||
@ -10466,12 +10532,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"jellyschema": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/jellyschema/-/jellyschema-0.11.10.tgz",
|
||||
"integrity": "sha512-aYGNa5XwFKgahnxu1cloyOog8GcefeMl6rZpaieBYPAZsmXvPeJ+cf+mjito65hBLVOz0PmA45YHv+OXsgRcOw==",
|
||||
"dev": true
|
||||
},
|
||||
"js-message": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/js-message/-/js-message-1.0.5.tgz",
|
||||
@ -10539,6 +10599,26 @@
|
||||
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
|
||||
"dev": true
|
||||
},
|
||||
"json-schema-compare": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-compare/-/json-schema-compare-0.2.2.tgz",
|
||||
"integrity": "sha512-c4WYmDKyJXhs7WWvAWm3uIYnfyWFoIp+JEoX34rctVvEkMYCPGhXtvmFFXiffBbxfZsvQ0RNnV5H7GvDF5HCqQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"lodash": "^4.17.4"
|
||||
}
|
||||
},
|
||||
"json-schema-merge-allof": {
|
||||
"version": "0.6.0",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-merge-allof/-/json-schema-merge-allof-0.6.0.tgz",
|
||||
"integrity": "sha512-LEw4VMQVRceOPLuGRWcxW5orTTiR9ZAtqTAe4rQUjNADTeR81bezBVFa0MqIwp0YmHIM1KkhSjZM7o+IQhaPbQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"compute-lcm": "^1.1.0",
|
||||
"json-schema-compare": "^0.2.2",
|
||||
"lodash": "^4.17.4"
|
||||
}
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
|
||||
@ -10570,6 +10650,12 @@
|
||||
"universalify": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"jsonpointer": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz",
|
||||
"integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==",
|
||||
"dev": true
|
||||
},
|
||||
"jsprim": {
|
||||
"version": "1.4.1",
|
||||
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
|
||||
@ -12265,9 +12351,9 @@
|
||||
}
|
||||
},
|
||||
"node-abi": {
|
||||
"version": "2.17.0",
|
||||
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.17.0.tgz",
|
||||
"integrity": "sha512-dFRAA0ACk/aBo0TIXQMEWMLUTyWYYT8OBYIzLmEUrQTElGRjxDCvyBZIsDL0QA7QCaj9PrawhOmTEdsuLY4uOQ==",
|
||||
"version": "2.18.0",
|
||||
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.18.0.tgz",
|
||||
"integrity": "sha512-yi05ZoiuNNEbyT/xXfSySZE+yVnQW6fxPZuFbLyS1s6b5Kw3HzV2PHOM4XR+nsjzkHxByK+2Wg+yCQbe35l8dw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"semver": "^5.4.1"
|
||||
@ -13119,16 +13205,17 @@
|
||||
"dev": true
|
||||
},
|
||||
"partitioninfo": {
|
||||
"version": "5.3.5",
|
||||
"resolved": "https://registry.npmjs.org/partitioninfo/-/partitioninfo-5.3.5.tgz",
|
||||
"integrity": "sha512-lZIt5D9wsOVnixePPmVyHQs1m1eDICgDecBmV00W5tpDoOwHdkoseW0p+YjBlWd4LIbUqJXJIrfjPq/12uAVSg==",
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/partitioninfo/-/partitioninfo-6.0.0.tgz",
|
||||
"integrity": "sha512-HkblFEmbLIkTRZQwFxKKvpaluSgofogfj6cTztrbt6+j/h33kwX3YjemWZbN4syCATD+B8fX3YQtdY8fXy0Vaw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.5.3",
|
||||
"file-disk": "^6.0.0",
|
||||
"gpt": "^2.0.1",
|
||||
"bluebird": "^3.7.2",
|
||||
"file-disk": "^7.0.1",
|
||||
"gpt": "^2.0.4",
|
||||
"mbr": "^1.1.3",
|
||||
"typed-error": "^3.0.2"
|
||||
"tslib": "^2.0.0",
|
||||
"typed-error": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"pascalcase": {
|
||||
@ -13324,17 +13411,6 @@
|
||||
"semver-compare": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"plist": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.1.tgz",
|
||||
"integrity": "sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"base64-js": "^1.2.3",
|
||||
"xmlbuilder": "^9.0.7",
|
||||
"xmldom": "0.1.x"
|
||||
}
|
||||
},
|
||||
"polished": {
|
||||
"version": "3.6.5",
|
||||
"resolved": "https://registry.npmjs.org/polished/-/polished-3.6.5.tgz",
|
||||
@ -13496,12 +13572,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"promise": {
|
||||
"version": "7.3.1",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
|
||||
"integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz",
|
||||
"integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"asap": "~2.0.3"
|
||||
"asap": "~2.0.6"
|
||||
}
|
||||
},
|
||||
"promise-inflight": {
|
||||
@ -13663,6 +13739,15 @@
|
||||
"integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
|
||||
"dev": true
|
||||
},
|
||||
"raf": {
|
||||
"version": "3.4.1",
|
||||
"resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
|
||||
"integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"performance-now": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"randombytes": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
|
||||
@ -13732,6 +13817,28 @@
|
||||
"prop-types": "^15.6.2"
|
||||
}
|
||||
},
|
||||
"react-app-polyfill": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz",
|
||||
"integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"core-js": "^3.5.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"promise": "^8.0.3",
|
||||
"raf": "^3.4.1",
|
||||
"regenerator-runtime": "^0.13.3",
|
||||
"whatwg-fetch": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"core-js": {
|
||||
"version": "3.6.5",
|
||||
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz",
|
||||
"integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"react-async-script": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/react-async-script/-/react-async-script-1.2.0.tgz",
|
||||
@ -13794,28 +13901,6 @@
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
||||
"dev": true
|
||||
},
|
||||
"react-jsonschema-form": {
|
||||
"version": "1.8.1",
|
||||
"resolved": "https://registry.npmjs.org/react-jsonschema-form/-/react-jsonschema-form-1.8.1.tgz",
|
||||
"integrity": "sha512-aaDloxNAcGXOOOcdKOxxqEEn5oDlPUZgWcs8unXXB9vjBRgCF8rCm/wVSv1u2G5ih0j/BX6Ewd/WjI2g00lPdg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/runtime-corejs2": "^7.4.5",
|
||||
"ajv": "^6.7.0",
|
||||
"core-js": "^2.5.7",
|
||||
"lodash": "^4.17.15",
|
||||
"prop-types": "^15.5.8",
|
||||
"react-is": "^16.8.4",
|
||||
"react-lifecycles-compat": "^3.0.4",
|
||||
"shortid": "^2.2.14"
|
||||
}
|
||||
},
|
||||
"react-lifecycles-compat": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
|
||||
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==",
|
||||
"dev": true
|
||||
},
|
||||
"react-notifications-component": {
|
||||
"version": "2.4.0",
|
||||
"resolved": "https://registry.npmjs.org/react-notifications-component/-/react-notifications-component-2.4.0.tgz",
|
||||
@ -14024,9 +14109,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"rendition": {
|
||||
"version": "15.2.4",
|
||||
"resolved": "https://registry.npmjs.org/rendition/-/rendition-15.2.4.tgz",
|
||||
"integrity": "sha512-/AdQwNyBuHqbYDf7JTRvFNKnpWZQxEpOe8ac/hAAg9mOOjTt+kgV7SO7NjWKkl4IADic/OtWN7BpBsfAtuwrsw==",
|
||||
"version": "16.1.1",
|
||||
"resolved": "https://registry.npmjs.org/rendition/-/rendition-16.1.1.tgz",
|
||||
"integrity": "sha512-mna7HAzVXL9qyFKU/56HHCaQQK31Wie0bmTqmgQQSw/L3xPgdRMhSELZambwacFdzhyNBTKucK4purQBcWf0Jw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@fortawesome/fontawesome-svg-core": "^1.2.25",
|
||||
@ -14034,14 +14119,14 @@
|
||||
"@fortawesome/free-solid-svg-icons": "^5.11.2",
|
||||
"@fortawesome/react-fontawesome": "^0.1.5",
|
||||
"@react-google-maps/api": "^1.9.7",
|
||||
"@rjsf/core": "^2.2.1",
|
||||
"@types/color": "^3.0.0",
|
||||
"@types/json-schema": "^7.0.3",
|
||||
"@types/json-schema": "^7.0.5",
|
||||
"@types/lodash": "^4.14.77",
|
||||
"@types/marked": "^0.7.2",
|
||||
"@types/node": "^13.13.4",
|
||||
"@types/prop-types": "^15.7.0",
|
||||
"@types/react-helmet": "^6.0.0",
|
||||
"@types/react-jsonschema-form": "^1.3.2",
|
||||
"@types/recompose": "^0.26.2",
|
||||
"@types/sanitize-html": "^1.18.3",
|
||||
"@types/styled-components": "^5.0.1",
|
||||
@ -14049,20 +14134,17 @@
|
||||
"@types/uuid": "^3.4.3",
|
||||
"ajv": "^6.7.0",
|
||||
"ajv-keywords": "^3.3.0",
|
||||
"balena-temen": "^0.5.5",
|
||||
"color": "^3.1.2",
|
||||
"color-hash": "^1.0.3",
|
||||
"copy-to-clipboard": "^3.0.8",
|
||||
"grommet": "^2.14.0",
|
||||
"highlight.js": "^10.0.3",
|
||||
"jellyschema": "^0.11.9",
|
||||
"lodash": "^4.17.11",
|
||||
"marked": "^0.8.0",
|
||||
"mermaid": "8.4.0",
|
||||
"prop-types": "^15.7.2",
|
||||
"react-google-recaptcha": "^2.0.0-rc.1",
|
||||
"react-helmet": "^6.0.0",
|
||||
"react-jsonschema-form": "^1.3.0",
|
||||
"react-notifications-component": "^2.2.3",
|
||||
"react-simplemde-editor": "^4.1.1",
|
||||
"recompose": "0.26.0",
|
||||
@ -14070,15 +14152,16 @@
|
||||
"sanitize-html": "^1.20.1",
|
||||
"styled-components": "^5.0.1",
|
||||
"styled-system": "^4.1.0",
|
||||
"tslib": "^1.10.0",
|
||||
"tslib": "^2.0.0",
|
||||
"uuid": "^3.2.1",
|
||||
"xterm": "^3.14.5"
|
||||
"xterm": "^4.8.1",
|
||||
"xterm-addon-fit": "^0.4.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "13.13.12",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.12.tgz",
|
||||
"integrity": "sha512-zWz/8NEPxoXNT9YyF2osqyA9WjssZukYpgI4UYZpOjcyqwIUqWGkcCionaEb9Ki+FULyPyvNFpg/329Kd2/pbw==",
|
||||
"version": "13.13.14",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.13.14.tgz",
|
||||
"integrity": "sha512-Az3QsOt1U/K1pbCQ0TXGELTuTkPLOiFIQf3ILzbOyo0FqgV9SxRnxbxM5QlAveERZMHpZY+7u3Jz2tKyl+yg6g==",
|
||||
"dev": true
|
||||
},
|
||||
"styled-system": {
|
||||
@ -14091,6 +14174,12 @@
|
||||
"prop-types": "^15.7.2"
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
|
||||
"integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==",
|
||||
"dev": true
|
||||
},
|
||||
"uuid": {
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
|
||||
@ -14197,17 +14286,17 @@
|
||||
}
|
||||
},
|
||||
"resin-image-fs": {
|
||||
"version": "5.0.9",
|
||||
"resolved": "https://registry.npmjs.org/resin-image-fs/-/resin-image-fs-5.0.9.tgz",
|
||||
"integrity": "sha512-fBCJjF6GeqRveum3cJCBf9E0AtIA7qtVccXU6bmoyEEixA0AxWDqp/nJ5+PjIL26/bpaX95vo7Mscyr8Q1UNfQ==",
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/resin-image-fs/-/resin-image-fs-6.0.0.tgz",
|
||||
"integrity": "sha512-Vh1wQvvujnqkoRNWfYah1C6ZY6fMKqQwdA11GEaw4BKpf3Vio3I2nCqLPiCV6QfmEvoBH6AVY1+GlAUeq6bY/A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bluebird": "^3.5.1",
|
||||
"ext2fs": "^1.0.28",
|
||||
"fatfs": "^0.10.6",
|
||||
"file-disk": "^6.0.0",
|
||||
"file-disk": "^7.0.1",
|
||||
"lodash": "^4.17.5",
|
||||
"partitioninfo": "^5.2.0",
|
||||
"partitioninfo": "^6.0.0",
|
||||
"replacestream": "^4.0.0"
|
||||
}
|
||||
},
|
||||
@ -14404,6 +14493,14 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.9.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"safe-buffer": {
|
||||
@ -14488,26 +14585,6 @@
|
||||
"strip-css-comments": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"seek-bzip": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz",
|
||||
"integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "~2.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz",
|
||||
"integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-readlink": ">= 1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"semver": {
|
||||
"version": "7.3.2",
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
|
||||
@ -14641,9 +14718,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"simple-concat": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
|
||||
"integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
|
||||
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
|
||||
"dev": true
|
||||
},
|
||||
"simple-get": {
|
||||
@ -15558,9 +15635,9 @@
|
||||
}
|
||||
},
|
||||
"tar-stream": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz",
|
||||
"integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==",
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz",
|
||||
"integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bl": "^4.0.1",
|
||||
@ -15811,9 +15888,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ts-loader": {
|
||||
"version": "7.0.5",
|
||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz",
|
||||
"integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==",
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-8.0.0.tgz",
|
||||
"integrity": "sha512-giEW167rtK1V6eX/DnXEtOgcawwoIp6hqznqYNNSmraUZOq36zMhwBq12JMlYhxf50BC58bscsTSKKtE42zAuw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"chalk": "^2.3.0",
|
||||
@ -15845,9 +15922,9 @@
|
||||
}
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.12.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.12.0.tgz",
|
||||
"integrity": "sha512-5rxCQkP0kytf4H1T4xz1imjxaUUPMvc5aWp0rJ/VMIN7ClRiH1FwFvBt8wOeMasp/epeUnmSW6CixSIePtiLqA==",
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.0.tgz",
|
||||
"integrity": "sha512-lTqkx847PI7xEDYJntxZH89L2/aXInsyF2luSafe/+0fHOMjlBNXdH6th7f70qxLDhul7KZK0zC8V5ZIyHl0/g==",
|
||||
"dev": true
|
||||
},
|
||||
"tslint": {
|
||||
@ -15891,6 +15968,12 @@
|
||||
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
|
||||
"integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
|
||||
"dev": true
|
||||
},
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -15916,6 +15999,14 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -15927,6 +16018,14 @@
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"tslib": "^1.8.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"tslib": {
|
||||
"version": "1.13.0",
|
||||
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz",
|
||||
"integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"tty-browserify": {
|
||||
@ -16014,31 +16113,6 @@
|
||||
"integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==",
|
||||
"dev": true
|
||||
},
|
||||
"udif": {
|
||||
"version": "0.17.0",
|
||||
"resolved": "https://registry.npmjs.org/udif/-/udif-0.17.0.tgz",
|
||||
"integrity": "sha512-59bQzrlk/MjbEg3Sv+jrCGOc44V4whyXE2ZlI5O3GWMECUpnM4Wfb5CUc20AV2Plbw8Owq6SaBJRbkkK1DSMPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"apple-data-compression": "^0.4.0",
|
||||
"plist": "^3.0.1",
|
||||
"readable-stream": "^3.3.0",
|
||||
"seek-bzip": "^1.0.5"
|
||||
},
|
||||
"dependencies": {
|
||||
"readable-stream": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
|
||||
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"inherits": "^2.0.3",
|
||||
"string_decoder": "^1.1.1",
|
||||
"util-deprecate": "^1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"uglify-js": {
|
||||
"version": "3.10.0",
|
||||
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.0.tgz",
|
||||
@ -16372,6 +16446,43 @@
|
||||
"spdx-expression-parse": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"validate.io-array": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "https://registry.npmjs.org/validate.io-array/-/validate.io-array-1.0.6.tgz",
|
||||
"integrity": "sha1-W1osr9j4uFq7L4hroVPy2Tond00=",
|
||||
"dev": true
|
||||
},
|
||||
"validate.io-function": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/validate.io-function/-/validate.io-function-1.0.2.tgz",
|
||||
"integrity": "sha1-NDoZgC7TsZaCaceA5VjpNBHAutc=",
|
||||
"dev": true
|
||||
},
|
||||
"validate.io-integer": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/validate.io-integer/-/validate.io-integer-1.0.5.tgz",
|
||||
"integrity": "sha1-FoSWSAuVviJH7EQ/IjPeT4mHgGg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"validate.io-number": "^1.0.3"
|
||||
}
|
||||
},
|
||||
"validate.io-integer-array": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/validate.io-integer-array/-/validate.io-integer-array-1.0.0.tgz",
|
||||
"integrity": "sha1-LKveAzKTpry+Bj/q/pHq9GsToIk=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"validate.io-array": "^1.0.3",
|
||||
"validate.io-integer": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"validate.io-number": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/validate.io-number/-/validate.io-number-1.0.3.tgz",
|
||||
"integrity": "sha1-9j/+2iSL8opnqNSODjtGGhZluvg=",
|
||||
"dev": true
|
||||
},
|
||||
"verror": {
|
||||
"version": "1.10.0",
|
||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||
@ -17257,9 +17368,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"whatwg-fetch": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
|
||||
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.2.0.tgz",
|
||||
"integrity": "sha512-SdGPoQMMnzVYThUbSrEvqTlkvC1Ux27NehaJ/GUHBfNrh5Mjg+1/uRyFMwVnxO2MrikMWvWAqUGgQOfVU4hT7w==",
|
||||
"dev": true
|
||||
},
|
||||
"which": {
|
||||
@ -17459,18 +17570,6 @@
|
||||
"sax": "^1.2.4"
|
||||
}
|
||||
},
|
||||
"xmlbuilder": {
|
||||
"version": "9.0.7",
|
||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
|
||||
"integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
|
||||
"dev": true
|
||||
},
|
||||
"xmldom": {
|
||||
"version": "0.1.31",
|
||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
|
||||
"integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
|
||||
"dev": true
|
||||
},
|
||||
"xmlhttprequest": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
|
||||
@ -17490,9 +17589,15 @@
|
||||
"dev": true
|
||||
},
|
||||
"xterm": {
|
||||
"version": "3.14.5",
|
||||
"resolved": "https://registry.npmjs.org/xterm/-/xterm-3.14.5.tgz",
|
||||
"integrity": "sha512-DVmQ8jlEtL+WbBKUZuMxHMBgK/yeIZwkXB81bH+MGaKKnJGYwA+770hzhXPfwEIokK9On9YIFPRleVp/5G7z9g==",
|
||||
"version": "4.8.1",
|
||||
"resolved": "https://registry.npmjs.org/xterm/-/xterm-4.8.1.tgz",
|
||||
"integrity": "sha512-ax91ny4tI5eklqIfH79OUSGE2PUX2rGbwONmB6DfqpyhSZO8/cf++sqiaMWEVCMjACyMfnISW7C3gGMoNvNolQ==",
|
||||
"dev": true
|
||||
},
|
||||
"xterm-addon-fit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/xterm-addon-fit/-/xterm-addon-fit-0.4.0.tgz",
|
||||
"integrity": "sha512-p4BESuV/g2L6pZzFHpeNLLnep9mp/DkF3qrPglMiucSFtD8iJxtMufEoEJbN8LZwB4i+8PFpFvVuFrGOSpW05w==",
|
||||
"dev": true
|
||||
},
|
||||
"xxhash": {
|
||||
@ -17752,4 +17857,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
15
package.json
15
package.json
@ -47,9 +47,7 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"@balena/lint": "^5.0.4",
|
||||
"@fortawesome/free-brands-svg-icons": "^5.11.2",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.11.2",
|
||||
"@fortawesome/react-fontawesome": "^0.1.7",
|
||||
"@fortawesome/fontawesome-free": "^5.13.1",
|
||||
"@svgr/webpack": "^5.4.0",
|
||||
"@types/bluebird": "^3.5.30",
|
||||
"@types/chai": "^4.2.7",
|
||||
@ -72,13 +70,13 @@
|
||||
"css-loader": "^3.5.3",
|
||||
"d3": "^4.13.0",
|
||||
"debug": "^4.2.0",
|
||||
"electron": "9.0.5",
|
||||
"electron": "9.1.1",
|
||||
"electron-builder": "^22.7.0",
|
||||
"electron-mocha": "^8.2.0",
|
||||
"electron-notarize": "^1.0.0",
|
||||
"electron-rebuild": "^1.11.0",
|
||||
"electron-updater": "^4.3.2",
|
||||
"etcher-sdk": "^4.1.17",
|
||||
"etcher-sdk": "^4.1.19",
|
||||
"file-loader": "^6.0.0",
|
||||
"husky": "^4.2.5",
|
||||
"immutable": "^3.8.1",
|
||||
@ -91,13 +89,13 @@
|
||||
"node-gyp": "^7.0.0",
|
||||
"node-ipc": "^9.1.1",
|
||||
"omit-deep-lodash": "1.1.4",
|
||||
"outdent": "^0.7.1",
|
||||
"path-is-inside": "^1.0.2",
|
||||
"pretty-bytes": "^5.3.0",
|
||||
"react": "^16.8.5",
|
||||
"react-dom": "^16.8.5",
|
||||
"redux": "^4.0.5",
|
||||
"rendition": "^15.2.4",
|
||||
"request": "^2.81.0",
|
||||
"rendition": "^16.1.1",
|
||||
"resin-corvus": "^2.0.5",
|
||||
"semver": "^7.3.2",
|
||||
"simple-progress-webpack-plugin": "^1.1.2",
|
||||
@ -109,8 +107,9 @@
|
||||
"sudo-prompt": "^9.0.0",
|
||||
"sys-class-rgb-led": "^2.1.0",
|
||||
"tmp": "^0.2.1",
|
||||
"ts-loader": "^7.0.5",
|
||||
"ts-loader": "^8.0.0",
|
||||
"ts-node": "^8.3.0",
|
||||
"tslib": "^2.0.0",
|
||||
"typescript": "^3.5.3",
|
||||
"uuid": "^8.1.0",
|
||||
"webpack": "^4.40.2",
|
||||
|
@ -1,16 +1,14 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"noImplicitAny": true,
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"strictNullChecks": true,
|
||||
"resolveJsonModule": true,
|
||||
"allowJs": true,
|
||||
"moduleResolution": "node",
|
||||
"module": "commonjs",
|
||||
"target": "es2018",
|
||||
"target": "es2019",
|
||||
"jsx": "react",
|
||||
"typeRoots": ["./node_modules/@types", "./typings"],
|
||||
"importHelpers": true,
|
||||
"allowSyntheticDefaultImports": true
|
||||
},
|
||||
"include": [
|
||||
|
@ -288,15 +288,32 @@ const guiConfig = {
|
||||
],
|
||||
};
|
||||
|
||||
const etcherConfig = {
|
||||
const mainConfig = {
|
||||
...commonConfig,
|
||||
target: 'electron-main',
|
||||
node: {
|
||||
__dirname: false,
|
||||
__filename: true,
|
||||
},
|
||||
};
|
||||
|
||||
const etcherConfig = {
|
||||
...mainConfig,
|
||||
entry: {
|
||||
etcher: path.join(__dirname, 'lib', 'start.ts'),
|
||||
etcher: path.join(__dirname, 'lib', 'gui', 'etcher.ts'),
|
||||
},
|
||||
};
|
||||
|
||||
const childWriterConfig = {
|
||||
...mainConfig,
|
||||
entry: {
|
||||
'child-writer': path.join(
|
||||
__dirname,
|
||||
'lib',
|
||||
'gui',
|
||||
'modules',
|
||||
'child-writer.ts',
|
||||
),
|
||||
},
|
||||
};
|
||||
|
||||
@ -337,4 +354,4 @@ const cssConfig = {
|
||||
},
|
||||
};
|
||||
|
||||
module.exports = [cssConfig, guiConfig, etcherConfig];
|
||||
module.exports = [cssConfig, guiConfig, etcherConfig, childWriterConfig];
|
||||
|
Loading…
x
Reference in New Issue
Block a user