diff --git a/.vscode/settings.json b/.vscode/settings.json
index 02e4b763..f08af973 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -13,6 +13,15 @@
"[typescriptreact]": {
"editor.formatOnSave": true
},
+ "[scss]": {
+ "editor.formatOnSave": true
+ },
+ "[css]": {
+ "editor.formatOnSave": true
+ },
+ "[sass]": {
+ "editor.formatOnSave": true
+ },
"eslint.alwaysShowStatus": true,
"prettier.singleQuote": false,
"editor.codeActionsOnSave": {
diff --git a/@types/Common/index.d.ts b/@types/Common/index.d.ts
index 0477f109..c900c077 100755
--- a/@types/Common/index.d.ts
+++ b/@types/Common/index.d.ts
@@ -1,153 +1,169 @@
interface Tab {
- id: number;
- title?: string;
- url?: string;
- showBackBtn?: boolean;
- moves?: boolean;
- fileKey?: string;
- order?: number;
+ id: number;
+ title?: string;
+ url?: string;
+ showBackBtn?: boolean;
+ moves?: boolean;
+ fileKey?: string;
+ order?: number;
+ focused?: boolean;
}
interface SavedTab {
- title?: string;
- url?: string;
+ title?: string;
+ url?: string;
}
interface ShortcutsMap {
- accelerator: string;
- value: string;
- type: 'action' | 'command' | 'id';
+ accelerator: string;
+ value: string;
+ type: "action" | "command" | "id";
}
-interface SctionState {
- [state: string]: boolean;
- 'newFile': boolean;
- 'openFileBrowser': boolean;
- 'reopenClosedTab': boolean;
- 'closeTab': boolean;
- 'save-as': boolean;
- 'export-selected-exportables': boolean;
- 'undo': boolean;
- 'redo': boolean;
- 'paste-over-selection': boolean;
- 'toggle-dropper': boolean;
- 'set-default-style': boolean;
- 'copy-properties': boolean;
- 'paste-properties': boolean;
- 'selectAll': boolean;
- 'deselect-all': boolean;
- 'select-inverse': boolean;
- 'select-same-style': boolean;
- 'select-same-fill': boolean;
- 'select-same-stroke': boolean;
- 'select-same-effect': boolean;
- 'select-same-text': boolean;
- 'select-same-font': boolean;
- 'select-same-instance': boolean;
- 'toggle-grid': boolean;
- 'toggle-shown-layout-grids': boolean;
- 'toggle-show-masks': boolean;
- 'toggle-show-artboard-outlines': boolean;
- 'toggle-rulers': boolean;
- 'toggle-sidebar': boolean;
- 'toggle-ui': boolean;
- 'toggle-outlines': boolean;
- 'toggle-layers': boolean;
- 'toggle-publish': boolean;
- 'toggle-library': boolean;
- 'toggle-pixel-preview': boolean;
- 'toggle-checkerboard': boolean;
- 'zoom-in': boolean;
- 'zoom-out': boolean;
- 'zoom-reset': boolean;
- 'zoom-to-fit': boolean;
- 'zoom-to-selection': boolean;
- 'scale-normal': boolean;
- 'scale-inc0.1': boolean;
- 'scale-dic0.1': boolean;
- 'scale-inc0.05': boolean;
- 'scale-dic0.05': boolean;
- 'next-artboard': boolean;
- 'previous-artboard': boolean;
- 'group-selection': boolean;
- 'ungroup-selection': boolean;
- 'frame-selection': boolean;
- 'mask-selection': boolean;
- 'create-symbol': boolean;
- 'find-symbol': boolean;
- 'reset-symbol': boolean;
- 'detach-instance': boolean;
- 'resize-to-fit': boolean;
- 'toggle-frame-clipping': boolean;
- 'bring-to-front': boolean;
- 'bring-forward': boolean;
- 'send-backward': boolean;
- 'send-to-back': boolean;
- 'flip-horizontal': boolean;
- 'flip-vertical': boolean;
- 'rotate-180': boolean;
- 'rotate-90-counterclockwise': boolean;
- 'rotate-90-clockwise': boolean;
- 'flatten-selection': boolean;
- 'outline-stroke': boolean;
- 'live-boolean-union': boolean;
- 'live-boolean-subtract': boolean;
- 'live-boolean-intersect': boolean;
- 'live-boolean-xor': boolean;
- 'duplicate-in-place': boolean;
- 'delete-selection': boolean;
- 'convert-to-raster': boolean;
- 'toggle-shown-for-selected-nodes': boolean;
- 'toggle-locked-for-selected-nodes': boolean;
- 'hide-sibling-layers': boolean;
- 'collapse-layers': boolean;
- 'remove-fill': boolean;
- 'remove-stroke': boolean;
- 'swap-fill-and-stroke': boolean;
- 'join-selection': boolean;
- 'smooth-join-selection': boolean;
- 'delete-and-heal-selection': boolean;
- 'text-toggle-bold': boolean;
- 'text-toggle-italic': boolean;
- 'text-toggle-underline': boolean;
- 'text-toggle-strikethrough': boolean;
- 'text-original-case': boolean;
- 'text-upper-case': boolean;
- 'text-lower-case': boolean;
- 'round-to-pixels': boolean;
- 'align-left': boolean;
- 'align-horizontal-center': boolean;
- 'align-right': boolean;
- 'align-top': boolean;
- 'align-vertical-center': boolean;
- 'align-bottom': boolean;
- 'pack-horizontal': boolean;
- 'pack-vertical': boolean;
- 'distribute-horizontal-spacing': boolean;
- 'distribute-vertical-spacing': boolean;
- 'distribute-left': boolean;
- 'distribute-horizontal-center': boolean;
- 'distribute-right': boolean;
- 'distribute-top': boolean;
- 'distribute-vertical-center': boolean;
- 'distribute-bottom': boolean;
+type View = "TopPanel" | "Settings" | "ThemeCreator";
+type SettingsView = "General" | "Themes";
+
+// TODO: don't uses?
+interface SectionState {
+ [state: string]: boolean;
+ newFile: boolean;
+ openFileBrowser: boolean;
+ reopenClosedTab: boolean;
+ closeTab: boolean;
+ "save-as": boolean;
+ "export-selected-exportables": boolean;
+ undo: boolean;
+ redo: boolean;
+ "paste-over-selection": boolean;
+ "toggle-dropper": boolean;
+ "set-default-style": boolean;
+ "copy-properties": boolean;
+ "paste-properties": boolean;
+ selectAll: boolean;
+ "deselect-all": boolean;
+ "select-inverse": boolean;
+ "select-same-style": boolean;
+ "select-same-fill": boolean;
+ "select-same-stroke": boolean;
+ "select-same-effect": boolean;
+ "select-same-text": boolean;
+ "select-same-font": boolean;
+ "select-same-instance": boolean;
+ "toggle-grid": boolean;
+ "toggle-shown-layout-grids": boolean;
+ "toggle-show-masks": boolean;
+ "toggle-show-artboard-outlines": boolean;
+ "toggle-rulers": boolean;
+ "toggle-sidebar": boolean;
+ "toggle-ui": boolean;
+ "toggle-outlines": boolean;
+ "toggle-layers": boolean;
+ "toggle-publish": boolean;
+ "toggle-library": boolean;
+ "toggle-pixel-preview": boolean;
+ "toggle-checkerboard": boolean;
+ "zoom-in": boolean;
+ "zoom-out": boolean;
+ "zoom-reset": boolean;
+ "zoom-to-fit": boolean;
+ "zoom-to-selection": boolean;
+ "scale-normal": boolean;
+ "scale-inc0.1": boolean;
+ "scale-dic0.1": boolean;
+ "scale-inc0.05": boolean;
+ "scale-dic0.05": boolean;
+ "next-artboard": boolean;
+ "previous-artboard": boolean;
+ "group-selection": boolean;
+ "ungroup-selection": boolean;
+ "frame-selection": boolean;
+ "mask-selection": boolean;
+ "create-symbol": boolean;
+ "find-symbol": boolean;
+ "reset-symbol": boolean;
+ "detach-instance": boolean;
+ "resize-to-fit": boolean;
+ "toggle-frame-clipping": boolean;
+ "bring-to-front": boolean;
+ "bring-forward": boolean;
+ "send-backward": boolean;
+ "send-to-back": boolean;
+ "flip-horizontal": boolean;
+ "flip-vertical": boolean;
+ "rotate-180": boolean;
+ "rotate-90-counterclockwise": boolean;
+ "rotate-90-clockwise": boolean;
+ "flatten-selection": boolean;
+ "outline-stroke": boolean;
+ "live-boolean-union": boolean;
+ "live-boolean-subtract": boolean;
+ "live-boolean-intersect": boolean;
+ "live-boolean-xor": boolean;
+ "duplicate-in-place": boolean;
+ "delete-selection": boolean;
+ "convert-to-raster": boolean;
+ "toggle-shown-for-selected-nodes": boolean;
+ "toggle-locked-for-selected-nodes": boolean;
+ "hide-sibling-layers": boolean;
+ "collapse-layers": boolean;
+ "remove-fill": boolean;
+ "remove-stroke": boolean;
+ "swap-fill-and-stroke": boolean;
+ "join-selection": boolean;
+ "smooth-join-selection": boolean;
+ "delete-and-heal-selection": boolean;
+ "text-toggle-bold": boolean;
+ "text-toggle-italic": boolean;
+ "text-toggle-underline": boolean;
+ "text-toggle-strikethrough": boolean;
+ "text-original-case": boolean;
+ "text-upper-case": boolean;
+ "text-lower-case": boolean;
+ "round-to-pixels": boolean;
+ "align-left": boolean;
+ "align-horizontal-center": boolean;
+ "align-right": boolean;
+ "align-top": boolean;
+ "align-vertical-center": boolean;
+ "align-bottom": boolean;
+ "pack-horizontal": boolean;
+ "pack-vertical": boolean;
+ "distribute-horizontal-spacing": boolean;
+ "distribute-vertical-spacing": boolean;
+ "distribute-left": boolean;
+ "distribute-horizontal-center": boolean;
+ "distribute-right": boolean;
+ "distribute-top": boolean;
+ "distribute-vertical-center": boolean;
+ "distribute-bottom": boolean;
+}
+
+interface FeatureFlags {
+ desktop_beta_use_agent_for_fonts?: boolean;
}
-interface ISettings {
- app: {
- panelHeight: number;
- showMainMenu: boolean;
- disabledMainMenu: boolean;
- saveLastOpenedTabs: boolean;
- windowFrame: boolean;
- disabledFonts: boolean;
- exportDir: string;
- fontDirs: string[];
- lastOpenedTabs: SavedTab[];
- };
- ui: {
- scalePanel: number;
- scaleFigmaUI: number;
- };
- [path: string]: any;
-}
\ No newline at end of file
+interface SettingsInterface {
+ clientId: string;
+ app: {
+ logLevel: number;
+ enableColorSpaceSrgb: boolean;
+ visibleNewProjectBtn: boolean;
+ panelHeight: number;
+ saveLastOpenedTabs: boolean;
+ exportDir: string;
+ fontDirs: string[];
+ lastOpenedTabs: SavedTab[];
+ featureFlags: FeatureFlags;
+ savedExtensions: Extensions.ExtensionJson[];
+ lastSavedPluginDir?: string;
+ lastExportDir?: string;
+ };
+ ui: {
+ scalePanel: number;
+ scaleFigmaUI: number;
+ };
+ theme: {
+ currentTheme: string;
+ };
+ [path: string]: any;
+}
diff --git a/@types/Common/menu.d.ts b/@types/Common/menu.d.ts
index 14a08878..4c842c99 100644
--- a/@types/Common/menu.d.ts
+++ b/@types/Common/menu.d.ts
@@ -10,7 +10,7 @@ declare namespace Menu {
* Public types
*/
type NativeClick = (item: _MenuItem, window: _BrowserWindow, event: Event) => void;
- type CutsomClick = (item: _MenuItemConstructorOptions, window: _BrowserWindow, event: Event) => void;
+ type CustomClick = (item: _MenuItemConstructorOptions, window: _BrowserWindow, event: Event) => void;
type Params = ParamsId | ParamsAction | ParamsCommand;
type MenuItem = Items.MenuName & (Items.PluginItem | Items.Separator | Items.Submenu | Items.Menu | Items.StringKey);
@@ -26,7 +26,10 @@ declare namespace Menu {
type: string;
key: string;
string: string;
- plugin: string;
+ plugin?: string;
+ visible?: boolean;
+ disabled?: boolean;
+ click?: (menuItem: Menu.PluginMenuItem, browserWindow: _BrowserWindow | undefined, event: KeyboardEvent) => void;
}
interface Separator {
@@ -38,8 +41,8 @@ declare namespace Menu {
submenu: [MenuName & Separator & Submenu & Menu & PluginItem & StringKey];
}
interface Menu {
- disabled?: boolean;
type: "run-menu-action";
+ disabled?: boolean;
menuAction: MenuAction;
name: MenuName;
}
@@ -59,14 +62,14 @@ declare namespace Menu {
interface ParamsId {
id: string;
- click?: NativeClick | CutsomClick;
+ click?: NativeClick | CustomClick;
}
interface ParamsAction {
action: string;
- click?: NativeClick | CutsomClick;
+ click?: NativeClick | CustomClick;
}
interface ParamsCommand {
command: string;
- click?: NativeClick | CutsomClick;
+ click?: NativeClick | CustomClick;
}
}
diff --git a/@types/Common/themes.d.ts b/@types/Common/themes.d.ts
new file mode 100644
index 00000000..8941c860
--- /dev/null
+++ b/@types/Common/themes.d.ts
@@ -0,0 +1,128 @@
+declare namespace Themes {
+ interface CSSRuleListCustom extends CSSRuleList, IterableIterator {}
+
+ interface ColorsMap {
+ [property: string]: string;
+ }
+
+ interface Theme {
+ name: string;
+ author: string;
+ id: string;
+ url?: string;
+ palette: Palette;
+ }
+
+ interface Palette {
+ /**
+ * text color
+ */
+ text: string;
+ /**
+ * active text color
+ */
+ "text-active": string;
+ /**
+ * disabled text color
+ */
+ "text-disabled": string;
+ /**
+ * bg color of panels and a page bg
+ */
+ "bg-panel": string;
+ /**
+ * tool bar bg color
+ */
+ "bg-toolbar": string;
+ /**
+ * tool bar item bg color on hover
+ */
+ "bg-toolbar-hover": string;
+ /**
+ * share button, selected tool bar item, other selections color
+ */
+ "bg-toolbar-active": string;
+ /**
+ * tool bar icons color
+ */
+ "fg-toolbar": string;
+ /**
+ * tool bar icons color on hover
+ */
+ "fg-toolbar-hover": string;
+ /**
+ * tool bar active icon color
+ */
+ "fg-toolbar-active": string;
+ /**
+ * tool bar disabled icon color
+ */
+ "fg-toolbar-disabled": string;
+ /**
+ * tool bar name of project text color
+ */
+ "fg-toolbar-filename": string;
+ /**
+ * tool bar name of folder project text color
+ */
+ "fg-toolbar-foldername": string;
+ /**
+ * tool bar chevron color
+ */
+ "fg-toolbar-chevron": string;
+ /**
+ * unsaved icon color
+ */
+ "fg-toolbar-unsavedicon": string;
+ /**
+ * tool bar login button color
+ */
+ "fg-toolbar-login-button": string;
+ /**
+ * tool bar login button border color
+ */
+ "fg-toolbar-login-button-border": string;
+ /**
+ * tool bar active login button color
+ */
+ "fg-toolbar-login-button-active": string;
+ /**
+ * tool bar item dropdown menu bg color
+ */
+ "bg-overlay": string;
+ /**
+ * tool bar item dropdown menu outline shadow color
+ */
+ "bg-overlay-outline": string;
+ /**
+ * tool bar item dropdown menu border color
+ */
+ "bg-overlay-inner-outline": string;
+ "bg-tab": string;
+ "bg-tab-hover": string;
+ "bg-tab-active": string;
+ "fg-tab": string;
+ "fg-tab-hover": string;
+ "fg-tab-active": string;
+ "bg-header": string;
+ "fg-header": string;
+ "bg-header-control": string;
+ "bg-header-control-hover": string;
+ "bg-header-control-active": string;
+ "fg-header-control": string;
+ "fg-header-control-hover": string;
+ "fg-header-control-active": string;
+ "fg-component": string;
+ "fg-component-disabled": string;
+ "fg-component-disabled-row-active": string;
+ borders: string;
+ "bg-window-close": string;
+ "bg-beta-label": string;
+ [index: string]: string;
+ }
+}
+
+interface CSSStyleDeclaration {
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ [index: string]: any;
+}
diff --git a/@types/Common/types.d.ts b/@types/Common/types.d.ts
new file mode 100644
index 00000000..a392d677
--- /dev/null
+++ b/@types/Common/types.d.ts
@@ -0,0 +1,5 @@
+declare namespace Types {
+ interface Dic {
+ [key: string]: T;
+ }
+}
diff --git a/@types/Main/extension.d.ts b/@types/Main/extension.d.ts
index 950b99c6..743ed254 100644
--- a/@types/Main/extension.d.ts
+++ b/@types/Main/extension.d.ts
@@ -1,6 +1,8 @@
declare namespace Extensions {
type _FSWatcher = import("chokidar").FSWatcher;
+ type ManifestObserver = (args: Extensions.NotifyObserverParams) => void;
+
enum Observertype {
ADDED = "added",
CHANGED = "changed",
@@ -33,4 +35,27 @@ declare namespace Extensions {
type: string;
localLoadResult?: Extension;
}
+
+ interface AddPathReturnValue {
+ id: number;
+ existed: boolean;
+ }
+
+ interface ManifestFile {
+ name: string;
+ id: string;
+ api: string;
+ main: string;
+ build?: string;
+ }
+
+ interface ExtensionSource {
+ source: string;
+ html: string;
+ }
+ interface ExtensionSourceError {
+ buildErrCode: boolean;
+ stderr: string;
+ path: string;
+ }
}
diff --git a/@types/Renderer/index.d.ts b/@types/Renderer/index.d.ts
index dbd583b8..9b76040f 100755
--- a/@types/Renderer/index.d.ts
+++ b/@types/Renderer/index.d.ts
@@ -1,12 +1,8 @@
interface Window
extends EventTarget,
- WindowTimers,
WindowSessionStorage,
WindowLocalStorage,
- WindowConsole,
GlobalEventHandlers,
- IDBEnvironment,
- WindowBase64,
AnimationFrameProvider,
WindowOrWorkerGlobalScope,
WindowEventHandlers {
diff --git a/@types/Renderer/stores.d.ts b/@types/Renderer/stores.d.ts
index 6b91158a..e0178f13 100755
--- a/@types/Renderer/stores.d.ts
+++ b/@types/Renderer/stores.d.ts
@@ -1,9 +1,9 @@
interface TabsStore {
tabs: Array;
- current: number;
+ current: number | undefined;
addTab(options: { id: number; url: string; showBackBtn: boolean }): void;
- setFocus(id: number): void;
+ setFocus(id?: number): void;
deleteTab(id: number): void;
updateTab(tab: Tab): void;
changeTagOrder(tab: Tab): void;
diff --git a/@types/Renderer/webApi.d.ts b/@types/Renderer/webApi.d.ts
index 2036bad1..c6c92d4f 100755
--- a/@types/Renderer/webApi.d.ts
+++ b/@types/Renderer/webApi.d.ts
@@ -1,5 +1,37 @@
-declare namespace WepApi {
+declare namespace WebApi {
interface SetPluginMenuDataProps {
data: Menu.MenuItem[];
}
+
+ interface WriteNewExtensionToDiskArgs {
+ dirName: string;
+ files: [
+ {
+ content: string;
+ name: string;
+ },
+ ];
+ }
+
+ interface SetTitleArgs {
+ title: string;
+ }
+
+ interface ExtensionId {
+ id: number;
+ }
+
+ interface CreateMultipleExtension {
+ depth: number;
+ options: Electron.OpenDialogOptions;
+ }
+
+ interface WriteFiles {
+ files: [
+ {
+ name: string;
+ buffer: Uint8Array;
+ },
+ ];
+ }
}
diff --git a/@types/enums.ts b/@types/enums.ts
new file mode 100644
index 00000000..d272ee0f
--- /dev/null
+++ b/@types/enums.ts
@@ -0,0 +1,5 @@
+export const enum LogLevel {
+ DEBUG,
+ INFO,
+ ERROR,
+}
diff --git a/@types/index.d.ts b/@types/index.d.ts
index 7a5fca13..a82dcb52 100644
--- a/@types/index.d.ts
+++ b/@types/index.d.ts
@@ -1,87 +1,210 @@
declare namespace Electron {
- interface MainInterface extends CommonInterface {
+ interface RemoteMainInterface {
app: App;
}
+ interface MenuItemConstructorOptions {
+ click?: (menuItem: Menu.PluginMenuItem, browserWindow: BrowserWindow | undefined, event: KeyboardEvent) => void;
+ }
+
interface MenuItem {
click: (item: MenuItemConstructorOptions, window: BrowserWindow, event: Event) => void;
}
interface App extends NodeJS.EventEmitter {
- on(event: "handle-command", listener: (command: string) => void): this;
+ on(event: "handle-command", listener: (sender: Electron.WebContents, command: string) => void): this;
on(event: "handle-page-command", listener: (item: any, window: BrowserWindow) => void): this;
- on(event: "update-figma-ui-scale", listener: (scale: number) => void): this;
- on(event: "update-panel-scale", listener: (scale: number) => void): this;
- on(event: "set-hide-main-menu", listener: (hide: boolean) => void): this;
- on(event: "set-disable-main-menu", listener: (disabled: boolean) => void): this;
- on(event: "set-disable-fonts", listener: (disabled: boolean) => void): this;
on(event: "os-menu-invalidated", listener: (dependencies: MenuState.MenuStateParams) => void): this;
on(event: "log", listener: (data: any) => void): this;
on(event: "sign-out", listener: () => void): this;
+ on(event: "set-default-theme", listener: () => void): this;
+ on(event: "themes-add-repository", listener: () => void): this;
+ on(event: "themes-remove-repository", listener: () => void): this;
+ on(event: "toggle-settings-developer-tools", listener: () => void): this;
+ on(event: "toggle-current-tab-devtools", listener: () => void): this;
+ on(event: "handleUrl", listener: (senderId: number, url: string) => void): this;
+ on(event: "openSettingsView", listener: () => void): this;
+ on(event: "openThemeCreatorView", listener: () => void): this;
- once(event: "handle-command", listener: (command: string) => void): this;
- once(event: "handle-page-command", listener: (item: any, window: BrowserWindow) => void): this;
- once(event: "update-figma-ui-scale", listener: (scale: number) => void): this;
- once(event: "update-panel-scale", listener: (scale: number) => void): this;
- once(event: "set-hide-main-menu", listener: (hide: boolean) => void): this;
- once(event: "set-disable-main-menu", listener: (disabled: boolean) => void): this;
- once(event: "set-disable-fonts", listener: (disabled: boolean) => void): this;
- once(event: "os-menu-invalidated", listener: (dependencies: MenuState.MenuStateParams) => void): this;
- once(event: "log", listener: (data: any) => void): this;
- once(event: "sign-out", listener: () => void): this;
-
- addListener(event: "handle-command", listener: (command: string) => void): this;
- addListener(event: "handle-page-command", listener: (item: any, window: BrowserWindow) => void): this;
- addListener(event: "update-figma-ui-scale", listener: (scale: number) => void): this;
- addListener(event: "update-panel-scale", listener: (scale: number) => void): this;
- addListener(event: "set-hide-main-menu", listener: (hide: boolean) => void): this;
- addListener(event: "set-disable-main-menu", listener: (disabled: boolean) => void): this;
- addListener(event: "set-disable-fonts", listener: (disabled: boolean) => void): this;
- addListener(event: "os-menu-invalidated", listener: (dependencies: MenuState.MenuStateParams) => void): this;
- addListener(event: "log", listener: (data: any) => void): this;
- addListener(event: "sign-out", listener: () => void): this;
-
- removeListener(event: "handle-command", listener: (command: string) => void): this;
- removeListener(event: "handle-page-command", listener: (item: any, window: BrowserWindow) => void): this;
- removeListener(event: "update-figma-ui-scale", listener: (scale: number) => void): this;
- removeListener(event: "update-panel-scale", listener: (scale: number) => void): this;
- removeListener(event: "set-hide-main-menu", listener: (hide: boolean) => void): this;
- removeListener(event: "set-disable-main-menu", listener: (disabled: boolean) => void): this;
- removeListener(event: "set-disable-fonts", listener: (disabled: boolean) => void): this;
- removeListener(event: "os-menu-invalidated", listener: (dependencies: MenuState.MenuStateParams) => void): this;
- removeListener(event: "log", listener: (data: any) => void): this;
- removeListener(event: "sign-out", listener: () => void): this;
-
- emit(event: "handle-command", command: string): boolean;
+ emit(event: "handle-command", sender: Electron.WebContents, command: string): boolean;
emit(event: "handle-page-command", item: any, window: BrowserWindow): boolean;
- emit(event: "update-figma-ui-scale", scale: number): boolean;
- emit(event: "update-panel-scale", scale: number): boolean;
- emit(event: "set-hide-main-menu", hide: boolean): boolean;
- emit(event: "set-disable-main-menu", disabled: boolean): boolean;
- emit(event: "set-disable-fonts", disabled: boolean): boolean;
emit(event: "os-menu-invalidated", dependencies: MenuState.MenuStateParams): boolean;
emit(event: "log", data: any): boolean;
emit(event: "sign-out"): boolean;
+ emit(event: "set-default-theme"): boolean;
+ emit(event: "themes-add-repository"): boolean;
+ emit(event: "themes-remove-repository"): boolean;
+ emit(event: "toggle-settings-developer-tools"): boolean;
+ emit(event: "toggle-current-tab-devtools"): boolean;
+ emit(event: "handleUrl", senderId: number, url: string): boolean;
+ emit(event: "openSettingsView"): boolean;
+ emit(event: "openThemeCreatorView"): boolean;
}
interface IpcMain extends NodeJS.EventEmitter {
- on(channel: string, listener: (event: IpcMainEvent, args: any) => void): this;
- on(channel: "setTitle", listener: (event: IpcMainEvent, title: string) => void): this;
- on(channel: "setPluginMenuData", listener: (event: IpcMainEvent, pluginMenu: Menu.MenuItem[]) => void): this;
+ on(channel: string, listener: (event: IpcMainInvokeEvent, args: any) => void): this;
+ on(channel: "setTitle", listener: (event: IpcMainInvokeEvent, title: string) => void): this;
+ on(channel: "setPluginMenuData", listener: (event: IpcMainInvokeEvent, pluginMenu: Menu.MenuItem[]) => void): this;
+ on(channel: "receiveTabs", listener: (event: IpcMainInvokeEvent, tabs: Tab[]) => void): this;
+ on(channel: "updateActionState", listener: (event: IpcMainInvokeEvent, state: MenuState.State) => void): this;
+ on(channel: "updateFileKey", listener: (event: IpcMainInvokeEvent, key: string) => void): this;
+ on(channel: "setTabUrl", listener: (event: IpcMainInvokeEvent, url: string) => void): this;
+ on(channel: "closeAllTab", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "setFocusToMainTab", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "setTabFocus", listener: (event: IpcMainInvokeEvent, id: number) => void): this;
+ on(channel: "closeTab", listener: (event: IpcMainInvokeEvent, id: number) => void): this;
+ on(channel: "newTab", listener: (event: IpcMainInvokeEvent, id: number) => void): this;
+ on(channel: "closeSettingsView", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "closeThemeCreatorView", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "themeCreatorExportTheme", listener: (event: IpcMainInvokeEvent, theme: Themes.Theme) => void): this;
+ on(
+ channel: "enableColorSpaceSrgbWasChanged",
+ listener: (event: IpcMainInvokeEvent, enabled: boolean) => void,
+ ): this;
+ on(channel: "updateFigmaUiScale", listener: (event: IpcMainInvokeEvent, scale: number) => void): this;
+ on(channel: "updatePanelScale", listener: (event: IpcMainInvokeEvent, scale: number) => void): this;
+ on(channel: "startAppAuth", listener: (event: IpcMainInvokeEvent, auth: { grantPath: string }) => void): this;
+ on(channel: "finishAppAuth", listener: (event: IpcMainInvokeEvent, auth: { redirectURL: string }) => void): this;
+ on(
+ channel: "setFeatureFlags",
+ listener: (event: IpcMainInvokeEvent, auth: { featureFlags: FeatureFlags }) => void,
+ ): this;
+ on(channel: "log-debug", listener: (event: IpcMainInvokeEvent, ...args: any[]) => void): this;
+ on(channel: "log-info", listener: (event: IpcMainInvokeEvent, ...args: any[]) => void): this;
+ on(channel: "log-error", listener: (event: IpcMainInvokeEvent, ...args: any[]) => void): this;
+ on(
+ channel: "openDevTools",
+ listener: (event: IpcMainInvokeEvent, mode: "right" | "bottom" | "undocked" | "detach") => void,
+ ): this;
+ on(channel: "removeLocalFileExtension", listener: (event: IpcMainInvokeEvent, id: number) => void): this;
+ on(channel: "openExtensionDirectory", listener: (event: IpcMainInvokeEvent, id: number) => void): this;
+ on(channel: "openMenu", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "appExit", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "newProject", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "updateVisibleNewProjectBtn", listener: (event: IpcMainInvokeEvent, visible: boolean) => void): this;
+ on(channel: "themes-change", listener: (event: IpcMainInvokeEvent, theme: Themes.Theme) => void): this;
+ on(channel: "set-default-theme", listener: (event: IpcMainInvokeEvent) => void): this;
+ on(channel: "saveCreatorTheme", listener: (event: IpcMainInvokeEvent, theme: Themes.Theme) => void): this;
+ on(channel: "sync-themes", listener: (event: IpcMainInvokeEvent) => void): this;
- once(channel: string, listener: (event: IpcMainEvent, args: any) => void): this;
- once(channel: "setTitle", listener: (event: IpcMainEvent, title: string) => void): this;
- once(channel: "setPluginMenuData", listener: (event: IpcMainEvent, pluginMenu: Menu.MenuItem[]) => void): this;
- removeAllListeners(channel: string): this;
- removeAllListeners(channel: "setTitle"): this;
- removeAllListeners(channel: "setPluginMenuData"): this;
+ handle(
+ channel: "writeNewExtensionToDisk",
+ listener: (event: IpcMainInvokeEvent, data: WebApi.WriteNewExtensionToDiskArgs) => Promise | number,
+ ): void;
+ handle(channel: "getAllLocalFileExtensionIds", listener: (event: IpcMainInvokeEvent) => Promise | any): void;
+ handle(
+ channel: "getLocalFileExtensionManifest",
+ listener: (
+ event: IpcMainInvokeEvent,
+ id: number,
+ ) => Promise | Extensions.ExtensionWithManifest | Extensions.ExtensionWithError,
+ ): void;
+ handle(
+ channel: "getLocalFileExtensionSource",
+ listener: (
+ event: IpcMainInvokeEvent,
+ id: number,
+ ) => Promise | Extensions.ExtensionSource | Extensions.ExtensionSourceError,
+ ): void;
+ handle(
+ channel: "createMultipleNewLocalFileExtensions",
+ listener: (event: IpcMainInvokeEvent, data: WebApi.CreateMultipleExtension) => Promise | any,
+ ): void;
+ handle(channel: "isDevToolsOpened", listener: (event: IpcMainInvokeEvent) => Promise | any): void;
+ handle(
+ channel: "writeFiles",
+ listener: (event: IpcMainInvokeEvent, data: WebApi.WriteFiles) => Promise | void,
+ ): void;
+ }
- removeListener(channel: string, listener: (event: IpcMainEvent, args: any) => void): this;
- removeListener(channel: "setTitle", listener: (event: IpcMainEvent, title: string) => void): this;
- removeListener(
- channel: "setPluginMenuData",
- listener: (event: IpcMainEvent, pluginMenu: Menu.MenuItem[]) => void,
+ interface IpcRenderer extends NodeJS.EventEmitter {
+ on(channel: "renderView", listener: (event: IpcRendererEvent, view: View) => void): this;
+ on(channel: "updatePanelHeight", listener: (event: IpcRendererEvent, height: number) => void): this;
+ on(channel: "updateVisibleNewProjectBtn", listener: (event: IpcRendererEvent, visible: boolean) => void): this;
+ on(channel: "updatePanelScale", listener: (event: IpcRendererEvent, scale: number) => void): this;
+ on(channel: "updateUiScale", listener: (event: IpcRendererEvent, scale: number) => void): this;
+ on(
+ channel: "updateFileKey",
+ listener: (event: IpcRendererEvent, data: { id: number; fileKey: string }) => void,
): this;
+ on(channel: "setTabUrl", listener: (event: IpcRendererEvent, data: { id: number; url: string }) => void): this;
+ on(channel: "closeAllTabs", listener: (event: IpcRendererEvent) => void): this;
+ on(channel: "setTitle", listener: (event: IpcRendererEvent, data: { id: number; title: string }) => void): this;
+ on(channel: "closeTab", listener: (event: IpcRendererEvent, data: { id: number }) => void): this;
+ on(channel: "didTabAdd", listener: (event: IpcRendererEvent, data: Tab) => void): this;
+ on(channel: "getUploadedThemes", listener: (event: IpcRendererEvent, themes: Themes.Theme[]) => void): this;
+ on(channel: "mainTabFocused", listener: (event: IpcRendererEvent) => void): this;
+ on(channel: "themes-change", listener: (event: IpcRendererEvent, theme: Themes.Theme) => void): this;
+ on(channel: "set-default-theme", listener: (event: IpcRendererEvent) => void): this;
+ on(channel: "loadCreatorTheme", listener: (event: IpcRendererEvent, theme: Themes.Theme) => void): this;
+ on(channel: "sync-themes-start", listener: (event: IpcRendererEvent) => void): this;
+ on(channel: "sync-themes-end", listener: (event: IpcRendererEvent) => void): this;
+
+ send(channel: string, ...args: any[]): void;
+ send(channel: "setTitle", data: { id: number; title: string }): this;
+ send(channel: "setPluginMenuData", pluginMenu: Menu.MenuItem[]): this;
+ send(channel: "receiveTabs", tabs: Tab[]): this;
+ send(channel: "updateActionState", state: MenuState.State): this;
+ send(channel: "closeAllTab"): this;
+ send(channel: "setFocusToMainTab"): this;
+ send(channel: "updateFileKey", data: { id: number; fileKey: string }): this;
+ send(channel: "setTabUrl", data: { id: number; url: string }): this;
+ send(channel: "setTabFocus", id: number): this;
+ send(channel: "closeTab", id: number): this;
+ send(channel: "newTab"): this;
+ send(channel: "closeSettingsView"): this;
+ send(channel: "closeThemeCreatorView"): this;
+ send(channel: "themeCreatorExportTheme", theme: Themes.Theme): this;
+ send(channel: "enableColorSpaceSrgbWasChanged", enabled: boolean): this;
+ send(channel: "updateFigmaUiScale", scale: number): this;
+ send(channel: "updatePanelScale", scale: number): this;
+ send(channel: "log-debug", ...args: any[]): this;
+ send(channel: "log-info", ...args: any[]): this;
+ send(channel: "log-error", ...args: any[]): this;
+ send(channel: "removeLocalFileExtension", id: number): this;
+ send(channel: "openExtensionDirectory", id: number): this;
+ send(channel: "openMenu"): this;
+ send(channel: "newProject"): this;
+ send(channel: "appExit"): this;
+ send(channel: "updateVisibleNewProjectBtn", visible: boolean): this;
+ send(channel: "themes-change", theme: Themes.Theme): this;
+ send(channel: "set-default-theme"): this;
+ send(channel: "saveCreatorTheme", theme: Themes.Theme): this;
+ send(channel: "sync-themes"): this;
+
+ invoke(channel: "writeNewExtensionToDisk", data: WebApi.WriteNewExtensionToDiskArgs): Promise;
+ invoke(channel: "getAllLocalFileExtensionIds"): Promise;
+ invoke(channel: "getLocalFileExtensionManifest", id: number): Promise;
+ invoke(
+ channel: "getLocalFileExtensionSource",
+ id: number,
+ ): Promise;
+ invoke(channel: "createMultipleNewLocalFileExtensions", data: WebApi.CreateMultipleExtension): Promise;
+ invoke(channel: "isDevToolsOpened"): Promise;
+ invoke(channel: "writeFiles", data: WebApi.WriteFiles): Promise;
+ }
+
+ interface WebContents extends NodeJS.EventEmitter {
+ send(channel: "renderView", view: View): void;
+ send(channel: "getUploadedThemes", themes: Themes.Theme[]): void;
+ send(channel: "updatePanelHeight", height: number): void;
+ send(channel: "updateVisibleNewProjectBtn", visible: boolean): void;
+ send(channel: "updatePanelScale", scale: number): void;
+ send(channel: "updateUiScale", scale: number): void;
+ send(channel: "closeAllTab"): void;
+ send(channel: "updateFileKey", data: { id: number; fileKey: string }): this;
+ send(channel: "setTabUrl", data: { id: number; url: string }): this;
+ send(channel: "setTitle", data: { id: number; title: string }): void;
+ send(channel: "closeTab", data: { id: number }): this;
+ send(channel: "didTabAdd", data: Tab): this;
+ send(channel: "handleUrl", url: string): this;
+ send(channel: "mainTabFocused"): this;
+ send(channel: "themes-change", theme: Themes.Theme): this;
+ send(channel: "loadCreatorTheme", theme: Themes.Theme): this;
+ send(channel: "sync-themes-start", theme: Themes.Theme): this;
+ send(channel: "sync-themes-end", theme: Themes.Theme): this;
+
+ destroy(): void;
}
interface RequestHeaders {
diff --git a/README.md b/README.md
index 574759cb..7d16305c 100644
--- a/README.md
+++ b/README.md
@@ -27,8 +27,7 @@ Figma-linux is an unofficial [Electron](http://electron.atom.io)-based [Figma](
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/d80ff1e7c3fe4da28e2e50a28d4ead7c)](https://www.codacy.com/manual/ChugunovRoman/figma-linux?utm_source=github.com&utm_medium=referral&utm_content=ChugunovRoman/figma-linux&utm_campaign=Badge_Grade)
-[![figma-linux](https://snapcraft.io/figma-linux/badge.svg)](https://snapcraft.io/figma-linux)
-[![Snap Status](https://build.snapcraft.io/badge/ChugunovRoman/figma-linux.svg)](https://build.snapcraft.io/user/ChugunovRoman/figma-linux)
+[![Snap](https://snapcraft.io/figma-linux/badge.svg)](https://snapcraft.io/figma-linux)
@@ -101,7 +100,6 @@ sudo dnf install figma-linux-*.x86_64.rpm
```
-
## Building from source
1. Clone the repository:
diff --git a/config/builder.json b/config/builder.json
index 91f8b001..83077c50 100755
--- a/config/builder.json
+++ b/config/builder.json
@@ -15,6 +15,14 @@
"output": "build/installers"
},
+ "fileAssociations": [
+ {
+ "ext": "fig",
+ "name": "Figma File",
+ "role": "Editor"
+ }
+ ],
+
"protocols": [{
"name": "figma",
"role": "Viewer",
@@ -31,49 +39,19 @@
"category": "Graphics"
},
- "snap": {
- "plugs": [
- {
- "home": {
- "interface": "personal-files",
- "allow-auto-connection": true,
- "read": [
- "$HOME/.config",
- "$HOME/.local",
- "$HOME/Documents"
- ],
- "write": [
- "$HOME/.config",
- "$HOME/.local",
- "$HOME/Documents"
- ]
- }
- },
- {
- "removable-devices": {
- "interface": "removable-media"
- }
- },
- "desktop",
- "desktop-legacy",
- "home",
- "x11",
- "unity7",
- "browser-support",
- "network",
- "gsettings",
- "pulseaudio",
- "opengl",
- "gsettings"
- ]
- },
-
"linux": {
"description": "Unofficial desktop application for linux",
"icon": "resources/icons",
"category": "Graphic",
"packageCategory": "Graphic",
"maintainer": "Chugunov Roman ",
+ "fileAssociations": [
+ {
+ "ext": "fig",
+ "name": "Figma File",
+ "role": "Editor"
+ }
+ ],
"target": [
{
"target": "deb",
diff --git a/config/webpack.config.main.js b/config/webpack.config.main.js
index 0b0e705e..9a8017eb 100755
--- a/config/webpack.config.main.js
+++ b/config/webpack.config.main.js
@@ -1,50 +1,58 @@
-const CopyWebpackPlugin = require('copy-webpack-plugin');
+const CopyWebpackPlugin = require("copy-webpack-plugin");
-const path = require('path');
+const path = require("path");
const rootFolder = process.cwd();
-const main = {
- module: {
- rules: [
- {
- test: /\.node$/,
- loader: 'native-ext-loader'
- }
- ]
+module.exports = config => {
+ config.entry = {
+ ["main"]: [path.resolve(rootFolder, "src/main/index.ts")],
+ };
+
+ config.output = {
+ ...config.output,
+ path: path.resolve(rootFolder, "dist/main"),
+ };
+
+ config.module.rules = [
+ ...config.module.rules,
+ {
+ test: /\.node$/,
+ loader: "native-ext-loader",
},
-
- resolve: {
- modules: ['node_modules', 'react'],
- extensions: ['.ts', '.tsx', '.js', '.jsx', '.json', 'node'],
-
- alias: {
- // Components: path.resolve(rootFolder, 'src/renderer/components'),
- Middleware: path.resolve(rootFolder, 'src/middleware'),
- // Store: path.resolve(rootFolder, 'src/renderer/stores'),
- Const: path.resolve(rootFolder, 'src/constants'),
- Main: path.resolve(rootFolder, 'src/main'),
- Utils: path.resolve(rootFolder, 'src/utils')
- }
- },
-
-
- devtool: 'source-map',
-
- plugins: [
- new CopyWebpackPlugin({
- patterns: [
- {
- from: path.join(rootFolder, 'src/package.json'),
- to: path.join(rootFolder, 'dist/')
- },
- {
- from: path.join(rootFolder, 'resources'),
- to: path.join(rootFolder, 'dist/resources/')
- }
- ]
- })
- ]
+ ];
+
+ config.resolve.modules = ["node_modules", "react"];
+ config.resolve.extensions = [".ts", ".tsx", ".js", ".jsx", ".json", "node"];
+ config.resolve.alias = {
+ ...config.resolve.alias,
+ // Components: path.resolve(rootFolder, 'src/renderer/components'),
+ Middleware: path.resolve(rootFolder, "src/middleware"),
+ // Store: path.resolve(rootFolder, 'src/renderer/stores'),
+ Const: path.resolve(rootFolder, "src/constants"),
+ Main: path.resolve(rootFolder, "src/main"),
+ Utils: path.resolve(rootFolder, "src/utils"),
+ Enums: path.resolve(rootFolder, "@types/enums.ts"),
+ Storage: path.resolve(rootFolder, "src/main/Storage.ts"),
+ };
+
+ config.devtool = "source-map";
+
+ config.plugins = [
+ ...config.plugins,
+ new CopyWebpackPlugin({
+ patterns: [
+ {
+ from: path.join(rootFolder, "src/package.json"),
+ to: path.join(rootFolder, "dist/"),
+ },
+ {
+ from: path.join(rootFolder, "resources"),
+ to: path.join(rootFolder, "dist/resources/"),
+ },
+ ],
+ }),
+ ];
+
+ return config;
};
-
-module.exports = main;
diff --git a/config/webpack.config.renderer.js b/config/webpack.config.renderer.js
index 2638ba68..e928ce44 100755
--- a/config/webpack.config.renderer.js
+++ b/config/webpack.config.renderer.js
@@ -1,49 +1,76 @@
-const HtmlWebpackPlugin = require('html-webpack-plugin');
+const HtmlWebpackPlugin = require("html-webpack-plugin");
-const path = require('path');
+const path = require("path");
const rootFolder = process.cwd();
+const resolveExtensions = [".ts", ".tsx", ".js", ".jsx", ".json", ".scss"];
+const resolveModules = ["node_modules", "react"];
-const render = {
- entry: {
- '../middleware/loadMainContent': path.resolve(rootFolder, 'src/middleware/loadMainContent.ts'),
- '../middleware/loadContent': path.resolve(rootFolder, 'src/middleware/loadContent.ts'),
- // '../middleware/webApi': path.resolve(rootFolder, 'src/middleware/webApi.ts')
- },
-
- module: {
- noParse: /webApi/
- },
-
- resolve: {
- extensions: ['.ts', '.tsx', '.js', '.jsx', '.json', '.scss'],
- modules: [
- 'node_modules',
- 'react'
- ],
- alias: {
- Components: path.resolve(rootFolder, 'src/renderer/components'),
- Elements: path.resolve(rootFolder, 'src/renderer/elements'),
- Middleware: path.resolve(rootFolder, 'src/middleware'),
- Store: path.resolve(rootFolder, 'src/renderer/stores'),
- Const: path.resolve(rootFolder, 'src/constants'),
- Main: path.resolve(rootFolder, 'src/main'),
- Utils: path.resolve(rootFolder, 'src/utils')
+module.exports = config => {
+ config.entry = {
+ ["middleware/loadMainContent"]: path.resolve(rootFolder, "src/middleware/loadMainContent.ts"),
+ ["middleware/loadContent"]: path.resolve(rootFolder, "src/middleware/loadContent.ts"),
+ ["renderer"]: [path.resolve(rootFolder, "src/renderer/index.tsx")],
+ };
+
+ config.output = {
+ ...config.output,
+ publicPath: config.mode === "development" ? "/" : "renderer",
+ path: path.resolve(rootFolder, "dist/renderer"),
+ };
+
+ config.module.noParse = /webApi/;
+ config.module.rules = config.module.rules.map(rule => {
+ if (Array.isArray(rule.use)) {
+ rule.use = rule.use.map(r => {
+ if (r.loader && r.loader === "css-loader") {
+ return { ...r, options: { ...r.options, modules: false } };
}
- },
-
- devtool: 'source-map',
-
- plugins: [
- new HtmlWebpackPlugin({
- template: path.resolve(rootFolder, 'src', 'index.html'),
- filename: path.resolve(rootFolder, 'dist', 'index.html'),
- excludeChunks: [
- '../middleware/loadMainContent',
- '../middleware/loadContent'
- ]
- })
- ]
-};
-module.exports = render;
+ return r;
+ });
+ }
+
+ return rule;
+ });
+
+ config.module.rules = [...config.module.rules];
+
+ if (config.resolve.extensions && Array.isArray(config.resolve.extensions)) {
+ config.resolve.extensions = [...new Set([...config.resolve.extensions, ...resolveExtensions])];
+ } else {
+ config.resolve.extensions = resolveExtensions;
+ }
+
+ if (config.resolve.modules && Array.isArray(config.resolve.modules)) {
+ config.resolve.modules = [...new Set([...config.resolve.modules, ...resolveModules])];
+ } else {
+ config.resolve.modules = resolveModules;
+ }
+
+ config.resolve.alias = {
+ ...config.resolve.alias,
+ Components: path.resolve(rootFolder, "src/renderer/components"),
+ Elements: path.resolve(rootFolder, "src/renderer/elements"),
+ Middleware: path.resolve(rootFolder, "src/middleware"),
+ Store: path.resolve(rootFolder, "src/renderer/stores"),
+ Const: path.resolve(rootFolder, "src/constants"),
+ Main: path.resolve(rootFolder, "src/main"),
+ Utils: path.resolve(rootFolder, "src/utils"),
+ Enums: path.resolve(rootFolder, "@types/enums.ts"),
+ Storage: path.resolve(rootFolder, "src/main/Storage.ts"),
+ };
+
+ config.devtool = "source-map";
+
+ config.plugins = [
+ ...config.plugins,
+ new HtmlWebpackPlugin({
+ template: path.resolve(rootFolder, "src", "index.html"),
+ filename: path.resolve(rootFolder, "dist", "index.html"),
+ excludeChunks: ["middleware/loadMainContent", "middleware/loadContent"],
+ }),
+ ];
+
+ return config;
+};
diff --git a/images/figma-linux.jpg b/images/figma-linux.jpg
deleted file mode 100644
index bcffa72f..00000000
Binary files a/images/figma-linux.jpg and /dev/null differ
diff --git a/images/screenshot1.jpg b/images/screenshot1.jpg
new file mode 100644
index 00000000..d6ae02cd
Binary files /dev/null and b/images/screenshot1.jpg differ
diff --git a/images/screenshot1.png b/images/screenshot1.png
deleted file mode 100644
index 8e8e55a8..00000000
Binary files a/images/screenshot1.png and /dev/null differ
diff --git a/images/screenshot2.jpg b/images/screenshot2.jpg
new file mode 100644
index 00000000..1f5abfe8
Binary files /dev/null and b/images/screenshot2.jpg differ
diff --git a/images/screenshot2.png b/images/screenshot2.png
deleted file mode 100644
index 257a7abb..00000000
Binary files a/images/screenshot2.png and /dev/null differ
diff --git a/images/screenshot3.jpg b/images/screenshot3.jpg
new file mode 100644
index 00000000..2836aec6
Binary files /dev/null and b/images/screenshot3.jpg differ
diff --git a/images/screenshot4.jpg b/images/screenshot4.jpg
new file mode 100644
index 00000000..b8e3002f
Binary files /dev/null and b/images/screenshot4.jpg differ
diff --git a/images/settings.png b/images/settings.png
deleted file mode 100644
index c342e51a..00000000
Binary files a/images/settings.png and /dev/null differ
diff --git a/package-lock.json b/package-lock.json
index fbdacabc..e858a79e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "figma-linux",
- "version": "0.6.3",
+ "version": "0.7.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"7zip": {
"version": "0.0.6",
- "resolved": "https://registry.npmjs.org/7zip/-/7zip-0.0.6.tgz",
+ "resolved": "https://npm.kari.com/7zip/-/7zip-0.0.6.tgz",
"integrity": "sha1-nK+xca+CMpSQNTtIFvAzR6oVCjA="
},
"7zip-bin": {
@@ -612,7 +612,7 @@
},
"@babel/plugin-syntax-async-generators": {
"version": "7.8.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
"integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
"dev": true,
"requires": {
@@ -630,7 +630,7 @@
},
"@babel/plugin-syntax-dynamic-import": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz",
"integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==",
"dev": true,
"requires": {
@@ -648,7 +648,7 @@
},
"@babel/plugin-syntax-json-strings": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
"integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
"requires": {
@@ -666,7 +666,7 @@
},
"@babel/plugin-syntax-nullish-coalescing-operator": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
"integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
"requires": {
@@ -684,7 +684,7 @@
},
"@babel/plugin-syntax-object-rest-spread": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
"integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
"requires": {
@@ -693,7 +693,7 @@
},
"@babel/plugin-syntax-optional-catch-binding": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
"integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
"requires": {
@@ -702,7 +702,7 @@
},
"@babel/plugin-syntax-optional-chaining": {
"version": "7.8.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fplugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
"integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
"requires": {
@@ -1150,23 +1150,6 @@
"esutils": "^2.0.2"
}
},
- "@babel/runtime": {
- "version": "7.7.6",
- "resolved": "https://npm.kari.com/@babel%2fruntime/-/runtime-7.7.6.tgz",
- "integrity": "sha512-BWAJxpNVa0QlE5gZdWjSxXtemZyZ9RmrmVozxt3NUXeZhVIJ5ANyqmMc0JDrivBZyxUuQvFxlvH4OWWOogGfUw==",
- "dev": true,
- "requires": {
- "regenerator-runtime": "^0.13.2"
- },
- "dependencies": {
- "regenerator-runtime": {
- "version": "0.13.3",
- "resolved": "https://npm.kari.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
- "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
- "dev": true
- }
- }
- },
"@babel/template": {
"version": "7.10.4",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz",
@@ -1280,37 +1263,19 @@
}
},
"@develar/schema-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.1.0.tgz",
- "integrity": "sha512-qjCqB4ctMig9Gz5bd6lkdFr3bO6arOdQqptdBSpF1ZpCnjofieCciEzkoS9ujY9cMGyllYSCSmBJ3x9OKHXzoA==",
+ "version": "2.6.5",
+ "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz",
+ "integrity": "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig==",
"dev": true,
"requires": {
- "ajv": "^6.1.0",
- "ajv-keywords": "^3.1.0"
+ "ajv": "^6.12.0",
+ "ajv-keywords": "^3.4.1"
},
"dependencies": {
- "ajv": {
- "version": "6.10.2",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
- "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^2.0.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "fast-deep-equal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
- "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
"dev": true
}
}
@@ -1330,77 +1295,89 @@
"progress": "^2.0.3",
"sanitize-filename": "^1.6.2",
"sumchecker": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
}
},
- "@malept/cross-spawn-promise": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.0.tgz",
- "integrity": "sha512-GeIK5rfU1Yd7BZJQPTGZMMmcZy5nhRToPXZcjaDwQDRSewdhp648GT2E4dh+L7+Io7AOW6WQ+GR44QSzja4qxg==",
+ "@electron/universal": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.0.4.tgz",
+ "integrity": "sha512-ajZoumi4XwqwmZe8YVhu4XGkZBCPyWZsVCQONPTIe9TUlleSN+dic3YpXlaWcilx/HOzTdldTKtabNTeI0gDoA==",
"dev": true,
"requires": {
- "cross-spawn": "^7.0.1"
+ "@malept/cross-spawn-promise": "^1.1.0",
+ "asar": "^3.0.3",
+ "debug": "^4.3.1",
+ "dir-compare": "^2.4.0",
+ "fs-extra": "^9.0.1"
},
"dependencies": {
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "ms": "2.1.2"
}
},
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
"dev": true,
"requires": {
- "shebang-regex": "^3.0.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
}
},
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
}
+ },
+ "ms": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+ "dev": true
+ },
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "dev": true
}
}
},
+ "@malept/cross-spawn-promise": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz",
+ "integrity": "sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==",
+ "dev": true,
+ "requires": {
+ "cross-spawn": "^7.0.1"
+ }
+ },
"@nodelib/fs.scandir": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz",
@@ -1444,14 +1421,11 @@
}
}
},
- "@samverschueren/stream-to-observable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
- "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
- "dev": true,
- "requires": {
- "any-observable": "^0.3.0"
- }
+ "@sindresorhus/is": {
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+ "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+ "dev": true
},
"@szmarczak/http-timer": {
"version": "1.1.2",
@@ -1462,12 +1436,33 @@
"defer-to-connect": "^1.0.1"
}
},
+ "@types/adm-zip": {
+ "version": "0.4.33",
+ "resolved": "https://registry.npmjs.org/@types/adm-zip/-/adm-zip-0.4.33.tgz",
+ "integrity": "sha512-WM0DCWFLjXtddl0fu0+iN2ZF+qz8RF9RddG5OSy/S90AQz01Fu8lHn/3oTIZDxvG8gVcnBLAHMHOdBLbV6m6Mw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/anymatch": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/@types%2fanymatch/-/anymatch-1.3.1.tgz",
"integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
"dev": true
},
+ "@types/cacheable-request": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz",
+ "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==",
+ "dev": true,
+ "requires": {
+ "@types/http-cache-semantics": "*",
+ "@types/keyv": "*",
+ "@types/node": "*",
+ "@types/responselike": "*"
+ }
+ },
"@types/color-name": {
"version": "1.1.1",
"resolved": "https://npm.kari.com/@types%2fcolor-name/-/color-name-1.1.1.tgz",
@@ -1482,14 +1477,14 @@
},
"@types/electron-devtools-installer": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/@types/electron-devtools-installer/-/electron-devtools-installer-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/@types%2felectron-devtools-installer/-/electron-devtools-installer-2.2.0.tgz",
"integrity": "sha512-HJNxpaOXuykCK4rQ6FOMxAA0NLFYsf7FiPFGmab0iQmtVBHSAfxzy3MRFpLTTDDWbV0yD2YsHOQvdu8yCqtCfw==",
"dev": true
},
- "@types/electron-settings": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@types/electron-settings/-/electron-settings-3.1.1.tgz",
- "integrity": "sha512-wDVj8YFBuqLXgVQqZ1Yk+Qm27LjjldssnrwzDv9JanOokw24tcuJ76X1Uo5Xg9VVRIAF6HgmiAQQ+CZrRmJgYw==",
+ "@types/fs-extra": {
+ "version": "9.0.6",
+ "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz",
+ "integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==",
"dev": true,
"requires": {
"@types/node": "*"
@@ -1513,26 +1508,47 @@
},
"@types/html-minifier-terser": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-5.1.0.tgz",
+ "resolved": "https://npm.kari.com/@types%2fhtml-minifier-terser/-/html-minifier-terser-5.1.0.tgz",
"integrity": "sha512-iYCgjm1dGPRuo12+BStjd1HiVQqhlRhWDOQigNxn023HcjnhsiFz9pc6CzJj4HwDCSQca9bxTL4PxJDbkdm3PA==",
"dev": true
},
+ "@types/http-cache-semantics": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
+ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==",
+ "dev": true
+ },
"@types/json-schema": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz",
"integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==",
"dev": true
},
+ "@types/keyv": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz",
+ "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
+ "@types/lodash": {
+ "version": "4.14.166",
+ "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.166.tgz",
+ "integrity": "sha512-A3YT/c1oTlyvvW/GQqG86EyqWNrT/tisOIh2mW3YCgcx71TNjiTZA3zYZWA5BCmtsOTXjhliy4c4yEkErw6njA==",
+ "dev": true
+ },
"@types/minimatch": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
+ "resolved": "https://npm.kari.com/@types%2fminimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
"dev": true
},
"@types/node": {
- "version": "10.17.32",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.32.tgz",
- "integrity": "sha512-EUq+cjH/3KCzQHikGnNbWAGe548IFLSm93Vl8xA7EuYEEATiyOVDyEVuGkowL7c9V69FF/RiZSAOCFPApMs/ig==",
+ "version": "12.19.11",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.11.tgz",
+ "integrity": "sha512-bwVfNTFZOrGXyiQ6t4B9sZerMSShWNsGRw8tC5DY1qImUNczS9SjT4G6PnzjCnxsu5Ubj6xjL2lgwddkxtQl5w==",
"dev": true
},
"@types/normalize-package-data": {
@@ -1543,34 +1559,44 @@
},
"@types/parse-json": {
"version": "4.0.0",
- "resolved": "https://npm.kari.com/@types%2fparse-json/-/parse-json-4.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
+ "@types/plist": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@types/plist/-/plist-3.0.2.tgz",
+ "integrity": "sha512-ULqvZNGMv0zRFvqn8/4LSPtnmN4MfhlPNtJCTpKuIIxGVGZ2rYWzFXrvEBoh9CVyqSE7D6YFRJ1hydLHI6kbWw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/node": "*",
+ "xmlbuilder": ">=11.0.1"
+ }
+ },
"@types/prop-types": {
- "version": "15.5.6",
- "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.5.6.tgz",
- "integrity": "sha512-ZBFR7TROLVzCkswA3Fmqq+IIJt62/T7aY/Dmz+QkU7CaW2QFqAitCE8Ups7IzmGhcN1YWMBT4Qcoc07jU9hOJQ==",
+ "version": "15.7.3",
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz",
+ "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==",
"dev": true
},
"@types/react": {
- "version": "16.4.16",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-16.4.16.tgz",
- "integrity": "sha512-lxyoipLWweAnLnSsV4Ho2NAZTKKmxeYgkTQ6PaDiPDU9JJBUY2zJVVGiK1smzYv8+ZgbqEmcm5xM74GCpunSEA==",
+ "version": "16.14.2",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-16.14.2.tgz",
+ "integrity": "sha512-BzzcAlyDxXl2nANlabtT4thtvbbnhee8hMmH/CcJrISDBVcJS1iOsP1f0OAgSdGE0MsY9tqcrb9YoZcOFv9dbQ==",
"dev": true,
"requires": {
"@types/prop-types": "*",
- "csstype": "^2.2.0"
+ "csstype": "^3.0.2"
}
},
"@types/react-dom": {
- "version": "16.0.6",
- "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.0.6.tgz",
- "integrity": "sha512-M+1zmwa5KxUpkCuxA4whlDJKYTGNvNQW4pIoCLH16xGbClicD9CzPry4y94kTjCCk/bJZCZ/GVqUsP7eKcO/mQ==",
+ "version": "16.9.10",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.10.tgz",
+ "integrity": "sha512-ItatOrnXDMAYpv6G8UCk2VhbYVTjZT9aorLtA/OzDN9XJ2GKcfam68jutoAcILdRjsRUO8qb7AmyObF77Q8QFw==",
"dev": true,
"requires": {
- "@types/node": "*",
- "@types/react": "*"
+ "@types/react": "^16"
}
},
"@types/react-redux": {
@@ -1606,22 +1632,31 @@
},
"@types/redux": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@types/redux/-/redux-3.6.0.tgz",
+ "resolved": "https://npm.kari.com/@types%2fredux/-/redux-3.6.0.tgz",
"integrity": "sha1-8evh5UEVGAcuT9/KXHbhbnTBOZo=",
"dev": true,
"requires": {
"redux": "*"
}
},
+ "@types/responselike": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
+ "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
+ "dev": true,
+ "requires": {
+ "@types/node": "*"
+ }
+ },
"@types/source-list-map": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/@types%2fsource-list-map/-/source-list-map-0.1.2.tgz",
"integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
"dev": true
},
"@types/tapable": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/tapable/-/tapable-1.0.6.tgz",
+ "resolved": "https://npm.kari.com/@types%2ftapable/-/tapable-1.0.6.tgz",
"integrity": "sha512-W+bw9ds02rAQaMvaLYxAbJ6cvguW/iJXNT6lTssS1ps6QdrMKttqEAMEG/b5CR8TZl3/L7/lH0ZV5nNR1LXikA==",
"dev": true
},
@@ -1634,6 +1669,19 @@
"source-map": "^0.6.1"
}
},
+ "@types/uuid": {
+ "version": "8.3.0",
+ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz",
+ "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==",
+ "dev": true
+ },
+ "@types/verror": {
+ "version": "1.10.4",
+ "resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.4.tgz",
+ "integrity": "sha512-OjJdqx6QlbyZw9LShPwRW+Kmiegeg3eWNI41MQQKaG3vjdU2L9SRElntM51HmHBY1cu7izxQJ1lMYioQh3XMBg==",
+ "dev": true,
+ "optional": true
+ },
"@types/webpack": {
"version": "4.41.22",
"resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.22.tgz",
@@ -1650,7 +1698,7 @@
},
"@types/webpack-env": {
"version": "1.15.2",
- "resolved": "https://registry.npmjs.org/@types/webpack-env/-/webpack-env-1.15.2.tgz",
+ "resolved": "https://npm.kari.com/@types%2fwebpack-env/-/webpack-env-1.15.2.tgz",
"integrity": "sha512-67ZgZpAlhIICIdfQrB5fnDvaKFcDxpKibxznfYRVAT4mQE41Dido/3Ty+E3xGBmTogc5+0Qb8tWhna+5B8z1iQ==",
"dev": true
},
@@ -1673,6 +1721,21 @@
}
}
},
+ "@types/yargs": {
+ "version": "15.0.12",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.12.tgz",
+ "integrity": "sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw==",
+ "dev": true,
+ "requires": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "@types/yargs-parser": {
+ "version": "20.2.0",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz",
+ "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==",
+ "dev": true
+ },
"@typescript-eslint/eslint-plugin": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.1.1.tgz",
@@ -2116,13 +2179,13 @@
},
"abbrev": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true
},
"accepts": {
"version": "1.3.7",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+ "resolved": "https://npm.kari.com/accepts/-/accepts-1.3.7.tgz",
"integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
"dev": true,
"requires": {
@@ -2159,6 +2222,11 @@
"integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==",
"dev": true
},
+ "adm-zip": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.1.tgz",
+ "integrity": "sha512-a5ABmIFUJ9OxHV5zrXM9Q41JzpRIflFtdgpL4UQM9DsTHHxQzPRaeyAdnMW7kxL0NRWm/NHafJdj6pO+ty7L2g=="
+ },
"aggregate-error": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
@@ -2203,7 +2271,7 @@
},
"amdefine": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/amdefine/-/amdefine-1.0.1.tgz",
"integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
"dev": true
},
@@ -2252,7 +2320,7 @@
},
"ansi-colors": {
"version": "3.2.4",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+ "resolved": "https://npm.kari.com/ansi-colors/-/ansi-colors-3.2.4.tgz",
"integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
"dev": true
},
@@ -2272,13 +2340,13 @@
}
},
"ansi-escapes": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz",
- "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw=="
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+ "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ=="
},
"ansi-html": {
"version": "0.0.7",
- "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz",
+ "resolved": "https://npm.kari.com/ansi-html/-/ansi-html-0.0.7.tgz",
"integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
"dev": true
},
@@ -2290,18 +2358,12 @@
},
"ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"requires": {
"color-convert": "^1.9.0"
}
},
- "any-observable": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
- "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
- "dev": true
- },
"anymatch": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz",
@@ -2319,115 +2381,112 @@
}
},
"app-builder-bin": {
- "version": "3.4.4",
- "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.4.tgz",
- "integrity": "sha512-Xib+wgdK+8zZhbZr5pma3pNB23Y4JRY5Yt6h8peou6MTFSQzXdIkqalh/ezy9SMLuS43S4b0s7jTVAmUs8WVmA==",
+ "version": "3.5.12",
+ "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.5.12.tgz",
+ "integrity": "sha512-lQARM2AielmFoBeIo6LZigAe+58Wwe07ZWkt+wVeDxzyieNmeWjlvz/V5dKzinydwdHd+CNswN86sww46yijjA==",
"dev": true
},
"app-builder-lib": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.1.0.tgz",
- "integrity": "sha512-jDTfWsVS/MePO4FexqiSQcsWM9Yfr81ETIYbmVbKmW05o0dn9k1DvMOMoLb0kTLQpW+pWBVvGMAOPfk68HnBrg==",
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-22.10.4.tgz",
+ "integrity": "sha512-q7B1cr8Ry4a7o08EKShLfwsnIVf5By7YhVwcoqgEwPKxtoj1qF0kB4wyBP79rJylYi0Zj2cSkJJ/gD/ef9xhoQ==",
"dev": true,
"requires": {
"7zip-bin": "~5.0.3",
- "@develar/schema-utils": "~2.1.0",
+ "@develar/schema-utils": "~2.6.5",
+ "@electron/universal": "1.0.4",
"async-exit-hook": "^2.0.1",
"bluebird-lst": "^1.0.9",
- "builder-util": "22.1.0",
- "builder-util-runtime": "8.4.0",
+ "builder-util": "22.10.4",
+ "builder-util-runtime": "8.7.3",
"chromium-pickle-js": "^0.2.0",
- "debug": "^4.1.1",
- "ejs": "^2.7.1",
- "electron-publish": "22.1.0",
- "fs-extra": "^8.1.0",
- "hosted-git-info": "^3.0.0",
+ "debug": "^4.3.1",
+ "ejs": "^3.1.5",
+ "electron-publish": "22.10.4",
+ "fs-extra": "^9.0.1",
+ "hosted-git-info": "^3.0.7",
"is-ci": "^2.0.0",
- "isbinaryfile": "^4.0.2",
- "js-yaml": "^3.13.1",
+ "isbinaryfile": "^4.0.6",
+ "js-yaml": "^3.14.1",
"lazy-val": "^1.0.4",
"minimatch": "^3.0.4",
- "normalize-package-data": "^2.5.0",
- "read-config-file": "5.0.0",
+ "normalize-package-data": "^3.0.0",
+ "read-config-file": "6.0.0",
"sanitize-filename": "^1.6.3",
- "semver": "^6.3.0",
- "temp-file": "^3.3.4"
+ "semver": "^7.3.4",
+ "temp-file": "^3.3.7"
},
"dependencies": {
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
- "dotenv-expand": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
- "dev": true
- },
- "ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.2.tgz",
- "integrity": "sha512-ezZMWtHXm7Eb7Rq4Mwnx2vs79WUx2QmRg3+ZqeGroKzfDO+EprOcgRPYghsOP9JuYBfK18VojmRTGCg8Ma+ktw==",
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
"dev": true,
"requires": {
- "lru-cache": "^5.1.1"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
}
},
- "isbinaryfile": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.2.tgz",
- "integrity": "sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ==",
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "hosted-git-info": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz",
+ "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "lru-cache": "^6.0.0"
}
},
"json5": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
- "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"dev": true,
"requires": {
- "minimist": "^1.2.0"
+ "minimist": "^1.2.5"
}
},
- "lazy-val": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
- "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
- "dev": true
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
},
"lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
- "yallist": "^3.0.2"
+ "yallist": "^4.0.0"
}
},
"ms": {
@@ -2437,29 +2496,15 @@
"dev": true
},
"normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.0.tgz",
+ "integrity": "sha512-6lUjEI0d3v6kFrtgA/lOx4zHCWULXsFNIjHolnZCKCTLA6m/G625cdn3O7eNmT0iD3jfo6HZ9cdImGZwf21prw==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
+ "hosted-git-info": "^3.0.6",
+ "resolve": "^1.17.0",
+ "semver": "^7.3.2",
"validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.5",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz",
- "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==",
- "dev": true
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- }
}
},
"path-parse": {
@@ -2469,51 +2514,60 @@
"dev": true
},
"read-config-file": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz",
- "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz",
+ "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==",
"dev": true,
"requires": {
- "dotenv": "^8.0.0",
+ "dotenv": "^8.2.0",
"dotenv-expand": "^5.1.0",
- "fs-extra": "^8.1.0",
"js-yaml": "^3.13.1",
- "json5": "^2.1.0",
+ "json5": "^2.1.2",
"lazy-val": "^1.0.4"
}
},
"resolve": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.2.tgz",
- "integrity": "sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw==",
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz",
+ "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==",
"dev": true,
"requires": {
+ "is-core-module": "^2.1.0",
"path-parse": "^1.0.6"
}
},
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
"dev": true
},
"yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"aproba": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true
},
"are-we-there-yet": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "resolved": "https://npm.kari.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
"integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"dev": true,
"requires": {
@@ -2555,7 +2609,7 @@
},
"argparse": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "resolved": "https://npm.kari.com/argparse/-/argparse-1.0.10.tgz",
"integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
"dev": true,
"requires": {
@@ -2564,19 +2618,19 @@
},
"arr-diff": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/arr-diff/-/arr-diff-4.0.0.tgz",
"integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
"dev": true
},
"arr-flatten": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/arr-flatten/-/arr-flatten-1.1.0.tgz",
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
"dev": true
},
"arr-union": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/arr-union/-/arr-union-3.1.0.tgz",
"integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
"dev": true
},
@@ -2590,13 +2644,13 @@
},
"array-find-index": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/array-find-index/-/array-find-index-1.0.2.tgz",
"integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
"dev": true
},
"array-flatten": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/array-flatten/-/array-flatten-2.1.2.tgz",
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
"dev": true
},
@@ -2650,7 +2704,7 @@
},
"array-union": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/array-union/-/array-union-1.0.2.tgz",
"integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
"dev": true,
"requires": {
@@ -2659,19 +2713,54 @@
},
"array-uniq": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/array-uniq/-/array-uniq-1.0.3.tgz",
"integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
"dev": true
},
"array-unique": {
"version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+ "resolved": "https://npm.kari.com/array-unique/-/array-unique-0.3.2.tgz",
"integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
"dev": true
},
+ "asar": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/asar/-/asar-3.0.3.tgz",
+ "integrity": "sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw==",
+ "dev": true,
+ "requires": {
+ "@types/glob": "^7.1.1",
+ "chromium-pickle-js": "^0.2.0",
+ "commander": "^5.0.0",
+ "glob": "^7.1.6",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
+ "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ }
+ }
+ },
"asn1": {
"version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+ "resolved": "https://npm.kari.com/asn1/-/asn1-0.2.4.tgz",
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
"dev": true,
"requires": {
@@ -2727,13 +2816,13 @@
},
"assert-plus": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/assert-plus/-/assert-plus-1.0.0.tgz",
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
"dev": true
},
"assign-symbols": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/assign-symbols/-/assign-symbols-1.0.0.tgz",
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
@@ -2743,6 +2832,12 @@
"integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
+ "async": {
+ "version": "0.9.2",
+ "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz",
+ "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=",
+ "dev": true
+ },
"async-each": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz",
@@ -2751,31 +2846,31 @@
},
"async-exit-hook": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
"integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==",
"dev": true
},
"async-foreach": {
"version": "0.1.3",
- "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz",
+ "resolved": "https://npm.kari.com/async-foreach/-/async-foreach-0.1.3.tgz",
"integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=",
"dev": true
},
"async-limiter": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/async-limiter/-/async-limiter-1.0.1.tgz",
"integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "resolved": "https://npm.kari.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"at-least-node": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/at-least-node/-/at-least-node-1.0.0.tgz",
"integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==",
"dev": true
},
@@ -2785,15 +2880,91 @@
"integrity": "sha1-ri1acpR38onWDdf5amMUoi3Wwio=",
"dev": true
},
+ "awesome-typescript-loader": {
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/awesome-typescript-loader/-/awesome-typescript-loader-3.5.0.tgz",
+ "integrity": "sha512-qzgm9SEvodVkSi9QY7Me1/rujg+YBNMjayNSAyzNghwTEez++gXoPCwMvpbHRG7wrOkDCiF6dquvv9ESmUBAuw==",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.3.1",
+ "enhanced-resolve": "3.3.0",
+ "loader-utils": "^1.1.0",
+ "lodash": "^4.17.4",
+ "micromatch": "^3.0.3",
+ "mkdirp": "^0.5.1",
+ "source-map-support": "^0.5.3"
+ }
+ },
"aws-sign2": {
"version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+ "resolved": "https://npm.kari.com/aws-sign2/-/aws-sign2-0.7.0.tgz",
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
"dev": true
},
+ "babel-code-frame": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
+ "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
+ "dev": true,
+ "requires": {
+ "chalk": "^1.1.3",
+ "esutils": "^2.0.2",
+ "js-tokens": "^3.0.2"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+ "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+ "dev": true
+ },
+ "chalk": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+ "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ }
+ },
+ "js-tokens": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz",
+ "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=",
+ "dev": true
+ }
+ }
+ },
+ "babel-helper-function-name": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz",
+ "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=",
+ "dev": true,
+ "requires": {
+ "babel-helper-get-function-arity": "^6.24.1",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1",
+ "babel-traverse": "^6.24.1",
+ "babel-types": "^6.24.1"
+ }
+ },
+ "babel-helper-get-function-arity": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz",
+ "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0",
+ "babel-types": "^6.24.1"
+ }
+ },
"babel-loader": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz",
+ "resolved": "https://npm.kari.com/babel-loader/-/babel-loader-8.1.0.tgz",
"integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==",
"dev": true,
"requires": {
@@ -2830,7 +3001,7 @@
},
"find-cache-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
"integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
"dev": true,
"requires": {
@@ -2841,7 +3012,7 @@
},
"find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
@@ -2870,7 +3041,7 @@
},
"locate-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
@@ -2880,7 +3051,7 @@
},
"make-dir": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/make-dir/-/make-dir-2.1.0.tgz",
"integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
"dev": true,
"requires": {
@@ -2890,7 +3061,7 @@
},
"p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
@@ -2899,7 +3070,7 @@
},
"p-locate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
@@ -2908,7 +3079,7 @@
},
"p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
@@ -2920,13 +3091,13 @@
},
"pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "resolved": "https://npm.kari.com/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
"pkg-dir": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
"integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
@@ -2952,9 +3123,18 @@
}
}
},
+ "babel-messages": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz",
+ "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.22.0"
+ }
+ },
"babel-plugin-component": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/babel-plugin-component/-/babel-plugin-component-1.1.1.tgz",
"integrity": "sha512-WUw887kJf2GH80Ng/ZMctKZ511iamHNqPhd9uKo14yzisvV7Wt1EckIrb8oq/uCz3B3PpAW7Xfl7AkTLDYT6ag==",
"dev": true,
"requires": {
@@ -2963,7 +3143,7 @@
"dependencies": {
"@babel/helper-module-imports": {
"version": "7.0.0-beta.35",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
+ "resolved": "https://npm.kari.com/@babel%2fhelper-module-imports/-/helper-module-imports-7.0.0-beta.35.tgz",
"integrity": "sha512-vaC1KyIZSuyWb3Lj277fX0pxivyHwuDU4xZsofqgYAbkDxNieMg2vuhzP5AgMweMY7fCQUMTi+BgPqTLjkxXFg==",
"dev": true,
"requires": {
@@ -2973,7 +3153,7 @@
},
"@babel/types": {
"version": "7.0.0-beta.35",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.35.tgz",
+ "resolved": "https://npm.kari.com/@babel%2ftypes/-/types-7.0.0-beta.35.tgz",
"integrity": "sha512-y9XT11CozHDgjWcTdxmhSj13rJVXpa5ZXwjjOiTedjaM0ba5ItqdS02t31EhPl7HtOWxsZkYCCUNrSfrOisA6w==",
"dev": true,
"requires": {
@@ -2984,7 +3164,7 @@
},
"to-fast-properties": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
"integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
"dev": true
}
@@ -2992,21 +3172,133 @@
},
"babel-plugin-dynamic-import-node": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
+ "resolved": "https://npm.kari.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz",
"integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==",
"dev": true,
"requires": {
"object.assign": "^4.1.0"
}
},
+ "babel-plugin-syntax-class-properties": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz",
+ "integrity": "sha1-1+sjt5oxf4VDlixQW4J8fWysJ94=",
+ "dev": true
+ },
+ "babel-plugin-syntax-decorators": {
+ "version": "6.13.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz",
+ "integrity": "sha1-MSVjtNvePMgGzuPkFszurd0RrAs=",
+ "dev": true
+ },
+ "babel-plugin-transform-class-properties": {
+ "version": "6.24.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz",
+ "integrity": "sha1-anl2PqYdM9NvN7YRqp3vgagbRqw=",
+ "dev": true,
+ "requires": {
+ "babel-helper-function-name": "^6.24.1",
+ "babel-plugin-syntax-class-properties": "^6.8.0",
+ "babel-runtime": "^6.22.0",
+ "babel-template": "^6.24.1"
+ }
+ },
+ "babel-plugin-transform-decorators-legacy": {
+ "version": "1.3.5",
+ "resolved": "https://registry.npmjs.org/babel-plugin-transform-decorators-legacy/-/babel-plugin-transform-decorators-legacy-1.3.5.tgz",
+ "integrity": "sha512-jYHwjzRXRelYQ1uGm353zNzf3QmtdCfvJbuYTZ4gKveK7M9H1fs3a5AKdY1JUDl0z97E30ukORW1dzhWvsabtA==",
+ "dev": true,
+ "requires": {
+ "babel-plugin-syntax-decorators": "^6.1.18",
+ "babel-runtime": "^6.2.0",
+ "babel-template": "^6.3.0"
+ }
+ },
+ "babel-runtime": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+ "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+ "dev": true,
+ "requires": {
+ "core-js": "^2.4.0",
+ "regenerator-runtime": "^0.11.0"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
+ "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+ "dev": true
+ }
+ }
+ },
+ "babel-template": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
+ "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "babel-traverse": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "lodash": "^4.17.4"
+ }
+ },
+ "babel-traverse": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
+ "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
+ "dev": true,
+ "requires": {
+ "babel-code-frame": "^6.26.0",
+ "babel-messages": "^6.23.0",
+ "babel-runtime": "^6.26.0",
+ "babel-types": "^6.26.0",
+ "babylon": "^6.18.0",
+ "debug": "^2.6.8",
+ "globals": "^9.18.0",
+ "invariant": "^2.2.2",
+ "lodash": "^4.17.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ }
+ }
+ },
+ "babel-types": {
+ "version": "6.26.0",
+ "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
+ "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "^6.26.0",
+ "esutils": "^2.0.2",
+ "lodash": "^4.17.4",
+ "to-fast-properties": "^1.0.3"
+ }
+ },
+ "babylon": {
+ "version": "6.18.0",
+ "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
+ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
+ "dev": true
+ },
"balanced-match": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/balanced-match/-/balanced-match-1.0.0.tgz",
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"base": {
"version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+ "resolved": "https://npm.kari.com/base/-/base-0.11.2.tgz",
"integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
"dev": true,
"requires": {
@@ -3021,7 +3313,7 @@
"dependencies": {
"define-property": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
@@ -3030,7 +3322,7 @@
},
"is-accessor-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
@@ -3039,7 +3331,7 @@
},
"is-data-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
@@ -3048,7 +3340,7 @@
},
"is-descriptor": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
@@ -3067,13 +3359,13 @@
},
"batch": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
+ "resolved": "https://npm.kari.com/batch/-/batch-0.6.1.tgz",
"integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
"dev": true
},
"bcrypt-pbkdf": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
"dev": true,
"requires": {
@@ -3092,15 +3384,66 @@
"integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
"dev": true
},
+ "bl": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz",
+ "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==",
+ "dev": true,
+ "requires": {
+ "buffer": "^5.5.0",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
+ },
+ "dependencies": {
+ "inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true
+ },
+ "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"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "dev": true
+ },
+ "string_decoder": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+ "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.2.0"
+ }
+ }
+ }
+ },
"block-stream": {
"version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
+ "resolved": "https://npm.kari.com/block-stream/-/block-stream-0.0.9.tgz",
"integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
"dev": true,
"requires": {
"inherits": "~2.0.0"
}
},
+ "bluebird": {
+ "version": "3.7.2",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
+ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
+ "dev": true
+ },
"bluebird-lst": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.9.tgz",
@@ -3108,14 +3451,6 @@
"dev": true,
"requires": {
"bluebird": "^3.5.5"
- },
- "dependencies": {
- "bluebird": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz",
- "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==",
- "dev": true
- }
}
},
"bn.js": {
@@ -3126,7 +3461,7 @@
},
"body-parser": {
"version": "1.19.0",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+ "resolved": "https://npm.kari.com/body-parser/-/body-parser-1.19.0.tgz",
"integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
"dev": true,
"requires": {
@@ -3144,13 +3479,13 @@
"dependencies": {
"bytes": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
"dev": true
},
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -3170,7 +3505,7 @@
},
"bonjour": {
"version": "3.5.0",
- "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz",
+ "resolved": "https://npm.kari.com/bonjour/-/bonjour-3.5.0.tgz",
"integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
"dev": true,
"requires": {
@@ -3184,102 +3519,119 @@
},
"boolbase": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
"dev": true
},
"boolean": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.1.tgz",
- "integrity": "sha512-HRZPIjPcbwAVQvOTxR4YE3o8Xs98NqbbL1iEZDCz7CL8ql0Lt5iOyJFxfnAB0oFs8Oh02F/lLlg30Mexv46LjA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.0.2.tgz",
+ "integrity": "sha512-RwywHlpCRc3/Wh81MiCKun4ydaIFyW5Ea6JbL6sRCVx5q5irDw7pMXBUFYF/jArQ6YrG36q0kpovc9P/Kd3I4g==",
"dev": true,
"optional": true
},
"boxen": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz",
- "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz",
+ "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==",
"dev": true,
"requires": {
"ansi-align": "^3.0.0",
"camelcase": "^5.3.1",
- "chalk": "^2.4.2",
+ "chalk": "^3.0.0",
"cli-boxes": "^2.2.0",
- "string-width": "^3.0.0",
- "term-size": "^1.2.0",
- "type-fest": "^0.3.0",
- "widest-line": "^2.0.0"
+ "string-width": "^4.1.0",
+ "term-size": "^2.1.0",
+ "type-fest": "^0.8.1",
+ "widest-line": "^3.1.0"
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "color-convert": "^2.0.1"
}
},
- "has-flag": {
+ "chalk": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz",
+ "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
"dev": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
}
},
"strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "ansi-regex": "^5.0.0"
}
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
}
}
},
"brace-expansion": {
"version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+ "resolved": "https://npm.kari.com/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"requires": {
"balanced-match": "^1.0.0",
@@ -3436,20 +3788,50 @@
"pako": "~1.0.5"
}
},
+ "buffer": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+ "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "dev": true,
+ "requires": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.1.13"
+ },
+ "dependencies": {
+ "base64-js": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "dev": true
+ },
+ "ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "dev": true
+ }
+ }
+ },
"buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=",
"dev": true
},
+ "buffer-equal": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz",
+ "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=",
+ "dev": true
+ },
"buffer-from": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/buffer-from/-/buffer-from-1.1.1.tgz",
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
},
"buffer-indexof": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
"integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
"dev": true
},
@@ -3460,66 +3842,104 @@
"dev": true
},
"builder-util": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.1.0.tgz",
- "integrity": "sha512-BPvpWvxQ5XOzm2WepIgmOAyo2IyaM/Bd1LJmeTYy5CtknNAtxgmAPQJfCHCikMKKQA4Obz/KYecXQiGpGJ2ThA==",
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-22.10.4.tgz",
+ "integrity": "sha512-XdcbFG3otEkNRKxW2wS1npNviCb/IrzusEQ55lMB+6YEHxBOfTbf8vnPt0pDumfwmxls9xczABU+mfqN/W4uDw==",
"dev": true,
"requires": {
"7zip-bin": "~5.0.3",
"@types/debug": "^4.1.5",
- "app-builder-bin": "3.4.4",
+ "@types/fs-extra": "^9.0.5",
+ "app-builder-bin": "3.5.12",
"bluebird-lst": "^1.0.9",
- "builder-util-runtime": "8.4.0",
- "chalk": "^2.4.2",
- "debug": "^4.1.1",
- "fs-extra": "^8.1.0",
+ "builder-util-runtime": "8.7.3",
+ "chalk": "^4.1.0",
+ "debug": "^4.3.1",
+ "fs-extra": "^9.0.1",
"is-ci": "^2.0.0",
- "js-yaml": "^3.13.1",
- "source-map-support": "^0.5.13",
- "stat-mode": "^0.3.0",
- "temp-file": "^3.3.4"
+ "js-yaml": "^3.14.1",
+ "source-map-support": "^0.5.19",
+ "stat-mode": "^1.0.0",
+ "temp-file": "^3.3.7"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "color-name": "~1.1.4"
}
},
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "debug": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
}
},
"ms": {
@@ -3529,9 +3949,9 @@
"dev": true
},
"source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
"dev": true,
"requires": {
"buffer-from": "^1.0.0",
@@ -3539,33 +3959,39 @@
}
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
+ },
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "dev": true
}
}
},
"builder-util-runtime": {
- "version": "8.4.0",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.4.0.tgz",
- "integrity": "sha512-CJB/eKfPf2vHrkmirF5eicVnbDCkMBbwd5tRYlTlgud16zFeqD7QmrVUAOEXdnsrcNkiLg9dbuUsQKtl/AwsYQ==",
+ "version": "8.7.3",
+ "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.7.3.tgz",
+ "integrity": "sha512-1Q2ReBqFblimF5g/TLg2+0M5Xzv0Ih5LxJ/BMWXvEy/e6pQKeeEpbkPMGsN6OiQgkygaZo5VXCXIjOkOQG5EoQ==",
"dev": true,
"requires": {
- "debug": "^4.1.1",
+ "debug": "^4.3.2",
"sax": "^1.2.4"
},
"dependencies": {
"debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz",
+ "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
+ "ms": "2.1.2"
}
},
"ms": {
@@ -3595,7 +4021,7 @@
},
"bytes": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"dev": true
},
@@ -3686,7 +4112,7 @@
},
"cache-base": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/cache-base/-/cache-base-1.0.1.tgz",
"integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
"dev": true,
"requires": {
@@ -3701,6 +4127,60 @@
"unset-value": "^1.0.0"
}
},
+ "cacheable-lookup": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz",
+ "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==",
+ "dev": true
+ },
+ "cacheable-request": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+ "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^3.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^1.0.2"
+ },
+ "dependencies": {
+ "get-stream": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ },
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
+ "dev": true
+ },
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
+ },
"caller-callsite": {
"version": "2.0.0",
"resolved": "https://npm.kari.com/caller-callsite/-/caller-callsite-2.0.0.tgz",
@@ -3735,7 +4215,7 @@
},
"camel-case": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/camel-case/-/camel-case-4.1.1.tgz",
"integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==",
"dev": true,
"requires": {
@@ -3751,9 +4231,15 @@
}
}
},
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
"camelcase-keys": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
"integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
"dev": true,
"requires": {
@@ -3763,7 +4249,7 @@
"dependencies": {
"camelcase": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/camelcase/-/camelcase-2.1.1.tgz",
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
"dev": true
}
@@ -3777,7 +4263,7 @@
},
"caseless": {
"version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+ "resolved": "https://npm.kari.com/caseless/-/caseless-0.12.0.tgz",
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
"dev": true
},
@@ -3785,7 +4271,6 @@
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
- "dev": true,
"requires": {
"ansi-styles": "^3.2.1",
"escape-string-regexp": "^1.0.5",
@@ -3795,14 +4280,12 @@
"has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
"supports-color": {
"version": "5.4.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
- "dev": true,
"requires": {
"has-flag": "^3.0.0"
}
@@ -3931,7 +4414,7 @@
},
"ci-info": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/ci-info/-/ci-info-2.0.0.tgz",
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
@@ -3947,7 +4430,7 @@
},
"class-utils": {
"version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+ "resolved": "https://npm.kari.com/class-utils/-/class-utils-0.3.6.tgz",
"integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
"dev": true,
"requires": {
@@ -3959,7 +4442,7 @@
"dependencies": {
"define-property": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
@@ -3970,7 +4453,7 @@
},
"clean-css": {
"version": "4.2.3",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz",
+ "resolved": "https://npm.kari.com/clean-css/-/clean-css-4.2.3.tgz",
"integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==",
"dev": true,
"requires": {
@@ -3979,14 +4462,24 @@
},
"clean-stack": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/clean-stack/-/clean-stack-2.2.0.tgz",
"integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
"dev": true
},
+ "clean-webpack-plugin": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-3.0.0.tgz",
+ "integrity": "sha512-MciirUH5r+cYLGCOL5JX/ZLzOZbVr1ot3Fw+KcvbhUb6PM+yycqd9ZhIlcigQ5gl+XhppNmw3bEFuaaMNyLj3A==",
+ "dev": true,
+ "requires": {
+ "@types/webpack": "^4.4.31",
+ "del": "^4.1.1"
+ }
+ },
"cli-boxes": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz",
- "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==",
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz",
+ "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==",
"dev": true
},
"cli-cursor": {
@@ -3998,47 +4491,87 @@
}
},
"cli-spinners": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.4.0.tgz",
- "integrity": "sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA==",
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz",
+ "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==",
"dev": true
},
"cli-truncate": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz",
- "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
- "dev": true,
- "requires": {
- "slice-ansi": "0.0.4",
- "string-width": "^1.0.1"
- }
- },
- "cli-width": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
- "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz",
+ "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "slice-ansi": "^3.0.0",
+ "string-width": "^4.2.0"
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ }
+ }
+ },
+ "cli-width": {
+ "version": "2.2.0",
+ "resolved": "https://npm.kari.com/cli-width/-/cli-width-2.2.0.tgz",
+ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk="
+ },
+ "cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "requires": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"dev": true
},
"string-width": {
@@ -4091,13 +4624,13 @@
},
"code-point-at": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true
},
"collection-visit": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/collection-visit/-/collection-visit-1.0.0.tgz",
"integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
"dev": true,
"requires": {
@@ -4119,14 +4652,14 @@
"integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok="
},
"colors": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
- "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
+ "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
"dev": true
},
"combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "resolved": "https://npm.kari.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"requires": {
@@ -4169,7 +4702,7 @@
},
"commondir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
"dev": true
},
@@ -4181,7 +4714,7 @@
},
"compressible": {
"version": "2.0.18",
- "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+ "resolved": "https://npm.kari.com/compressible/-/compressible-2.0.18.tgz",
"integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
"dev": true,
"requires": {
@@ -4198,7 +4731,7 @@
},
"compression": {
"version": "1.7.4",
- "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+ "resolved": "https://npm.kari.com/compression/-/compression-1.7.4.tgz",
"integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
"dev": true,
"requires": {
@@ -4213,7 +4746,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -4224,12 +4757,12 @@
},
"concat-map": {
"version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "resolved": "https://npm.kari.com/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "resolved": "https://npm.kari.com/concat-stream/-/concat-stream-1.6.2.tgz",
"integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
"dev": true,
"requires": {
@@ -4283,22 +4816,22 @@
}
},
"configstore": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz",
- "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz",
+ "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==",
"dev": true,
"requires": {
- "dot-prop": "^4.1.0",
+ "dot-prop": "^5.2.0",
"graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "unique-string": "^1.0.0",
- "write-file-atomic": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "make-dir": "^3.0.0",
+ "unique-string": "^2.0.0",
+ "write-file-atomic": "^3.0.0",
+ "xdg-basedir": "^4.0.0"
}
},
"connect-history-api-fallback": {
"version": "1.6.0",
- "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+ "resolved": "https://npm.kari.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
"integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
"dev": true
},
@@ -4310,7 +4843,7 @@
},
"console-control-strings": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=",
"dev": true
},
@@ -4322,7 +4855,7 @@
},
"content-disposition": {
"version": "0.5.3",
- "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+ "resolved": "https://npm.kari.com/content-disposition/-/content-disposition-0.5.3.tgz",
"integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
"dev": true,
"requires": {
@@ -4331,19 +4864,19 @@
},
"content-type": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"dev": true
},
"cookie-signature": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
+ "resolved": "https://npm.kari.com/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
"dev": true
},
"copy-concurrently": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+ "resolved": "https://npm.kari.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
"integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
"dev": true,
"requires": {
@@ -4357,7 +4890,7 @@
},
"copy-descriptor": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+ "resolved": "https://npm.kari.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
"dev": true
},
@@ -4424,9 +4957,16 @@
}
}
},
+ "core-js": {
+ "version": "3.8.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.8.1.tgz",
+ "integrity": "sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==",
+ "dev": true,
+ "optional": true
+ },
"core-js-compat": {
"version": "3.6.5",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz",
+ "resolved": "https://npm.kari.com/core-js-compat/-/core-js-compat-3.6.5.tgz",
"integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==",
"dev": true,
"requires": {
@@ -4454,7 +4994,7 @@
},
"semver": {
"version": "7.0.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
+ "resolved": "https://npm.kari.com/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"dev": true
}
@@ -4462,43 +5002,53 @@
},
"core-util-is": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/core-util-is/-/core-util-is-1.0.2.tgz",
"integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
"dev": true
},
"cosmiconfig": {
- "version": "6.0.0",
- "resolved": "https://npm.kari.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz",
- "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
+ "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
"dev": true,
"requires": {
"@types/parse-json": "^4.0.0",
- "import-fresh": "^3.1.0",
+ "import-fresh": "^3.2.1",
"parse-json": "^5.0.0",
"path-type": "^4.0.0",
- "yaml": "^1.7.2"
+ "yaml": "^1.10.0"
},
"dependencies": {
"parse-json": {
- "version": "5.0.0",
- "resolved": "https://npm.kari.com/parse-json/-/parse-json-5.0.0.tgz",
- "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
+ "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1",
+ "json-parse-even-better-errors": "^2.3.0",
"lines-and-columns": "^1.1.6"
}
},
"path-type": {
"version": "4.0.0",
- "resolved": "https://npm.kari.com/path-type/-/path-type-4.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
}
}
},
+ "crc": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
+ "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "buffer": "^5.1.0"
+ }
+ },
"create-ecdh": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
@@ -4546,7 +5096,7 @@
},
"crocket": {
"version": "0.9.11",
- "resolved": "https://registry.npmjs.org/crocket/-/crocket-0.9.11.tgz",
+ "resolved": "https://npm.kari.com/crocket/-/crocket-0.9.11.tgz",
"integrity": "sha1-KI/KEe8NPdI5tixIgmXzDI7fsMU=",
"dev": true,
"requires": {
@@ -4554,19 +5104,51 @@
}
},
"cross-spawn": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
- "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
"dev": true,
"requires": {
- "lru-cache": "^4.0.1",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "dependencies": {
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ },
+ "shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "requires": {
+ "shebang-regex": "^3.0.0"
+ }
+ },
+ "shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true
+ },
+ "which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "requires": {
+ "isexe": "^2.0.0"
+ }
+ }
}
},
"cross-unzip": {
"version": "0.0.2",
- "resolved": "https://registry.npmjs.org/cross-unzip/-/cross-unzip-0.0.2.tgz",
+ "resolved": "https://npm.kari.com/cross-unzip/-/cross-unzip-0.0.2.tgz",
"integrity": "sha1-UYO8R6CVWb78+YzEZXlkmZNZNy8="
},
"crypto-browserify": {
@@ -4589,14 +5171,14 @@
}
},
"crypto-random-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz",
- "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz",
+ "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==",
"dev": true
},
"css-hot-loader": {
"version": "1.4.4",
- "resolved": "https://registry.npmjs.org/css-hot-loader/-/css-hot-loader-1.4.4.tgz",
+ "resolved": "https://npm.kari.com/css-hot-loader/-/css-hot-loader-1.4.4.tgz",
"integrity": "sha512-J/qXHz+r7FOT92qMIJfxUk0LC9fecQNZVr0MswQ4FOpKLyOCBjofVMfc6R268bh/5ktkTShrweMr0wWqerC92g==",
"dev": true,
"requires": {
@@ -4702,7 +5284,7 @@
},
"css-select": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/css-select/-/css-select-1.2.0.tgz",
"integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
"dev": true,
"requires": {
@@ -4732,13 +5314,13 @@
},
"domelementtype": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/domelementtype/-/domelementtype-1.3.1.tgz",
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
"dev": true
},
"domutils": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+ "resolved": "https://npm.kari.com/domutils/-/domutils-1.5.1.tgz",
"integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
"dev": true,
"requires": {
@@ -4748,27 +5330,32 @@
}
}
},
+ "css-vars": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/css-vars/-/css-vars-2.3.0.tgz",
+ "integrity": "sha512-AGvTsGrZJqyxQ15YuifOb1Bp3pjjYeawdljPxfqQpoUful+xJ4RYDlbuaAnTVoB98DLLWJ65/hIf84Ys7NbxQw=="
+ },
"css-what": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+ "resolved": "https://npm.kari.com/css-what/-/css-what-2.1.3.tgz",
"integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
"dev": true
},
"cssesc": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/cssesc/-/cssesc-3.0.0.tgz",
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
"dev": true
},
"csstype": {
- "version": "2.5.7",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.5.7.tgz",
- "integrity": "sha512-Nt5VDyOTIIV4/nRFswoCKps1R5CD1hkiyjBE9/thNaNZILLEviVw9yWQw15+O+CpNjQKB/uvdcxFFOrSflY3Yw==",
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
+ "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ==",
"dev": true
},
"currently-unhandled": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
+ "resolved": "https://npm.kari.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
"integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
"dev": true,
"requires": {
@@ -4783,19 +5370,13 @@
},
"dashdash": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+ "resolved": "https://npm.kari.com/dashdash/-/dashdash-1.14.1.tgz",
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
- "date-fns": {
- "version": "1.29.0",
- "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz",
- "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==",
- "dev": true
- },
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -4815,14 +5396,15 @@
},
"decamelize": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
},
"decode-uri-component": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
- "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU="
+ "resolved": "https://npm.kari.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+ "dev": true
},
"decompress-response": {
"version": "3.3.0",
@@ -4835,13 +5417,13 @@
},
"dedent": {
"version": "0.7.0",
- "resolved": "https://npm.kari.com/dedent/-/dedent-0.7.0.tgz",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
"integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=",
"dev": true
},
"deep-equal": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/deep-equal/-/deep-equal-1.1.1.tgz",
"integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
"dev": true,
"requires": {
@@ -4866,7 +5448,7 @@
},
"default-gateway": {
"version": "4.2.0",
- "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+ "resolved": "https://npm.kari.com/default-gateway/-/default-gateway-4.2.0.tgz",
"integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
"dev": true,
"requires": {
@@ -4933,14 +5515,14 @@
}
},
"defer-to-connect": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz",
- "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==",
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+ "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
"dev": true
},
"define-properties": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
@@ -4957,7 +5539,7 @@
},
"define-property": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-2.0.2.tgz",
"integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
"dev": true,
"requires": {
@@ -4967,7 +5549,7 @@
"dependencies": {
"is-accessor-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
@@ -4976,7 +5558,7 @@
},
"is-data-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
@@ -4985,7 +5567,7 @@
},
"is-descriptor": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
@@ -4998,7 +5580,7 @@
},
"del": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/del/-/del-4.1.1.tgz",
"integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
"dev": true,
"requires": {
@@ -5013,7 +5595,7 @@
"dependencies": {
"globby": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz",
+ "resolved": "https://npm.kari.com/globby/-/globby-6.1.0.tgz",
"integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
"dev": true,
"requires": {
@@ -5026,7 +5608,7 @@
"dependencies": {
"pify": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/pify/-/pify-2.3.0.tgz",
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
}
@@ -5040,7 +5622,7 @@
},
"pify": {
"version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+ "resolved": "https://npm.kari.com/pify/-/pify-4.0.1.tgz",
"integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
"dev": true
},
@@ -5073,19 +5655,19 @@
},
"delayed-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true
},
"delegates": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/delegates/-/delegates-1.0.0.tgz",
"integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=",
"dev": true
},
"depd": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
"dev": true
},
@@ -5101,13 +5683,13 @@
},
"destroy": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
"dev": true
},
"detect-file": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/detect-file/-/detect-file-1.0.0.tgz",
"integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
"dev": true
},
@@ -5119,7 +5701,7 @@
},
"detect-node": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz",
+ "resolved": "https://npm.kari.com/detect-node/-/detect-node-2.0.4.tgz",
"integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==",
"dev": true
},
@@ -5142,6 +5724,29 @@
}
}
},
+ "dir-compare": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/dir-compare/-/dir-compare-2.4.0.tgz",
+ "integrity": "sha512-l9hmu8x/rjVC9Z2zmGzkhOEowZvW7pmYws5CWHutg8u1JgvsKWMx7Q/UODeu4djLZ4FgW5besw5yvMQnBHzuCA==",
+ "dev": true,
+ "requires": {
+ "buffer-equal": "1.0.0",
+ "colors": "1.0.3",
+ "commander": "2.9.0",
+ "minimatch": "3.0.4"
+ },
+ "dependencies": {
+ "commander": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
+ "integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
+ "dev": true,
+ "requires": {
+ "graceful-readlink": ">= 1.0.0"
+ }
+ }
+ }
+ },
"dir-glob": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -5160,283 +5765,109 @@
}
},
"dmg-builder": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-21.2.0.tgz",
- "integrity": "sha512-9cJEclnGy7EyKFCoHDYDf54pub/t92CQapyiUxU0w9Bj2vUvfoDagP1PMiX4XD5rPp96141h9A+QN0OB4VgvQg==",
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-22.10.4.tgz",
+ "integrity": "sha512-+28HZgKAuyCQnQwLSAwkHUqtMB/egHF5ACUABCB4Nev02/ZfjFPUTF/WloTaEbue34zLLUGxPXh+BJF8Xw26ow==",
"dev": true,
"requires": {
- "app-builder-lib": "~21.2.0",
- "bluebird-lst": "^1.0.9",
- "builder-util": "~21.2.0",
- "fs-extra": "^8.1.0",
- "iconv-lite": "^0.5.0",
- "js-yaml": "^3.13.1",
- "sanitize-filename": "^1.6.2"
+ "app-builder-lib": "22.10.4",
+ "builder-util": "22.10.4",
+ "dmg-license": "^1.0.8",
+ "fs-extra": "^9.0.1",
+ "iconv-lite": "^0.6.2",
+ "js-yaml": "^3.14.1",
+ "sanitize-filename": "^1.6.3"
},
"dependencies": {
- "app-builder-bin": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-3.4.3.tgz",
- "integrity": "sha512-qMhayIwi3juerQEVJMQ76trObEbfQT0nhUdxZz9a26/3NLT3pE6awmQ8S1cEnrGugaaM5gYqR8OElcDezfmEsg==",
- "dev": true
- },
- "app-builder-lib": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-21.2.0.tgz",
- "integrity": "sha512-aOX/nv77/Bti6NymJDg7p9T067xD8m1ipIEJR7B4Mm1GsJWpMm9PZdXtCRiMNRjHtQS5KIljT0g17781y6qn5A==",
- "dev": true,
- "requires": {
- "7zip-bin": "~5.0.3",
- "@develar/schema-utils": "~2.1.0",
- "async-exit-hook": "^2.0.1",
- "bluebird-lst": "^1.0.9",
- "builder-util": "21.2.0",
- "builder-util-runtime": "8.3.0",
- "chromium-pickle-js": "^0.2.0",
- "debug": "^4.1.1",
- "ejs": "^2.6.2",
- "electron-publish": "21.2.0",
- "fs-extra": "^8.1.0",
- "hosted-git-info": "^2.7.1",
- "is-ci": "^2.0.0",
- "isbinaryfile": "^4.0.2",
- "js-yaml": "^3.13.1",
- "lazy-val": "^1.0.4",
- "minimatch": "^3.0.4",
- "normalize-package-data": "^2.5.0",
- "read-config-file": "5.0.0",
- "sanitize-filename": "^1.6.2",
- "semver": "^6.3.0",
- "temp-file": "^3.3.4"
- }
- },
- "builder-util": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-21.2.0.tgz",
- "integrity": "sha512-Nd6CUb6YgDY8EXAXEIegx+1kzKqyFQ5ZM5BoYkeunAlwz/zDJoH1UCyULjoS5wQe5czNClFQy07zz2bzYD0Z4A==",
- "dev": true,
- "requires": {
- "7zip-bin": "~5.0.3",
- "@types/debug": "^4.1.4",
- "app-builder-bin": "3.4.3",
- "bluebird-lst": "^1.0.9",
- "builder-util-runtime": "8.3.0",
- "chalk": "^2.4.2",
- "debug": "^4.1.1",
- "fs-extra": "^8.1.0",
- "is-ci": "^2.0.0",
- "js-yaml": "^3.13.1",
- "source-map-support": "^0.5.13",
- "stat-mode": "^0.3.0",
- "temp-file": "^3.3.4"
- }
- },
- "builder-util-runtime": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-8.3.0.tgz",
- "integrity": "sha512-CSOdsYqf4RXIHh1HANPbrZHlZ9JQJXSuDDloblZPcWQVN62inyYoTQuSmY3KrgefME2Sv3Kn2MxHvbGQHRf8Iw==",
- "dev": true,
- "requires": {
- "debug": "^4.1.1",
- "sax": "^1.2.4"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "dotenv-expand": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
- "dev": true
- },
- "ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true
- },
- "electron-publish": {
- "version": "21.2.0",
- "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-21.2.0.tgz",
- "integrity": "sha512-mWavuoWJe87iaeKd0I24dNWIaR+0yRzshjNVqGyK019H766fsPWl3caQJnVKFaEyrZRP397v4JZVG0e7s16AxA==",
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
"dev": true,
"requires": {
- "bluebird-lst": "^1.0.9",
- "builder-util": "~21.2.0",
- "builder-util-runtime": "8.3.0",
- "chalk": "^2.4.2",
- "fs-extra": "^8.1.0",
- "lazy-val": "^1.0.4",
- "mime": "^2.4.4"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
}
},
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
"iconv-lite": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.5.0.tgz",
- "integrity": "sha512-NnEhI9hIEKHOzJ4f697DMz9IQEXr/MMJ5w64vN2/4Ai+wRnvV7SBrL0KLoRlwaKVghOc7LQ5YkPLuX146b6Ydw==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "isbinaryfile": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.2.tgz",
- "integrity": "sha512-C3FSxJdNrEr2F4z6uFtNzECDM5hXk+46fxaa+cwBe5/XrWSmzdG8DDgyjfX6/NRdBB21q2JXuRAzPCUs+fclnQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+ "version": "0.6.2",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz",
+ "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==",
"dev": true,
"requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "json5": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
- "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.0"
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
}
},
- "lazy-val": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
- "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
- "dev": true
- },
- "mime": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
- "dev": true
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
},
"dependencies": {
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
"dev": true
}
}
},
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
"dev": true
- },
- "read-config-file": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz",
- "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==",
- "dev": true,
- "requires": {
- "dotenv": "^8.0.0",
- "dotenv-expand": "^5.1.0",
- "fs-extra": "^8.1.0",
- "js-yaml": "^3.13.1",
- "json5": "^2.1.0",
- "lazy-val": "^1.0.4"
- }
- },
- "resolve": {
- "version": "1.12.2",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.2.tgz",
- "integrity": "sha512-cAVTI2VLHWYsGOirfeYVVQ7ZDejtQ9fp4YhYckWDEkFfqbVjaT11iM8k6xSAfGFMM+gDpZjMnFssPu8we+mqFw==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
- "dev": true
- },
- "source-map-support": {
- "version": "0.5.16",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
- "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ }
+ }
+ },
+ "dmg-license": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/dmg-license/-/dmg-license-1.0.8.tgz",
+ "integrity": "sha512-47GOb6b4yVzpovXC34heXElpH++ICg9GuWBeOTaokUNLAoAdWpE4VehudYEEtu96j2jXsgQWYf78nW7r+0Y3eg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "@types/plist": "^3.0.1",
+ "@types/verror": "^1.10.3",
+ "ajv": "^6.10.0",
+ "cli-truncate": "^1.1.0",
+ "crc": "^3.8.0",
+ "iconv-corefoundation": "^1.1.5",
+ "plist": "^3.0.1",
+ "smart-buffer": "^4.0.2",
+ "verror": "^1.10.0"
+ },
+ "dependencies": {
+ "cli-truncate": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-1.1.0.tgz",
+ "integrity": "sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA==",
"dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
+ "optional": true
}
}
},
"dns-equal": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/dns-equal/-/dns-equal-1.0.0.tgz",
"integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
"dev": true
},
"dns-packet": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/dns-packet/-/dns-packet-1.3.1.tgz",
"integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
"dev": true,
"requires": {
@@ -5446,7 +5877,7 @@
},
"dns-txt": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz",
+ "resolved": "https://npm.kari.com/dns-txt/-/dns-txt-2.0.2.tgz",
"integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
"dev": true,
"requires": {
@@ -5464,7 +5895,7 @@
},
"dom-converter": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+ "resolved": "https://npm.kari.com/dom-converter/-/dom-converter-0.2.0.tgz",
"integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
"dev": true,
"requires": {
@@ -5516,7 +5947,7 @@
},
"dot-case": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz",
+ "resolved": "https://npm.kari.com/dot-case/-/dot-case-3.0.3.tgz",
"integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==",
"dev": true,
"requires": {
@@ -5533,23 +5964,23 @@
}
},
"dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
+ "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
"dev": true,
"requires": {
- "is-obj": "^1.0.0"
+ "is-obj": "^2.0.0"
}
},
"dotenv": {
"version": "8.2.0",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz",
+ "resolved": "https://npm.kari.com/dotenv/-/dotenv-8.2.0.tgz",
"integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==",
"dev": true
},
"dotenv-expand": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
+ "resolved": "https://npm.kari.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
"integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
"dev": true
},
@@ -5605,7 +6036,7 @@
},
"ecc-jsbn": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
"dev": true,
"requires": {
@@ -5615,14 +6046,23 @@
},
"ee-first": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
"dev": true
},
+ "ejs": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz",
+ "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==",
+ "dev": true,
+ "requires": {
+ "jake": "^10.6.1"
+ }
+ },
"electron": {
- "version": "7.3.3",
- "resolved": "https://registry.npmjs.org/electron/-/electron-7.3.3.tgz",
- "integrity": "sha512-PrJEsuRiaAhTDHtbH3EM+RIne+nZ6ifGChUadmtmPqHUQ+rIhf4jSi2ZN768IgBDw4SidMJiCrvQRiuDha9+Ew==",
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/electron/-/electron-11.1.1.tgz",
+ "integrity": "sha512-tlbex3xosJgfileN6BAQRotevPRXB/wQIq48QeQ08tUJJrXwE72c8smsM/hbHx5eDgnbfJ2G3a60PmRjHU2NhA==",
"dev": true,
"requires": {
"@electron/get": "^1.0.1",
@@ -5630,17 +6070,32 @@
"extract-zip": "^1.0.3"
},
"dependencies": {
- "@types/node": {
- "version": "12.12.58",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.58.tgz",
- "integrity": "sha512-Be46CNIHWAagEfINOjmriSxuv7IVcqbGe+sDSg2SYCEz/0CRBy7LRASGfRbD8KZkqoePU73Wsx3UvOSFcq/9hA==",
- "dev": true
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dev": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "extract-zip": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
+ "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
+ "dev": true,
+ "requires": {
+ "concat-stream": "^1.6.2",
+ "debug": "^2.6.9",
+ "mkdirp": "^0.5.4",
+ "yauzl": "^2.10.0"
+ }
}
}
},
"electron-build-env": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/electron-build-env/-/electron-build-env-0.2.0.tgz",
+ "resolved": "https://npm.kari.com/electron-build-env/-/electron-build-env-0.2.0.tgz",
"integrity": "sha1-VknuPl/QBuJnCGyqlFt3ofoiC5I=",
"requires": {
"commander": "^2.9.0",
@@ -5648,258 +6103,215 @@
}
},
"electron-builder": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.1.0.tgz",
- "integrity": "sha512-uu2W9BLG38D0i2PG6dHupmOYc+q/TRL+Ztf8xitqK+2Quq33PFbeN0ipfySuVEDg4I6whDRBOgxBEWwnUYqZZQ==",
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-22.10.4.tgz",
+ "integrity": "sha512-V+JtiizJd3kt24TT+0OHG7+oPAzjhhjmQVn9G6OC2WE7VBJxrDuD6lMVRgo6WlU8uvDCh7fTRUsdh0Tnu0GeQA==",
"dev": true,
"requires": {
- "app-builder-lib": "22.1.0",
+ "@types/yargs": "^15.0.12",
+ "app-builder-lib": "22.10.4",
"bluebird-lst": "^1.0.9",
- "builder-util": "22.1.0",
- "builder-util-runtime": "8.4.0",
- "chalk": "^2.4.2",
- "dmg-builder": "21.2.0",
- "fs-extra": "^8.1.0",
+ "builder-util": "22.10.4",
+ "builder-util-runtime": "8.7.3",
+ "chalk": "^4.1.0",
+ "dmg-builder": "22.10.4",
+ "fs-extra": "^9.0.1",
"is-ci": "^2.0.0",
"lazy-val": "^1.0.4",
- "read-config-file": "5.0.0",
+ "read-config-file": "6.0.0",
"sanitize-filename": "^1.6.3",
- "update-notifier": "^3.0.1",
- "yargs": "^14.0.0"
+ "update-notifier": "^5.0.1",
+ "yargs": "^16.2.0"
},
"dependencies": {
"ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
},
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
"cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
}
},
- "dotenv-expand": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
- "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==",
- "dev": true
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "color-name": "~1.1.4"
}
},
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
"dev": true
},
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "json5": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.1.tgz",
- "integrity": "sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ==",
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
"dev": true,
"requires": {
- "minimist": "^1.2.0"
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
}
},
- "lazy-val": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
- "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
- "locate-path": {
+ "is-fullwidth-code-point": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
},
- "p-limit": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
- "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
+ "json5": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"dev": true,
"requires": {
- "p-try": "^2.0.0"
+ "minimist": "^1.2.5"
}
},
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
- },
"read-config-file": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-5.0.0.tgz",
- "integrity": "sha512-jIKUu+C84bfnKxyJ5j30CxCqgXWYjZLXuVE/NYlMEpeni+dhESgAeZOZd0JZbg1xTkMmnCdxksDoarkOyfEsOg==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.0.0.tgz",
+ "integrity": "sha512-PHjROSdpceKUmqS06wqwP92VrM46PZSTubmNIMJ5DrMwg1OgenSTSEHIkCa6TiOJ+y/J0xnG1fFwG3M+Oi1aNA==",
"dev": true,
"requires": {
- "dotenv": "^8.0.0",
+ "dotenv": "^8.2.0",
"dotenv-expand": "^5.1.0",
- "fs-extra": "^8.1.0",
"js-yaml": "^3.13.1",
- "json5": "^2.1.0",
+ "json5": "^2.1.2",
"lazy-val": "^1.0.4"
}
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
"string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
}
},
"strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "ansi-regex": "^5.0.0"
}
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
},
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "dev": true
+ },
+ "y18n": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
+ "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
+ "dev": true
},
"yargs": {
- "version": "14.2.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.2.tgz",
- "integrity": "sha512-/4ld+4VV5RnrynMhPZJ/ZpOCGSCeghMykZ3BhdFBDa9Wy/RH6uEGNWDJog+aUlq+9OM1CFTgtYRW5Is1Po9NOA==",
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "cliui": "^5.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^15.0.0"
- }
- },
- "yargs-parser": {
- "version": "15.0.1",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz",
- "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
}
}
},
"electron-devtools-installer": {
"version": "2.2.4",
- "resolved": "https://registry.npmjs.org/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz",
+ "resolved": "https://npm.kari.com/electron-devtools-installer/-/electron-devtools-installer-2.2.4.tgz",
"integrity": "sha512-b5kcM3hmUqn64+RUcHjjr8ZMpHS2WJ5YO0pnG9+P/RTdx46of/JrEjuciHWux6pE+On6ynWhHJF53j/EDJN0PA==",
"requires": {
"7zip": "0.0.6",
@@ -5909,64 +6321,118 @@
}
},
"electron-publish": {
- "version": "22.1.0",
- "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.1.0.tgz",
- "integrity": "sha512-jHjMCaL2dFU+iOq8wW568F59+DW1jFJGT3vc2xqm9iXyZ8gWlQ+NVve4bq9HZG7m4iNqWbGw9StmZcOzmIBxMQ==",
+ "version": "22.10.4",
+ "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-22.10.4.tgz",
+ "integrity": "sha512-cjVM0+9DQoV4TWfH8lVWoelJ89O2i5yDARVp5GCMHrB43XEU0Nr5eKYysgsbOSnZk5W8z1vfGpFWHj+AeAEDYg==",
"dev": true,
"requires": {
+ "@types/fs-extra": "^9.0.5",
"bluebird-lst": "^1.0.9",
- "builder-util": "~22.1.0",
- "builder-util-runtime": "8.4.0",
- "chalk": "^2.4.2",
- "fs-extra": "^8.1.0",
+ "builder-util": "22.10.4",
+ "builder-util-runtime": "8.7.3",
+ "chalk": "^4.1.0",
+ "fs-extra": "^9.0.1",
"lazy-val": "^1.0.4",
- "mime": "^2.4.4"
+ "mime": "^2.4.7"
},
"dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
"chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "lazy-val": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
- "integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
+ "fs-extra": {
+ "version": "9.0.1",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
+ "dev": true,
+ "requires": {
+ "at-least-node": "^1.0.0",
+ "graceful-fs": "^4.2.0",
+ "jsonfile": "^6.0.1",
+ "universalify": "^1.0.0"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.2.4",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
"dev": true
},
+ "jsonfile": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.6",
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
+ },
"mime": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
- "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+ "version": "2.4.7",
+ "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.7.tgz",
+ "integrity": "sha512-dhNd1uA2u397uQk3Nv5LM4lm93WYDUXFn3Fu291FJerns4jyTudqhIWe4W04YLy7Uk1tm1Ore04NpjRvQp/NPA==",
"dev": true
},
"supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "has-flag": "^3.0.0"
+ "has-flag": "^4.0.0"
}
+ },
+ "universalify": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
+ "dev": true
}
}
},
"electron-rebuild": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-2.0.3.tgz",
- "integrity": "sha512-I8Oeey9afU+trFLd8/qRRiHC083CCoBnmw3q0qQaRFsg0OzMaeJQn7Nl6EYKPpntuQ/3yOqZQ7b3ObNuETN/Ig==",
+ "version": "2.3.4",
+ "resolved": "https://registry.npmjs.org/electron-rebuild/-/electron-rebuild-2.3.4.tgz",
+ "integrity": "sha512-EHr1bkqXTN/jQJuh2/IunF9QGa9yOgpE9KdQ9A7VHshd7ycWvoXjWzaXaimfa1nu1l7vKqLLu7N2COe3Jn9NuA==",
"dev": true,
"requires": {
"@malept/cross-spawn-promise": "^1.1.0",
@@ -5974,22 +6440,55 @@
"debug": "^4.1.1",
"detect-libc": "^1.0.3",
"fs-extra": "^9.0.1",
- "node-abi": "^2.19.1",
+ "got": "^11.7.0",
+ "lzma-native": "^6.0.1",
+ "node-abi": "^2.19.2",
"node-gyp": "^7.1.0",
"ora": "^5.1.0",
+ "tar": "^6.0.5",
"yargs": "^16.0.0"
},
"dependencies": {
+ "@sindresorhus/is": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.0.0.tgz",
+ "integrity": "sha512-FyD2meJpDPjyNQejSjvnhpgI/azsQkA4lGbuu5BQZfjvJ9cbRZXzeWL2HceCekW4lixO9JPesIIQkSoLjeJHNQ==",
+ "dev": true
+ },
+ "@szmarczak/http-timer": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz",
+ "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==",
+ "dev": true,
+ "requires": {
+ "defer-to-connect": "^2.0.0"
+ }
+ },
"ansi-regex": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
"integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
"dev": true
},
- "cliui": {
+ "cacheable-request": {
"version": "7.0.1",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.1.tgz",
- "integrity": "sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ==",
+ "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz",
+ "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==",
+ "dev": true,
+ "requires": {
+ "clone-response": "^1.0.2",
+ "get-stream": "^5.1.0",
+ "http-cache-semantics": "^4.0.0",
+ "keyv": "^4.0.0",
+ "lowercase-keys": "^2.0.0",
+ "normalize-url": "^4.1.0",
+ "responselike": "^2.0.0"
+ }
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
"dev": true,
"requires": {
"string-width": "^4.2.0",
@@ -5997,12 +6496,39 @@
"wrap-ansi": "^7.0.0"
}
},
+ "colors": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
+ "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
+ "dev": true
+ },
+ "decompress-response": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+ "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+ "dev": true,
+ "requires": {
+ "mimic-response": "^3.1.0"
+ }
+ },
+ "defer-to-connect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz",
+ "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==",
+ "dev": true
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
"fs-extra": {
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
@@ -6029,6 +6555,25 @@
"path-is-absolute": "^1.0.0"
}
},
+ "got": {
+ "version": "11.8.1",
+ "resolved": "https://registry.npmjs.org/got/-/got-11.8.1.tgz",
+ "integrity": "sha512-9aYdZL+6nHmvJwHALLwKSUZ0hMwGaJGYv3hoPLPgnT8BoBXm1SjnZeky+91tfwJaDzun2s4RsBRy48IEYv2q2Q==",
+ "dev": true,
+ "requires": {
+ "@sindresorhus/is": "^4.0.0",
+ "@szmarczak/http-timer": "^4.0.5",
+ "@types/cacheable-request": "^6.0.1",
+ "@types/responselike": "^1.0.0",
+ "cacheable-lookup": "^5.0.3",
+ "cacheable-request": "^7.0.1",
+ "decompress-response": "^6.0.0",
+ "http2-wrapper": "^1.0.0-beta.5.2",
+ "lowercase-keys": "^2.0.0",
+ "p-cancelable": "^2.0.0",
+ "responselike": "^2.0.0"
+ }
+ },
"graceful-fs": {
"version": "4.2.4",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
@@ -6041,16 +6586,60 @@
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
+ "json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true
+ },
"jsonfile": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
- "integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6",
- "universalify": "^1.0.0"
+ "universalify": "^2.0.0"
+ },
+ "dependencies": {
+ "universalify": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
+ "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "dev": true
+ }
+ }
+ },
+ "keyv": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz",
+ "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==",
+ "dev": true,
+ "requires": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "lowercase-keys": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
+ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
}
},
+ "mimic-response": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+ "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+ "dev": true
+ },
"mkdirp": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
@@ -6058,47 +6647,70 @@
"dev": true
},
"node-gyp": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.0.tgz",
- "integrity": "sha512-rjlHQlnl1dqiDZxZYiKqQdrjias7V+81OVR5PTzZioCBtWkNdrKy06M05HLKxy/pcKikKRCabeDRoZaEc6nIjw==",
+ "version": "7.1.2",
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz",
+ "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
"dev": true,
"requires": {
"env-paths": "^2.2.0",
"glob": "^7.1.4",
"graceful-fs": "^4.2.3",
- "nopt": "^4.0.3",
+ "nopt": "^5.0.0",
"npmlog": "^4.1.2",
"request": "^2.88.2",
- "rimraf": "^2.6.3",
+ "rimraf": "^3.0.2",
"semver": "^7.3.2",
- "tar": "^6.0.1",
+ "tar": "^6.0.2",
"which": "^2.0.2"
}
},
"nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
"dev": true,
"requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
+ "abbrev": "1"
+ }
+ },
+ "normalize-url": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
+ "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
+ "dev": true
+ },
+ "p-cancelable": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz",
+ "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==",
+ "dev": true
+ },
+ "responselike": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
+ "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
+ "dev": true,
+ "requires": {
+ "lowercase-keys": "^2.0.0"
}
},
"rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
"dev": true,
"requires": {
"glob": "^7.1.3"
}
},
"semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
- "dev": true
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
},
"string-width": {
"version": "4.2.0",
@@ -6150,9 +6762,9 @@
}
},
"y18n": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.1.tgz",
- "integrity": "sha512-/jJ831jEs4vGDbYPQp4yGKDYPSCCEQ45uZWJHE1AoYBzqdZi8+LDWas0z4HrmJXmKdpFsTiowSHXdxyFhpmdMg==",
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz",
+ "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==",
"dev": true
},
"yallist": {
@@ -6162,40 +6774,45 @@
"dev": true
},
"yargs": {
- "version": "16.0.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.0.3.tgz",
- "integrity": "sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA==",
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "cliui": "^7.0.0",
- "escalade": "^3.0.2",
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
"get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
"string-width": "^4.2.0",
- "y18n": "^5.0.1",
- "yargs-parser": "^20.0.0"
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
}
}
},
"electron-settings": {
- "version": "github:ChugunovRoman/electron-settings#6c21cf88e927607d8e5d2f3840980a4cc57cd426",
- "from": "github:ChugunovRoman/electron-settings#figma-linux",
- "requires": {
- "clone": "^2.1.1",
- "jsonfile": "^4.0.0"
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/electron-settings/-/electron-settings-4.0.2.tgz",
+ "integrity": "sha512-WnUlrnBsO784oXcag0ym+A3ySoIwonz5GhYFsWroMHVzslzmsP+81f/Fof41T9UrRUxuPPKiZPZMwGO+yvWChg==",
+ "requires": {
+ "lodash.get": "^4.4.2",
+ "lodash.has": "^4.5.2",
+ "lodash.set": "^4.3.2",
+ "lodash.unset": "^4.5.2",
+ "mkdirp": "^1.0.4",
+ "write-file-atomic": "^3.0.3"
},
"dependencies": {
- "clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18="
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
}
}
},
"electron-webpack": {
"version": "2.8.2",
- "resolved": "https://registry.npmjs.org/electron-webpack/-/electron-webpack-2.8.2.tgz",
+ "resolved": "https://npm.kari.com/electron-webpack/-/electron-webpack-2.8.2.tgz",
"integrity": "sha512-rR7hxoOlZIcJf6R08mVl/4TBtFY+HW6sv4Z28TdMWETvcM4ZBIBdGNGylxF0gNwB8gkTgo8UkkDbXGX48K4Vow==",
"dev": true,
"requires": {
@@ -6244,13 +6861,13 @@
},
"ansi-regex": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+ "resolved": "https://npm.kari.com/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
"ansi-styles": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
+ "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"dev": true,
"requires": {
@@ -6272,13 +6889,13 @@
},
"camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "resolved": "https://npm.kari.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"chalk": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "resolved": "https://npm.kari.com/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
@@ -6288,7 +6905,7 @@
},
"cliui": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "resolved": "https://npm.kari.com/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
@@ -6299,7 +6916,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -6308,7 +6925,7 @@
},
"color-name": {
"version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
@@ -6335,7 +6952,7 @@
},
"css-loader": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.6.0.tgz",
+ "resolved": "https://npm.kari.com/css-loader/-/css-loader-3.6.0.tgz",
"integrity": "sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==",
"dev": true,
"requires": {
@@ -6356,7 +6973,7 @@
"dependencies": {
"semver": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "resolved": "https://npm.kari.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
@@ -6370,7 +6987,7 @@
},
"debug": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
@@ -6405,7 +7022,7 @@
},
"fs-extra": {
"version": "9.0.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz",
+ "resolved": "https://npm.kari.com/fs-extra/-/fs-extra-9.0.1.tgz",
"integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==",
"dev": true,
"requires": {
@@ -6449,13 +7066,13 @@
},
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"icss-utils": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/icss-utils/-/icss-utils-4.1.1.tgz",
"integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
"dev": true,
"requires": {
@@ -6474,7 +7091,7 @@
},
"interpret": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "resolved": "https://npm.kari.com/interpret/-/interpret-1.4.0.tgz",
"integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
"dev": true
},
@@ -6501,7 +7118,7 @@
},
"jsonfile": {
"version": "6.0.1",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.0.1.tgz",
+ "resolved": "https://npm.kari.com/jsonfile/-/jsonfile-6.0.1.tgz",
"integrity": "sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg==",
"dev": true,
"requires": {
@@ -6532,7 +7149,7 @@
},
"memory-fs": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+ "resolved": "https://npm.kari.com/memory-fs/-/memory-fs-0.5.0.tgz",
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
"dev": true,
"requires": {
@@ -6542,7 +7159,7 @@
},
"mini-css-extract-plugin": {
"version": "0.9.0",
- "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
+ "resolved": "https://npm.kari.com/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz",
"integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==",
"dev": true,
"requires": {
@@ -6554,7 +7171,7 @@
"dependencies": {
"schema-utils": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
"dev": true,
"requires": {
@@ -6567,7 +7184,7 @@
},
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
@@ -6585,7 +7202,7 @@
},
"p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
@@ -6603,7 +7220,7 @@
},
"p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
@@ -6624,7 +7241,7 @@
},
"postcss": {
"version": "7.0.32",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
+ "resolved": "https://npm.kari.com/postcss/-/postcss-7.0.32.tgz",
"integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
"dev": true,
"requires": {
@@ -6635,7 +7252,7 @@
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
@@ -6644,7 +7261,7 @@
},
"chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "resolved": "https://npm.kari.com/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
@@ -6655,7 +7272,7 @@
"dependencies": {
"supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "resolved": "https://npm.kari.com/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
@@ -6666,7 +7283,7 @@
},
"color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "resolved": "https://npm.kari.com/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
@@ -6675,19 +7292,19 @@
},
"color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"supports-color": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "resolved": "https://npm.kari.com/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
@@ -6698,7 +7315,7 @@
},
"postcss-modules-extract-imports": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
"integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
"dev": true,
"requires": {
@@ -6719,7 +7336,7 @@
},
"postcss-modules-scope": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz",
"integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==",
"dev": true,
"requires": {
@@ -6729,7 +7346,7 @@
},
"postcss-modules-values": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz",
"integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==",
"dev": true,
"requires": {
@@ -6739,7 +7356,7 @@
},
"postcss-selector-parser": {
"version": "6.0.2",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
+ "resolved": "https://npm.kari.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
"integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
"dev": true,
"requires": {
@@ -6750,7 +7367,7 @@
},
"postcss-value-parser": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
+ "resolved": "https://npm.kari.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz",
"integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
"dev": true
},
@@ -6788,7 +7405,7 @@
},
"semver": {
"version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
+ "resolved": "https://npm.kari.com/semver/-/semver-7.3.2.tgz",
"integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
"dev": true
},
@@ -6804,7 +7421,7 @@
},
"string-width": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
@@ -6824,7 +7441,7 @@
},
"strip-ansi": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
@@ -6833,7 +7450,7 @@
},
"style-loader": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz",
+ "resolved": "https://npm.kari.com/style-loader/-/style-loader-1.2.1.tgz",
"integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==",
"dev": true,
"requires": {
@@ -6852,7 +7469,7 @@
},
"loader-utils": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"requires": {
@@ -6874,25 +7491,25 @@
},
"tapable": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/tapable/-/tapable-1.1.3.tgz",
"integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
"dev": true
},
"universalify": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/universalify/-/universalify-1.0.0.tgz",
"integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
"dev": true
},
"v8-compile-cache": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
"integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==",
"dev": true
},
"webpack-cli": {
"version": "3.3.12",
- "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
+ "resolved": "https://npm.kari.com/webpack-cli/-/webpack-cli-3.3.12.tgz",
"integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
"dev": true,
"requires": {
@@ -6911,7 +7528,7 @@
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
@@ -6920,7 +7537,7 @@
},
"chalk": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "resolved": "https://npm.kari.com/chalk/-/chalk-2.4.2.tgz",
"integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
"dev": true,
"requires": {
@@ -6931,7 +7548,7 @@
"dependencies": {
"supports-color": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "resolved": "https://npm.kari.com/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
@@ -6942,7 +7559,7 @@
},
"color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "resolved": "https://npm.kari.com/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
@@ -6951,19 +7568,19 @@
},
"color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"supports-color": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "resolved": "https://npm.kari.com/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
@@ -6972,7 +7589,7 @@
},
"yargs": {
"version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "resolved": "https://npm.kari.com/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
@@ -6992,7 +7609,7 @@
},
"wrap-ansi": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "resolved": "https://npm.kari.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
@@ -7003,7 +7620,7 @@
"dependencies": {
"ansi-styles": {
"version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
"dev": true,
"requires": {
@@ -7012,7 +7629,7 @@
},
"color-convert": {
"version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "resolved": "https://npm.kari.com/color-convert/-/color-convert-1.9.3.tgz",
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
"dev": true,
"requires": {
@@ -7021,7 +7638,7 @@
},
"color-name": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.3.tgz",
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
}
@@ -7029,7 +7646,7 @@
},
"yargs-parser": {
"version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "resolved": "https://npm.kari.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"requires": {
@@ -7041,7 +7658,7 @@
},
"electron-webpack-js": {
"version": "2.4.1",
- "resolved": "https://registry.npmjs.org/electron-webpack-js/-/electron-webpack-js-2.4.1.tgz",
+ "resolved": "https://npm.kari.com/electron-webpack-js/-/electron-webpack-js-2.4.1.tgz",
"integrity": "sha512-NPbcI4nnuclkLEKmwRI8sui2GNe37NKm0pCQR6KZA7YSV3KQdH4I7wOgIZ2AkeCpyeUHrBSMGQY+VqhPD7OtMA==",
"dev": true,
"requires": {
@@ -7052,12 +7669,6 @@
"babel-plugin-component": "^1.1.1"
}
},
- "elegant-spinner": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
- "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=",
- "dev": true
- },
"elliptic": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
@@ -7083,7 +7694,7 @@
},
"emoji-regex": {
"version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "resolved": "https://npm.kari.com/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
},
@@ -7095,7 +7706,7 @@
},
"encodeurl": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
"dev": true
},
@@ -7108,6 +7719,35 @@
"once": "^1.4.0"
}
},
+ "enhanced-resolve": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz",
+ "integrity": "sha512-2qbxE7ek3YxPJ1ML6V+satHkzHpJQKWkRHmRx6mfAoW59yP8YH8BFplbegSP+u2hBd6B6KCOpvJQ3dZAP+hkpg==",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "memory-fs": "^0.4.0",
+ "object-assign": "^4.0.1",
+ "tapable": "^0.2.5"
+ }
+ },
+ "enquirer": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz",
+ "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "^4.1.1"
+ },
+ "dependencies": {
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ }
+ }
+ },
"entities": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz",
@@ -7122,7 +7762,7 @@
},
"errno": {
"version": "0.1.7",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+ "resolved": "https://npm.kari.com/errno/-/errno-0.1.7.tgz",
"integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
"dev": true,
"requires": {
@@ -7131,7 +7771,7 @@
},
"error-ex": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+ "resolved": "https://npm.kari.com/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
@@ -7182,7 +7822,7 @@
},
"es-to-primitive": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
+ "resolved": "https://npm.kari.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
"integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
"dev": true,
"requires": {
@@ -7204,15 +7844,21 @@
"integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig==",
"dev": true
},
+ "escape-goat": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz",
+ "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==",
+ "dev": true
+ },
"escape-html": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
"dev": true
},
"escape-string-regexp": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "resolved": "https://npm.kari.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"eslint": {
@@ -7797,6 +8443,12 @@
}
}
},
+ "esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true
+ },
"esquery": {
"version": "1.0.1",
"resolved": "https://npm.kari.com/esquery/-/esquery-1.0.1.tgz",
@@ -7808,7 +8460,7 @@
},
"esrecurse": {
"version": "4.2.1",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+ "resolved": "https://npm.kari.com/esrecurse/-/esrecurse-4.2.1.tgz",
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"requires": {
@@ -7829,7 +8481,7 @@
},
"etag": {
"version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
+ "resolved": "https://npm.kari.com/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
"dev": true
},
@@ -7847,7 +8499,7 @@
},
"eventsource": {
"version": "1.0.7",
- "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz",
+ "resolved": "https://npm.kari.com/eventsource/-/eventsource-1.0.7.tgz",
"integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==",
"dev": true,
"requires": {
@@ -7865,23 +8517,63 @@
}
},
"execa": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz",
- "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz",
+ "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==",
"dev": true,
"requires": {
- "cross-spawn": "^5.0.1",
- "get-stream": "^3.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
+ "cross-spawn": "^7.0.0",
+ "get-stream": "^5.0.0",
+ "human-signals": "^1.1.1",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.0",
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2",
+ "strip-final-newline": "^2.0.0"
+ },
+ "dependencies": {
+ "is-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
+ "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "requires": {
+ "path-key": "^3.0.0"
+ }
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true
+ }
}
},
"expand-brackets": {
"version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+ "resolved": "https://npm.kari.com/expand-brackets/-/expand-brackets-2.1.4.tgz",
"integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
"dev": true,
"requires": {
@@ -7896,7 +8588,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -7905,7 +8597,7 @@
},
"define-property": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
@@ -7914,7 +8606,7 @@
},
"extend-shallow": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
@@ -7925,7 +8617,7 @@
},
"expand-tilde": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+ "resolved": "https://npm.kari.com/expand-tilde/-/expand-tilde-2.0.2.tgz",
"integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
"dev": true,
"requires": {
@@ -7934,7 +8626,7 @@
},
"express": {
"version": "4.17.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+ "resolved": "https://npm.kari.com/express/-/express-4.17.1.tgz",
"integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
"dev": true,
"requires": {
@@ -7972,19 +8664,19 @@
"dependencies": {
"array-flatten": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
"dev": true
},
"cookie": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+ "resolved": "https://npm.kari.com/cookie/-/cookie-0.4.0.tgz",
"integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
"dev": true
},
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -7995,13 +8687,13 @@
},
"extend": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+ "resolved": "https://npm.kari.com/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"dev": true
},
"extend-shallow": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+ "resolved": "https://npm.kari.com/extend-shallow/-/extend-shallow-3.0.2.tgz",
"integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
"dev": true,
"requires": {
@@ -8011,7 +8703,7 @@
"dependencies": {
"is-extendable": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
@@ -8032,7 +8724,7 @@
},
"extglob": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+ "resolved": "https://npm.kari.com/extglob/-/extglob-2.0.4.tgz",
"integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
"dev": true,
"requires": {
@@ -8048,7 +8740,7 @@
"dependencies": {
"define-property": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
@@ -8057,7 +8749,7 @@
},
"extend-shallow": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
@@ -8066,7 +8758,7 @@
},
"is-accessor-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
@@ -8075,7 +8767,7 @@
},
"is-data-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
@@ -8084,7 +8776,7 @@
},
"is-descriptor": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
@@ -8095,32 +8787,9 @@
}
}
},
- "extract-zip": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz",
- "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==",
- "dev": true,
- "requires": {
- "concat-stream": "^1.6.2",
- "debug": "^2.6.9",
- "mkdirp": "^0.5.4",
- "yauzl": "^2.10.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- }
- }
- },
"extsprintf": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+ "resolved": "https://npm.kari.com/extsprintf/-/extsprintf-1.3.0.tgz",
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
"dev": true
},
@@ -8242,7 +8911,7 @@
},
"faye-websocket": {
"version": "0.10.0",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz",
+ "resolved": "https://npm.kari.com/faye-websocket/-/faye-websocket-0.10.0.tgz",
"integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=",
"dev": true,
"requires": {
@@ -8260,7 +8929,7 @@
},
"figgy-pudding": {
"version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
+ "resolved": "https://npm.kari.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
"integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
"dev": true
},
@@ -8356,6 +9025,15 @@
}
}
},
+ "filelist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.1.tgz",
+ "integrity": "sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ==",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
"fill-range": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
@@ -8381,7 +9059,7 @@
},
"finalhandler": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/finalhandler/-/finalhandler-1.1.2.tgz",
"integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
"dev": true,
"requires": {
@@ -8396,7 +9074,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -8464,7 +9142,7 @@
},
"findup-sync": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/findup-sync/-/findup-sync-3.0.0.tgz",
"integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
"dev": true,
"requires": {
@@ -8566,19 +9244,19 @@
},
"for-in": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/for-in/-/for-in-1.0.2.tgz",
"integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
"dev": true
},
"forever-agent": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+ "resolved": "https://npm.kari.com/forever-agent/-/forever-agent-0.6.1.tgz",
"integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
"dev": true
},
"form-data": {
"version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+ "resolved": "https://npm.kari.com/form-data/-/form-data-2.3.3.tgz",
"integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
"dev": true,
"requires": {
@@ -8589,13 +9267,13 @@
},
"forwarded": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
"dev": true
},
"fragment-cache": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+ "resolved": "https://npm.kari.com/fragment-cache/-/fragment-cache-0.2.1.tgz",
"integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
"dev": true,
"requires": {
@@ -8604,13 +9282,13 @@
},
"fresh": {
"version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
+ "resolved": "https://npm.kari.com/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
"dev": true
},
"from2": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/from2/-/from2-2.3.0.tgz",
"integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
"dev": true,
"requires": {
@@ -8652,7 +9330,7 @@
},
"fs-extra": {
"version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+ "resolved": "https://npm.kari.com/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"requires": {
@@ -8680,7 +9358,7 @@
},
"fs-write-stream-atomic": {
"version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+ "resolved": "https://npm.kari.com/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
"integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
"dev": true,
"requires": {
@@ -8692,12 +9370,12 @@
},
"fs.realpath": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fstream": {
"version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
+ "resolved": "https://npm.kari.com/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"requires": {
@@ -8709,7 +9387,7 @@
},
"function-bind": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
@@ -8721,7 +9399,7 @@
},
"gauge": {
"version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "resolved": "https://npm.kari.com/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"requires": {
@@ -8737,7 +9415,7 @@
},
"gaze": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"requires": {
@@ -8746,7 +9424,7 @@
},
"gensync": {
"version": "1.0.0-beta.1",
- "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz",
+ "resolved": "https://npm.kari.com/gensync/-/gensync-1.0.0-beta.1.tgz",
"integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==",
"dev": true
},
@@ -8758,7 +9436,7 @@
},
"get-own-enumerable-property-symbols": {
"version": "3.0.2",
- "resolved": "https://npm.kari.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz",
"integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==",
"dev": true
},
@@ -8769,20 +9447,35 @@
"dev": true
},
"get-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
- "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
- "dev": true
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+ "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+ "dev": true,
+ "requires": {
+ "pump": "^3.0.0"
+ },
+ "dependencies": {
+ "pump": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+ "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ "dev": true,
+ "requires": {
+ "end-of-stream": "^1.1.0",
+ "once": "^1.3.1"
+ }
+ }
+ }
},
"get-value": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+ "resolved": "https://npm.kari.com/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
"getpass": {
"version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+ "resolved": "https://npm.kari.com/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
@@ -8812,7 +9505,7 @@
},
"glob-parent": {
"version": "5.1.1",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "resolved": "https://npm.kari.com/glob-parent/-/glob-parent-5.1.1.tgz",
"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
"dev": true,
"requires": {
@@ -8846,29 +9539,50 @@
"serialize-error": "^7.0.1"
},
"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==",
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
- "optional": true
+ "optional": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
},
"semver": {
- "version": "7.3.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz",
- "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==",
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true,
"optional": true
}
}
},
"global-dirs": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
- "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz",
+ "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==",
"dev": true,
"requires": {
- "ini": "^1.3.4"
+ "ini": "1.3.7"
+ },
+ "dependencies": {
+ "ini": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz",
+ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==",
+ "dev": true
+ }
}
},
"global-modules": {
@@ -8884,7 +9598,7 @@
},
"global-prefix": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/global-prefix/-/global-prefix-1.0.2.tgz",
"integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
"dev": true,
"requires": {
@@ -8908,6 +9622,12 @@
"tunnel": "^0.0.6"
}
},
+ "globals": {
+ "version": "9.18.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
+ "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
+ "dev": true
+ },
"globalthis": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz",
@@ -8970,44 +9690,6 @@
"url-parse-lax": "^3.0.0"
},
"dependencies": {
- "@sindresorhus/is": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
- "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
- "dev": true
- },
- "cacheable-request": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
- "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
- "dev": true,
- "requires": {
- "clone-response": "^1.0.2",
- "get-stream": "^5.1.0",
- "http-cache-semantics": "^4.0.0",
- "keyv": "^3.0.0",
- "lowercase-keys": "^2.0.0",
- "normalize-url": "^4.1.0",
- "responselike": "^1.0.2"
- },
- "dependencies": {
- "get-stream": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
- "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "lowercase-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
- "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
- "dev": true
- }
- }
- },
"get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
@@ -9017,30 +9699,6 @@
"pump": "^3.0.0"
}
},
- "http-cache-semantics": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
- "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==",
- "dev": true
- },
- "normalize-url": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
- "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
- "dev": true
- },
- "p-cancelable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
- "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
- "dev": true
- },
- "prepend-http": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
- "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
- "dev": true
- },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -9050,26 +9708,24 @@
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
- },
- "url-parse-lax": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
- "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
- "dev": true,
- "requires": {
- "prepend-http": "^2.0.0"
- }
}
}
},
"graceful-fs": {
"version": "4.1.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
- "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg="
+ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
+ "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
},
"handle-thing": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/handle-thing/-/handle-thing-2.0.1.tgz",
"integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
"dev": true
},
@@ -9085,11 +9741,6 @@
"wordwrap": "^1.0.0"
},
"dependencies": {
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
"neo-async": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
@@ -9099,7 +9750,7 @@
},
"har-schema": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/har-schema/-/har-schema-2.0.0.tgz",
"integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
"dev": true
},
@@ -9115,7 +9766,7 @@
},
"has": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
@@ -9124,7 +9775,7 @@
},
"has-ansi": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
@@ -9145,13 +9796,13 @@
},
"has-unicode": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
"dev": true
},
"has-value": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-value/-/has-value-1.0.0.tgz",
"integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
"dev": true,
"requires": {
@@ -9162,7 +9813,7 @@
},
"has-values": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-values/-/has-values-1.0.0.tgz",
"integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
"dev": true,
"requires": {
@@ -9172,7 +9823,7 @@
"dependencies": {
"kind-of": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-4.0.0.tgz",
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
@@ -9244,32 +9895,10 @@
},
"he": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
- "history": {
- "version": "4.7.2",
- "resolved": "https://registry.npmjs.org/history/-/history-4.7.2.tgz",
- "integrity": "sha512-1zkBRWW6XweO0NBcjiphtVJVsIQ+SXF29z9DVkceeaSLVMFXHool+fdCZD4spDCfZJCILPILc3bm7Bc+HRi0nA==",
- "requires": {
- "invariant": "^2.2.1",
- "loose-envify": "^1.2.0",
- "resolve-pathname": "^2.2.0",
- "value-equal": "^0.4.0",
- "warning": "^3.0.0"
- },
- "dependencies": {
- "warning": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/warning/-/warning-3.0.0.tgz",
- "integrity": "sha1-MuU3fLVy3kqwR1O9+IIcAe1gW3w=",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- }
- }
- },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -9281,11 +9910,6 @@
"minimalistic-crypto-utils": "^1.0.1"
}
},
- "hoist-non-react-statics": {
- "version": "2.5.5",
- "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz",
- "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw=="
- },
"homedir-polyfill": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz",
@@ -9303,7 +9927,7 @@
},
"hpack.js": {
"version": "2.1.6",
- "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz",
+ "resolved": "https://npm.kari.com/hpack.js/-/hpack.js-2.1.6.tgz",
"integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
"dev": true,
"requires": {
@@ -9347,7 +9971,7 @@
},
"html-entities": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/html-entities/-/html-entities-1.3.1.tgz",
"integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==",
"dev": true
},
@@ -9512,15 +10136,21 @@
"entities": "^2.0.0"
}
},
+ "http-cache-semantics": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
+ "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==",
+ "dev": true
+ },
"http-deceiver": {
"version": "1.2.7",
- "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz",
+ "resolved": "https://npm.kari.com/http-deceiver/-/http-deceiver-1.2.7.tgz",
"integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
"dev": true
},
"http-errors": {
"version": "1.7.2",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+ "resolved": "https://npm.kari.com/http-errors/-/http-errors-1.7.2.tgz",
"integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
"dev": true,
"requires": {
@@ -9533,7 +10163,7 @@
},
"http-proxy": {
"version": "1.18.1",
- "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+ "resolved": "https://npm.kari.com/http-proxy/-/http-proxy-1.18.1.tgz",
"integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
"dev": true,
"requires": {
@@ -9544,7 +10174,7 @@
},
"http-proxy-middleware": {
"version": "0.19.1",
- "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+ "resolved": "https://npm.kari.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
"integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
"dev": true,
"requires": {
@@ -9556,7 +10186,7 @@
},
"http-signature": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/http-signature/-/http-signature-1.2.0.tgz",
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
"dev": true,
"requires": {
@@ -9565,6 +10195,16 @@
"sshpk": "^1.7.0"
}
},
+ "http2-wrapper": {
+ "version": "1.0.0-beta.5.2",
+ "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz",
+ "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==",
+ "dev": true,
+ "requires": {
+ "quick-lru": "^5.1.1",
+ "resolve-alpn": "^1.0.0"
+ }
+ },
"https-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
@@ -9573,7 +10213,7 @@
},
"human-signals": {
"version": "1.1.1",
- "resolved": "https://npm.kari.com/human-signals/-/human-signals-1.1.1.tgz",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz",
"integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==",
"dev": true
},
@@ -9848,10 +10488,20 @@
}
}
},
+ "iconv-corefoundation": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/iconv-corefoundation/-/iconv-corefoundation-1.1.5.tgz",
+ "integrity": "sha512-hI4m7udfV04OcjleOmDaR4gwXnH4xumxN+ZmywHDiKf2CmAzsT9SVYe7Y4pdnQbyZfXwAQyrElykbE5PrPRfmQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "node-addon-api": "^1.6.3"
+ }
+ },
"iconv-lite": {
- "version": "0.4.23",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz",
- "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==",
+ "version": "0.4.24",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
@@ -9873,7 +10523,7 @@
},
"iferr": {
"version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+ "resolved": "https://npm.kari.com/iferr/-/iferr-0.1.5.tgz",
"integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
"dev": true
},
@@ -9883,6 +10533,15 @@
"integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
"dev": true
},
+ "ignore-walk": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
+ "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
+ "dev": true,
+ "requires": {
+ "minimatch": "^3.0.4"
+ }
+ },
"import-fresh": {
"version": "3.2.1",
"resolved": "https://npm.kari.com/import-fresh/-/import-fresh-3.2.1.tgz",
@@ -9909,7 +10568,7 @@
},
"import-local": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/import-local/-/import-local-2.0.0.tgz",
"integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
"dev": true,
"requires": {
@@ -9919,7 +10578,7 @@
"dependencies": {
"find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
@@ -9928,7 +10587,7 @@
},
"locate-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
@@ -9947,7 +10606,7 @@
},
"p-locate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
@@ -9956,7 +10615,7 @@
},
"p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
@@ -9968,7 +10627,7 @@
},
"pkg-dir": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/pkg-dir/-/pkg-dir-3.0.0.tgz",
"integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
"dev": true,
"requires": {
@@ -9979,13 +10638,12 @@
},
"imurmurhash": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
- "dev": true
+ "resolved": "https://npm.kari.com/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o="
},
"in-publish": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/in-publish/-/in-publish-2.0.1.tgz",
"integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==",
"dev": true
},
@@ -10000,19 +10658,19 @@
},
"indexes-of": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/indexes-of/-/indexes-of-1.0.1.tgz",
"integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
"dev": true
},
"infer-owner": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/infer-owner/-/infer-owner-1.0.4.tgz",
"integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
"dev": true
},
"inflight": {
"version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "resolved": "https://npm.kari.com/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"requires": {
"once": "^1.3.0",
@@ -10026,7 +10684,7 @@
},
"ini": {
"version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
+ "resolved": "https://npm.kari.com/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
"dev": true
},
@@ -10035,51 +10693,102 @@
"resolved": "https://registry.npmjs.org/iniparser/-/iniparser-1.0.5.tgz",
"integrity": "sha1-g21r7+bfv87gvM8c+fKsxwJ/eD0="
},
- "internal-ip": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
- "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
- "dev": true,
+ "inquirer": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
+ "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
"requires": {
- "default-gateway": "^4.2.0",
- "ipaddr.js": "^1.9.0"
- }
- },
- "interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
- "dev": true
- },
- "invariant": {
+ "ansi-escapes": "^3.0.0",
+ "chalk": "^2.0.0",
+ "cli-cursor": "^2.1.0",
+ "cli-width": "^2.0.0",
+ "external-editor": "^2.0.4",
+ "figures": "^2.0.0",
+ "lodash": "^4.3.0",
+ "mute-stream": "0.0.7",
+ "run-async": "^2.2.0",
+ "rx-lite": "^4.0.8",
+ "rx-lite-aggregates": "^4.0.8",
+ "string-width": "^2.1.0",
+ "strip-ansi": "^4.0.0",
+ "through": "^2.3.6"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
+ "internal-ip": {
+ "version": "4.3.0",
+ "resolved": "https://npm.kari.com/internal-ip/-/internal-ip-4.3.0.tgz",
+ "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+ "dev": true,
+ "requires": {
+ "default-gateway": "^4.2.0",
+ "ipaddr.js": "^1.9.0"
+ }
+ },
+ "interpret": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "dev": true
+ },
+ "invariant": {
"version": "2.2.4",
- "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+ "resolved": "https://npm.kari.com/invariant/-/invariant-2.2.4.tgz",
"integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+ "dev": true,
"requires": {
"loose-envify": "^1.0.0"
}
},
"ip": {
"version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
+ "resolved": "https://npm.kari.com/ip/-/ip-1.1.5.tgz",
"integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
"dev": true
},
"ip-regex": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/ip-regex/-/ip-regex-2.1.0.tgz",
"integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
"dev": true
},
"ipaddr.js": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+ "resolved": "https://npm.kari.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
"dev": true
},
"is-accessor-descriptor": {
"version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+ "resolved": "https://npm.kari.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
"integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
"dev": true,
"requires": {
@@ -10088,7 +10797,7 @@
"dependencies": {
"kind-of": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
@@ -10099,13 +10808,13 @@
},
"is-arguments": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/is-arguments/-/is-arguments-1.0.4.tgz",
"integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==",
"dev": true
},
"is-arrayish": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "resolved": "https://npm.kari.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
@@ -10120,7 +10829,7 @@
},
"is-buffer": {
"version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+ "resolved": "https://npm.kari.com/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
"dev": true
},
@@ -10148,9 +10857,18 @@
"ci-info": "^2.0.0"
}
},
+ "is-core-module": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz",
+ "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.3"
+ }
+ },
"is-data-descriptor": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+ "resolved": "https://npm.kari.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
"integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
"dev": true,
"requires": {
@@ -10159,7 +10877,7 @@
"dependencies": {
"kind-of": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
@@ -10176,7 +10894,7 @@
},
"is-descriptor": {
"version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+ "resolved": "https://npm.kari.com/is-descriptor/-/is-descriptor-0.1.6.tgz",
"integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
"dev": true,
"requires": {
@@ -10187,7 +10905,7 @@
"dependencies": {
"kind-of": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
"dev": true
}
@@ -10201,13 +10919,13 @@
},
"is-extendable": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+ "resolved": "https://npm.kari.com/is-extendable/-/is-extendable-0.1.1.tgz",
"integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
"dev": true
},
"is-extglob": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
"is-finite": {
@@ -10238,13 +10956,13 @@
}
},
"is-installed-globally": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
- "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz",
+ "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==",
"dev": true,
"requires": {
- "global-dirs": "^0.1.0",
- "is-path-inside": "^1.0.0"
+ "global-dirs": "^2.0.1",
+ "is-path-inside": "^3.0.1"
}
},
"is-interactive": {
@@ -10254,9 +10972,9 @@
"dev": true
},
"is-npm": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz",
- "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz",
+ "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==",
"dev": true
},
"is-number": {
@@ -10280,29 +10998,20 @@
}
},
"is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
+ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
"dev": true
},
- "is-observable": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
- "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
- "dev": true,
- "requires": {
- "symbol-observable": "^1.1.0"
- }
- },
"is-path-cwd": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
"integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
"dev": true
},
"is-path-in-cwd": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
"integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
"dev": true,
"requires": {
@@ -10311,7 +11020,7 @@
"dependencies": {
"is-path-inside": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-path-inside/-/is-path-inside-2.1.0.tgz",
"integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
"dev": true,
"requires": {
@@ -10321,23 +11030,20 @@
}
},
"is-path-inside": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
- "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
- "dev": true,
- "requires": {
- "path-is-inside": "^1.0.1"
- }
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.2.tgz",
+ "integrity": "sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg==",
+ "dev": true
},
"is-plain-obj": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
"integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
"dev": true
},
"is-plain-object": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+ "resolved": "https://npm.kari.com/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"dev": true,
"requires": {
@@ -10346,7 +11052,7 @@
},
"is-promise": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-promise/-/is-promise-2.1.0.tgz",
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
},
"is-regex": {
@@ -10360,13 +11066,13 @@
},
"is-regexp": {
"version": "1.0.0",
- "resolved": "https://npm.kari.com/is-regexp/-/is-regexp-1.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
"integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
"dev": true
},
"is-stream": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
"dev": true
},
@@ -10381,25 +11087,24 @@
},
"is-typedarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "dev": true
+ "resolved": "https://npm.kari.com/is-typedarray/-/is-typedarray-1.0.0.tgz",
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
},
"is-utf8": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
+ "resolved": "https://npm.kari.com/is-utf8/-/is-utf8-0.2.1.tgz",
"integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
"dev": true
},
"is-windows": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/is-windows/-/is-windows-1.0.2.tgz",
"integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
"dev": true
},
"is-wsl": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-wsl/-/is-wsl-1.1.0.tgz",
"integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
"dev": true
},
@@ -10412,29 +11117,76 @@
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
- "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+ "dev": true
+ },
+ "isbinaryfile": {
+ "version": "4.0.6",
+ "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz",
+ "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==",
+ "dev": true
},
"isexe": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
"dev": true
},
"isobject": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+ "resolved": "https://npm.kari.com/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true
},
"isstream": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/isstream/-/isstream-0.1.2.tgz",
"integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
"dev": true
},
+ "jake": {
+ "version": "10.8.2",
+ "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz",
+ "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==",
+ "dev": true,
+ "requires": {
+ "async": "0.9.x",
+ "chalk": "^2.4.2",
+ "filelist": "^1.0.1",
+ "minimatch": "^3.0.4"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
"jest-worker": {
"version": "25.5.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz",
+ "resolved": "https://npm.kari.com/jest-worker/-/jest-worker-25.5.0.tgz",
"integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==",
"dev": true,
"requires": {
@@ -10444,7 +11196,7 @@
"dependencies": {
"has-flag": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
@@ -10467,18 +11219,28 @@
},
"js-tokens": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
"jsbn": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+ "resolved": "https://npm.kari.com/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
"dev": true
},
"jsesc": {
"version": "0.5.0",
- "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+ "resolved": "https://npm.kari.com/jsesc/-/jsesc-0.5.0.tgz",
"integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
"dev": true
},
@@ -10490,19 +11252,25 @@
},
"json-parse-better-errors": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
"integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
"dev": true
},
+ "json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true
+ },
"json-schema": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+ "resolved": "https://npm.kari.com/json-schema/-/json-schema-0.2.3.tgz",
"integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "resolved": "https://npm.kari.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
"integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true
},
@@ -10514,13 +11282,13 @@
},
"json-stringify-safe": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+ "resolved": "https://npm.kari.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
"dev": true
},
"json3": {
"version": "3.3.3",
- "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+ "resolved": "https://npm.kari.com/json3/-/json3-3.3.3.tgz",
"integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
"dev": true
},
@@ -10532,15 +11300,16 @@
},
"jsonfile": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+ "dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
},
"jsprim": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+ "resolved": "https://npm.kari.com/jsprim/-/jsprim-1.4.1.tgz",
"integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
"dev": true,
"requires": {
@@ -10561,9 +11330,9 @@
}
},
"keyv": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz",
- "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+ "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
"dev": true,
"requires": {
"json-buffer": "3.0.0"
@@ -10571,13 +11340,13 @@
},
"killable": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/killable/-/killable-1.0.1.tgz",
"integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
"dev": true
},
"kind-of": {
"version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-6.0.3.tgz",
"integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
"dev": true
},
@@ -10598,19 +11367,19 @@
},
"lazy-val": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/lazy-val/-/lazy-val-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/lazy-val/-/lazy-val-1.0.4.tgz",
"integrity": "sha512-u93kb2fPbIrfzBuLjZE+w+fJbUUMhNDXxNmMfaqNgpfQf1CO5ZSe2LfsnBqVAk7i/2NF48OSoRj+Xe2VT+lE8Q==",
"dev": true
},
"leven": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true
},
"levenary": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/levenary/-/levenary-1.1.1.tgz",
"integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==",
"dev": true,
"requires": {
@@ -10634,44 +11403,40 @@
"dev": true
},
"lint-staged": {
- "version": "10.0.0-beta.7",
- "resolved": "https://npm.kari.com/lint-staged/-/lint-staged-10.0.0-beta.7.tgz",
- "integrity": "sha512-YfuR1+uOt56hPAZ1gIPglzzP6zUV5A94LsFKbq4C9nFdTsNGetNFdET1opUYhWsBY/aYUfcmf1YEYH/+1R9bIA==",
+ "version": "10.5.3",
+ "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.5.3.tgz",
+ "integrity": "sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg==",
"dev": true,
"requires": {
- "chalk": "^3.0.0",
- "commander": "^4.0.1",
- "cosmiconfig": "^6.0.0",
- "debug": "^4.1.1",
+ "chalk": "^4.1.0",
+ "cli-truncate": "^2.1.0",
+ "commander": "^6.2.0",
+ "cosmiconfig": "^7.0.0",
+ "debug": "^4.2.0",
"dedent": "^0.7.0",
- "execa": "^3.4.0",
- "listr": "^0.14.3",
- "log-symbols": "^3.0.0",
+ "enquirer": "^2.3.6",
+ "execa": "^4.1.0",
+ "listr2": "^3.2.2",
+ "log-symbols": "^4.0.0",
"micromatch": "^4.0.2",
"normalize-path": "^3.0.0",
"please-upgrade-node": "^3.2.0",
+ "string-argv": "0.3.1",
"stringify-object": "^3.3.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- },
"ansi-styles": {
- "version": "4.2.0",
- "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-4.2.0.tgz",
- "integrity": "sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
"braces": {
"version": "3.0.2",
- "resolved": "https://npm.kari.com/braces/-/braces-3.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"dev": true,
"requires": {
@@ -10679,9 +11444,9 @@
}
},
"chalk": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/chalk/-/chalk-3.0.0.tgz",
- "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
@@ -10690,7 +11455,7 @@
},
"color-convert": {
"version": "2.0.1",
- "resolved": "https://npm.kari.com/color-convert/-/color-convert-2.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
@@ -10699,337 +11464,43 @@
},
"color-name": {
"version": "1.1.4",
- "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.4.tgz",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"commander": {
- "version": "4.0.1",
- "resolved": "https://npm.kari.com/commander/-/commander-4.0.1.tgz",
- "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"dev": true
},
- "cross-spawn": {
- "version": "7.0.1",
- "resolved": "https://npm.kari.com/cross-spawn/-/cross-spawn-7.0.1.tgz",
- "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
"debug": {
- "version": "4.1.1",
- "resolved": "https://npm.kari.com/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+ "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"dev": true,
"requires": {
- "ms": "^2.1.1"
- }
- },
- "execa": {
- "version": "3.4.0",
- "resolved": "https://npm.kari.com/execa/-/execa-3.4.0.tgz",
- "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.0",
- "get-stream": "^5.0.0",
- "human-signals": "^1.1.1",
- "is-stream": "^2.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^4.0.0",
- "onetime": "^5.1.0",
- "p-finally": "^2.0.0",
- "signal-exit": "^3.0.2",
- "strip-final-newline": "^2.0.0"
- }
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://npm.kari.com/figures/-/figures-1.7.0.tgz",
- "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
+ "ms": "2.1.2"
}
},
"fill-range": {
"version": "7.0.1",
- "resolved": "https://npm.kari.com/fill-range/-/fill-range-7.0.1.tgz",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
}
},
- "get-stream": {
- "version": "5.1.0",
- "resolved": "https://npm.kari.com/get-stream/-/get-stream-5.1.0.tgz",
- "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://npm.kari.com/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://npm.kari.com/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://npm.kari.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
- },
"is-number": {
"version": "7.0.0",
- "resolved": "https://npm.kari.com/is-number/-/is-number-7.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
"dev": true
},
- "is-stream": {
- "version": "2.0.0",
- "resolved": "https://npm.kari.com/is-stream/-/is-stream-2.0.0.tgz",
- "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
- "dev": true
- },
- "listr": {
- "version": "0.14.3",
- "resolved": "https://npm.kari.com/listr/-/listr-0.14.3.tgz",
- "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
- "dev": true,
- "requires": {
- "@samverschueren/stream-to-observable": "^0.3.0",
- "is-observable": "^1.1.0",
- "is-promise": "^2.1.0",
- "is-stream": "^1.1.0",
- "listr-silent-renderer": "^1.1.1",
- "listr-update-renderer": "^0.5.0",
- "listr-verbose-renderer": "^0.5.0",
- "p-map": "^2.0.0",
- "rxjs": "^6.3.3"
- },
- "dependencies": {
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://npm.kari.com/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=",
- "dev": true
- }
- }
- },
- "listr-update-renderer": {
- "version": "0.5.0",
- "resolved": "https://npm.kari.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
- "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "cli-truncate": "^0.2.1",
- "elegant-spinner": "^1.0.1",
- "figures": "^1.7.0",
- "indent-string": "^3.0.0",
- "log-symbols": "^1.0.2",
- "log-update": "^2.3.0",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://npm.kari.com/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "log-symbols": {
- "version": "1.0.2",
- "resolved": "https://npm.kari.com/log-symbols/-/log-symbols-1.0.2.tgz",
- "integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://npm.kari.com/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
- "dev": true
- }
- }
- },
- "listr-verbose-renderer": {
- "version": "0.5.0",
- "resolved": "https://npm.kari.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
- "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.1",
- "cli-cursor": "^2.1.0",
- "date-fns": "^1.27.2",
- "figures": "^2.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://npm.kari.com/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://npm.kari.com/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://npm.kari.com/figures/-/figures-2.0.0.tgz",
- "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://npm.kari.com/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "log-symbols": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/log-symbols/-/log-symbols-3.0.0.tgz",
- "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
- "dev": true,
- "requires": {
- "chalk": "^2.4.2"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://npm.kari.com/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://npm.kari.com/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://npm.kari.com/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://npm.kari.com/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://npm.kari.com/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "log-update": {
- "version": "2.3.0",
- "resolved": "https://npm.kari.com/log-update/-/log-update-2.3.0.tgz",
- "integrity": "sha1-iDKP19HOeTiykoN0bwsbwSayRwg=",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.0.0",
- "cli-cursor": "^2.0.0",
- "wrap-ansi": "^3.0.1"
- }
- },
"micromatch": {
"version": "4.0.2",
- "resolved": "https://npm.kari.com/micromatch/-/micromatch-4.0.2.tgz",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz",
"integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==",
"dev": true,
"requires": {
@@ -11037,174 +11508,111 @@
"picomatch": "^2.0.5"
}
},
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://npm.kari.com/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
"ms": {
"version": "2.1.2",
- "resolved": "https://npm.kari.com/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "npm-run-path": {
- "version": "4.0.0",
- "resolved": "https://npm.kari.com/npm-run-path/-/npm-run-path-4.0.0.tgz",
- "integrity": "sha512-8eyAOAH+bYXFPSnNnKr3J+yoybe8O87Is5rtAQ8qRczJz1ajcsjg8l2oZqP+Ppx15Ii3S1vUTjQN2h4YO2tWWQ==",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "path-key": "^3.0.0"
+ "has-flag": "^4.0.0"
}
},
- "onetime": {
- "version": "5.1.0",
- "resolved": "https://npm.kari.com/onetime/-/onetime-5.1.0.tgz",
- "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"dev": true,
"requires": {
- "mimic-fn": "^2.1.0"
+ "is-number": "^7.0.0"
}
- },
- "p-finally": {
- "version": "2.0.1",
- "resolved": "https://npm.kari.com/p-finally/-/p-finally-2.0.1.tgz",
- "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==",
- "dev": true
- },
- "p-map": {
- "version": "2.1.0",
- "resolved": "https://npm.kari.com/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://npm.kari.com/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/pump/-/pump-3.0.0.tgz",
- "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+ }
+ }
+ },
+ "listr2": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.2.3.tgz",
+ "integrity": "sha512-vUb80S2dSUi8YxXahO8/I/s29GqnOL8ozgHVLjfWQXa03BNEeS1TpBLjh2ruaqq5ufx46BRGvfymdBSuoXET5w==",
+ "dev": true,
+ "requires": {
+ "chalk": "^4.1.0",
+ "cli-truncate": "^2.1.0",
+ "figures": "^3.2.0",
+ "indent-string": "^4.0.0",
+ "log-update": "^4.0.0",
+ "p-map": "^4.0.0",
+ "rxjs": "^6.6.3",
+ "through": "^2.3.8"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
+ "color-convert": "^2.0.1"
}
},
- "rxjs": {
- "version": "6.5.3",
- "resolved": "https://npm.kari.com/rxjs/-/rxjs-6.5.3.tgz",
- "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
- "tslib": "^1.9.0"
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
}
},
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://npm.kari.com/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
- "shebang-regex": "^3.0.0"
+ "color-name": "~1.1.4"
}
},
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://npm.kari.com/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://npm.kari.com/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://npm.kari.com/supports-color/-/supports-color-7.1.0.tgz",
- "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://npm.kari.com/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "figures": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
+ "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==",
"dev": true,
"requires": {
- "is-number": "^7.0.0"
+ "escape-string-regexp": "^1.0.5"
}
},
- "which": {
- "version": "2.0.2",
- "resolved": "https://npm.kari.com/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
},
- "wrap-ansi": {
- "version": "3.0.1",
- "resolved": "https://npm.kari.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz",
- "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=",
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
- "string-width": "^2.1.1",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
+ "has-flag": "^4.0.0"
}
}
}
},
- "listr-silent-renderer": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz",
- "integrity": "sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4=",
- "dev": true
- },
"load-json-file": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/load-json-file/-/load-json-file-1.1.0.tgz",
"integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
"dev": true,
"requires": {
@@ -11252,11 +11660,31 @@
"integrity": "sha512-iesFYPmxYYGTcmQK0sL8bX3TGHyM6b2qREaB4kamHfQyfPJP0xgoGxp19nsH16nsfquLdiyKyX3mQkfiSGV8Rg==",
"dev": true
},
+ "lodash.get": {
+ "version": "4.4.2",
+ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
+ "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
+ },
+ "lodash.has": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz",
+ "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI="
+ },
"lodash.padend": {
"version": "4.6.1",
"resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz",
"integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4="
},
+ "lodash.set": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
+ "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM="
+ },
+ "lodash.unset": {
+ "version": "4.5.2",
+ "resolved": "https://registry.npmjs.org/lodash.unset/-/lodash.unset-4.5.2.tgz",
+ "integrity": "sha1-Nw0dPoW3Kn4bDN8tJyEhMG8j5O0="
+ },
"log-symbols": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz",
@@ -11267,12 +11695,11 @@
},
"dependencies": {
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -11300,6 +11727,168 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
+ }
+ },
+ "log-update": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
+ "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
+ "dev": true,
+ "requires": {
+ "ansi-escapes": "^4.3.0",
+ "cli-cursor": "^3.1.0",
+ "slice-ansi": "^4.0.0",
+ "wrap-ansi": "^6.2.0"
+ },
+ "dependencies": {
+ "ansi-escapes": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz",
+ "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==",
+ "dev": true,
+ "requires": {
+ "type-fest": "^0.11.0"
+ }
+ },
+ "ansi-regex": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ },
+ "mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true
+ },
+ "onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "requires": {
+ "mimic-fn": "^2.1.0"
+ }
+ },
+ "restore-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
+ "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
+ "dev": true,
+ "requires": {
+ "onetime": "^5.1.0",
+ "signal-exit": "^3.0.2"
+ }
+ },
+ "slice-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
+ "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ }
+ },
+ "string-width": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
+ "dev": true,
+ "requires": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "^5.0.0"
+ }
+ },
+ "type-fest": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz",
+ "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==",
+ "dev": true
+ },
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
}
}
},
@@ -11311,7 +11900,7 @@
},
"loose-envify": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "resolved": "https://npm.kari.com/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"requires": {
"js-tokens": "^3.0.0 || ^4.0.0"
@@ -11319,7 +11908,7 @@
},
"loud-rejection": {
"version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
+ "resolved": "https://npm.kari.com/loud-rejection/-/loud-rejection-1.6.0.tgz",
"integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
"dev": true,
"requires": {
@@ -11329,7 +11918,7 @@
},
"lower-case": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/lower-case/-/lower-case-2.0.1.tgz",
"integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==",
"dev": true,
"requires": {
@@ -11360,38 +11949,105 @@
"yallist": "^2.1.2"
}
},
+ "lzma-native": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/lzma-native/-/lzma-native-6.0.1.tgz",
+ "integrity": "sha512-O6oWF0xe1AFvOCjU8uOZBZ/lhjaMNwHfVNaqVMqmoQXlRwBcFWpCAToiZOdXcKVMdo/5s/D0a2QgA5laMErxHQ==",
+ "dev": true,
+ "requires": {
+ "node-addon-api": "^1.6.0",
+ "node-pre-gyp": "^0.11.0",
+ "readable-stream": "^2.3.5",
+ "rimraf": "^2.7.1"
+ },
+ "dependencies": {
+ "glob": {
+ "version": "7.1.6",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ }
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+ "dev": true
+ },
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "dev": true,
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"requires": {
- "pify": "^3.0.0"
+ "semver": "^6.0.0"
},
"dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
"map-cache": {
"version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+ "resolved": "https://npm.kari.com/map-cache/-/map-cache-0.2.2.tgz",
"integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
"dev": true
},
"map-obj": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/map-obj/-/map-obj-1.0.1.tgz",
"integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
"dev": true
},
"map-visit": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/map-visit/-/map-visit-1.0.0.tgz",
"integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
"dev": true,
"requires": {
@@ -11430,13 +12086,13 @@
},
"media-typer": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
+ "resolved": "https://npm.kari.com/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
"dev": true
},
"memory-fs": {
"version": "0.4.1",
- "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+ "resolved": "https://npm.kari.com/memory-fs/-/memory-fs-0.4.1.tgz",
"integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
"dev": true,
"requires": {
@@ -11478,7 +12134,7 @@
},
"meow": {
"version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
+ "resolved": "https://npm.kari.com/meow/-/meow-3.7.0.tgz",
"integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
"dev": true,
"requires": {
@@ -11496,7 +12152,7 @@
},
"merge-descriptors": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
"dev": true
},
@@ -11514,13 +12170,13 @@
},
"methods": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
"dev": true
},
"micromatch": {
"version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+ "resolved": "https://npm.kari.com/micromatch/-/micromatch-3.1.10.tgz",
"integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
"dev": true,
"requires": {
@@ -11591,7 +12247,7 @@
},
"minimalistic-assert": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
"integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
"dev": true
},
@@ -11603,7 +12259,7 @@
},
"minimatch": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+ "resolved": "https://npm.kari.com/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"requires": {
"brace-expansion": "^1.1.7"
@@ -11633,7 +12289,7 @@
},
"minipass-collect": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/minipass-collect/-/minipass-collect-1.0.2.tgz",
"integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==",
"dev": true,
"requires": {
@@ -11642,7 +12298,7 @@
},
"minipass-flush": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz",
+ "resolved": "https://npm.kari.com/minipass-flush/-/minipass-flush-1.0.5.tgz",
"integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==",
"dev": true,
"requires": {
@@ -11678,7 +12334,7 @@
},
"mixin-deep": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+ "resolved": "https://npm.kari.com/mixin-deep/-/mixin-deep-1.3.2.tgz",
"integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
"dev": true,
"requires": {
@@ -11688,7 +12344,7 @@
"dependencies": {
"is-extendable": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/is-extendable/-/is-extendable-1.0.1.tgz",
"integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
"dev": true,
"requires": {
@@ -11729,35 +12385,9 @@
}
}
},
- "mobx-state-router": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/mobx-state-router/-/mobx-state-router-4.0.3.tgz",
- "integrity": "sha512-rZWjUQjEz2t8kGuxhzt4AnX5OnHLCgjOQiBf4GYwPKuQ9plflZy9H2/MNlOFOFE29LrhlZWn+YiMKr0kuzLNMQ==",
- "requires": {
- "path-to-regexp": "^2.4.0",
- "query-string": "^5.1.1"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-2.4.0.tgz",
- "integrity": "sha512-G6zHoVqC6GGTQkZwF4lkuEyMbVOjoBKAEybQUypI1WTkqinCOrq2x6U2+phkJ1XsEMTy4LjtwPI7HW+NVrRR2w=="
- },
- "query-string": {
- "version": "5.1.1",
- "resolved": "http://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
- "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==",
- "requires": {
- "decode-uri-component": "^0.2.0",
- "object-assign": "^4.1.0",
- "strict-uri-encode": "^1.0.0"
- }
- }
- }
- },
"move-concurrently": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/move-concurrently/-/move-concurrently-1.0.1.tgz",
"integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
"dev": true,
"requires": {
@@ -11771,13 +12401,13 @@
},
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
},
"multicast-dns": {
"version": "6.2.3",
- "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+ "resolved": "https://npm.kari.com/multicast-dns/-/multicast-dns-6.2.3.tgz",
"integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
"dev": true,
"requires": {
@@ -11787,7 +12417,7 @@
},
"multicast-dns-service-types": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz",
"integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
"dev": true
},
@@ -11798,7 +12428,7 @@
},
"nanomatch": {
"version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+ "resolved": "https://npm.kari.com/nanomatch/-/nanomatch-1.2.13.tgz",
"integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
"dev": true,
"requires": {
@@ -11817,7 +12447,7 @@
},
"native-ext-loader": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/native-ext-loader/-/native-ext-loader-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/native-ext-loader/-/native-ext-loader-2.3.0.tgz",
"integrity": "sha512-awBQEfD25+YLi1voefLbjHiUt0yfm3Z4mBOLqbzFVR8ZOVv0MebeN9fhNiY0fxVEFiyBYtr/hF2VWfuMSCfFlw==",
"dev": true
},
@@ -11827,9 +12457,37 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
+ "needle": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz",
+ "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==",
+ "dev": true,
+ "requires": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "dev": true,
+ "requires": {
+ "ms": "^2.1.1"
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true
+ }
+ }
+ },
"negotiator": {
"version": "0.6.2",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+ "resolved": "https://npm.kari.com/negotiator/-/negotiator-0.6.2.tgz",
"integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
"dev": true
},
@@ -11862,11 +12520,6 @@
"validate-npm-package-name": "^3.0.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
- },
"chalk": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz",
@@ -11882,49 +12535,6 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz",
"integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE="
},
- "inquirer": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
- "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
- "requires": {
- "ansi-escapes": "^3.0.0",
- "chalk": "^2.0.0",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^2.0.4",
- "figures": "^2.0.0",
- "lodash": "^4.3.0",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rx-lite": "^4.0.8",
- "rx-lite-aggregates": "^4.0.8",
- "string-width": "^2.1.0",
- "strip-ansi": "^4.0.0",
- "through": "^2.3.6"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- },
"supports-color": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz",
@@ -11943,7 +12553,7 @@
},
"no-case": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz",
+ "resolved": "https://npm.kari.com/no-case/-/no-case-3.0.3.tgz",
"integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==",
"dev": true,
"requires": {
@@ -11960,14 +12570,20 @@
}
},
"node-abi": {
- "version": "2.19.1",
- "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.1.tgz",
- "integrity": "sha512-HbtmIuByq44yhAzK7b9j/FelKlHYISKQn0mtvcBrU5QBkhoCMp5bu8Hv5AI34DcKfOAcJBcOEMwLlwO62FFu9A==",
+ "version": "2.19.3",
+ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz",
+ "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==",
"dev": true,
"requires": {
"semver": "^5.4.1"
}
},
+ "node-addon-api": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz",
+ "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==",
+ "dev": true
+ },
"node-forge": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
@@ -12096,15 +12712,21 @@
}
},
"node-loader": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-1.0.1.tgz",
- "integrity": "sha512-0So+BicZSQaY4sLqeutdkXWiTsmr+QrlGtm5dn4OPJBcnZRmjupFbWnZbDLec95KQTZHAwt8+vk+nEIXzPHxGw==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-loader/-/node-loader-1.0.2.tgz",
+ "integrity": "sha512-myxAxpyMR7knjA4Uzwf3gjxaMtxSWj2vpm9o6AYWWxQ1S3XMBNeG2vzYcp/5eW03cBGfgSxyP+wntP8qhBJNhQ==",
"dev": true,
"requires": {
"loader-utils": "^2.0.0",
- "schema-utils": "^2.7.0"
+ "schema-utils": "^3.0.0"
},
"dependencies": {
+ "ajv-keywords": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
+ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
+ "dev": true
+ },
"big.js": {
"version": "5.2.2",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
@@ -12136,6 +12758,102 @@
"emojis-list": "^3.0.0",
"json5": "^2.1.2"
}
+ },
+ "schema-utils": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz",
+ "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==",
+ "dev": true,
+ "requires": {
+ "@types/json-schema": "^7.0.6",
+ "ajv": "^6.12.5",
+ "ajv-keywords": "^3.5.2"
+ }
+ }
+ }
+ },
+ "node-pre-gyp": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
+ "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
+ "dev": true,
+ "requires": {
+ "detect-libc": "^1.0.2",
+ "mkdirp": "^0.5.1",
+ "needle": "^2.2.1",
+ "nopt": "^4.0.1",
+ "npm-packlist": "^1.1.6",
+ "npmlog": "^4.0.2",
+ "rc": "^1.2.7",
+ "rimraf": "^2.6.1",
+ "semver": "^5.3.0",
+ "tar": "^4"
+ },
+ "dependencies": {
+ "chownr": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+ "dev": true
+ },
+ "fs-minipass": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.6.0"
+ }
+ },
+ "minipass": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.0"
+ }
+ },
+ "minizlib": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
+ "dev": true,
+ "requires": {
+ "minipass": "^2.9.0"
+ }
+ },
+ "nopt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
+ "dev": true,
+ "requires": {
+ "abbrev": "1",
+ "osenv": "^0.1.4"
+ }
+ },
+ "tar": {
+ "version": "4.4.13",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
+ "dev": true,
+ "requires": {
+ "chownr": "^1.1.1",
+ "fs-minipass": "^1.2.5",
+ "minipass": "^2.8.6",
+ "minizlib": "^1.2.1",
+ "mkdirp": "^0.5.0",
+ "safe-buffer": "^5.1.2",
+ "yallist": "^3.0.3"
+ }
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
}
}
},
@@ -12236,13 +12954,13 @@
},
"normalize-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true
},
"normalize-url": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+ "resolved": "https://npm.kari.com/normalize-url/-/normalize-url-1.9.1.tgz",
"integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
"dev": true,
"requires": {
@@ -12252,6 +12970,15 @@
"sort-keys": "^1.0.0"
}
},
+ "npm-bundled": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
+ "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
+ "dev": true,
+ "requires": {
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
"npm-conf": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
@@ -12272,9 +12999,26 @@
}
}
},
+ "npm-normalize-package-bin": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
+ "dev": true
+ },
+ "npm-packlist": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
+ "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
+ "dev": true,
+ "requires": {
+ "ignore-walk": "^3.0.1",
+ "npm-bundled": "^1.0.1",
+ "npm-normalize-package-bin": "^1.0.1"
+ }
+ },
"npm-run-path": {
"version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+ "resolved": "https://npm.kari.com/npm-run-path/-/npm-run-path-2.0.2.tgz",
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
"dev": true,
"requires": {
@@ -12283,7 +13027,7 @@
},
"npmlog": {
"version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "resolved": "https://npm.kari.com/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"requires": {
@@ -12295,7 +13039,7 @@
},
"nth-check": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/nth-check/-/nth-check-1.0.2.tgz",
"integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
"dev": true,
"requires": {
@@ -12304,18 +13048,18 @@
},
"number-is-nan": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
"dev": true
},
"object-assign": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/object-assign/-/object-assign-4.1.1.tgz",
"integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
},
"object-copy": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+ "resolved": "https://npm.kari.com/object-copy/-/object-copy-0.1.0.tgz",
"integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
"dev": true,
"requires": {
@@ -12326,7 +13070,7 @@
"dependencies": {
"define-property": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
@@ -12335,7 +13079,7 @@
},
"kind-of": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
@@ -12352,7 +13096,7 @@
},
"object-is": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/object-is/-/object-is-1.1.2.tgz",
"integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==",
"dev": true,
"requires": {
@@ -12362,13 +13106,13 @@
},
"object-keys": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true
},
"object-visit": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/object-visit/-/object-visit-1.0.1.tgz",
"integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
"dev": true,
"requires": {
@@ -12489,7 +13233,7 @@
},
"object.getownpropertydescriptors": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz",
"integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==",
"dev": true,
"requires": {
@@ -12499,7 +13243,7 @@
},
"object.pick": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+ "resolved": "https://npm.kari.com/object.pick/-/object.pick-1.3.0.tgz",
"integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
"dev": true,
"requires": {
@@ -12508,13 +13252,13 @@
},
"obuf": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/obuf/-/obuf-1.1.2.tgz",
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
"on-finished": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"dev": true,
"requires": {
@@ -12523,13 +13267,13 @@
},
"on-headers": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/on-headers/-/on-headers-1.0.2.tgz",
"integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
"dev": true
},
"once": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "resolved": "https://npm.kari.com/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
@@ -12551,7 +13295,7 @@
},
"opn": {
"version": "5.5.0",
- "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+ "resolved": "https://npm.kari.com/opn/-/opn-5.5.0.tgz",
"integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
"dev": true,
"requires": {
@@ -12573,17 +13317,17 @@
}
},
"ora": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz",
- "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ora/-/ora-5.2.0.tgz",
+ "integrity": "sha512-+wG2v8TUU8EgzPHun1k/n45pXquQ9fHnbXVetl9rRgO6kjZszGGbraF3XPTIdgeA+s1lbRjSEftAnyT0w8ZMvQ==",
"dev": true,
"requires": {
+ "bl": "^4.0.3",
"chalk": "^4.1.0",
"cli-cursor": "^3.1.0",
- "cli-spinners": "^2.4.0",
+ "cli-spinners": "^2.5.0",
"is-interactive": "^1.0.0",
"log-symbols": "^4.0.0",
- "mute-stream": "0.0.8",
"strip-ansi": "^6.0.0",
"wcwidth": "^1.0.1"
},
@@ -12595,12 +13339,11 @@
"dev": true
},
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -12644,12 +13387,6 @@
"integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
"dev": true
},
- "mute-stream": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
- "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
- "dev": true
- },
"onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@@ -12677,12 +13414,21 @@
"requires": {
"ansi-regex": "^5.0.0"
}
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
"original": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/original/-/original-1.0.2.tgz",
"integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
"dev": true,
"requires": {
@@ -12697,18 +13443,18 @@
},
"os-homedir": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/os-homedir/-/os-homedir-1.0.2.tgz",
"integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
"dev": true
},
"os-tmpdir": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
"integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
},
"osenv": {
"version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+ "resolved": "https://npm.kari.com/osenv/-/osenv-0.1.5.tgz",
"integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"requires": {
@@ -12716,9 +13462,15 @@
"os-tmpdir": "^1.0.0"
}
},
+ "p-cancelable": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+ "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+ "dev": true
+ },
"p-finally": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/p-finally/-/p-finally-1.0.0.tgz",
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
"dev": true
},
@@ -12762,7 +13514,7 @@
},
"p-retry": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+ "resolved": "https://npm.kari.com/p-retry/-/p-retry-3.0.1.tgz",
"integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
"dev": true,
"requires": {
@@ -12846,7 +13598,7 @@
},
"param-case": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz",
+ "resolved": "https://npm.kari.com/param-case/-/param-case-3.0.3.tgz",
"integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==",
"dev": true,
"requires": {
@@ -12895,19 +13647,19 @@
},
"parse-passwd": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/parse-passwd/-/parse-passwd-1.0.0.tgz",
"integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
"dev": true
},
"parseurl": {
"version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+ "resolved": "https://npm.kari.com/parseurl/-/parseurl-1.3.3.tgz",
"integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
"dev": true
},
"pascal-case": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz",
+ "resolved": "https://npm.kari.com/pascal-case/-/pascal-case-3.1.1.tgz",
"integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==",
"dev": true,
"requires": {
@@ -12925,7 +13677,7 @@
},
"pascalcase": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+ "resolved": "https://npm.kari.com/pascalcase/-/pascalcase-0.1.1.tgz",
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
@@ -12937,7 +13689,7 @@
},
"path-dirname": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/path-dirname/-/path-dirname-1.0.2.tgz",
"integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
"dev": true
},
@@ -12952,18 +13704,18 @@
},
"path-is-absolute": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/path-is-inside/-/path-is-inside-1.0.2.tgz",
"integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
"dev": true
},
"path-key": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/path-key/-/path-key-2.0.1.tgz",
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
@@ -13011,7 +13763,7 @@
},
"performance-now": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
"dev": true
},
@@ -13028,13 +13780,13 @@
},
"pinkie": {
"version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
+ "resolved": "https://npm.kari.com/pinkie/-/pinkie-2.0.4.tgz",
"integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
"dev": true
},
"pinkie-promise": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"dev": true,
"requires": {
@@ -13077,6 +13829,27 @@
"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,
+ "optional": true,
+ "requires": {
+ "base64-js": "^1.2.3",
+ "xmlbuilder": "^9.0.7",
+ "xmldom": "0.1.x"
+ },
+ "dependencies": {
+ "xmlbuilder": {
+ "version": "9.0.7",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
+ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=",
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
"portfinder": {
"version": "1.0.28",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
@@ -13116,7 +13889,7 @@
},
"posix-character-classes": {
"version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+ "resolved": "https://npm.kari.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
"dev": true
},
@@ -13238,7 +14011,7 @@
},
"prepend-http": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/prepend-http/-/prepend-http-1.0.4.tgz",
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
"dev": true
},
@@ -13259,7 +14032,7 @@
},
"pretty-error": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/pretty-error/-/pretty-error-2.1.1.tgz",
"integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
"dev": true,
"requires": {
@@ -13287,17 +14060,25 @@
},
"promise-inflight": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true
},
"prop-types": {
- "version": "15.6.2",
- "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
- "integrity": "sha512-3pboPvLiWD7dkI3qf3KbUe6hKFKa52w+AE0VCqECtf+QHAKgOL37tTaNCnuX1nAAQ4ZhyP+kYVKf8rLmJ/feDQ==",
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
"requires": {
- "loose-envify": "^1.3.1",
- "object-assign": "^4.1.1"
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ },
+ "dependencies": {
+ "react-is": {
+ "version": "16.13.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
+ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="
+ }
}
},
"proto-list": {
@@ -13309,7 +14090,7 @@
},
"proxy-addr": {
"version": "2.0.6",
- "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+ "resolved": "https://npm.kari.com/proxy-addr/-/proxy-addr-2.0.6.tgz",
"integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
"dev": true,
"requires": {
@@ -13319,19 +14100,19 @@
},
"prr": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/prr/-/prr-1.0.1.tgz",
"integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
"dev": true
},
"pseudomap": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/pseudomap/-/pseudomap-1.0.2.tgz",
"integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
"dev": true
},
"psl": {
"version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
+ "resolved": "https://npm.kari.com/psl/-/psl-1.8.0.tgz",
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
"dev": true
},
@@ -13359,7 +14140,7 @@
},
"pump": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/pump/-/pump-2.0.1.tgz",
"integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
"dev": true,
"requires": {
@@ -13369,7 +14150,7 @@
},
"pumpify": {
"version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+ "resolved": "https://npm.kari.com/pumpify/-/pumpify-1.5.1.tgz",
"integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
"dev": true,
"requires": {
@@ -13384,6 +14165,15 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
+ "pupa": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz",
+ "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==",
+ "dev": true,
+ "requires": {
+ "escape-goat": "^2.0.0"
+ }
+ },
"qs": {
"version": "6.7.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@@ -13402,7 +14192,7 @@
},
"querystring": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+ "resolved": "https://npm.kari.com/querystring/-/querystring-0.2.0.tgz",
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
"dev": true
},
@@ -13418,6 +14208,12 @@
"integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
"dev": true
},
+ "quick-lru": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
+ "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
+ "dev": true
+ },
"quickly-copy-file": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/quickly-copy-file/-/quickly-copy-file-1.0.0.tgz",
@@ -13428,7 +14224,7 @@
},
"randombytes": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/randombytes/-/randombytes-2.1.0.tgz",
"integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
"dev": true,
"requires": {
@@ -13447,13 +14243,13 @@
},
"range-parser": {
"version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "resolved": "https://npm.kari.com/range-parser/-/range-parser-1.2.1.tgz",
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"dev": true
},
"raw-body": {
"version": "2.4.0",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+ "resolved": "https://npm.kari.com/raw-body/-/raw-body-2.4.0.tgz",
"integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
"dev": true,
"requires": {
@@ -13465,7 +14261,7 @@
"dependencies": {
"bytes": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
"dev": true
},
@@ -13493,25 +14289,24 @@
}
},
"react": {
- "version": "16.5.2",
- "resolved": "https://registry.npmjs.org/react/-/react-16.5.2.tgz",
- "integrity": "sha512-FDCSVd3DjVTmbEAjUNX6FgfAmQ+ypJfHUsqUJOYNCBUp1h8lqmtC+0mXJ+JjsWx4KAVTkk1vKd1hLQPvEviSuw==",
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz",
+ "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
- "prop-types": "^15.6.2",
- "schedule": "^0.5.0"
+ "prop-types": "^15.6.2"
}
},
"react-dom": {
- "version": "16.5.2",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.5.2.tgz",
- "integrity": "sha512-RC8LDw8feuZOHVgzEf7f+cxBr/DnKdqp56VU0lAs1f4UfKc4cU8wU4fTq/mgnvynLQo8OtlPC19NUFh/zjZPuA==",
+ "version": "16.14.0",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz",
+ "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==",
"requires": {
"loose-envify": "^1.1.0",
"object-assign": "^4.1.1",
"prop-types": "^15.6.2",
- "schedule": "^0.5.0"
+ "scheduler": "^0.19.1"
}
},
"react-is": {
@@ -13521,46 +14316,9 @@
},
"react-lifecycles-compat": {
"version": "3.0.4",
- "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
+ "resolved": "https://npm.kari.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz",
"integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA=="
},
- "react-router": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz",
- "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==",
- "requires": {
- "history": "^4.7.2",
- "hoist-non-react-statics": "^2.5.0",
- "invariant": "^2.2.4",
- "loose-envify": "^1.3.1",
- "path-to-regexp": "^1.7.0",
- "prop-types": "^15.6.1",
- "warning": "^4.0.1"
- },
- "dependencies": {
- "path-to-regexp": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.7.0.tgz",
- "integrity": "sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=",
- "requires": {
- "isarray": "0.0.1"
- }
- }
- }
- },
- "react-router-dom": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz",
- "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==",
- "requires": {
- "history": "^4.7.2",
- "invariant": "^2.2.4",
- "loose-envify": "^1.3.1",
- "prop-types": "^15.6.1",
- "react-router": "^4.3.1",
- "warning": "^4.0.1"
- }
- },
"read-config-file": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-4.0.1.tgz",
@@ -13623,7 +14381,7 @@
},
"read-pkg-up": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
"integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
"dev": true,
"requires": {
@@ -13645,7 +14403,7 @@
},
"redent": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/redent/-/redent-1.0.0.tgz",
"integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
"dev": true,
"requires": {
@@ -13660,7 +14418,7 @@
},
"redux": {
"version": "3.7.2",
- "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz",
+ "resolved": "https://npm.kari.com/redux/-/redux-3.7.2.tgz",
"integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==",
"dev": true,
"requires": {
@@ -13672,19 +14430,25 @@
},
"regenerate": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+ "resolved": "https://npm.kari.com/regenerate/-/regenerate-1.4.0.tgz",
"integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
"dev": true
},
"regenerate-unicode-properties": {
"version": "8.2.0",
- "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
+ "resolved": "https://npm.kari.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz",
"integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==",
"dev": true,
"requires": {
"regenerate": "^1.4.0"
}
},
+ "regenerator-runtime": {
+ "version": "0.11.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+ "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==",
+ "dev": true
+ },
"regenerator-transform": {
"version": "0.14.5",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz",
@@ -13713,7 +14477,7 @@
},
"regex-not": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/regex-not/-/regex-not-1.0.2.tgz",
"integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
"dev": true,
"requires": {
@@ -13723,7 +14487,7 @@
},
"regexp.prototype.flags": {
"version": "1.3.0",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
+ "resolved": "https://npm.kari.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz",
"integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==",
"dev": true,
"requires": {
@@ -13738,13 +14502,12 @@
"dev": true
},
"registry-auth-token": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz",
- "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz",
+ "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==",
"dev": true,
"requires": {
- "rc": "^1.2.8",
- "safe-buffer": "^5.0.1"
+ "rc": "^1.2.8"
}
},
"registry-url": {
@@ -13758,19 +14521,19 @@
},
"relateurl": {
"version": "0.2.7",
- "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+ "resolved": "https://npm.kari.com/relateurl/-/relateurl-0.2.7.tgz",
"integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
"dev": true
},
"remove-trailing-separator": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
"renderkid": {
"version": "2.0.3",
- "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
+ "resolved": "https://npm.kari.com/renderkid/-/renderkid-2.0.3.tgz",
"integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
"dev": true,
"requires": {
@@ -13807,13 +14570,13 @@
},
"domelementtype": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/domelementtype/-/domelementtype-1.3.1.tgz",
"integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
"dev": true
},
"domhandler": {
"version": "2.4.2",
- "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+ "resolved": "https://npm.kari.com/domhandler/-/domhandler-2.4.2.tgz",
"integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
"dev": true,
"requires": {
@@ -13822,7 +14585,7 @@
},
"domutils": {
"version": "1.7.0",
- "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+ "resolved": "https://npm.kari.com/domutils/-/domutils-1.7.0.tgz",
"integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
"dev": true,
"requires": {
@@ -13832,13 +14595,13 @@
},
"entities": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/entities/-/entities-1.1.2.tgz",
"integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
"dev": true
},
"htmlparser2": {
"version": "3.10.1",
- "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+ "resolved": "https://npm.kari.com/htmlparser2/-/htmlparser2-3.10.1.tgz",
"integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
"dev": true,
"requires": {
@@ -13852,7 +14615,7 @@
},
"readable-stream": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "resolved": "https://npm.kari.com/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"requires": {
@@ -13886,13 +14649,13 @@
},
"repeat-string": {
"version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+ "resolved": "https://npm.kari.com/repeat-string/-/repeat-string-1.6.1.tgz",
"integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
"dev": true
},
"repeating": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/repeating/-/repeating-2.0.1.tgz",
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
@@ -13901,7 +14664,7 @@
},
"request": {
"version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
+ "resolved": "https://npm.kari.com/request/-/request-2.88.2.tgz",
"integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
"dev": true,
"requires": {
@@ -13971,13 +14734,13 @@
},
"require-directory": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
},
"requires-port": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/requires-port/-/requires-port-1.0.0.tgz",
"integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
"dev": true
},
@@ -13990,9 +14753,15 @@
"path-parse": "^1.0.5"
}
},
+ "resolve-alpn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz",
+ "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==",
+ "dev": true
+ },
"resolve-cwd": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
"integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
"dev": true,
"requires": {
@@ -14001,7 +14770,7 @@
},
"resolve-dir": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/resolve-dir/-/resolve-dir-1.0.1.tgz",
"integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
"dev": true,
"requires": {
@@ -14011,18 +14780,13 @@
},
"resolve-from": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/resolve-from/-/resolve-from-3.0.0.tgz",
"integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
"dev": true
},
- "resolve-pathname": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-2.2.0.tgz",
- "integrity": "sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg=="
- },
"resolve-url": {
"version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+ "resolved": "https://npm.kari.com/resolve-url/-/resolve-url-0.2.1.tgz",
"integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
"dev": true
},
@@ -14046,13 +14810,13 @@
},
"ret": {
"version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+ "resolved": "https://npm.kari.com/ret/-/ret-0.1.15.tgz",
"integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
"dev": true
},
"retry": {
"version": "0.12.0",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+ "resolved": "https://npm.kari.com/retry/-/retry-0.12.0.tgz",
"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
"dev": true
},
@@ -14131,7 +14895,7 @@
},
"run-queue": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/run-queue/-/run-queue-1.0.3.tgz",
"integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
"dev": true,
"requires": {
@@ -14151,15 +14915,24 @@
"rx-lite": "*"
}
},
+ "rxjs": {
+ "version": "6.6.3",
+ "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz",
+ "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==",
+ "dev": true,
+ "requires": {
+ "tslib": "^1.9.0"
+ }
+ },
"safe-buffer": {
"version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "resolved": "https://npm.kari.com/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true
},
"safe-regex": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/safe-regex/-/safe-regex-1.1.0.tgz",
"integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
"dev": true,
"requires": {
@@ -14168,7 +14941,7 @@
},
"safer-buffer": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
},
"sanitize-filename": {
@@ -14431,11 +15204,12 @@
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true
},
- "schedule": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/schedule/-/schedule-0.5.0.tgz",
- "integrity": "sha512-HUcJicG5Ou8xfR//c2rPT0lPIRR09vVvN81T9fqfVgBmhERUbDEQoYKjpBxbueJnCPpSu2ujXzOnRQt6x9o/jw==",
+ "scheduler": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz",
+ "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==",
"requires": {
+ "loose-envify": "^1.1.0",
"object-assign": "^4.1.1"
}
},
@@ -14466,7 +15240,7 @@
},
"scss-tokenizer": {
"version": "0.2.3",
- "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
+ "resolved": "https://npm.kari.com/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz",
"integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=",
"dev": true,
"requires": {
@@ -14476,7 +15250,7 @@
"dependencies": {
"source-map": {
"version": "0.4.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz",
+ "resolved": "https://npm.kari.com/source-map/-/source-map-0.4.4.tgz",
"integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=",
"dev": true,
"requires": {
@@ -14487,7 +15261,7 @@
},
"select-hose": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/select-hose/-/select-hose-2.0.0.tgz",
"integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
"dev": true
},
@@ -14507,22 +15281,30 @@
},
"semver-compare": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/semver-compare/-/semver-compare-1.0.0.tgz",
"integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
"dev": true
},
"semver-diff": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz",
- "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz",
+ "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==",
"dev": true,
"requires": {
- "semver": "^5.0.3"
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"send": {
"version": "0.17.1",
- "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+ "resolved": "https://npm.kari.com/send/-/send-0.17.1.tgz",
"integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
"dev": true,
"requires": {
@@ -14543,7 +15325,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -14552,7 +15334,7 @@
"dependencies": {
"ms": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
"dev": true
}
@@ -14560,7 +15342,7 @@
},
"ms": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.1.1.tgz",
"integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
"dev": true
}
@@ -14596,7 +15378,7 @@
},
"serve-index": {
"version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
+ "resolved": "https://npm.kari.com/serve-index/-/serve-index-1.9.1.tgz",
"integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
"dev": true,
"requires": {
@@ -14611,7 +15393,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -14620,7 +15402,7 @@
},
"http-errors": {
"version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
+ "resolved": "https://npm.kari.com/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"dev": true,
"requires": {
@@ -14632,7 +15414,7 @@
},
"setprototypeof": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
"dev": true
}
@@ -14640,7 +15422,7 @@
},
"serve-static": {
"version": "1.14.1",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+ "resolved": "https://npm.kari.com/serve-static/-/serve-static-1.14.1.tgz",
"integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
"dev": true,
"requires": {
@@ -14652,13 +15434,13 @@
},
"set-blocking": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
"dev": true
},
"set-value": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/set-value/-/set-value-2.0.1.tgz",
"integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
"dev": true,
"requires": {
@@ -14670,7 +15452,7 @@
"dependencies": {
"extend-shallow": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
@@ -14687,7 +15469,7 @@
},
"setprototypeof": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/setprototypeof/-/setprototypeof-1.1.1.tgz",
"integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
"dev": true
},
@@ -14703,7 +15485,7 @@
},
"shebang-command": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/shebang-command/-/shebang-command-1.2.0.tgz",
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
"dev": true,
"requires": {
@@ -14712,7 +15494,7 @@
},
"shebang-regex": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/shebang-regex/-/shebang-regex-1.0.0.tgz",
"integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
"dev": true
},
@@ -14727,15 +15509,65 @@
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
- "slice-ansi": {
- "version": "0.0.4",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz",
- "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=",
- "dev": true
+ "slice-ansi": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz",
+ "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.0.0",
+ "astral-regex": "^2.0.0",
+ "is-fullwidth-code-point": "^3.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "astral-regex": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
+ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
+ "dev": true
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true
+ }
+ }
+ },
+ "smart-buffer": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz",
+ "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==",
+ "dev": true,
+ "optional": true
},
"snapdragon": {
"version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+ "resolved": "https://npm.kari.com/snapdragon/-/snapdragon-0.8.2.tgz",
"integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
"dev": true,
"requires": {
@@ -14751,7 +15583,7 @@
"dependencies": {
"debug": {
"version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": {
@@ -14760,7 +15592,7 @@
},
"define-property": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
@@ -14769,7 +15601,7 @@
},
"extend-shallow": {
"version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+ "resolved": "https://npm.kari.com/extend-shallow/-/extend-shallow-2.0.1.tgz",
"integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
"dev": true,
"requires": {
@@ -14778,7 +15610,7 @@
},
"source-map": {
"version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "resolved": "https://npm.kari.com/source-map/-/source-map-0.5.7.tgz",
"integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
"dev": true
}
@@ -14786,7 +15618,7 @@
},
"snapdragon-node": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
"integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
"dev": true,
"requires": {
@@ -14797,7 +15629,7 @@
"dependencies": {
"define-property": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-1.0.0.tgz",
"integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
"dev": true,
"requires": {
@@ -14806,7 +15638,7 @@
},
"is-accessor-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
"integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
"dev": true,
"requires": {
@@ -14815,7 +15647,7 @@
},
"is-data-descriptor": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
"integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
"dev": true,
"requires": {
@@ -14824,7 +15656,7 @@
},
"is-descriptor": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/is-descriptor/-/is-descriptor-1.0.2.tgz",
"integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
"dev": true,
"requires": {
@@ -14837,7 +15669,7 @@
},
"snapdragon-util": {
"version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+ "resolved": "https://npm.kari.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
"integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
"dev": true,
"requires": {
@@ -14846,7 +15678,7 @@
"dependencies": {
"kind-of": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
@@ -14857,7 +15689,7 @@
},
"sockjs": {
"version": "0.3.20",
- "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz",
+ "resolved": "https://npm.kari.com/sockjs/-/sockjs-0.3.20.tgz",
"integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==",
"dev": true,
"requires": {
@@ -14868,7 +15700,7 @@
"dependencies": {
"uuid": {
"version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+ "resolved": "https://npm.kari.com/uuid/-/uuid-3.4.0.tgz",
"integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
"dev": true
}
@@ -14876,7 +15708,7 @@
},
"sockjs-client": {
"version": "1.4.0",
- "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz",
+ "resolved": "https://npm.kari.com/sockjs-client/-/sockjs-client-1.4.0.tgz",
"integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==",
"dev": true,
"requires": {
@@ -14899,7 +15731,7 @@
},
"faye-websocket": {
"version": "0.11.3",
- "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+ "resolved": "https://npm.kari.com/faye-websocket/-/faye-websocket-0.11.3.tgz",
"integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
"dev": true,
"requires": {
@@ -14916,7 +15748,7 @@
},
"sort-keys": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/sort-keys/-/sort-keys-1.1.2.tgz",
"integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
"dev": true,
"requires": {
@@ -14931,7 +15763,7 @@
},
"source-map": {
"version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "resolved": "https://npm.kari.com/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
},
"source-map-resolve": {
@@ -14958,7 +15790,7 @@
},
"source-map-url": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+ "resolved": "https://npm.kari.com/source-map-url/-/source-map-url-0.4.0.tgz",
"integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
"dev": true
},
@@ -14978,7 +15810,7 @@
},
"spdx-expression-parse": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
"integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"requires": {
"spdx-exceptions": "^2.1.0",
@@ -14992,7 +15824,7 @@
},
"spdy": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+ "resolved": "https://npm.kari.com/spdy/-/spdy-4.0.2.tgz",
"integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
"dev": true,
"requires": {
@@ -15005,7 +15837,7 @@
"dependencies": {
"debug": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
@@ -15014,7 +15846,7 @@
},
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
}
@@ -15022,7 +15854,7 @@
},
"spdy-transport": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/spdy-transport/-/spdy-transport-3.0.0.tgz",
"integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
"dev": true,
"requires": {
@@ -15036,7 +15868,7 @@
"dependencies": {
"debug": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
@@ -15045,13 +15877,13 @@
},
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"readable-stream": {
"version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "resolved": "https://npm.kari.com/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"requires": {
@@ -15079,7 +15911,7 @@
},
"split-string": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/split-string/-/split-string-3.1.0.tgz",
"integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
"dev": true,
"requires": {
@@ -15088,13 +15920,13 @@
},
"sprintf-js": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/sprintf-js/-/sprintf-js-1.0.3.tgz",
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
"dev": true
},
"sshpk": {
"version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+ "resolved": "https://npm.kari.com/sshpk/-/sshpk-1.16.1.tgz",
"integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
"dev": true,
"requires": {
@@ -15119,14 +15951,14 @@
}
},
"stat-mode": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-0.3.0.tgz",
- "integrity": "sha512-QjMLR0A3WwFY2aZdV0okfFEJB5TRjkggXZjxP3A1RsWsNHNu3YPv8btmtc6iCFZ0Rul3FE93OYogvhOUClU+ng==",
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/stat-mode/-/stat-mode-1.0.0.tgz",
+ "integrity": "sha512-jH9EhtKIjuXZ2cWxmXS8ZP80XyC3iasQxMDV8jzhNJpfDb7VbQLVW4Wvsxz9QZvzV+G4YoSfBUVKDOyxLzi/sg==",
"dev": true
},
"static-extend": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/static-extend/-/static-extend-0.1.2.tgz",
"integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
"dev": true,
"requires": {
@@ -15136,7 +15968,7 @@
"dependencies": {
"define-property": {
"version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+ "resolved": "https://npm.kari.com/define-property/-/define-property-0.2.5.tgz",
"integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
"dev": true,
"requires": {
@@ -15147,13 +15979,13 @@
},
"statuses": {
"version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+ "resolved": "https://npm.kari.com/statuses/-/statuses-1.5.0.tgz",
"integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
"dev": true
},
"stdout-stream": {
"version": "1.4.1",
- "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz",
+ "resolved": "https://npm.kari.com/stdout-stream/-/stdout-stream-1.4.1.tgz",
"integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==",
"dev": true,
"requires": {
@@ -15236,7 +16068,7 @@
},
"stream-each": {
"version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+ "resolved": "https://npm.kari.com/stream-each/-/stream-each-1.2.3.tgz",
"integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
"dev": true,
"requires": {
@@ -15297,8 +16129,15 @@
},
"strict-uri-encode": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
- "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM="
+ "resolved": "https://npm.kari.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+ "dev": true
+ },
+ "string-argv": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz",
+ "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==",
+ "dev": true
},
"string-width": {
"version": "1.0.2",
@@ -15359,13 +16198,21 @@
},
"stringify-object": {
"version": "3.3.0",
- "resolved": "https://npm.kari.com/stringify-object/-/stringify-object-3.3.0.tgz",
+ "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
"integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
"dev": true,
"requires": {
"get-own-enumerable-property-symbols": "^3.0.0",
"is-obj": "^1.0.1",
"is-regexp": "^1.0.0"
+ },
+ "dependencies": {
+ "is-obj": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+ "dev": true
+ }
}
},
"strip-ansi": {
@@ -15379,7 +16226,7 @@
},
"strip-bom": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/strip-bom/-/strip-bom-2.0.0.tgz",
"integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
"dev": true,
"requires": {
@@ -15388,19 +16235,19 @@
},
"strip-eof": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/strip-eof/-/strip-eof-1.0.0.tgz",
"integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=",
"dev": true
},
"strip-final-newline": {
"version": "2.0.0",
- "resolved": "https://npm.kari.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
"integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
"strip-indent": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/strip-indent/-/strip-indent-1.0.1.tgz",
"integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
"dev": true,
"requires": {
@@ -15464,37 +16311,17 @@
"dev": true,
"requires": {
"debug": "^4.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
- "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
}
},
"supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+ "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+ "dev": true
},
"symbol-observable": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/symbol-observable/-/symbol-observable-1.2.0.tgz",
"integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
"dev": true
},
@@ -15597,6 +16424,12 @@
"wordwrapjs": "^3.0.0"
}
},
+ "tapable": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz",
+ "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==",
+ "dev": true
+ },
"tar": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
@@ -15609,9 +16442,9 @@
}
},
"temp-file": {
- "version": "3.3.4",
- "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.4.tgz",
- "integrity": "sha512-qSZ5W5q54iyGnP8cNl49RE0jTJc5CrzNocux5APD5yIxcgonoMuMSbsZfaZy8rTGCYo0Xz6ySVv3adagZ8gffg==",
+ "version": "3.3.7",
+ "resolved": "https://registry.npmjs.org/temp-file/-/temp-file-3.3.7.tgz",
+ "integrity": "sha512-9tBJKt7GZAQt/Rg0QzVWA8Am8c1EFl+CAv04/aBVqlx5oyfQ508sFIABshQ0xbZu6mBrFLWIUXO/bbLYghW70g==",
"dev": true,
"requires": {
"async-exit-hook": "^2.0.1",
@@ -15619,13 +16452,10 @@
}
},
"term-size": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz",
- "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=",
- "dev": true,
- "requires": {
- "execa": "^0.7.0"
- }
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.2.1.tgz",
+ "integrity": "sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==",
+ "dev": true
},
"terser": {
"version": "4.8.0",
@@ -15926,18 +16756,18 @@
},
"text-table": {
"version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
+ "resolved": "https://npm.kari.com/text-table/-/text-table-0.2.0.tgz",
"integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
"dev": true
},
"through": {
"version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+ "resolved": "https://npm.kari.com/through/-/through-2.3.8.tgz",
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
},
"through2": {
"version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "resolved": "https://npm.kari.com/through2/-/through2-2.0.5.tgz",
"integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
"dev": true,
"requires": {
@@ -15979,7 +16809,7 @@
},
"thunky": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/thunky/-/thunky-1.1.0.tgz",
"integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
"dev": true
},
@@ -15994,7 +16824,7 @@
},
"tmp": {
"version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "resolved": "https://npm.kari.com/tmp/-/tmp-0.0.33.tgz",
"integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
"requires": {
"os-tmpdir": "~1.0.2"
@@ -16006,9 +16836,15 @@
"integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
"dev": true
},
+ "to-fast-properties": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz",
+ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=",
+ "dev": true
+ },
"to-object-path": {
"version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+ "resolved": "https://npm.kari.com/to-object-path/-/to-object-path-0.3.0.tgz",
"integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
"dev": true,
"requires": {
@@ -16017,7 +16853,7 @@
"dependencies": {
"kind-of": {
"version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "resolved": "https://npm.kari.com/kind-of/-/kind-of-3.2.2.tgz",
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
@@ -16034,7 +16870,7 @@
},
"to-regex": {
"version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+ "resolved": "https://npm.kari.com/to-regex/-/to-regex-3.0.2.tgz",
"integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
"dev": true,
"requires": {
@@ -16056,7 +16892,7 @@
},
"toidentifier": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/toidentifier/-/toidentifier-1.0.0.tgz",
"integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
"dev": true
},
@@ -16067,13 +16903,13 @@
},
"trim-newlines": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/trim-newlines/-/trim-newlines-1.0.0.tgz",
"integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
"dev": true
},
"true-case-path": {
"version": "1.0.3",
- "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz",
+ "resolved": "https://npm.kari.com/true-case-path/-/true-case-path-1.0.3.tgz",
"integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
"dev": true,
"requires": {
@@ -16255,7 +17091,7 @@
},
"tunnel-agent": {
"version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+ "resolved": "https://npm.kari.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
"dev": true,
"requires": {
@@ -16264,7 +17100,7 @@
},
"tweetnacl": {
"version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+ "resolved": "https://npm.kari.com/tweetnacl/-/tweetnacl-0.14.5.tgz",
"integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
"dev": true
},
@@ -16278,14 +17114,14 @@
}
},
"type-fest": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
- "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
"dev": true
},
"type-is": {
"version": "1.6.18",
- "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+ "resolved": "https://npm.kari.com/type-is/-/type-is-1.6.18.tgz",
"integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
"dev": true,
"requires": {
@@ -16312,14 +17148,22 @@
},
"typedarray": {
"version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "resolved": "https://npm.kari.com/typedarray/-/typedarray-0.0.6.tgz",
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typedarray-to-buffer": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
+ "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
+ "requires": {
+ "is-typedarray": "^1.0.0"
+ }
+ },
"typescript": {
- "version": "3.7.2",
- "resolved": "https://npm.kari.com/typescript/-/typescript-3.7.2.tgz",
- "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
+ "version": "3.9.7",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.7.tgz",
+ "integrity": "sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw==",
"dev": true
},
"typical": {
@@ -16328,20 +17172,20 @@
"integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0="
},
"uglify-js": {
- "version": "3.10.3",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.10.3.tgz",
- "integrity": "sha512-Lh00i69Uf6G74mvYpHCI9KVVXLcHW/xu79YTvH7Mkc9zyKUeSPz0owW0dguj0Scavns3ZOh3wY63J0Zb97Za2g==",
+ "version": "3.12.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.12.3.tgz",
+ "integrity": "sha512-feZzR+kIcSVuLi3s/0x0b2Tx4Iokwqt+8PJM7yRHKuldg4MLdam4TCFeICv+lgDtuYiCtdmrtIP+uN9LWvDasw==",
"optional": true
},
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
"integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
"dev": true
},
"unicode-match-property-ecmascript": {
"version": "1.0.4",
- "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+ "resolved": "https://npm.kari.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
"integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
"dev": true,
"requires": {
@@ -16351,19 +17195,19 @@
},
"unicode-match-property-value-ecmascript": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz",
"integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==",
"dev": true
},
"unicode-property-aliases-ecmascript": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
+ "resolved": "https://npm.kari.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz",
"integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==",
"dev": true
},
"union-value": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/union-value/-/union-value-1.0.1.tgz",
"integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
"dev": true,
"requires": {
@@ -16375,13 +17219,13 @@
},
"uniq": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/uniq/-/uniq-1.0.1.tgz",
"integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
"dev": true
},
"unique-filename": {
"version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+ "resolved": "https://npm.kari.com/unique-filename/-/unique-filename-1.1.1.tgz",
"integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
"dev": true,
"requires": {
@@ -16398,29 +17242,29 @@
}
},
"unique-string": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz",
- "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
+ "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==",
"dev": true,
"requires": {
- "crypto-random-string": "^1.0.0"
+ "crypto-random-string": "^2.0.0"
}
},
"universalify": {
"version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+ "resolved": "https://npm.kari.com/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true
},
"unpipe": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
"dev": true
},
"unset-value": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/unset-value/-/unset-value-1.0.0.tgz",
"integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
"dev": true,
"requires": {
@@ -16430,7 +17274,7 @@
"dependencies": {
"has-value": {
"version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "resolved": "https://npm.kari.com/has-value/-/has-value-0.3.1.tgz",
"integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
"dev": true,
"requires": {
@@ -16441,7 +17285,7 @@
"dependencies": {
"isobject": {
"version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "resolved": "https://npm.kari.com/isobject/-/isobject-2.1.0.tgz",
"integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
"dev": true,
"requires": {
@@ -16452,13 +17296,13 @@
},
"has-values": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "resolved": "https://npm.kari.com/has-values/-/has-values-0.1.4.tgz",
"integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
"dev": true
},
"isarray": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
"dev": true
}
@@ -16466,33 +17310,104 @@
},
"upath": {
"version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+ "resolved": "https://npm.kari.com/upath/-/upath-1.2.0.tgz",
"integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
"dev": true
},
"update-notifier": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz",
- "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.0.1.tgz",
+ "integrity": "sha512-BuVpRdlwxeIOvmc32AGYvO1KVdPlsmqSh8KDDBxS6kDE5VR7R8OMP1d8MdhaVBvxl4H3551k9akXr0Y1iIB2Wg==",
"dev": true,
"requires": {
- "boxen": "^3.0.0",
- "chalk": "^2.0.1",
- "configstore": "^4.0.0",
+ "boxen": "^4.2.0",
+ "chalk": "^4.1.0",
+ "configstore": "^5.0.1",
"has-yarn": "^2.1.0",
"import-lazy": "^2.1.0",
"is-ci": "^2.0.0",
- "is-installed-globally": "^0.1.0",
- "is-npm": "^3.0.0",
+ "is-installed-globally": "^0.3.2",
+ "is-npm": "^5.0.0",
"is-yarn-global": "^0.3.0",
- "latest-version": "^5.0.0",
- "semver-diff": "^2.0.0",
- "xdg-basedir": "^3.0.0"
+ "latest-version": "^5.1.0",
+ "pupa": "^2.1.1",
+ "semver": "^7.3.2",
+ "semver-diff": "^3.1.1",
+ "xdg-basedir": "^4.0.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "dev": true,
+ "requires": {
+ "color-convert": "^2.0.1"
+ }
+ },
+ "chalk": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
+ "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ }
+ },
+ "color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "dev": true,
+ "requires": {
+ "color-name": "~1.1.4"
+ }
+ },
+ "color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "dev": true
+ },
+ "lru-cache": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+ "dev": true,
+ "requires": {
+ "yallist": "^4.0.0"
+ }
+ },
+ "semver": {
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "dev": true,
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ },
+ "yallist": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+ "dev": true
+ }
}
},
"uri-js": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+ "resolved": "https://npm.kari.com/uri-js/-/uri-js-4.2.2.tgz",
"integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
"dev": true,
"requires": {
@@ -16509,13 +17424,13 @@
},
"urix": {
"version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+ "resolved": "https://npm.kari.com/urix/-/urix-0.1.0.tgz",
"integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
"dev": true
},
"url": {
"version": "0.11.0",
- "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+ "resolved": "https://npm.kari.com/url/-/url-0.11.0.tgz",
"integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
"dev": true,
"requires": {
@@ -16525,7 +17440,7 @@
"dependencies": {
"punycode": {
"version": "1.3.2",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+ "resolved": "https://npm.kari.com/punycode/-/punycode-1.3.2.tgz",
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
"dev": true
}
@@ -16533,7 +17448,7 @@
},
"url-loader": {
"version": "4.1.0",
- "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.0.tgz",
+ "resolved": "https://npm.kari.com/url-loader/-/url-loader-4.1.0.tgz",
"integrity": "sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==",
"dev": true,
"requires": {
@@ -16568,7 +17483,7 @@
},
"json5": {
"version": "2.1.3",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz",
+ "resolved": "https://npm.kari.com/json5/-/json5-2.1.3.tgz",
"integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==",
"dev": true,
"requires": {
@@ -16577,7 +17492,7 @@
},
"loader-utils": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/loader-utils/-/loader-utils-2.0.0.tgz",
"integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==",
"dev": true,
"requires": {
@@ -16616,7 +17531,7 @@
},
"url-parse": {
"version": "1.4.7",
- "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz",
+ "resolved": "https://npm.kari.com/url-parse/-/url-parse-1.4.7.tgz",
"integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==",
"dev": true,
"requires": {
@@ -16624,9 +17539,26 @@
"requires-port": "^1.0.0"
}
},
+ "url-parse-lax": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+ "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
+ "dev": true,
+ "requires": {
+ "prepend-http": "^2.0.0"
+ },
+ "dependencies": {
+ "prepend-http": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
+ "dev": true
+ }
+ }
+ },
"use": {
"version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+ "resolved": "https://npm.kari.com/use/-/use-3.1.1.tgz",
"integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
"dev": true
},
@@ -16647,13 +17579,13 @@
},
"util-deprecate": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
"dev": true
},
"util.promisify": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/util.promisify/-/util.promisify-1.0.0.tgz",
"integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
"dev": true,
"requires": {
@@ -16663,16 +17595,21 @@
},
"utila": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+ "resolved": "https://npm.kari.com/utila/-/utila-0.4.0.tgz",
"integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
"dev": true
},
"utils-merge": {
"version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
+ "resolved": "https://npm.kari.com/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
"dev": true
},
+ "uuid": {
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
+ },
"v8-compile-cache": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz",
@@ -16696,20 +17633,15 @@
"builtins": "^1.0.3"
}
},
- "value-equal": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-0.4.0.tgz",
- "integrity": "sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw=="
- },
"vary": {
"version": "1.1.2",
- "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
+ "resolved": "https://npm.kari.com/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
"dev": true
},
"verror": {
"version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+ "resolved": "https://npm.kari.com/verror/-/verror-1.10.0.tgz",
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
"dev": true,
"requires": {
@@ -16724,14 +17656,6 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
"dev": true
},
- "warning": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.2.tgz",
- "integrity": "sha512-wbTp09q/9C+jJn4KKJfJfoS6VleK/Dti0yqWSm6KMvJ4MRCXFQNapHuJXutJIrWV0Cf4AhTdeIe4qdKHR1+Hug==",
- "requires": {
- "loose-envify": "^1.0.0"
- }
- },
"watchpack": {
"version": "1.7.4",
"resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz",
@@ -17021,7 +17945,7 @@
},
"wbuf": {
"version": "1.7.3",
- "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+ "resolved": "https://npm.kari.com/wbuf/-/wbuf-1.7.3.tgz",
"integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
"dev": true,
"requires": {
@@ -17747,7 +18671,7 @@
},
"webpack-dev-middleware": {
"version": "3.7.2",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
+ "resolved": "https://npm.kari.com/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz",
"integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==",
"dev": true,
"requires": {
@@ -17768,7 +18692,7 @@
},
"webpack-dev-server": {
"version": "3.11.0",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
+ "resolved": "https://npm.kari.com/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz",
"integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==",
"dev": true,
"requires": {
@@ -17815,7 +18739,7 @@
},
"anymatch": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/anymatch/-/anymatch-2.0.0.tgz",
"integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
"dev": true,
"requires": {
@@ -17825,7 +18749,7 @@
"dependencies": {
"normalize-path": {
"version": "2.1.1",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+ "resolved": "https://npm.kari.com/normalize-path/-/normalize-path-2.1.1.tgz",
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
@@ -17836,13 +18760,13 @@
},
"camelcase": {
"version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "resolved": "https://npm.kari.com/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"dev": true
},
"chokidar": {
"version": "2.1.8",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+ "resolved": "https://npm.kari.com/chokidar/-/chokidar-2.1.8.tgz",
"integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
"dev": true,
"requires": {
@@ -17862,7 +18786,7 @@
},
"cliui": {
"version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "resolved": "https://npm.kari.com/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dev": true,
"requires": {
@@ -17873,7 +18797,7 @@
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
@@ -17884,7 +18808,7 @@
},
"debug": {
"version": "4.1.1",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+ "resolved": "https://npm.kari.com/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"dev": true,
"requires": {
@@ -17893,7 +18817,7 @@
},
"find-up": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dev": true,
"requires": {
@@ -17915,7 +18839,7 @@
},
"glob-parent": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
@@ -17925,7 +18849,7 @@
"dependencies": {
"is-glob": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
@@ -17936,7 +18860,7 @@
},
"has-flag": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
@@ -17952,7 +18876,7 @@
},
"is-absolute-url": {
"version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+ "resolved": "https://npm.kari.com/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
"integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
"dev": true
},
@@ -17970,7 +18894,7 @@
},
"locate-path": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dev": true,
"requires": {
@@ -17980,7 +18904,7 @@
},
"ms": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
@@ -17992,7 +18916,7 @@
},
"p-limit": {
"version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "resolved": "https://npm.kari.com/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
"requires": {
@@ -18001,7 +18925,7 @@
},
"p-locate": {
"version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "resolved": "https://npm.kari.com/p-locate/-/p-locate-3.0.0.tgz",
"integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
"dev": true,
"requires": {
@@ -18010,7 +18934,7 @@
},
"p-try": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "resolved": "https://npm.kari.com/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
"dev": true
},
@@ -18046,7 +18970,7 @@
},
"readdirp": {
"version": "2.2.1",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+ "resolved": "https://npm.kari.com/readdirp/-/readdirp-2.2.1.tgz",
"integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
"dev": true,
"requires": {
@@ -18063,7 +18987,7 @@
},
"schema-utils": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+ "resolved": "https://npm.kari.com/schema-utils/-/schema-utils-1.0.0.tgz",
"integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
"dev": true,
"requires": {
@@ -18074,13 +18998,13 @@
},
"semver": {
"version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "resolved": "https://npm.kari.com/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
},
"string-width": {
"version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "resolved": "https://npm.kari.com/string-width/-/string-width-3.1.0.tgz",
"integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
"dev": true,
"requires": {
@@ -18091,7 +19015,7 @@
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
@@ -18111,7 +19035,7 @@
},
"supports-color": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+ "resolved": "https://npm.kari.com/supports-color/-/supports-color-6.1.0.tgz",
"integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
"dev": true,
"requires": {
@@ -18120,7 +19044,7 @@
},
"wrap-ansi": {
"version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "resolved": "https://npm.kari.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
"integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
"dev": true,
"requires": {
@@ -18131,7 +19055,7 @@
"dependencies": {
"strip-ansi": {
"version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "resolved": "https://npm.kari.com/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
@@ -18142,7 +19066,7 @@
},
"yargs": {
"version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+ "resolved": "https://npm.kari.com/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
"requires": {
@@ -18160,7 +19084,7 @@
},
"yargs-parser": {
"version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+ "resolved": "https://npm.kari.com/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
"requires": {
@@ -18172,7 +19096,7 @@
},
"webpack-log": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/webpack-log/-/webpack-log-2.0.0.tgz",
"integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
"dev": true,
"requires": {
@@ -18190,7 +19114,7 @@
},
"webpack-merge": {
"version": "4.2.2",
- "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz",
+ "resolved": "https://npm.kari.com/webpack-merge/-/webpack-merge-4.2.2.tgz",
"integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==",
"dev": true,
"requires": {
@@ -18209,7 +19133,7 @@
},
"websocket-driver": {
"version": "0.6.5",
- "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
+ "resolved": "https://npm.kari.com/websocket-driver/-/websocket-driver-0.6.5.tgz",
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
"dev": true,
"requires": {
@@ -18218,13 +19142,13 @@
},
"websocket-extensions": {
"version": "0.1.4",
- "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+ "resolved": "https://npm.kari.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
"dev": true
},
"which": {
"version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "resolved": "https://npm.kari.com/which/-/which-1.3.1.tgz",
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
"dev": true,
"requires": {
@@ -18233,13 +19157,13 @@
},
"which-module": {
"version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+ "resolved": "https://npm.kari.com/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"wide-align": {
"version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "resolved": "https://npm.kari.com/wide-align/-/wide-align-1.1.3.tgz",
"integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"requires": {
@@ -18247,43 +19171,50 @@
}
},
"widest-line": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz",
- "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz",
+ "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==",
"dev": true,
"requires": {
- "string-width": "^2.1.1"
+ "string-width": "^4.0.0"
},
"dependencies": {
"ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
+ "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
+ "dev": true
+ },
+ "emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
"dev": true
},
"string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
+ "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
"dev": true,
"requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.0"
}
},
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
+ "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
"dev": true,
"requires": {
- "ansi-regex": "^3.0.0"
+ "ansi-regex": "^5.0.0"
}
}
}
@@ -18335,12 +19266,11 @@
"dev": true
},
"ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
- "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -18395,7 +19325,7 @@
},
"wrappy": {
"version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "resolved": "https://npm.kari.com/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write": {
@@ -18408,19 +19338,19 @@
}
},
"write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"requires": {
- "graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
}
},
"ws": {
"version": "6.2.1",
- "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+ "resolved": "https://npm.kari.com/ws/-/ws-6.2.1.tgz",
"integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
"dev": true,
"requires": {
@@ -18428,43 +19358,54 @@
}
},
"xdg-basedir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz",
- "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz",
+ "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==",
"dev": true
},
+ "xmlbuilder": {
+ "version": "15.1.1",
+ "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+ "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+ "dev": true,
+ "optional": true
+ },
+ "xmldom": {
+ "version": "0.1.31",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.31.tgz",
+ "integrity": "sha512-yS2uJflVQs6n+CyjHoaBmVSqIDevTAWrzMmjG1Gc7h1qQ7uVozNhEPJAwZXWyGQ/Gafo3fCwrcaokezLPupVyQ==",
+ "dev": true,
+ "optional": true
+ },
"xpipe": {
"version": "1.0.5",
- "resolved": "https://registry.npmjs.org/xpipe/-/xpipe-1.0.5.tgz",
+ "resolved": "https://npm.kari.com/xpipe/-/xpipe-1.0.5.tgz",
"integrity": "sha1-jdi/Rfw/f1Xw4FS4ePQ6YmFNr98=",
"dev": true
},
"xtend": {
"version": "4.0.2",
- "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "resolved": "https://npm.kari.com/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"dev": true
},
"y18n": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+ "resolved": "https://npm.kari.com/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yallist": {
"version": "2.1.2",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+ "resolved": "https://npm.kari.com/yallist/-/yallist-2.1.2.tgz",
"integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
"dev": true
},
"yaml": {
- "version": "1.7.2",
- "resolved": "https://npm.kari.com/yaml/-/yaml-1.7.2.tgz",
- "integrity": "sha512-qXROVp90sb83XtAoqE8bP9RwAkTTZbugRUTm5YeFCBfNRPEp2YzTeqWiz7m5OORHzEvrA/qcGS8hp/E+MMROYw==",
- "dev": true,
- "requires": {
- "@babel/runtime": "^7.6.3"
- }
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
+ "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
+ "dev": true
},
"yargs": {
"version": "15.4.1",
@@ -18650,9 +19591,9 @@
}
},
"yargs-parser": {
- "version": "20.0.0",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.0.0.tgz",
- "integrity": "sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA==",
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
"dev": true
},
"yauzl": {
diff --git a/package.json b/package.json
index bc5e5027..daba7f90 100755
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "figma-linux",
- "version": "0.6.4",
+ "version": "0.7.0",
"description": "Figma is the first interface design tool based in the browser, making it easier for teams to create software. Join as in Telegram: https://t.me/figma_linux",
"main": "src/main/index.js",
"repository": "git@github.com:ChugunovRoman/figma-linux.git",
@@ -34,50 +34,58 @@
}
},
"dependencies": {
+ "adm-zip": "^0.5.1",
"chokidar": "^3.0.2",
+ "css-vars": "^2.2.0",
+ "electron-build-env": "^0.2",
"electron-devtools-installer": "^2.2.4",
- "electron-settings": "github:ChugunovRoman/electron-settings#figma-linux",
+ "electron-settings": "^4.0.2",
"figma-linux-rust-binding": "=0.1.4",
- "electron-build-env": "^0.2",
+ "lodash": "^4.17.20",
"mobx": "^5.6.0",
"mobx-react": "^5.4.2",
- "mobx-state-router": "^4.0.3",
- "react": "^16.5.2",
- "react-dom": "^16.5.2",
- "react-router-dom": "^4.3.1",
- "source-map-support": "^0.5.6"
+ "react": "^16.14.0",
+ "react-dom": "^16.14.0",
+ "source-map-support": "^0.5.6",
+ "uuid": "^8.3.2"
},
"devDependencies": {
+ "@types/adm-zip": "^0.4.33",
"@types/electron-devtools-installer": "^2.0.3",
- "@types/electron-settings": "^3.1.1",
- "@types/node": "^10.17.32",
- "@types/react": "^16.4.16",
- "@types/react-dom": "^16.0.6",
+ "@types/lodash": "^4.14.166",
+ "@types/node": "^12.12.13",
+ "@types/react": "^16.14.2",
+ "@types/react-dom": "^16.0.10",
"@types/react-redux": "^5.0.15",
"@types/react-router-dom": "^4.3.1",
"@types/redux": "^3.6.0",
+ "@types/uuid": "^8.3.0",
"@typescript-eslint/eslint-plugin": "^4.1.1",
"@typescript-eslint/parser": "^4.1.1",
+ "awesome-typescript-loader": "^3.4.1",
+ "babel-plugin-transform-class-properties": "^6.24.1",
+ "babel-plugin-transform-decorators-legacy": "^1.3.5",
+ "clean-webpack-plugin": "^3.0.0",
"copy-webpack-plugin": "^6.1.0",
"css-loader": "^4.3.0",
- "electron": "^7.3.3",
- "electron-builder": "^22.1.0",
- "electron-rebuild": "^2.0.3",
+ "electron": "^11.1.1",
+ "electron-builder": "^22.10.4",
+ "electron-rebuild": "^2.3.4",
"electron-webpack": "^2.8.2",
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-react": "^7.17.0",
"husky": "^3.1.0",
- "lint-staged": "^10.0.0-beta.7",
+ "lint-staged": "^10.5.3",
"native-ext-loader": "^2.3.0",
- "node-loader": "^1.0.1",
+ "node-loader": "^1.0.2",
"node-sass": "^4.14.1",
"prettier": "^1.19.1",
"sass-loader": "^10.0.2",
"style-loader": "^1.2.1",
"ts-loader": "^8.0.3",
- "typescript": "^3.7.2",
+ "typescript": "^3.7.5",
"webpack": "^4.44.1",
"webpack-cli": "3.3.12"
},
diff --git a/resources/figma-linux-appimage.desktop b/resources/figma-linux-appimage.desktop
index fbf628a8..d3e10579 100644
--- a/resources/figma-linux-appimage.desktop
+++ b/resources/figma-linux-appimage.desktop
@@ -1,7 +1,7 @@
[Desktop Entry]
Name=figma-linux
Comment=Unofficial desktop application for linux
-Exec=figma-linux %U --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization
+Exec=figma-linux --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization %U
Terminal=false
Type=Application
Icon=figma-linux
diff --git a/resources/figma-linux-snap.desktop b/resources/figma-linux-snap.desktop
index cdc0880d..0894e2fe 100644
--- a/resources/figma-linux-snap.desktop
+++ b/resources/figma-linux-snap.desktop
@@ -1,7 +1,7 @@
[Desktop Entry]
Name=figma-linux
Comment=Unofficial desktop application for linux
-Exec=figma-linux %U --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization
+Exec=figma-linux --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization %U
Terminal=false
Type=Application
Icon=${SNAP}/meta/gui/icon.png
diff --git a/resources/figma-linux.desktop b/resources/figma-linux.desktop
index 7908a201..4078fdb1 100644
--- a/resources/figma-linux.desktop
+++ b/resources/figma-linux.desktop
@@ -1,7 +1,7 @@
[Desktop Entry]
Name=figma-linux
Comment=Unofficial desktop application for linux
-Exec=/opt/figma-linux/figma-linux %U --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization
+Exec=/opt/figma-linux/figma-linux --no-sandbox --enable-oop-rasterization --ignore-gpu-blacklist -enable-experimental-canvas-features --enable-accelerated-2d-canvas --force-gpu-rasterization --enable-fast-unload --enable-accelerated-vpx-decode=3 --enable-tcp-fastopen --javascript-harmony --enable-checker-imaging --v8-cache-options=code --v8-cache-strategies-for-cache-storage=aggressive --enable-zero-copy --ui-enable-zero-copy --enable-native-gpu-memory-buffers --enable-webgl-image-chromium --enable-accelerated-video --enable-gpu-rasterization %U
Terminal=false
Type=Application
Icon=figma-linux
diff --git a/resources/incorrect_fonts/Portico Light Rough.otf b/resources/incorrect_fonts/Portico Light Rough.otf
deleted file mode 100644
index 127e04cd..00000000
Binary files a/resources/incorrect_fonts/Portico Light Rough.otf and /dev/null differ
diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml
index 8c2ecaa2..a7b99cc2 100644
--- a/snap/snapcraft.yaml
+++ b/snap/snapcraft.yaml
@@ -1,5 +1,5 @@
name: figma-linux
-version: '0.6.4'
+version: '0.7.0'
summary: Unofficial Figma desktop app for Linux platform
description: |
Figma is the first interface design tool based in the browser,
diff --git a/src/constants/_app.ts b/src/constants/_app.ts
index c1392faf..802cd1e7 100644
--- a/src/constants/_app.ts
+++ b/src/constants/_app.ts
@@ -156,3 +156,204 @@ export const INITACTIONINITSTATE = {
"distribute-vertical-center": false,
"distribute-bottom": false,
};
+
+export const PROPS_WITH_COLOR = [
+ "color",
+ "backgroundColor",
+ "fill",
+ "stroke",
+ "borderBottomColor",
+ "borderRightColor",
+ "borderLeftColor",
+ "borderTopColor",
+ "boxShadow",
+];
+
+export const AVAILABLE_THEME_COLOR_VALUE = /^#[a-fA-F0-9]{6,6}$/;
+export const AVAILABLE_THEME_FIELDS_COUNT = 43;
+export const AVAILABLE_THEME_FIELDS = [
+ "text",
+ "textActive",
+ "textDisabled",
+ "borders",
+ "bgPanel",
+ "bgPanelHover",
+ "bgToolbar",
+ "bgToolbarHover",
+ "bgToolbarActive",
+ "fgToolbar",
+ "fgToolbarHover",
+ "fgToolbarActive",
+ "fgToolbarDisabled",
+ "fgToolbarFilename",
+ "fgToolbarFoldername",
+ "fgToolbarChevron",
+ "fgToolbarUnsavedicon",
+ "fgToolbarLoginButton",
+ "fgToolbarLoginButtonBorder",
+ "fgToolbarLoginButtonActive",
+ "bgOverlay",
+ "fgOverlay",
+ "bgOverlayOutline",
+ "bgOverlayInnerOutline",
+ "bgTab",
+ "bgTabHover",
+ "bgTabActive",
+ "fgTab",
+ "fgTabHover",
+ "fgTabActive",
+ "bgHeader",
+ "fgHeader",
+ "bgHeaderControl",
+ "bgHeaderControlHover",
+ "bgHeaderControlActive",
+ "fgHeaderControl",
+ "fgHeaderControlHover",
+ "fgHeaderControlActive",
+ "fgComponent",
+ "fgComponentDisabled",
+ "fgComponentDisabledRowActive",
+ "bgWindowClose",
+ "bgBetaLabel",
+];
+
+export const DEFAULT_PALETTE: Themes.Palette = {
+ text: "#333333",
+ "text-active": "#050505",
+ "text-disabled": "#b3b3b3",
+ borders: "#e2e2e2",
+ "bg-panel": "#ffffff",
+ "bg-panel-hover": "#daebf7",
+ "bg-toolbar": "#2c2c2c",
+ "bg-toolbar-hover": "#000000",
+ "bg-toolbar-active": "#18a0fb",
+ "fg-toolbar": "#ffffff",
+ "fg-toolbar-hover": "#ffffff",
+ "fg-toolbar-active": "#ffffff",
+ "fg-toolbar-disabled": "#b3b3b3",
+ "fg-toolbar-filename": "#ffffff",
+ "fg-toolbar-foldername": "#aaaaaa",
+ "fg-toolbar-chevron": "#ffffff",
+ "fg-toolbar-unsavedicon": "#a1a1a1",
+ "fg-toolbar-login-button": "#ffffff",
+ "fg-toolbar-login-button-border": "#d3d3d3",
+ "fg-toolbar-login-button-active": "#808080",
+ "bg-overlay": "#222222",
+ "fg-overlay": "#ffffff",
+ "bg-overlay-outline": "#292828",
+ "bg-overlay-inner-outline": "#000000",
+ "bg-tab": "#222222",
+ "bg-tab-hover": "#2c2c2c",
+ "bg-tab-active": "#2c2c2c",
+ "fg-tab": "#7A7A7A",
+ "fg-tab-hover": "#ffffff",
+ "fg-tab-active": "#ffffff",
+ "bg-header": "#222222",
+ "fg-header": "#ffffff",
+ "bg-header-control": "#222222",
+ "bg-header-control-hover": "#2c2c2c",
+ "bg-header-control-active": "#2c2c2c",
+ "fg-header-control": "#ffffff",
+ "fg-header-control-hover": "#ffffff",
+ "fg-header-control-active": "#ffffff",
+ "fg-component": "#7b61ff",
+ "fg-component-disabled": "#4e428a",
+ "fg-component-disabled-row-active": "#bfbafc",
+ "bg-window-close": "#e81123",
+ "bg-beta-label": "#1bc47d",
+};
+
+export const PALETTE_TEXT: Types.Dic = {
+ text: "Text",
+ "text-active": "Active text",
+ "text-disabled": "Disabled text",
+ borders: "Borders and divider lines",
+ "bg-panel": "Panels bg color",
+ "bg-panel-hover": "Panel selected item bg color",
+ "bg-toolbar": "Toolbar bg color",
+ "bg-toolbar-hover": "Toolbar item hover bg color",
+ "bg-toolbar-active": "Toolbar active item bg color",
+ "fg-toolbar": "Toolbar icons color",
+ "fg-toolbar-hover": "Toolbar hover icons color",
+ "fg-toolbar-active": "Toolbar active icon color",
+ "fg-toolbar-disabled": "Toolbar disabled icons color",
+ "fg-toolbar-filename": "Toolbar file name color",
+ "fg-toolbar-foldername": "Toolbar dir name color",
+ "fg-toolbar-chevron": "Toolbar chevron color",
+ "fg-toolbar-unsavedicon": "Toolbar unsaved icon color",
+ "fg-toolbar-login-button": "Toolbar login button color",
+ "fg-toolbar-login-button-border": "Toolbar login button border color",
+ "fg-toolbar-login-button-active": "Toolbar active login button color",
+ "bg-overlay": "Dropdown menu bg color",
+ "fg-overlay": "Dropdown menu text color",
+ "bg-overlay-outline": "Dropdown menu outline color",
+ "bg-overlay-inner-outline": "Dropdown menu inner outline color",
+ "bg-tab": "Tab bg color",
+ "bg-tab-hover": "Tab hover bg color",
+ "bg-tab-active": "Tab active bg color",
+ "fg-tab": "Tab text color",
+ "fg-tab-hover": "Tab hover text color",
+ "fg-tab-active": "Tab active text color",
+ "bg-header": "Header bg color",
+ "fg-header": "Header text color",
+ "bg-header-control": "Header control buttons bg color",
+ "bg-header-control-hover": "Header hover control buttons bg color",
+ "bg-header-control-active": "Header active control buttons bg color",
+ "fg-header-control": "Header control buttons text color",
+ "fg-header-control-hover": "Header hover control buttons text color",
+ "fg-header-control-active": "Header active control buttons text color",
+ "fg-component": "Component color",
+ "fg-component-disabled": "Component disabled color",
+ "fg-component-disabled-row-active": "Component disabled row active color",
+ "bg-window-close": "Window close bg color",
+ "bg-beta-label": "Beta button bg color",
+};
+
+export const DEFAULT_THEME = {
+ name: "Default Theme",
+ author: "Figma",
+ id: "0",
+ palette: DEFAULT_PALETTE,
+};
+
+export const SELECTORS_TO_IGNORE = [
+ ".action--unfaded",
+ ".action--enabled",
+ ".action_option",
+ ".avatar--root--2kH_E",
+ ".basic_form--greenBtn",
+ ".dropdown--dropdown",
+ ".dropdown_menu",
+ ".draggable_modal--backgroundOverlay--CPf6e",
+ ".emoji-mart-anchor-selected",
+ ".flyout_view--flyout",
+ ".folder_view--folderTeamName",
+ ".folder_view--pathSeparator",
+ ".filename_view--title",
+ ".filename_view--pathSeparator",
+ ".filename_view--dropdownOption",
+ ".fullscreen_menu--searchInput",
+ ".header_modal--modalBackground",
+ ".header--header--",
+ ".header--settings",
+ ".header--dropdownCaret",
+ ".prototype--background",
+ ".multilevel_dropdown--",
+ ".library_item_tile--descriptionPopout",
+ ".pointing_dropdown",
+ ".scaling_menu--",
+ ".transition_preview_pane--",
+ ".top_bar--",
+ ".tooltip--",
+ ".toolbar_styles--activeButton",
+ ".toolbar_styles--enabledButton",
+ ".user_view--name",
+ ".text--_whiteText",
+ ".team_link--icon",
+ ".zoom_menu--zoomMenu",
+ ".help_widget--helpWidget",
+ ".help_widget--tooltip",
+ ".raw_components--iconButtonSelected",
+ ".visual_bell",
+ ".zoom_menu",
+];
diff --git a/src/constants/_defaultSettings.ts b/src/constants/_defaultSettings.ts
index 313cf0c4..04197740 100644
--- a/src/constants/_defaultSettings.ts
+++ b/src/constants/_defaultSettings.ts
@@ -1,14 +1,22 @@
-export const DEFAULT_SETTINGS: ISettings = {
+import { v4 } from "uuid";
+import { LogLevel } from "Enums";
+
+export const DEFAULT_SETTINGS: SettingsInterface = {
+ clientId: v4(),
app: {
- panelHeight: 28,
- showMainMenu: false,
- disabledMainMenu: false,
+ logLevel: LogLevel.INFO,
+ enableColorSpaceSrgb: false,
+ visibleNewProjectBtn: true,
+ panelHeight: 40,
saveLastOpenedTabs: true,
- windowFrame: false,
- disabledFonts: false,
exportDir: `${process.env.HOME}/Pictures/Figma`,
- fontDirs: ["/usr/share/fonts", "/usr/local/share/fonts",`${process.env.HOME}/.local/share/fonts`],
+ fontDirs: ["/usr/share/fonts", "/usr/local/share/fonts", `${process.env.HOME}/.local/share/fonts`],
lastOpenedTabs: [],
+ featureFlags: {},
+ savedExtensions: [],
+ },
+ theme: {
+ currentTheme: "0",
},
ui: {
scalePanel: 1,
diff --git a/src/constants/_ipcChannels.ts b/src/constants/_ipcChannels.ts
deleted file mode 100644
index d22ab1ef..00000000
--- a/src/constants/_ipcChannels.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export const NEWTAB = "newtab";
-export const TABADDED = "tabadded";
-export const FOCUSTAB = "focustab";
-export const CLOSETAB = "closetab";
-export const CLOSEALLTAB = "closealltab";
-export const MAINTAB = "maintab";
-export const CLEARVIEW = "clearView";
-export const UPDATEUISCALE = "updateuiscale";
-export const UPDATEPANELSCALE = "updatepanelscale";
-export const UPDATEPANELHEIGHT = "updatepanelheight";
-export const UPDATEMAINMENUVIS = "updatemainmenuvis";
-export const RECIVETABS = "recivetabs";
-
-export const SETTITLE = "setTitle";
-export const SETTABURL = "setTabUrl";
-export const UPDATEFILEKEY = "updateFileKey";
-export const UPDATEACTIONSTATE = "updateActionState";
-export const EXPORTIMAGE = "exportimage";
-
-export const TOHOME = "toHome";
diff --git a/src/constants/_other.ts b/src/constants/_other.ts
index da42a0e4..4e5b06de 100644
--- a/src/constants/_other.ts
+++ b/src/constants/_other.ts
@@ -1,18 +1,39 @@
import { parse } from "url";
+export const LOGLEVEL = process.env.FIGMA_LOGLEVEL as string | undefined;
+
export const HOMEPAGE = "https://www.figma.com";
export const RECENT_FILES = "https://www.figma.com/files/recent";
export const PARSED_HOMEPAGE = parse("https://www.figma.com");
-export const TOPPANELHEIGHT = 28;
+export const DOWNLOAD_ZIP_URI = "https://github.com/Figma-Linux/figma-linux-themes/archive/master.zip";
+export const DOWNLOAD_ZIP_PATH = "/tmp/master.zip";
+
+export const TOPPANELHEIGHT = 40;
+export const MENU_WIDTH = 330;
export const PROTOCOL = "figma";
+export const TEST_THEME_ID = "test-creator-theme";
+
export const MANIFEST_FILE_NAME = "manifest.json";
export const CONFIGDIR = `${process.env.HOME}/.config/figma-linux`;
export const RESOURCESDIR = `${process.env.HOME}/.config/figma-linux/resources`;
export const REGEXP_APP_AUTH_GRANT = /^\/{0,2}app_auth\/[^\/]+\/grant/;
-export const REGEXP_APP_AUTH_REDEEM = /^\/{0,2}app_auth\/redeem/;
export const FIGMA_SESSION_COOKIE_NAME = "figma.st";
+
+export const FILE_EXTENSION_WHITE_LIST = [".css", ".html", ".js", ".json", ".jsx", ".md", ".ts", ".tsx"];
+
+export const LINKS = {
+ HELP_PAGE: "https://help.figma.com",
+ PLUGINS_DOCS: "https://www.figma.com/plugin-docs/intro",
+ FIGMA_COMMUNITY_FORUM: "https://spectrum.chat/figma",
+ FIGMA_LINUX_COMMUNITY_FORUM: "https://spectrum.chat/figma-linux",
+ FIGMA_LINUX_TELEGRAM: "https://t.me/figma_linux",
+ VIDEO_TUTORIALS: "https://www.youtube.com/figmadesign",
+ RELEASE_NOTES: "https://github.com/Figma-Linux/figma-linux/releases/latest",
+ LEGAL_SUMMARY: "https://www.figma.com/summary-of-policy",
+ THEMES_REPO: "https://github.com/Figma-Linux/figma-linux-themes",
+};
diff --git a/src/constants/index.ts b/src/constants/index.ts
index f07a767e..f3fdc38d 100644
--- a/src/constants/index.ts
+++ b/src/constants/index.ts
@@ -1,4 +1,3 @@
export * from "./_defaultSettings";
-export * from "./_ipcChannels";
export * from "./_other";
export * from "./_app";
diff --git a/src/main/App.ts b/src/main/App.ts
index 3e253674..274fac40 100755
--- a/src/main/App.ts
+++ b/src/main/App.ts
@@ -1,10 +1,11 @@
-import * as Settings from "electron-settings";
import * as E from "electron";
import * as Const from "Const";
-import { cmd } from "Utils/Main";
import { isAppAuthLink, isValidProjectLink } from "Utils/Common";
+import { mkdirIfNotExists, themesDirectory } from "Utils/Main";
import Args from "./Args";
+import { logger } from "./Logger";
+import { storage } from "./Storage";
import WindowManager from "./window/WindowManager";
import { Session } from "./Session";
import "./events/app";
@@ -16,33 +17,19 @@ class App {
constructor() {
const isSingleInstance = E.app.requestSingleInstanceLock();
- if (Settings.get("app.fontDirs")) {
- cmd(`find ${(Settings.get("app.fontDirs") as string[]).join(" ")} -type f | wc -l`)
- .then(output => {
- console.info(`You've got a ${output.replace(/[\s\t\r]/, "")} fonts in your os.`);
-
- if (parseInt(output) > 3000) {
- console.warn(`You've too many fonts. It'll may call problem with run the app.`);
- }
- })
- .catch(err => console.error(`exec command "find" error: `, err));
- }
-
if (!isSingleInstance) {
E.app.quit();
return;
} else {
E.app.on("second-instance", (event, argv) => {
let projectLink = "";
- console.log("second-instance, argv: ", argv);
+ logger.debug("second-instance, argv: ", argv);
const paramIndex = argv.findIndex(i => isValidProjectLink(i));
const hasAppAuthorization = argv.find(i => isAppAuthLink(i));
- if (hasAppAuthorization) {
- setTimeout(() => {
- this.windowManager.loadRecentFilesMainTab();
- }, 2000);
+ if (this.windowManager.tryHandleAppAuthRedeemUrl(hasAppAuthorization)) {
+ return;
}
if (paramIndex !== -1) {
@@ -64,15 +51,24 @@ class App {
this.session = new Session();
}
- this.appEvent();
+ const colorSpace = storage.get().app.enableColorSpaceSrgb;
- if (Object.keys(Settings.getAll()).length === 0) {
- Settings.setAll(Const.DEFAULT_SETTINGS);
+ if (colorSpace) {
+ E.app.commandLine.appendSwitch("force-color-profile", "srgb");
+ } else {
+ E.app.commandLine.appendSwitch("disable-color-correct-rendering");
}
+
+ mkdirIfNotExists(themesDirectory).catch(error => {
+ logger.error("mkdirIfNotExists error: ", error);
+ });
+
+ this.appEvent();
}
private appEvent = (): void => {
E.app.setAsDefaultProtocolClient(Const.PROTOCOL);
+ E.app.allowRendererProcessReuse = false;
E.app.on("ready", this.ready);
E.app.on("browser-window-created", (e, window) => window.setMenu(null));
@@ -89,24 +85,22 @@ class App {
figmaUrl !== "" && this.windowManager.openUrl(figmaUrl);
}, 1500);
- E.protocol.registerHttpProtocol(
- Const.PROTOCOL,
- (req, cb) => {
- this.windowManager.addTab("loadMainContent.js", req.url);
-
- cb({
- url: req.url,
- method: req.method,
- });
- },
- err => err && console.log("failed to register http protocol, err: ", err),
- );
+ E.protocol.registerHttpProtocol(Const.PROTOCOL, (req: E.ProtocolRequest, cb: (req: E.ProtocolResponse) => void) => {
+ if (this.windowManager.tryHandleAppAuthRedeemUrl(req.url)) {
+ return;
+ }
+
+ this.windowManager.addTab("loadMainContent.js", req.url);
+
+ cb({
+ url: req.url,
+ method: req.method,
+ });
+ });
};
private onWindowAllClosed = (): void => {
- if (process.platform !== "darwin") {
- E.app.quit();
- }
+ E.app.quit();
};
}
diff --git a/src/main/Commander.ts b/src/main/Commander.ts
deleted file mode 100644
index 6ee586b8..00000000
--- a/src/main/Commander.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { commands } from "Utils/Main";
-
-export default class Commander {
- private constructor() {}
-
- public static exec(id: string, ...args: any[]): void {
- commands().get(id)(...args);
- }
-}
diff --git a/src/main/ExtensionManager.ts b/src/main/ExtensionManager.ts
index acb529b4..3175188b 100644
--- a/src/main/ExtensionManager.ts
+++ b/src/main/ExtensionManager.ts
@@ -1,11 +1,12 @@
-import * as Chokidar from "chokidar";
import { promises } from "fs";
import { dirname, join } from "path";
-import * as Settings from "electron-settings";
+import * as Chokidar from "chokidar";
+import { storage } from "Storage";
+import { logger } from "./Logger";
class ExtensionManager {
private extensionMap: Map;
- private manifestObservers: Function[];
+ private manifestObservers: Array;
constructor() {
this.extensionMap = new Map();
@@ -13,7 +14,7 @@ class ExtensionManager {
this.reload();
}
- public addPath(path: string): { id: number; existed: boolean } {
+ public addPath(path: string): Extensions.AddPathReturnValue {
for (const [id, entry] of this.extensionMap.entries()) {
if (entry.path === path) {
return { id, existed: true };
@@ -94,7 +95,7 @@ class ExtensionManager {
return Array.from(this.extensionMap.keys());
}
- public addObserver(callback: Function): void {
+ public addObserver(callback: () => void): void {
this.manifestObservers.push(callback);
if (this.manifestObservers.length === 1) {
@@ -106,7 +107,7 @@ class ExtensionManager {
});
}
}
- public removeObserver(callback: Function): void {
+ public removeObserver(callback: () => void): void {
const index = this.manifestObservers.indexOf(callback);
if (index !== -1) {
@@ -124,11 +125,13 @@ class ExtensionManager {
}
save() {
- Settings.set("app.savedExtensions", this.saveToJson() as any);
+ storage.saveExtension(this.saveToJson());
}
reload() {
- this.loadFromJson(Settings.get("app.savedExtensions") as any);
+ const extensions = storage.get().app.savedExtensions;
+
+ this.loadFromJson(extensions);
}
public saveToJson(): Extensions.ExtensionJson[] {
@@ -171,7 +174,7 @@ class ExtensionManager {
public async getLocalFileExtensionSource(
id: number,
- ): Promise<{ source: string; html: string } | { buildErrCode: boolean; stderr: string; path: string }> {
+ ): Promise {
const extensionPath = this.getPath(id);
const manifest = await promises.readFile(extensionPath, { encoding: "utf8" });
@@ -191,7 +194,7 @@ class ExtensionManager {
try {
callback(args);
} catch (ex) {
- console.error(ex);
+ logger.error(ex);
}
});
}
diff --git a/src/main/Fonts.ts b/src/main/Fonts.ts
index 99a1da83..fcc73bdf 100644
--- a/src/main/Fonts.ts
+++ b/src/main/Fonts.ts
@@ -1,25 +1,13 @@
-import * as Settings from "electron-settings";
-import { Fonts } from "figma-linux-rust-binding";
-
-let fonts: any = null;
-if (!Boolean(Settings.get("app.disabledFonts"))) {
- fonts = require("figma-linux-rust-binding").getFonts;
-}
+import { Fonts, getFonts } from "figma-linux-rust-binding";
class Fonts {
public static getFonts = (dirs: Array): Promise =>
new Promise((resolve, reject) => {
- if (fonts) {
- console.info("local fonts support is enabled");
- fonts(dirs, (err: Error, fonts: Fonts.IFonts) => {
- if (err) reject(err);
+ getFonts(dirs, (err: Error, fonts: Fonts.IFonts) => {
+ if (err) reject(err);
- resolve(fonts);
- });
- } else {
- console.info("local fonts support is disabled");
- reject(new Error("The Native module is disabled in the app settings"));
- }
+ resolve(fonts);
+ });
});
}
diff --git a/src/main/Logger.ts b/src/main/Logger.ts
new file mode 100755
index 00000000..d551d849
--- /dev/null
+++ b/src/main/Logger.ts
@@ -0,0 +1,53 @@
+import * as E from "electron";
+
+import { LOGLEVEL } from "Const";
+import { LogLevel } from "Enums";
+import { storage } from "./Storage";
+
+export class Logger {
+ private levels = ["DEBUG", "INFO", "ERROR"];
+ private logLevel = 1;
+ constructor() {
+ if (LOGLEVEL) {
+ this.logLevel = this.levels.indexOf(LOGLEVEL);
+ } else {
+ this.logLevel = storage.getLogLevel();
+ }
+
+ this.initLoggerEvent();
+ }
+
+ private initLoggerEvent = (): void => {
+ E.ipcMain.on("log-debug", (sender, ...msg) => this.debug(`[From web content: ${sender.sender.id}]`, ...msg));
+ E.ipcMain.on("log-info", (sender, ...msg) => this.info(`[From web content: ${sender.sender.id}]`, ...msg));
+ E.ipcMain.on("log-error", (sender, ...msg) => this.error(`[From web content: ${sender.sender.id}]`, ...msg));
+ };
+
+ private getDateTime = (): string => {
+ const currentDate = new Date();
+
+ return currentDate.toLocaleString();
+ };
+
+ private print = (level: number, ...argv: any[]) => {
+ if (level < this.logLevel) {
+ return;
+ }
+
+ const dateTime = this.getDateTime();
+
+ console.log(`[${dateTime}]:[${this.levels[level]}] -`, ...argv);
+ };
+
+ public debug = (...argv: any[]): void => {
+ this.print(LogLevel.DEBUG, ...argv);
+ };
+ public info = (...argv: any[]): void => {
+ this.print(LogLevel.INFO, ...argv);
+ };
+ public error = (...argv: any[]): void => {
+ this.print(LogLevel.ERROR, ...argv);
+ };
+}
+
+export const logger = new Logger();
diff --git a/src/main/MenuState.ts b/src/main/MenuState.ts
index 77cb8e7f..9e9a0f78 100644
--- a/src/main/MenuState.ts
+++ b/src/main/MenuState.ts
@@ -8,7 +8,7 @@ import { INITACTIONINITSTATE, ACTIONTABSTATE, ACTIONFILEBROWSERSTATE } from "Con
*/
class MenuState {
public static actionState: MenuState.State = INITACTIONINITSTATE;
- public static pluginMenuData: any[] = [];
+ public static pluginMenuData: Menu.MenuItem[] = [];
private static update = (state: MenuState.MenuStateParams) => {
const app = E.remote ? E.remote.app : E.app;
@@ -20,7 +20,7 @@ class MenuState {
};
}
- if (state.pluginMenuData && state.pluginMenuData.length > 0) {
+ if (Array.isArray(state.pluginMenuData)) {
MenuState.pluginMenuData = state.pluginMenuData;
}
@@ -41,11 +41,38 @@ class MenuState {
};
public static updateInProjectActionState = () => {
- MenuState.update({ actionState: ACTIONTABSTATE });
+ const newPluginMenuData = MenuState.pluginMenuData.map(item => {
+ if (item.visible === false) {
+ return {
+ ...item,
+ disabled: item.disabled || false,
+ visible: true,
+ };
+ }
+
+ return item;
+ });
+
+ MenuState.update({ actionState: ACTIONTABSTATE, pluginMenuData: newPluginMenuData });
};
public static updateInFileBrowserActionState = () => {
- MenuState.update({ actionState: ACTIONFILEBROWSERSTATE });
+ const newPluginMenuData = MenuState.pluginMenuData.map(item => {
+ if (item.type === "run-menu-action" && item.name.key === "plugins-menu-manage") {
+ return {
+ ...item,
+ visible: true,
+ disabled: false,
+ };
+ }
+
+ return {
+ ...item,
+ visible: false,
+ };
+ });
+
+ MenuState.update({ actionState: ACTIONFILEBROWSERSTATE, pluginMenuData: newPluginMenuData });
};
}
diff --git a/src/main/Session.ts b/src/main/Session.ts
index 9b95c85b..0f7f1704 100644
--- a/src/main/Session.ts
+++ b/src/main/Session.ts
@@ -1,6 +1,7 @@
import * as E from "electron";
import * as Const from "Const";
+import { logger } from "./Logger";
import { isSameCookieDomain } from "Utils/Main";
export class Session {
@@ -17,6 +18,15 @@ export class Session {
};
public handleAppReady = () => {
+ E.session.defaultSession.setPermissionRequestHandler((webContents, permission, callback) => {
+ const whitelist = ["fullscreen", "pointerLock"];
+ callback(whitelist.includes(permission));
+ });
+
+ const defaultUserAgent = E.session.defaultSession.getUserAgent();
+ const userAgent = defaultUserAgent.replace(/Figma([^\/]+)\/([^\s]+)/, "Figma$1/$2 Figma/$2");
+
+ E.session.defaultSession.setUserAgent(userAgent);
E.session.defaultSession.cookies
.get({
url: Const.HOMEPAGE,
@@ -28,17 +38,17 @@ export class Session {
return cookie.name === Const.FIGMA_SESSION_COOKIE_NAME;
});
- console.log("[wm] already signed in?", this._hasFigmaSession);
+ logger.info("[wm] already signed in?", this._hasFigmaSession);
})
.catch((error: Error) =>
- console.error("[wm] failed to get cookies during handleAppReady:", Const.HOMEPAGE, error),
+ logger.error("[wm] failed to get cookies during handleAppReady:", Const.HOMEPAGE, error),
);
};
private handleCookiesChanged = (event: E.Event, cookie: E.Cookie, cause: string, removed: boolean) => {
if (isSameCookieDomain(cookie.domain || "", Const.PARSED_HOMEPAGE.hostname || "")) {
if (cookie.name === Const.FIGMA_SESSION_COOKIE_NAME) {
- console.log(`${cookie.name} cookie changed:`, cause, cookie.name, cookie.domain, removed ? "removed" : "");
+ logger.debug(`${cookie.name} cookie changed:`, cause, cookie.name, cookie.domain, removed ? "removed" : "");
}
}
};
diff --git a/src/main/Storage.ts b/src/main/Storage.ts
new file mode 100755
index 00000000..b8b5c0d2
--- /dev/null
+++ b/src/main/Storage.ts
@@ -0,0 +1,75 @@
+import * as Settings from "electron-settings";
+import * as _ from "lodash";
+
+import * as Const from "Const";
+
+export class Storage {
+ private settings: SettingsInterface;
+
+ constructor() {
+ this.settings = Settings.getSync() as SettingsInterface;
+
+ const mergedSettings = _.merge(Const.DEFAULT_SETTINGS, this.settings);
+
+ this.settings = mergedSettings;
+ Settings.setSync(mergedSettings);
+ }
+
+ public get = () => {
+ return Settings.getSync() as SettingsInterface;
+ };
+
+ public set = (settings: SettingsInterface): void => {
+ Settings.setSync(settings);
+ };
+
+ public getLogLevel = (): number => {
+ return this.settings.app.logLevel;
+ };
+ public setOpenedTabs = (tabs: SavedTab[]): void => {
+ if (tabs.length === 0) {
+ return;
+ }
+
+ this.settings.app.lastOpenedTabs = tabs;
+
+ this.set(this.settings);
+ };
+ public setFeatureFlags = (flags: FeatureFlags): void => {
+ this.settings.app.featureFlags = _.merge(this.settings.app.featureFlags, flags);
+
+ this.set(this.settings);
+ };
+ public setPanelHeight = (height: number): void => {
+ this.settings.app.panelHeight = height;
+
+ this.set(this.settings);
+ };
+ public saveExtension = (extensions: Extensions.ExtensionJson[]): void => {
+ this.settings.app.savedExtensions = extensions;
+
+ this.set(this.settings);
+ };
+ public clearLastOpenedTabs = (): void => {
+ this.settings.app.lastOpenedTabs = [];
+
+ this.set(this.settings);
+ };
+ public setLastPluginDirectory = (path: string): void => {
+ this.settings.app.lastSavedPluginDir = path;
+
+ this.set(this.settings);
+ };
+ public setExportDirectory = (path: string): void => {
+ this.settings.app.lastExportDir = path;
+
+ this.set(this.settings);
+ };
+ public setTheme = (id: string): void => {
+ this.settings.theme.currentTheme = id;
+
+ this.set(this.settings);
+ };
+}
+
+export const storage = new Storage();
diff --git a/src/main/events/ipcMain.ts b/src/main/events/ipcMain.ts
index 3c2ba98d..4a1f8ea5 100644
--- a/src/main/events/ipcMain.ts
+++ b/src/main/events/ipcMain.ts
@@ -1,85 +1,183 @@
import * as E from "electron";
import * as path from "path";
-import { promises } from "fs";
+import * as fs from "fs";
-import { MANIFEST_FILE_NAME } from "Const";
-import { listenToWebBindingPromise, listenToWebRegisterCallback } from "Utils/Main";
+import { MANIFEST_FILE_NAME, FILE_EXTENSION_WHITE_LIST } from "Const";
+import {
+ listenToWebBindingPromise,
+ listenToWebRegisterCallback,
+ showSaveDialog,
+ access,
+ mkPath,
+ showOpenDialog,
+ showMessageBox,
+} from "Utils/Main";
+import { sanitizeFileName, wait } from "Utils/Common";
+import WindowManager from "Main/window/WindowManager";
+import { logger } from "Main/Logger";
+import { storage } from "Main/Storage";
import Ext from "Main/ExtensionManager";
export const registerIpcMainHandlers = () => {
- listenToWebBindingPromise(
- "createMultipleNewLocalFileExtensions",
- async (webContents: E.WebContents, options: any, depth: number) => {
- const added: any[] = [];
- const existed: any[] = [];
+ E.ipcMain.handle("createMultipleNewLocalFileExtensions", async (sender, data) => {
+ const added: any[] = [];
+ const existed: any[] = [];
- const dialogResult = await E.dialog.showOpenDialog(options);
+ const windowManager = WindowManager.instance;
+ const dialogResult = await E.dialog.showOpenDialog(windowManager.mainWindow, data.options);
- if (!dialogResult || dialogResult.canceled) {
- return { added, existed };
- }
+ if (!dialogResult || dialogResult.canceled) {
+ return { added, existed };
+ }
- const pickedPaths = dialogResult.filePaths;
+ const pickedPaths = dialogResult.filePaths;
- async function processEntry(entryPath: string, depth: number, topLevel: any) {
- const stats = await promises.stat(entryPath);
+ async function processEntry(entryPath: string, depth: number, topLevel: any) {
+ const stats = await fs.promises.stat(entryPath);
- if (stats.isDirectory() && depth > 0) {
- let fileNames = await promises.readdir(entryPath);
- fileNames = fileNames.filter(name => name[0] !== ".");
+ if (stats.isDirectory() && depth > 0) {
+ let fileNames = await fs.promises.readdir(entryPath);
+ fileNames = fileNames.filter(name => name[0] !== ".");
- await Promise.all(fileNames.map(name => processEntry(path.resolve(entryPath, name), depth - 1, false)));
- } else if (path.basename(entryPath) === MANIFEST_FILE_NAME) {
- const res = Ext.addPath(entryPath);
+ await Promise.all(fileNames.map(name => processEntry(path.resolve(entryPath, name), depth - 1, false)));
+ } else if (path.basename(entryPath) === MANIFEST_FILE_NAME) {
+ const res = Ext.addPath(entryPath);
- if (res.existed) {
- existed.push(res.id);
- } else {
- added.push(res.id);
- }
- } else if (topLevel) {
- throw new Error("Manifest must be named 'manifest.json'");
+ if (res.existed) {
+ existed.push(res.id);
+ } else {
+ added.push(res.id);
}
+ } else if (topLevel) {
+ throw new Error("Manifest must be named 'manifest.json'");
}
+ }
- await Promise.all(pickedPaths.map(name => processEntry(name, depth, true)));
+ await Promise.all(pickedPaths.map(name => processEntry(name, data.depth, true)));
- return { added, existed };
- },
- );
+ return { added, existed };
+ });
- listenToWebBindingPromise("getAllLocalFileExtensionIds", (webContents: E.WebContents) => {
+ E.ipcMain.handle("getAllLocalFileExtensionIds", async () => {
return Ext.getAllIds();
});
- listenToWebBindingPromise("getLocalFileExtensionManifest", (webContents: E.WebContents, id: number) => {
+ E.ipcMain.handle("getLocalFileExtensionManifest", async (sender, id) => {
return Ext.loadExtensionManifest(id);
});
- listenToWebBindingPromise("getLocalFileExtensionSource", (webContents: E.WebContents, id: number) => {
+ E.ipcMain.on("removeLocalFileExtension", async (sender, id) => {
+ Ext.removePath(id);
+ });
+
+ E.ipcMain.on("openExtensionDirectory", async (sender, id) => {
+ const extensionDirectory = path.parse(Ext.getPath(id)).dir;
+
+ E.shell.openPath(extensionDirectory);
+ });
+
+ E.ipcMain.handle("getLocalFileExtensionSource", async (sender, id) => {
return Ext.getLocalFileExtensionSource(id);
});
- listenToWebBindingPromise("removeLocalFileExtension", async (webContents: E.WebContents, id: number) => {
- Ext.removePath(id);
+ E.ipcMain.handle("isDevToolsOpened", async view => {
+ return view.sender.isDevToolsOpened();
});
listenToWebBindingPromise("openExtensionDirectory", async (webContents: E.WebContents, id: number) => {
console.error("TODO");
});
- type NewExtension = {
- dirName: string;
- files: Array<{ name: string; content: string }>;
- };
- listenToWebBindingPromise("writeNewExtensionToDisk", async (webContents: E.WebContents, data: NewExtension) => {
- console.error("TODO");
- return /*extId*/;
+ E.ipcMain.handle("writeNewExtensionToDisk", async (sender, data) => {
+ let manifest: Extensions.ManifestFile | null = null;
+ let manifestFile = null;
+
+ for (const file of data.files) {
+ if (
+ !FILE_EXTENSION_WHITE_LIST.includes(path.extname(file.name)) ||
+ !/^\w+(?:\.\w+)*\.\w+/.test(file.name) ||
+ file.name !== sanitizeFileName(file.name)
+ ) {
+ throw new Error(`Filename "${file.name}" not allowed`);
+ }
+ if (file.name === MANIFEST_FILE_NAME) {
+ if (typeof file.content !== "string") {
+ throw new Error("Manifest must be a string");
+ }
+
+ manifest = JSON.parse(file.content);
+ manifestFile = file;
+
+ if (typeof manifest !== "object" || manifest === null) {
+ throw new Error("Manifest must be a JSON object");
+ }
+ if (manifest.build) {
+ throw new Error(`Manifest 'build' value "${manifest.build}" not allowed`);
+ }
+ }
+ }
+
+ if (manifest == null || manifestFile == null) {
+ throw new Error("No manifest found");
+ }
+
+ const dirName = sanitizeFileName(data.dirName);
+ const windowManager = WindowManager.instance;
+ const lastDir = storage.get().app.lastSavedPluginDir;
+ const dir = lastDir ? `${lastDir}/${dirName}` : dirName;
+
+ const saveDir = await showSaveDialog(windowManager.mainWindow, {
+ title: manifest.name ? "Choose plugin directory location" : "Choose plugin name and directory location",
+ defaultPath: dir,
+ });
+
+ if (!saveDir) {
+ return undefined;
+ }
+
+ const basename = path.basename(saveDir);
+
+ storage.setLastPluginDirectory(path.parse(saveDir).dir);
+
+ if (!basename) {
+ throw new Error("Invalid directory name");
+ }
+ if (!manifest.name) {
+ manifest.name = basename;
+ manifestFile.content = JSON.stringify(manifest, undefined, 2);
+ }
+ const accessDir = await access(saveDir);
+
+ if (accessDir) {
+ throw new Error("Overwriting existing files or directories not supported");
+ }
+
+ await mkPath(saveDir);
+
+ const saveFilesPromises = [];
+ for (const file of data.files) {
+ const filePath = path.join(saveDir, file.name);
+ const promise = fs.promises.writeFile(filePath, file.content, { encoding: "utf8" }).catch(error => {
+ logger.error(`Cannot save file: ${filePath} for extension: "${manifest.name}", error:\n`, error);
+ });
+ saveFilesPromises.push(promise);
+ }
+
+ await Promise.all(saveFilesPromises);
+
+ const res = Ext.addPath(path.join(saveDir, MANIFEST_FILE_NAME));
+
+ if (res.existed) {
+ throw new Error("Extension unexpectedly already added");
+ }
+
+ return res.id;
});
+
listenToWebRegisterCallback(
"registerManifestChangeObserver",
- (webContents: E.WebContents, args: any, callback: Function) => {
+ (webContents: E.WebContents, args: any, callback: () => void) => {
Ext.addObserver(callback);
return () => {
@@ -87,4 +185,111 @@ export const registerIpcMainHandlers = () => {
};
},
);
+
+ E.ipcMain.handle("writeFiles", async (sender, data) => {
+ const files = data.files;
+
+ if (!files.length) {
+ return;
+ }
+
+ const view = WindowManager.instance.mainWindow;
+ let skipReplaceConfirmation = false;
+ let directoryPath = null;
+ const lastDir = storage.get().app.lastExportDir || storage.get().app.exportDir;
+
+ if (files.length === 1 && !files[0].name.includes(path.sep)) {
+ const originalFileName = files[0].name;
+ const savePath = await showSaveDialog(view, {
+ defaultPath: `${lastDir}/${path.basename(originalFileName)}`,
+ showsTagField: false,
+ });
+
+ if (savePath) {
+ directoryPath = path.dirname(savePath);
+ files[0].name = path.basename(savePath);
+ if (path.extname(files[0].name) === "") {
+ files[0].name += path.extname(originalFileName);
+ } else {
+ skipReplaceConfirmation = true;
+ }
+
+ storage.setExportDirectory(path.parse(savePath).dir);
+ }
+ } else {
+ const directories = await showOpenDialog(view, {
+ properties: ["openDirectory", "createDirectory"],
+ buttonLabel: "Save",
+ defaultPath: lastDir,
+ });
+ await wait(1);
+ if (!directories || directories.length !== 1) {
+ return;
+ }
+ directoryPath = directories[0];
+ storage.setExportDirectory(directoryPath);
+ }
+ if (!directoryPath) {
+ return;
+ }
+ directoryPath = path.resolve(directoryPath);
+ let filesToBeReplaced = 0;
+ for (const file of files) {
+ const outputPath = path.join(directoryPath, file.name);
+ const validExtensions = [".fig", ".jpg", ".pdf", ".png", ".svg"];
+ if (
+ path.relative(directoryPath, outputPath).startsWith("..") ||
+ !validExtensions.includes(path.extname(outputPath))
+ ) {
+ await showMessageBox(view, {
+ type: "error",
+ title: "Export Failed",
+ message: "Export failed",
+ detail: `"${outputPath}" is not a valid path. No files were saved.`,
+ buttons: ["OK"],
+ defaultId: 0,
+ });
+ return;
+ }
+ try {
+ fs.accessSync(outputPath, fs.constants.R_OK);
+ ++filesToBeReplaced;
+ } catch (ex) {}
+ }
+ if (filesToBeReplaced > 0 && !skipReplaceConfirmation) {
+ const single = filesToBeReplaced === 1;
+ const selectedID = await showMessageBox(view, {
+ type: "warning",
+ title: "Replace Existing Files",
+ message: `Replace existing file${single ? "" : `s`}?`,
+ detail: `${
+ single
+ ? `"${files[0].name}" already exists`
+ : `${filesToBeReplaced} files including "${files[0].name}" already exist`
+ }. Replacing ${single ? "it" : "them"} will overwrite ${single ? "its" : "their"} existing contents.`,
+ buttons: ["Replace", "Cancel"],
+ defaultId: 0,
+ });
+ if (selectedID !== 0) {
+ return;
+ }
+ }
+ for (const file of files) {
+ const outputPath = path.join(directoryPath, file.name);
+ mkPath(path.dirname(outputPath));
+
+ try {
+ fs.writeFileSync(outputPath, Buffer.from(file.buffer), { encoding: "binary" });
+ } catch (ex) {
+ await showMessageBox(view, {
+ type: "error",
+ title: "Export Failed",
+ message: "Saving file failed",
+ detail: `"${file.name}" could not be saved. Remaining files will not be saved.`,
+ buttons: ["OK"],
+ defaultId: 0,
+ });
+ }
+ }
+ });
};
diff --git a/src/main/window/Tabs.ts b/src/main/window/Tabs.ts
index cf8fced1..a161922d 100755
--- a/src/main/window/Tabs.ts
+++ b/src/main/window/Tabs.ts
@@ -1,32 +1,33 @@
-import * as Settings from "electron-settings";
import * as E from "electron";
import * as path from "path";
import { DEFAULT_SETTINGS } from "Const";
import { isDev } from "Utils/Common";
import Fonts from "../Fonts";
+import { storage } from "../Storage";
+import { logger } from "../Logger";
+import WindowManager from "./WindowManager";
export default class Tabs {
- public static registeredCancelCallbackMap: Map = new Map();
+ public static registeredCancelCallbackMap: Map void> = new Map();
private static tabs: Array = [];
- public static newTab = (url: string, rect: E.Rectangle, preloadScript?: string): E.BrowserView => {
+ public static newTab = (url: string, rect: E.Rectangle, preloadScript?: string, save = true): E.BrowserView => {
const options: E.BrowserViewConstructorOptions = {
webPreferences: {
nodeIntegration: false,
- contextIsolation: true,
- webSecurity: true,
webgl: true,
- experimentalFeatures: false,
- zoomFactor: Settings.get("ui.scaleFigmaUI") as number,
+ contextIsolation: false,
+ worldSafeExecuteJavaScript: true,
+ zoomFactor: 1,
},
};
if (preloadScript !== "") {
options.webPreferences.preload = path.resolve(
isDev ? `${process.cwd()}/dist/` : `${__dirname}/../`,
- "middleware",
+ "renderer/middleware",
preloadScript || "",
);
}
@@ -42,13 +43,23 @@ export default class Tabs {
tab.setBounds(rect);
tab.webContents.loadURL(url);
tab.webContents.on("dom-ready", () => {
- let dirs = Settings.get("app.fontDirs") as string[];
+ let dirs = storage.get().app.fontDirs;
+
+ const currentThemeId = storage.get().theme.currentTheme;
+ if (currentThemeId !== "0") {
+ const wm = WindowManager.instance;
+ const foundTheme = wm.themes.find(theme => theme.id === currentThemeId);
+
+ if (foundTheme) {
+ tab.webContents.send("themes-change", foundTheme);
+ }
+ }
if (!dirs) {
dirs = DEFAULT_SETTINGS.app.fontDirs;
}
Fonts.getFonts(dirs)
- .catch(err => console.error(`Failed to load local fonts, error: ${err}`))
+ .catch(err => logger.error(`Failed to load local fonts, error: ${err}`))
.then(fonts => {
tab.webContents.send("updateFonts", fonts);
});
@@ -56,15 +67,16 @@ export default class Tabs {
isDev && tab.webContents.toggleDevTools();
- Tabs.tabs.push(tab);
+ if (save) {
+ Tabs.tabs.push(tab);
+ }
return tab;
};
public static closeAll = () => {
Tabs.tabs = Tabs.tabs.filter(t => {
- if (t.id != 1) {
- t.destroy();
+ if (t.webContents.id != 1) {
return false;
} else {
return true;
@@ -74,19 +86,35 @@ export default class Tabs {
public static close = (id: number) => {
Tabs.tabs = Tabs.tabs.filter(t => {
- if (t.id != id) {
+ if (t.webContents.id != id) {
return true;
} else {
- t.destroy();
+ // FIXME: https://github.com/electron/electron/pull/23578#issuecomment-703736447
+ t.webContents.loadURL("about:blank");
+ if (t.webContents && !t.webContents.isDestroyed()) {
+ t.webContents.destroy();
+ }
return false;
}
});
};
- public static reloadAll = () => Tabs.tabs.forEach(t => (!t.isDestroyed() ? t.webContents.reload() : ""));
+ public static reloadAll = () => Tabs.tabs.forEach(t => (!t.webContents.isDestroyed() ? t.webContents.reload() : ""));
+
+ public static getTabByIndex = (index: number): E.BrowserView | undefined => {
+ return Tabs.tabs[index];
+ };
+
+ public static getTabIndex = (webContentsId: number): number | undefined => {
+ let index: number | undefined;
+
+ Tabs.tabs.forEach((t, i) => {
+ if (t.webContents.id === webContentsId) {
+ index = i;
+ }
+ });
- public static focus = (id: number): E.BrowserView => {
- return Tabs.tabs.find(t => t.id === id) as E.BrowserView;
+ return index;
};
public static getAll = (): Array => Tabs.tabs;
diff --git a/src/main/window/WindowManager.ts b/src/main/window/WindowManager.ts
index 2b069e2c..9290ff30 100755
--- a/src/main/window/WindowManager.ts
+++ b/src/main/window/WindowManager.ts
@@ -1,58 +1,92 @@
import installExtension, { REACT_DEVELOPER_TOOLS } from "electron-devtools-installer";
-import * as Settings from "electron-settings";
import * as E from "electron";
-import { exec } from "child_process";
import * as url from "url";
import Tabs from "./Tabs";
-import initMainMenu from "./menu";
-import Commander from "../Commander";
+import { storage } from "../Storage";
+import { logger } from "../Logger";
import MenuState from "../MenuState";
import * as Const from "Const";
import {
isDev,
- isComponentUrl,
- isRedeemAuthUrl,
- isProtoLink,
normalizeUrl,
- getComponentTitle,
- app,
+ isValidProjectLink,
+ isPrototypeUrl,
+ isAppAuthGrandLink,
+ isAppAuthRedeem,
+ parseURL,
+ isFigmaDocLink,
+ isCommunityUrl,
} from "Utils/Common";
-import { winUrlDev, winUrlProd, isFileBrowser } from "Utils/Main";
+import {
+ winUrlDev,
+ winUrlProd,
+ toggleDetachedDevTools,
+ getThemesFromDirectory,
+ setMenuFromTemplate,
+ buildActionToMenuItemMap,
+ resetMenu,
+ showMessageBoxSync,
+ loadCreatorTheme,
+ saveCreatorTheme,
+ exportCreatorTheme,
+ updateThemesFromRepository,
+ getThemesCount,
+} from "Utils/Main";
import { registerIpcMainHandlers } from "Main/events";
class WindowManager {
home: string;
mainWindow: E.BrowserWindow;
+ settingsView: E.BrowserView | null = null;
+ themeCreatorView: E.BrowserView | null = null;
mainTab: E.BrowserView;
figmaUiScale: number;
panelScale: number;
closedTabsHistory: Array = [];
+ themes: Themes.Theme[] = [];
+ creatorTheme: Themes.Theme;
+ private lastFocusedTab: E.WebContents;
private tabs: Tab[];
+ private menu: E.Menu;
private static _instance: WindowManager;
- private panelHeight = Settings.get("app.panelHeight") as number;
+ private panelHeight = storage.get().app.panelHeight;
+ private enableColorSpaceSrgbWasChanged = false;
+
+ private constructor() {
+ this.home = Const.HOMEPAGE;
+ this.figmaUiScale = storage.get().ui.scaleFigmaUI;
+ this.panelScale = storage.get().ui.scalePanel;
- private constructor(options: E.BrowserWindowConstructorOptions, home: string) {
- this.home = home;
- this.figmaUiScale = Settings.get("ui.scaleFigmaUI") as number;
- this.panelScale = Settings.get("ui.scalePanel") as number;
+ const options: E.BrowserWindowConstructorOptions = {
+ width: 1200,
+ height: 900,
+ frame: false,
+ webPreferences: {
+ sandbox: false,
+ zoomFactor: 1,
+ nodeIntegration: true,
+ nodeIntegrationInWorker: false,
+ webviewTag: false,
+ webSecurity: false,
+ webgl: true,
+ experimentalFeatures: true,
+ enableRemoteModule: true,
+ contextIsolation: false,
+ },
+ };
this.mainWindow = new E.BrowserWindow(options);
this.mainWindow.loadURL(isDev ? winUrlDev : winUrlProd);
- if (!Settings.get("app.disabledMainMenu")) {
- initMainMenu();
- } else {
- E.Menu.setApplicationMenu(null);
- this.mainWindow.setMenuBarVisibility(false);
- }
+ this.initMenu();
- this.mainTab = this.addTab("loadMainContent.js");
+ this.mainTab = this.addMainTab();
this.mainWindow.on("resize", this.updateBounds);
- this.mainWindow.on("maximize", (e: Event) => setTimeout(() => this.updateBounds(e), 100));
- this.mainWindow.on("unmaximize", (e: Event) => setTimeout(() => this.updateBounds(e), 100));
- this.mainWindow.on("move", (e: Event) => setTimeout(() => this.updateBounds(e), 100));
+ this.mainWindow.on("maximize", () => setTimeout(() => this.updateBounds(), 100));
+ this.mainWindow.on("unmaximize", () => setTimeout(() => this.updateBounds(), 100));
+ this.mainWindow.on("move", () => setTimeout(() => this.updateBounds(), 100));
isDev && this.installReactDevTools();
isDev && this.mainWindow.webContents.openDevTools({ mode: "detach" });
@@ -62,9 +96,12 @@ class WindowManager {
E.app.on("will-quit", this.onWillQuit);
- if (Settings.get("app.saveLastOpenedTabs")) {
- setTimeout(() => this.resoreTabs(), 1000);
+ if (storage.get().app.saveLastOpenedTabs) {
+ setTimeout(() => this.restoreTabs(), 1000);
}
+
+ this.updateThemes();
+ this.updatePanelScale(this.panelScale);
}
static get instance(): WindowManager {
@@ -72,32 +109,13 @@ class WindowManager {
return WindowManager._instance;
}
- const options: E.BrowserWindowConstructorOptions = {
- width: 1200,
- height: 900,
- frame: !(Settings.get("app.disabledMainMenu") as boolean),
- autoHideMenuBar: Settings.get("app.showMainMenu") as boolean,
- webPreferences: {
- sandbox: false,
- zoomFactor: 1,
- nodeIntegration: true,
- nodeIntegrationInWorker: false,
- webviewTag: false,
- webSecurity: false,
- webgl: true,
- experimentalFeatures: true,
- },
- };
-
- const home = Const.HOMEPAGE;
-
- WindowManager._instance = new WindowManager(options, home);
+ WindowManager._instance = new WindowManager();
return WindowManager._instance;
}
openUrl = (url: string) => {
- if (isRedeemAuthUrl(url)) {
+ if (isAppAuthRedeem(url)) {
const normalizedUrl = normalizeUrl(url);
const tab = Tabs.getAll()[0];
@@ -113,23 +131,56 @@ class WindowManager {
this.mainTab.webContents.loadURL(Const.RECENT_FILES);
};
- private resoreTabs = () => {
- const tabs = Settings.get("app.lastOpenedTabs") as SavedTab[];
+ private restoreTabs = () => {
+ const tabs = storage.get().app.lastOpenedTabs;
- if (Array.isArray(tabs)) {
+ if (Array.isArray(tabs) && tabs.length) {
tabs.forEach((tab, i) => {
setTimeout(() => {
- if (isFileBrowser(tab.url)) {
- this.addTab("loadMainContent.js", tab.url, tab.title);
- } else {
- this.addTab("loadContent.js", tab.url, tab.title);
- }
- }, 1500 * i);
+ this.addTab("loadContent.js", tab.url, tab.title, false);
+ }, 500 * i);
});
+
+ storage.clearLastOpenedTabs();
+
+ MenuState.updateInFileBrowserActionState();
}
};
- private onWillQuit = () => {
+ private initMenu = (template?: E.MenuItemConstructorOptions[]) => {
+ let pluginMenuData: Menu.MenuItem[] = [];
+ this.menu = setMenuFromTemplate(pluginMenuData, template);
+ const menuItemMap = buildActionToMenuItemMap(this.menu);
+
+ this.menu = resetMenu(pluginMenuData, template);
+
+ E.app.on("os-menu-invalidated", state => {
+ if (Array.isArray(state.pluginMenuData)) {
+ pluginMenuData = state.pluginMenuData;
+
+ this.menu = resetMenu(pluginMenuData, template);
+ }
+
+ if (!state.actionState) return;
+
+ for (const action of Object.keys(menuItemMap)) {
+ const menuItem: E.MenuItem = menuItemMap[action];
+ menuItem.enabled = state.actionState ? !!state.actionState[action] : false;
+ }
+ });
+ };
+
+ private newProject = (): void => {
+ const currentView = this.addTab();
+ const onDidFinishLoad = (): void => {
+ currentView.webContents.send("newFile");
+ currentView.webContents.removeListener("did-finish-load", onDidFinishLoad);
+ };
+
+ currentView.webContents.on("did-finish-load", onDidFinishLoad);
+ };
+
+ private onWillQuit = (): void => {
const lastOpenedTabs: SavedTab[] = [];
this.tabs.forEach(tab => {
@@ -141,14 +192,16 @@ class WindowManager {
}
});
- Settings.set("app.lastOpenedTabs", lastOpenedTabs as any);
+ storage.setOpenedTabs(lastOpenedTabs);
};
- private addIpc = () => {
- E.ipcMain.on(Const.NEWTAB, async () => this.addTab());
-
- E.ipcMain.on("app-exit", () => {
- app.quit();
+ private addIpc = (): void => {
+ E.ipcMain.on("newTab", () => this.addTab());
+ E.ipcMain.on("newProject", () => {
+ this.newProject();
+ });
+ E.ipcMain.on("appExit", () => {
+ E.app.quit();
});
E.ipcMain.on("window-minimize", () => {
this.mainWindow.minimize();
@@ -160,39 +213,19 @@ class WindowManager {
this.mainWindow.maximize();
}
});
-
- E.ipcMain.on(Const.CLOSETAB, (event: Event, id: number) => {
+ E.ipcMain.on("closeTab", (event, id) => {
this.closeTab(id);
});
+ E.ipcMain.on("setTabFocus", (event, id) => {
+ this.focusTab(id);
- E.ipcMain.on(Const.FOCUSTAB, (event: Event, id: number) => {
- const view = Tabs.focus(id);
- this.mainWindow.setBrowserView(view);
-
- if (isFileBrowser(view.webContents.getURL())) {
- MenuState.updateInFileBrowserActionState();
- } else {
- MenuState.updateInProjectActionState();
- }
+ MenuState.updateInProjectActionState();
});
-
- E.ipcMain.on(Const.CLEARVIEW, (event: Event) => {
- this.mainWindow.setBrowserView(null);
+ E.ipcMain.on("setFocusToMainTab", () => {
+ this.focusMainTab();
});
-
- E.ipcMain.on(Const.MAINTAB, (event: Event) => {
- const view = Tabs.focus(1);
- this.mainWindow.setBrowserView(view);
-
- if (isFileBrowser(view.webContents.getURL())) {
- MenuState.updateInFileBrowserActionState();
- } else {
- MenuState.updateInProjectActionState();
- }
- });
-
- E.ipcMain.on(Const.CLOSEALLTAB, () => {
- console.log("Close all tab");
+ E.ipcMain.on("closeAllTab", () => {
+ logger.debug("Close all tab");
});
E.ipcMain.on("setTitle", (event, title) => {
const tab = Tabs.getByWebContentId(event.sender.id);
@@ -201,208 +234,493 @@ class WindowManager {
return;
}
- this.mainWindow.webContents.send(Const.SETTITLE, { id: tab.id, title });
+ this.mainWindow.webContents.send("setTitle", { id: tab.webContents.id, title });
+ });
+ E.ipcMain.on("openMenu", () => {
+ const windowWidth = this.mainWindow.getBounds().width;
+
+ this.menu.popup({
+ window: this.mainWindow,
+ x: windowWidth - Const.MENU_WIDTH,
+ y: this.panelHeight,
+ });
});
E.ipcMain.on("setPluginMenuData", (event, pluginMenu) => {
- MenuState.updatePluginState(pluginMenu);
+ const view = Tabs.getByWebContentId(event.sender.id);
+
+ if (!view) {
+ return;
+ }
+
+ if (view.webContents.id !== this.mainTab.webContents.id) {
+ MenuState.updatePluginState(pluginMenu);
+ } else {
+ MenuState.updateInFileBrowserActionState();
+ }
});
E.ipcMain.on("registerManifestChangeObserver", (event: any, callbackId: any) => {
- console.log("registerManifestChangeObserver, callbackId: ", callbackId);
+ logger.debug("registerManifestChangeObserver, callbackId: ", callbackId);
const tab = Tabs.getByWebContentId(event.sender.id);
if (!tab) {
return;
}
+ });
+ E.ipcMain.on("setTabUrl", (event, url: string) => {
+ const view = Tabs.getByWebContentId(event.sender.id);
+
+ if (!view) {
+ return;
+ }
- // exports.extensionRegistry.addObserver(callback);
- // return () => {
- // exports.extensionRegistry.removeObserver(callback);
- // };
+ this.mainWindow.webContents.send("setTabUrl", { id: view.webContents.id, url });
});
- E.ipcMain.on(Const.SETTABURL, (event: Event, url: string) => {
- const view = this.mainWindow.getBrowserView();
+ E.ipcMain.on("updateFileKey", (event, key) => {
+ const view = Tabs.getByWebContentId(event.sender.id);
- if (!view) return;
+ if (!view) {
+ return;
+ }
- this.mainWindow.webContents.send(Const.SETTABURL, { id: view.id, url });
+ this.mainWindow.webContents.send("updateFileKey", { id: view.webContents.id, fileKey: key });
});
+ E.ipcMain.on("updateActionState", (event, state) => {
+ MenuState.updateActionState(state);
+ });
+ E.ipcMain.on("openFile", (event, ...args) => {
+ let url = `${this.home}${args[0]}`;
- E.ipcMain.on(Const.UPDATEFILEKEY, (event: Event, key: string) => {
- const view = this.mainWindow.getBrowserView();
+ if (args[2]) {
+ url = `${url}${args[2]}`;
+ }
- if (!view) return;
+ this.addTab("loadContent.js", url, undefined, false);
+ });
+ E.ipcMain.on("setFeatureFlags", (event, args) => {
+ storage.setFeatureFlags(args.featureFlags);
+ });
+ E.ipcMain.on("openDevTools", (event, mode) => {
+ if (event.sender) {
+ event.sender.openDevTools({ mode });
+ }
+ });
+ E.ipcMain.on("startAppAuth", (event, args) => {
+ if (isAppAuthGrandLink(args.grantPath)) {
+ const url = `${this.home}${args.grantPath}?desktop_protocol=figma`;
- this.mainWindow.webContents.send(Const.UPDATEFILEKEY, { id: view.id, fileKey: key });
+ E.shell.openExternal(url);
+ }
});
+ E.ipcMain.on("finishAppAuth", (event, args) => {
+ const url = `${this.home}${args.redirectURL}`;
- E.ipcMain.on(Const.UPDATEACTIONSTATE, (event: Event, state: MenuState.State) => {
- MenuState.updateActionState(state);
+ this.mainTab.webContents.loadURL(url);
});
+ E.ipcMain.on("receiveTabs", (event, tabs) => {
+ this.tabs = tabs;
+ });
+ E.ipcMain.on("enableColorSpaceSrgbWasChanged", (event, enabled) => {
+ const previousValue = storage.get().app.enableColorSpaceSrgb;
+
+ if (enabled === previousValue) {
+ return;
+ }
- E.ipcMain.on(Const.TOHOME, (event: Event, title: string) => {
- this.openFileBrowser();
+ this.enableColorSpaceSrgbWasChanged = true;
});
+ E.ipcMain.on("closeSettingsView", () => {
+ if (!this.settingsView) {
+ return;
+ }
- E.ipcMain.on(Const.RECIVETABS, (event: Event, tabs: Tab[]) => {
- this.tabs = tabs;
+ if (this.settingsView.webContents.isDevToolsOpened()) {
+ this.settingsView.webContents.closeDevTools();
+ }
+
+ this.mainWindow.removeBrowserView(this.settingsView);
+
+ if (this.enableColorSpaceSrgbWasChanged) {
+ const id = showMessageBoxSync(this.mainWindow, {
+ type: "none",
+ title: "Figma",
+ message: "Restart to Change Color Space?",
+ detail: `Figma needs to be restarted to change the color space.`,
+ buttons: ["Cancel", "Restart"],
+ defaultId: 1,
+ });
+
+ if (id) {
+ E.app.relaunch();
+ E.app.quit();
+ }
+ }
+
+ this.destroyView(this.settingsView);
});
+ E.ipcMain.on("closeThemeCreatorView", () => {
+ if (!this.themeCreatorView) {
+ return;
+ }
- E.app.on("update-figma-ui-scale", scale => {
+ if (this.themeCreatorView.webContents.isDevToolsOpened()) {
+ this.themeCreatorView.webContents.closeDevTools();
+ }
+
+ this.mainWindow.removeBrowserView(this.themeCreatorView);
+
+ this.destroyView(this.themeCreatorView);
+ });
+ E.ipcMain.on("updateFigmaUiScale", (event, scale) => {
this.updateFigmaUiScale(scale);
});
- E.app.on("update-panel-scale", scale => {
+ E.ipcMain.on("updatePanelScale", (event, scale) => {
this.updatePanelScale(scale);
});
- E.app.on("set-hide-main-menu", hide => {
- this.mainWindow.setAutoHideMenuBar(hide);
+ E.ipcMain.on("updateVisibleNewProjectBtn", (event, visible) => {
+ this.mainWindow.webContents.send("updateVisibleNewProjectBtn", visible);
+ });
+ E.ipcMain.on("themes-change", (event, theme) => {
+ if (theme.id === Const.TEST_THEME_ID) {
+ const testTheme = this.themes.find(t => t.id === theme.id);
- if (!hide) {
- this.mainWindow.setMenuBarVisibility(true);
+ if (testTheme) {
+ testTheme.palette = theme.palette;
+ }
}
+
+ this.changeTheme(theme);
+ });
+ E.ipcMain.on("set-default-theme", event => {
+ this.changeTheme(Const.DEFAULT_THEME);
+ });
+ E.ipcMain.on("saveCreatorTheme", (event, theme) => {
+ saveCreatorTheme(theme);
+ if (theme.id === Const.TEST_THEME_ID) {
+ const testTheme = this.themes.find(t => t.id === theme.id);
+
+ if (testTheme) {
+ testTheme.palette = theme.palette;
+ }
+ }
+
+ this.creatorTheme = theme;
});
- E.app.on("set-disable-main-menu", hide => {
- setTimeout(() => {
- exec(process.argv.join(" "));
- E.app.quit();
- }, 1000);
+ E.ipcMain.on("themeCreatorExportTheme", (event, theme) => {
+ exportCreatorTheme(theme);
+ });
+ E.ipcMain.on("sync-themes", async () => {
+ logger.debug("Sync themes start");
+ if (this.isActive(this.settingsView)) {
+ this.settingsView.webContents.send("sync-themes-start");
+ }
+
+ await updateThemesFromRepository();
+ await this.updateThemes();
+
+ if (this.isActive(this.settingsView)) {
+ this.settingsView.webContents.send("sync-themes-end");
+ }
+ logger.debug("Sync themes end");
+ });
+
+ E.app.on("toggle-current-tab-devtools", () => {
+ toggleDetachedDevTools(this.lastFocusedTab);
+ });
+ E.app.on("openSettingsView", () => {
+ this.enableColorSpaceSrgbWasChanged = false;
+ this.initSettingsView();
+ });
+ E.app.on("openThemeCreatorView", () => {
+ this.initThemeCreatorView();
});
E.app.on("sign-out", () => {
this.logoutAndRestart();
});
- E.app.on("handle-command", (id: string) => {
+ E.app.on("toggle-settings-developer-tools", () => {
+ if (this.settingsView && this.isActive(this.settingsView)) {
+ toggleDetachedDevTools(this.settingsView.webContents);
+ } else if (this.themeCreatorView && this.isActive(this.themeCreatorView)) {
+ toggleDetachedDevTools(this.themeCreatorView.webContents);
+ }
+ });
+ E.app.on("handleUrl", (senderId, path) => {
+ if (senderId !== this.mainTab.webContents.id) {
+ this.focusMainTab();
+ }
+
+ this.mainTab.webContents.send("handleUrl", path);
+ });
+ E.app.on("handle-command", (sender, id) => {
switch (id) {
- case "scale-normal":
- {
- this.updateAllScale();
- }
+ case "scale-normal": {
+ this.updateAllScale();
break;
- case "scale-inc0.1":
- {
- this.updateAllScale(0.1);
- }
+ }
+ case "scale-inc0.1": {
+ this.updateAllScale(0.1);
break;
- case "scale-dic0.1":
- {
- this.updateAllScale(-0.1);
- }
+ }
+ case "scale-dic0.1": {
+ this.updateAllScale(-0.1);
break;
- case "scale-inc0.05":
- {
- this.updateAllScale(0.05);
- }
+ }
+ case "scale-inc0.05": {
+ this.updateAllScale(0.05);
break;
- case "scale-dic0.05":
- {
- this.updateAllScale(-0.05);
- }
+ }
+ case "scale-dic0.05": {
+ this.updateAllScale(-0.05);
break;
- case "openFileBrowser":
- {
- this.openFileBrowser();
- }
+ }
+ case "openFileBrowser": {
+ this.focusMainTab();
break;
- case "reopenClosedTab":
- {
- if (this.closedTabsHistory.length <= 0) return;
+ }
+ case "reopenClosedTab": {
+ if (this.closedTabsHistory.length <= 0) return;
- const url = this.closedTabsHistory.pop();
- const script = /files\/recent$/.test(url) ? "loadMainContent.js" : "loadContent.js";
+ const url = this.closedTabsHistory.pop();
+ const script = isValidProjectLink(url) ? "loadContent.js" : "loadMainContent.js";
- this.addTab(script, url);
- }
+ this.addTab(script, url);
break;
- case "closeTab":
- {
- const currentView = this.mainWindow.getBrowserView();
-
- if (currentView.id === 1) return;
+ }
+ case "closeTab": {
+ const view = Tabs.getByWebContentId(sender.id);
- this.mainWindow.webContents.send(Const.CLOSETAB, { id: currentView.id });
- this.closeTab(currentView.id);
+ if (!view) {
+ return;
}
+
+ this.mainWindow.webContents.send("closeTab", { id: view.webContents.id });
+ this.closeTab(view.webContents.id);
break;
- case "newFile":
- {
- const currentView = this.addTab();
- const onDidFinishLoad = () => {
- currentView.webContents.send("newFile");
- currentView.webContents.removeListener("did-finish-load", onDidFinishLoad);
- };
-
- currentView.webContents.on("did-finish-load", onDidFinishLoad);
- }
+ }
+ case "newFile": {
+ this.newProject();
break;
- case "openSettings":
- {
- this.addTab("", `component://Settings`);
- }
+ }
+ case "chrome://gpu": {
+ this.addTab("", `chrome://gpu`, "chrome://gpu/");
break;
- case "chrome://gpu":
- {
- this.addTab("", `chrome://gpu`, "chrome://gpu/");
+ }
+ case "openFileUrlClipboard": {
+ const uri = E.clipboard.readText();
+
+ if (isValidProjectLink(uri) || isPrototypeUrl(uri)) {
+ this.addTab("loadContent.js", normalizeUrl(uri));
+ }
+
+ if (isCommunityUrl(uri)) {
+ const parsedUrl = url.parse(uri);
+ this.mainTab.webContents.send("handleUrl", parsedUrl.path);
+ this.focusMainTab();
}
break;
+ }
default: {
- Commander.exec(id);
+ logger.error("unavailable command id: ", id);
}
}
});
};
- public addTab = (scriptPreload = "loadMainContent.js", url = `${this.home}/login`, title?: string): E.BrowserView => {
- if (isComponentUrl(url)) {
- this.mainWindow.setBrowserView(null);
- this.mainWindow.webContents.send(Const.TABADDED, {
- title: title ? title : getComponentTitle(url),
- showBackBtn: false,
- url,
- });
+ public tryHandleAppAuthRedeemUrl = (url: string): boolean => {
+ if (isAppAuthRedeem(url)) {
+ const normalizedUrl = normalizeUrl(url);
+ const parsedUrl = parseURL(normalizedUrl);
+
+ const secret = parsedUrl.searchParams.get("g_secret");
+ if (secret) {
+ this.mainTab.webContents.send("redeemAppAuth", secret);
+ return true;
+ }
- return null;
+ return true;
}
+ return false;
+ };
+
+ public addTab = (
+ scriptPreload = "loadMainContent.js",
+ url = `${this.home}/login`,
+ title?: string,
+ focused = true,
+ ): E.BrowserView => {
const tab = Tabs.newTab(url, this.getBounds(), scriptPreload);
- this.mainWindow.setBrowserView(tab);
+ if (focused) {
+ this.focusTab(tab.webContents.id);
+ }
+
tab.webContents.on("will-navigate", this.onMainWindowWillNavigate);
tab.webContents.on("new-window", this.onNewWindow);
- if (isFileBrowser) {
- MenuState.updateInFileBrowserActionState();
- } else {
- MenuState.updateActionState(Const.ACTIONTABSTATE);
+ MenuState.updateActionState(Const.ACTIONTABSTATE);
+
+ this.mainWindow.webContents.send("didTabAdd", { id: tab.webContents.id, url, showBackBtn: true, title, focused });
+
+ if (focused) {
+ this.focusTab(tab.webContents.id);
}
- this.mainWindow.webContents.send(Const.TABADDED, { id: tab.id, url, showBackBtn: true, title });
+ return tab;
+ };
+
+ public addMainTab = (): E.BrowserView => {
+ const url = `${this.home}/login`;
+ const tab = Tabs.newTab(url, this.getBounds(), "loadMainContent.js", false);
this.mainWindow.setBrowserView(tab);
+ tab.webContents.on("will-navigate", this.onMainTabWillNavigate);
+ tab.webContents.on("will-navigate", this.onMainWindowWillNavigate);
+ tab.webContents.on("new-window", this.onNewWindow);
+
+ MenuState.updateInFileBrowserActionState();
+
+ this.lastFocusedTab = tab.webContents;
+
return tab;
};
- private logoutAndRestart = (event?: E.Event) => {
+ public focusTab = (webContentsId: number): void => {
+ const tabs = Tabs.getAll();
+ let foundView = false;
+
+ for (const tab of tabs) {
+ if (tab.webContents.id === webContentsId) {
+ this.mainWindow.setBrowserView(tab);
+ this.lastFocusedTab = tab.webContents;
+ foundView = true;
+ }
+ }
+
+ if (!foundView) {
+ this.mainWindow.setBrowserView(this.mainTab);
+ this.lastFocusedTab = this.mainTab.webContents;
+ }
+ };
+
+ // For multiply BrowserView
+ // public focusTab = (webContentsId: number): void => {
+ // const tabs = Tabs.getAll();
+ // let foundView = false;
+
+ // for (const tab of tabs) {
+ // if (tab.webContents.id !== webContentsId) {
+ // this.mainWindow.removeBrowserView(tab);
+ // } else {
+ // foundView = true;
+ // this.mainWindow.addBrowserView(tab);
+ // this.lastFocusedTab = tab.webContents;
+ // }
+ // }
+
+ // if (!foundView) {
+ // this.mainWindow.addBrowserView(this.mainTab);
+ // this.lastFocusedTab = this.mainTab.webContents;
+ // }
+ // };
+
+ private initSettingsView = () => {
+ this.settingsView = new E.BrowserView({
+ webPreferences: {
+ nodeIntegration: true,
+ contextIsolation: false,
+ experimentalFeatures: false,
+ enableRemoteModule: true,
+ },
+ });
+
+ this.mainWindow.addBrowserView(this.settingsView);
+
+ const windowBounds = this.mainWindow.getBounds();
+
+ this.settingsView.setBounds({
+ height: windowBounds.height,
+ width: windowBounds.width,
+ y: 0,
+ x: 0,
+ });
+
+ this.settingsView.setAutoResize({
+ width: true,
+ height: true,
+ horizontal: true,
+ vertical: true,
+ });
+
+ this.settingsView.webContents.loadURL(isDev ? winUrlDev : winUrlProd);
+
+ this.settingsView.webContents.on("did-finish-load", () => {
+ this.settingsView.webContents.send("renderView", "Settings");
+ this.settingsView.webContents.send("getUploadedThemes", this.themes);
+
+ isDev && this.settingsView.webContents.openDevTools({ mode: "detach" });
+ });
+ };
+
+ private initThemeCreatorView = () => {
+ this.themeCreatorView = new E.BrowserView({
+ webPreferences: {
+ nodeIntegration: true,
+ contextIsolation: false,
+ experimentalFeatures: false,
+ enableRemoteModule: true,
+ },
+ });
+
+ this.mainWindow.addBrowserView(this.themeCreatorView);
+
+ const windowBounds = this.mainWindow.getBounds();
+
+ this.themeCreatorView.setBounds({
+ height: windowBounds.height,
+ width: windowBounds.width,
+ y: 0,
+ x: 0,
+ });
+
+ this.themeCreatorView.setAutoResize({
+ width: true,
+ height: true,
+ horizontal: true,
+ vertical: true,
+ });
+
+ this.themeCreatorView.webContents.loadURL(isDev ? winUrlDev : winUrlProd);
+
+ this.themeCreatorView.webContents.on("did-finish-load", () => {
+ this.themeCreatorView.webContents.send("renderView", "ThemeCreator");
+ this.themeCreatorView.webContents.send("getUploadedThemes", this.themes);
+ this.themeCreatorView.webContents.send("loadCreatorTheme", this.creatorTheme);
+ });
+ };
+
+ private logoutAndRestart = (event?: E.Event): void => {
E.net
.request(`${this.home}/logout`)
.on("response", response => {
response.on("error", (err: Error) => {
- console.log("Request error: ", err);
+ logger.error("Request error: ", err);
});
response.on("end", () => {
if (response.statusCode >= 200 && response.statusCode <= 299) {
- E.session.defaultSession!.cookies.flushStore().then(() => {
- const view = Tabs.focus(1);
- this.mainWindow.setBrowserView(view);
- view.webContents.reload();
+ E.session.defaultSession.cookies.flushStore().then(() => {
+ this.mainWindow.setBrowserView(this.mainTab);
+ this.mainTab.webContents.reload();
Tabs.closeAll();
- this.mainWindow.webContents.send(Const.CLOSEALLTAB);
+ this.mainWindow.webContents.send("closeAllTab");
});
}
if (response.statusCode >= 400) {
- E.session.defaultSession!.clearStorageData();
+ E.session.defaultSession.clearStorageData();
this.mainWindow.webContents.loadURL(`${this.home}`);
}
});
@@ -413,33 +731,75 @@ class WindowManager {
return;
};
+ private changeTheme = (theme: Themes.Theme) => {
+ this.mainTab.webContents.send("themes-change", theme);
+ this.mainWindow.webContents.send("themes-change", theme);
+
+ if (this.settingsView && this.isActive(this.settingsView)) {
+ this.settingsView.webContents.send("themes-change", theme);
+ }
+ if (this.themeCreatorView && this.isActive(this.themeCreatorView)) {
+ this.themeCreatorView.webContents.send("themes-change", theme);
+ }
+
+ const tabs = Tabs.getAll();
+
+ for (const tab of tabs) {
+ tab.webContents.send("themes-change", theme);
+ }
+
+ storage.setTheme(theme.id);
+ };
+
private onNewWindow = (event: Event, url: string) => {
event.preventDefault();
- console.log("newWindow, url: ", url);
+ logger.debug("newWindow, url: ", url);
if (/start_google_sso/.test(url)) return;
- if (isProtoLink(url)) {
+ if (isPrototypeUrl(url) || isValidProjectLink(url)) {
this.addTab("loadContent.js", url);
return;
}
- if (/figma.com\/my_plugins/.test(url)) {
- this.addTab("loadMainContent.js", url);
- return;
- }
-
E.shell.openExternal(url);
};
- private onMainWindowWillNavigate = (event: any, newUrl: string) => {
+ private focusMainTab = (): void => {
+ this.focusTab(this.mainTab.webContents.id);
+
+ MenuState.updateInFileBrowserActionState();
+
+ this.mainWindow.webContents.send("mainTabFocused");
+ };
+
+ private onMainTabWillNavigate = (event: E.Event, url: string): void => {
+ if (isValidProjectLink(url) || isPrototypeUrl(url)) {
+ this.addTab("loadContent.js", url);
+
+ event.preventDefault();
+ }
+ };
+
+ private onMainWindowWillNavigate = (event: any, newUrl: string): void => {
const currentUrl = event.sender.getURL();
+ if (isAppAuthRedeem(newUrl)) {
+ return;
+ }
+
if (newUrl === currentUrl) {
event.preventDefault();
return;
}
+ if (isFigmaDocLink(newUrl)) {
+ E.shell.openExternal(newUrl);
+
+ event.preventDefault();
+ return;
+ }
+
const from = url.parse(currentUrl);
const to = url.parse(newUrl);
@@ -454,43 +814,34 @@ class WindowManager {
this.logoutAndRestart(event);
}
- if (Const.REGEXP_APP_AUTH_REDEEM.test(from.pathname || "")) {
- return;
- }
if (to.search && to.search.match(/[\?\&]redirected=1/)) {
event.preventDefault();
return;
}
};
- private openFileBrowser = () => {
- const currentView = this.mainWindow.getBrowserView();
- const currentUrl = (currentView && currentView.webContents.getURL()) || "";
- const go: boolean = url.parse(currentUrl).pathname !== "/files/recent";
-
- MenuState.updateActionState(Const.INITACTIONINITSTATE);
+ private closeTab = (id: number): void => {
+ const currentTab = Tabs.getByWebContentId(id);
+ const currentTabUrl = currentTab.webContents.getURL();
+ const currentTabIndex = Tabs.getTabIndex(id);
- currentView && go && currentView!.webContents.loadURL(`${this.home}`);
- };
+ this.mainWindow.removeBrowserView(currentTab);
+ Tabs.close(id);
- private closeTab = (id: number) => {
- const views = Tabs.getAll();
- const currentView = this.mainWindow.getBrowserView();
- const index: number = views.findIndex(t => t.id == id);
- const view = Tabs.focus(views[index > 0 ? index - 1 : index].id);
- this.mainWindow.setBrowserView(view);
+ const index = currentTabIndex > 0 ? currentTabIndex - 1 : currentTabIndex;
+ const nextTab = Tabs.getTabByIndex(index);
- if (!currentView) {
- Tabs.close(id);
- return;
+ if (nextTab) {
+ this.focusTab(nextTab.webContents.id);
+ } else {
+ this.focusTab(this.mainTab.webContents.id);
+ MenuState.updateInFileBrowserActionState();
}
- this.closedTabsHistory.push(currentView.webContents.getURL());
-
- Tabs.close(id);
+ this.closedTabsHistory.push(currentTabUrl);
};
- private updateAllScale = (scale?: number) => {
+ private updateAllScale = (scale?: number): void => {
const views = Tabs.getAll();
let panelHeight = 0;
@@ -504,12 +855,12 @@ class WindowManager {
panelHeight = Math.floor(Const.TOPPANELHEIGHT * this.panelScale);
this.panelHeight = panelHeight;
- this.mainWindow.webContents.send(Const.UPDATEPANELHEIGHT, panelHeight);
+ this.mainWindow.webContents.send("updatePanelHeight", panelHeight);
- Settings.set("app.panelHeight", panelHeight);
+ storage.setPanelHeight(panelHeight);
- this.mainWindow.webContents.send(Const.UPDATEPANELSCALE, this.panelScale);
- this.mainWindow.webContents.send(Const.UPDATEUISCALE, this.figmaUiScale);
+ this.mainWindow.webContents.send("updatePanelScale", this.panelScale);
+ this.mainWindow.webContents.send("updateUiScale", this.figmaUiScale);
this.updateBounds();
@@ -518,7 +869,7 @@ class WindowManager {
}
};
- private updateFigmaUiScale = (figmaScale: number) => {
+ private updateFigmaUiScale = (figmaScale: number): void => {
const views = Tabs.getAll();
this.figmaUiScale = +figmaScale.toFixed(2);
@@ -528,20 +879,21 @@ class WindowManager {
}
};
- private updatePanelScale = (panelScale: number) => {
+ private updatePanelScale = (panelScale: number): void => {
let panelHeight = 0;
this.panelScale = +panelScale.toFixed(2);
panelHeight = Math.floor(Const.TOPPANELHEIGHT * panelScale);
this.panelHeight = panelHeight;
- this.mainWindow.webContents.send(Const.UPDATEPANELHEIGHT, panelHeight);
+ this.mainWindow.webContents.send("updatePanelHeight", panelHeight);
- Settings.set("app.panelHeight", panelHeight);
+ storage.setPanelHeight(panelHeight);
+ this.mainWindow.webContents.send("updatePanelScale", this.panelScale);
this.updateBounds();
};
- private getBounds = () => {
+ private getBounds = (): E.Rectangle => {
return {
x: 0,
y: this.panelHeight,
@@ -550,18 +902,56 @@ class WindowManager {
};
};
- private updateBounds = (event?: Event) => {
+ private updateBounds = (): void => {
const views = Tabs.getAll();
+ const bounds = this.getBounds();
+ this.mainTab.setBounds(bounds);
views.forEach((bw: E.BrowserView) => {
- bw.setBounds(this.getBounds());
+ bw.setBounds(bounds);
});
};
- private installReactDevTools = () => {
+ private updateThemes = async (): Promise => {
+ this.mainWindow.webContents.on("dom-ready", () => {
+ this.mainWindow.webContents.send("getUploadedThemes", this.themes);
+ });
+
+ this.creatorTheme = await loadCreatorTheme();
+ const themesCount = await getThemesCount();
+
+ logger.debug("themes count: ", themesCount);
+
+ if (themesCount === 0) {
+ logger.debug("Download themes from repository...");
+ await updateThemesFromRepository();
+ logger.debug("Download themes successful");
+ }
+
+ this.themes = await getThemesFromDirectory();
+ this.mainWindow.webContents.send("getUploadedThemes", this.themes);
+
+ if (this.isActive(this.settingsView)) {
+ this.settingsView.webContents.send("getUploadedThemes", this.themes);
+ }
+ };
+
+ private isActive = (view: E.BrowserView): boolean => {
+ if (!view || !view.webContents) {
+ return false;
+ }
+
+ return !view.webContents.isDestroyed();
+ };
+
+ private destroyView = (view: E.BrowserView): void => {
+ view.webContents.destroy();
+ };
+
+ private installReactDevTools = (): void => {
installExtension(REACT_DEVELOPER_TOOLS)
- .then((name: string) => console.log(`Added Extension: ${name}`))
- .catch((err: Error) => console.log("An error occurred: ", err));
+ .then((name: string) => logger.info(`Added Extension: ${name}`))
+ .catch((err: Error) => logger.error("An error occurred: ", err));
};
}
diff --git a/src/main/window/menu.ts b/src/main/window/menu.ts
deleted file mode 100644
index 661206e5..00000000
--- a/src/main/window/menu.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import * as E from "electron";
-
-import { setMenuFromTemplate, buildActionToMenuItemMap, resetMenu } from "Utils/Main";
-
-const init = (template?: E.MenuItemConstructorOptions[]) => {
- let pluginMenuData: Menu.MenuItem[] = [];
- const mainMenu: E.Menu = setMenuFromTemplate(pluginMenuData, template);
- const menuItemMap = buildActionToMenuItemMap(mainMenu);
-
- resetMenu(pluginMenuData, template);
-
- E.app.on("os-menu-invalidated", state => {
- if (state.pluginMenuData && state.pluginMenuData.length > 0) {
- pluginMenuData = state.pluginMenuData;
-
- resetMenu(pluginMenuData, template);
- }
-
- if (!state.actionState) return;
-
- for (const action of Object.keys(menuItemMap)) {
- const menuItem: E.MenuItem = menuItemMap[action];
- menuItem.enabled = state.actionState ? !!state.actionState[action] : false;
- }
- });
-};
-
-export default init;
diff --git a/src/middleware/ShortcutMan.ts b/src/middleware/ShortcutMan.ts
deleted file mode 100644
index a7bc3ec2..00000000
--- a/src/middleware/ShortcutMan.ts
+++ /dev/null
@@ -1,162 +0,0 @@
-/**
- * Copyright 2018 Chugunov Roman
- *
- * Licensed under the MIT license.
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * ShortcutMan is a simple keyboard shortcut library for JavaScript with
- * no external dependencies. Writed with TypeScript.
- *
- * @version 1.0.0
- */
-
-interface Sequence {
- sequence: string;
- callback: Function;
-}
-
-/**
- * Singleton for register shortcuts in window
- */
-export class ShortcutMan {
- private static _instance: ShortcutMan;
- private sequenceMap: Array = [];
- private shiftMap: any = {
- "~": "`",
- "!": "1",
- "@": "2",
- "#": "3",
- $: "4",
- "%": "5",
- "^": "6",
- "&": "7",
- "*": "8",
- "(": "9",
- ")": "0",
- _: "-",
- "+": "=",
- "|": "\\",
- "}": "]",
- "{": "[",
- '"': "'",
- ":": ";",
- "?": "/",
- ">": ".",
- "<": ",",
- };
-
- /**
- * Register event handler
- */
- private constructor() {
- window.addEventListener("keydown", event => {
- const key = event.key.toLocaleLowerCase();
- const pressedSequence: Array = [];
-
- if (event.shiftKey) {
- pressedSequence.push("shift");
- }
- if (event.altKey) {
- pressedSequence.push("alt");
- }
- if (event.ctrlKey) {
- pressedSequence.push("ctrl");
- }
- if (event.metaKey) {
- pressedSequence.push("meta");
- }
-
- if (key !== "control" && key !== "alt" && key !== "shift" && key !== "meta") {
- // If pressed the shift key
- if (event.shiftKey && this.shiftMap[key]) {
- pressedSequence.push(this.shiftMap[key]);
- } else {
- pressedSequence.push(key);
- }
- }
-
- const _sequence = this.sort(pressedSequence.join("+"));
- const sequence = this.sequenceMap.find(item => item.sequence === _sequence);
-
- if (!sequence) return;
-
- sequence.callback();
- });
- }
-
- /**
- * Adding the sequence and the callback
- * to the sequence collection
- */
- public bind = (sequence: string, cb: Function) => {
- if (sequence === "") return;
-
- this.sequenceMap.push({
- sequence: this.sort(sequence),
- callback: cb,
- });
- };
-
- /**
- * Deleting a sequence fron the sequence collection
- */
- public unbind = (sequence: string) => {
- const _sequence = this.sort(sequence);
-
- this.sequenceMap = this.sequenceMap.filter(item => item.sequence !== _sequence);
- };
-
- /**
- * Getting instance
- */
- public static get instance() {
- if (ShortcutMan._instance) {
- return ShortcutMan._instance;
- }
-
- return new ShortcutMan();
- }
-
- /**
- * Checking the transmitted key sequence to uniqueness.
- * If function returned the false, that transmitted sequence was be found.
- * If function returned true, that transmitted sequence is unique.
- */
- public checkForUniqueness = (sequence: string): boolean => {
- const _sequence = this.sort(sequence);
- const index = this.sequenceMap.findIndex(item => item.sequence === _sequence);
-
- return index === -1 ? true : false;
- };
-
- /**
- * Sorting sequence
- */
- private sort = (sequence: string) => {
- return sequence
- .split("+")
- .sort((a, b) => (a.length > b.length ? -1 : 1))
- .join("+")
- .toLocaleLowerCase();
- };
-}
-
-export default ShortcutMan.instance;
diff --git a/src/middleware/ThemesManager.ts b/src/middleware/ThemesManager.ts
new file mode 100644
index 00000000..53d7ed4a
--- /dev/null
+++ b/src/middleware/ThemesManager.ts
@@ -0,0 +1,165 @@
+import * as E from "electron";
+import { DEFAULT_THEME, SELECTORS_TO_IGNORE, PROPS_WITH_COLOR } from "Const";
+import { getColorsMap, variablesColorsMap } from "Utils/Common";
+
+export class ThemesManager {
+ private currentTheme: Themes.Theme;
+
+ constructor() {
+ this.currentTheme = DEFAULT_THEME;
+
+ this.themeEvents();
+ }
+
+ private themeEvents() {
+ E.ipcRenderer.on("themes-change", (_, theme) => {
+ this.changePalette(theme);
+ });
+ E.ipcRenderer.on("set-default-theme", () => {
+ this.changePalette(DEFAULT_THEME);
+ });
+ }
+
+ private changePalette(theme: Themes.Theme) {
+ this.currentTheme = theme;
+
+ this.setThemeVariables();
+ }
+
+ private getCoreStylesheet(): Themes.CSSRuleListCustom {
+ const css: any = document.styleSheets;
+ let coreStylesheet;
+
+ Object.keys(css).forEach(key => {
+ const cssFileUrl = css[key].href;
+
+ if (cssFileUrl && cssFileUrl.includes("figma_app")) {
+ coreStylesheet = css[key].cssRules;
+ }
+ });
+
+ return coreStylesheet;
+ }
+ private isRuleIgnored(selector: string): boolean {
+ let isMatch = false;
+
+ SELECTORS_TO_IGNORE.forEach(query => {
+ if (selector.includes(query)) {
+ isMatch = true;
+ }
+ });
+
+ return isMatch;
+ }
+
+ private setThemeVariables() {
+ const keys = Object.keys(this.currentTheme.palette);
+
+ for (const key of keys) {
+ const value = this.currentTheme.palette[key];
+ document.documentElement.style.setProperty(`--${key}`, value);
+
+ if (key === "bg-toolbar-active") {
+ document.documentElement.style.setProperty("--bg-primary-btn", value);
+ document.documentElement.style.setProperty("--bg-overlay-active", value);
+ }
+ if (key === "fg-overlay") {
+ document.documentElement.style.setProperty("--fg-overlay", value);
+ document.documentElement.style.setProperty("--fg-overlay-right", value);
+ }
+ if (key === "fg-toolbar-active") {
+ document.documentElement.style.setProperty("--fg-overlay-active", value);
+ }
+ if (key === "fg-toolbar-active") {
+ document.documentElement.style.setProperty("--fg-overlay-active", value);
+ }
+ if (key === "text-disabled") {
+ document.documentElement.style.setProperty("--fg-overlay-secondary", value);
+ document.documentElement.style.setProperty("--fg-toolbar-placeholder", value);
+ }
+ if (key === "borders") {
+ document.documentElement.style.setProperty("--fg-overlay-sep", value);
+ }
+ }
+ }
+
+ init(): void {
+ const figmaCoreStylesheet = this.getCoreStylesheet();
+
+ if (!figmaCoreStylesheet) {
+ return;
+ }
+
+ const colorsMap = getColorsMap(this.currentTheme.palette);
+ const additionStyleRules: string[] = [
+ "#react-page { background-color: var(--bg-panel); }",
+ `span[class*="action_option--shortcut"] { color: var(--fg-overlay); }`,
+ ];
+
+ this.setThemeVariables();
+
+ for (const cssRule of figmaCoreStylesheet) {
+ if (cssRule.selectorText != undefined && this.isRuleIgnored(cssRule.selectorText) === false) {
+ if (
+ (cssRule.style != undefined && cssRule.style.color != "") ||
+ cssRule.style.backgroundColor != "" ||
+ cssRule.style.fill != "" ||
+ cssRule.style.stroke != "" ||
+ cssRule.style.boxShadow != "" ||
+ cssRule.style.borderBottomColor != "" ||
+ cssRule.style.borderRightColor != "" ||
+ cssRule.style.borderTopColor != "" ||
+ cssRule.style.borderLeftColor != ""
+ ) {
+ PROPS_WITH_COLOR.forEach(colorProp => {
+ const colorValue = cssRule.style[colorProp];
+
+ if (colorValue != "" && colorsMap.hasOwnProperty(colorValue)) {
+ cssRule.style[colorProp] = `${variablesColorsMap[colorValue]}`;
+ }
+ });
+ }
+
+ if (/search--searchInput/.test(cssRule.selectorText)) {
+ cssRule.style["backgroundColor"] = `var(--bg-panel)`;
+ cssRule.style["color"] = `var(--text-active)`;
+ }
+
+ if (/searchIcon/.test(cssRule.selectorText)) {
+ cssRule.style["fill"] = `var(--text-active)`;
+ }
+ if (/tool_bar--toolBarRightSide|pages_panel--pageRowSelected/.test(cssRule.selectorText)) {
+ cssRule.style["fill"] = `var(--text-active)`;
+ }
+ if (/upgrade_section--icon/.test(cssRule.selectorText)) {
+ additionStyleRules.push(`span[class*="upgrade_section--icon"] > svg > path { fill: var(--text); }`);
+ }
+ if (
+ /user_view--devTokenNew|community_hub_banner--bannerIcon|full_width_page--closeMenu/.test(
+ cssRule.selectorText,
+ )
+ ) {
+ additionStyleRules.push(`${cssRule.selectorText} svg path { fill: var(--text) !important; }`);
+ }
+ if (/basic_form--textInput/.test(cssRule.selectorText)) {
+ cssRule.style["backgroundColor"] = `var(--bg-panel)`;
+ }
+ if (/step_breadcrumb--stepTitle/.test(cssRule.selectorText)) {
+ cssRule.style["color"] = `var(--text-active)`;
+ }
+ if (/toolbar_view--shareButton|basic_form--primaryBtn/.test(cssRule.selectorText)) {
+ cssRule.style["color"] = `var(--fg-toolbar-active)`;
+ }
+ }
+ }
+
+ if (additionStyleRules.length) {
+ const newStyles = document.createElement("style");
+ newStyles.innerText = additionStyleRules.join("\n");
+
+ document.head.appendChild(newStyles);
+ }
+ }
+}
+
+export const themes = new ThemesManager();
diff --git a/src/middleware/shortcutBinding.ts b/src/middleware/shortcutBinding.ts
deleted file mode 100755
index cc60aa3a..00000000
--- a/src/middleware/shortcutBinding.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-export default (shortcutsMap: ShortcutsMap[], shortcutMan: any) => {
- console.log("shortcutsMap: ", typeof shortcutsMap);
- for (const shortcut of shortcutsMap) {
- if (shortcut.accelerator === "") continue;
-
- switch (shortcut.type) {
- case "action":
- {
- shortcutMan.bind(shortcut.accelerator.toLocaleLowerCase(), () => {
- console.log("Action: ", shortcut);
- if (shortcut.value === "save-as") return;
- });
- }
- break;
-
- default: {
- }
- }
- }
-};
diff --git a/src/middleware/webApi.ts b/src/middleware/webApi.ts
deleted file mode 100644
index ba8d217e..00000000
--- a/src/middleware/webApi.ts
+++ /dev/null
@@ -1,132 +0,0 @@
-interface IntiApiOptions {
- version: number;
- fileBrowser: boolean;
- shortcutBinding?: any;
- shortcutsMap?: ShortcutsMap[];
- shortcutMan?: any;
-}
-
-export default (args: IntiApiOptions): void => {
- const channel = new MessageChannel();
- const pendingPromises = new Map();
- const registeredCallbacks = new Map();
-
- let messageHandler: Function;
- let nextPromiseID = 0;
- let nextCallbackID = 0;
- const messageQueue: any[] = [];
-
- // console.log('args: ', args, args.shortcutMan);
- // const shortcutBinding = new Function(`return ${args.shortcutBinding}`);
- // console.log('args.shortcutBinding: ', `return ${args.shortcutBinding}`);
- // console.log('shortcutBinding(args.shortcutsMap): ', shortcutBinding()(args.shortcutsMap, args.shortcutMan));
-
- const tryFlushMessages = (): void => {
- if (messageHandler) {
- while (true) {
- const msg = messageQueue.shift();
- if (!msg) {
- break;
- }
- messageHandler(msg.name, msg.args);
- }
- }
- };
-
- window.__figmaContent = false;
-
- console.log("args.fileBrowser: ", typeof args.fileBrowser, args.fileBrowser);
-
- if (/file\/.+/.test(location.href)) {
- args.fileBrowser = false;
- }
-
- window.__figmaDesktop = {
- version: args.version,
- fileBrowser: args.fileBrowser,
- postMessage: function(name, args, transferList) {
- console.log("postMessage, name, args, transferList: ", name, args, transferList);
-
- // FIXME: ugly hack
- if (!/recent/.test(window.location.href) && name === "updateActionState") {
- const state = {
- "save-as": true,
- "export-selected-exportables": true,
- "toggle-grid": true,
- "toggle-shown-layout-grids": true,
- "toggle-show-masks": true,
- "toggle-show-artboard-outlines": true,
- "toggle-rulers": true,
- "toggle-sidebar": true,
- "toggle-ui": true,
- "toggle-outlines": true,
- "toggle-layers": true,
- "toggle-publish": true,
- "toggle-library": true,
- "toggle-pixel-preview": true,
- "toggle-checkerboard": true,
- "zoom-in": true,
- "zoom-out": true,
- "zoom-reset": true,
- "zoom-to-fit": true,
- "zoom-to-selection": true,
- "next-artboard": true,
- "previous-artboard": true,
- };
-
- channel.port1.postMessage({ name, args: { state: { ...args.state, ...state } } }, transferList);
-
- return;
- }
-
- channel.port1.postMessage({ name, args }, transferList);
- },
- registerCallback: function(name, args, callback) {
- const id = nextCallbackID++;
- registeredCallbacks.set(id, callback);
- channel.port1.postMessage({ name, args, callbackID: id });
- return () => {
- channel.port1.postMessage({ cancelCallbackID: id });
- };
- },
- promiseMessage: function(name, args, transferList) {
- console.log("promiseMessage, name, args, transferList: ", name, args, transferList);
- return new Promise((resolve, reject) => {
- const id = nextPromiseID++;
- pendingPromises.set(id, { resolve, reject });
- channel.port1.postMessage({ name, args, promiseID: id }, transferList);
- });
- },
- setMessageHandler: function(handler) {
- console.log("setMessageHandler: handler", handler);
- messageHandler = handler;
- tryFlushMessages();
- },
- };
-
- channel.port1.onmessage = (event: MessageEvent) => {
- const msg = event.data;
-
- if (!msg) return;
-
- console.log("webApi channel.port1.onmessage, event, event.data: ", event, event.data);
-
- if (msg.promiseID != null) {
- const pendingPromise = pendingPromises.get(msg.promiseID);
-
- if (pendingPromise) {
- pendingPromises.delete(msg.promiseID);
- if ("result" in msg) {
- pendingPromise.resolve(msg.result);
- } else {
- pendingPromise.reject(msg.error);
- }
- }
- } else if (msg.name != null) {
- messageQueue.push(msg);
- tryFlushMessages();
- }
- };
-
- window.postMessage("init", location.origin, [channel.port2]);
-};
diff --git a/src/middleware/webBinding.ts b/src/middleware/webBinding.ts
index 410aa931..b53e4ee7 100644
--- a/src/middleware/webBinding.ts
+++ b/src/middleware/webBinding.ts
@@ -1,31 +1,20 @@
-import * as Settings from "electron-settings";
import * as E from "electron";
-import * as path from "path";
import * as fs from "fs";
import { sendMsgToMain, registerCallbackWithMainProcess } from "Utils/Render";
import { isMenuItem } from "Utils/Common";
-import { postPromiseMessageToMainProcess } from "Utils/Render";
-import { shortcutsMap } from "Utils/Render/ShortcutsMap";
-import shortcutBinding from "./shortcutBinding";
-import { ShortcutMan } from "./ShortcutMan";
-import shortcuts from "Utils/Render/shortcuts";
-
-// import api from "./webApi";
+import { themes } from "./ThemesManager";
interface IntiApiOptions {
version: number;
fileBrowser: boolean;
- shortcutBinding?: any;
- shortcutsMap?: ShortcutsMap[];
- shortcutMan?: any;
}
-const API_VERSION = 22;
+const API_VERSION = 28;
let webPort: MessagePort;
let fontMap: any = null;
let resolveFontMapPromise: any = null;
-const mainProcessCancelCallbacks: Map = new Map();
+const mainProcessCancelCallbacks: Map void> = new Map();
const fontMapPromise = new Promise(resolve => {
resolveFontMapPromise = resolve;
});
@@ -37,8 +26,10 @@ const onClickExportImage = (e: Event, link: HTMLLinkElement) => {
const filetype: string = res.headers["content-type"][0].replace(/^.+\//, "");
console.log("response file type: ", filetype);
+ // TODO: rewrite execute dialogs
const savePath = E.remote.dialog.showSaveDialogSync({
- defaultPath: `${Settings.get("app.exportDir")}/${link.textContent.replace(/\..+$/, "")}.${filetype}`,
+ // defaultPath: `${Settings.getSync("app.exportDir")}/${link.textContent.replace(/\..+$/, "")}.${filetype}`,
+ defaultPath: "/tmp",
showsTagField: false,
});
@@ -57,10 +48,10 @@ const onClickExportImage = (e: Event, link: HTMLLinkElement) => {
length = chunk.length;
});
res.on("error", (err: Error) => {
- console.log("Export image error: ", err);
+ sendMsgToMain("log-error", "Export image error: ", err);
});
})
- .on("error", error => console.log("request error: ", error))
+ .on("error", error => sendMsgToMain("log-error", "request error: ", error))
.end();
e.preventDefault();
@@ -84,14 +75,13 @@ const onWebMessage = (event: MessageEvent) => {
return;
}
if (!msg.name || !(msg.name in publicAPI)) {
- console.error("[desktop] Unhandled message", msg.name);
+ sendMsgToMain("log-error", "[desktop] Unhandled message", msg.name);
return;
}
let resultPromise = undefined;
try {
- if (msg.name != "setPluginMenuData") console.log("onWebMessage, msg: ", msg.name, msg.args);
resultPromise = msg.name && publicAPI && publicAPI[msg.name](msg.args);
} catch (e) {
console.error("onWebMessage, err: ", e);
@@ -114,24 +104,16 @@ const onWebMessage = (event: MessageEvent) => {
}
};
-// TODO: (translated) Move a piece of code into separate scripts,
-// then to collect from webpack in 1 js file
-// and pass it to the executeJavaScript function
const initWebApi = (props: IntiApiOptions) => {
const channel = new MessageChannel();
const pendingPromises = new Map();
const registeredCallbacks = new Map();
- let messageHandler: Function;
+ let messageHandler: (name: string, args: any) => void;
let nextPromiseID = 0;
let nextCallbackID = 0;
const messageQueue: any[] = [];
- // console.log('args: ', args, args.shortcutMan);
- // const shortcutBinding = new Function(`return ${args.shortcutBinding}`);
- // console.log('args.shortcutBinding: ', `return ${args.shortcutBinding}`);
- // console.log('shortcutBinding(args.shortcutsMap): ', shortcutBinding()(args.shortcutsMap, args.shortcutMan));
-
const tryFlushMessages = () => {
if (messageHandler) {
while (true) {
@@ -146,8 +128,6 @@ const initWebApi = (props: IntiApiOptions) => {
window.__figmaContent = false;
- console.log("args.fileBrowser: ", typeof props.fileBrowser, props.fileBrowser);
-
if (/file\/.+/.test(location.href)) {
props.fileBrowser = false;
}
@@ -155,8 +135,8 @@ const initWebApi = (props: IntiApiOptions) => {
window.__figmaDesktop = {
version: props.version,
fileBrowser: props.fileBrowser,
- postMessage: function(name, args, transferList) {
- // console.log("postMessage, name, args, transferList: ", name, args, transferList);
+ postMessage: function(name, args, transferList): void {
+ console.log("postMessage, name, args, transferList: ", name, args, transferList);
// FIXME: ugly hack
if (!/recent/.test(window.location.href) && name === "updateActionState") {
@@ -195,7 +175,7 @@ const initWebApi = (props: IntiApiOptions) => {
const id = nextCallbackID++;
registeredCallbacks.set(id, callback);
channel.port1.postMessage({ name, args, callbackID: id });
- return () => {
+ return (): void => {
registeredCallbacks.delete(id); // TODO: is it okay to delete this? will it ever be needed after cancelled?
channel.port1.postMessage({ cancelCallbackID: id });
};
@@ -207,19 +187,17 @@ const initWebApi = (props: IntiApiOptions) => {
channel.port1.postMessage({ name, args, promiseID: id }, transferList);
});
},
- setMessageHandler: function(handler) {
+ setMessageHandler: function(handler: () => void): void {
messageHandler = handler;
tryFlushMessages();
},
};
- channel.port1.onmessage = (event: MessageEvent) => {
+ channel.port1.onmessage = (event: MessageEvent): void => {
const msg = event.data;
if (!msg) return;
- console.log("webBinding channel.port1.onmessage, event.data: ", event.data);
-
if (msg.promiseID != null) {
const pendingPromise = pendingPromises.get(msg.promiseID);
@@ -228,6 +206,7 @@ const initWebApi = (props: IntiApiOptions) => {
if ("result" in msg) {
pendingPromise.resolve(msg.result);
} else {
+ sendMsgToMain("log-error", msg.error);
pendingPromise.reject(msg.error);
}
}
@@ -247,11 +226,11 @@ const initWebApi = (props: IntiApiOptions) => {
window.postMessage("init", location.origin, [channel.port2]);
};
-const initWebBindings = () => {
+const initWebBindings = (): void => {
setInterval(() => {
const link: HTMLLinkElement = document.querySelector('div[class^="code_inspection_panels--inspectorRow"] > a');
link &&
- (link.onclick = (e: Event) => {
+ (link.onclick = (e: Event): void => {
onClickExportImage(e, link);
});
}, 500);
@@ -262,6 +241,10 @@ const initWebBindings = () => {
E.ipcRenderer.on("handleAction", (event: Event, action: string, source: string) => {
webPort.postMessage({ name: "handleAction", args: { action, source } });
});
+ E.ipcRenderer.on("handleUrl", (event: Event, path: string, params: string) => {
+ console.log("handleUrl, url: ", path);
+ webPort.postMessage({ name: "handleUrl", args: { path, params } });
+ });
E.ipcRenderer.on("handlePageCommand", (event: Event, command: string) => {
const fullscreenFocusTargetFocused =
document.activeElement && document.activeElement.classList.contains("focus-target");
@@ -293,13 +276,17 @@ const initWebBindings = () => {
}
});
+ E.ipcRenderer.on("redeemAppAuth", (event: Event, gSecret: string) => {
+ webPort.postMessage({ name: "redeemAppAuth", args: { gSecret } });
+ });
+
E.ipcRenderer.on("handlePluginMenuAction", (event: Event, pluginMenuAction: any) => {
webPort.postMessage({ name: "handlePluginMenuAction", args: { pluginMenuAction } });
});
};
const publicAPI: any = {
- setTitle(args: any) {
+ setTitle(args: WebApi.SetTitleArgs) {
sendMsgToMain("setTabUrl", window.location.href);
sendMsgToMain("setTitle", args.title);
},
@@ -316,7 +303,10 @@ const publicAPI: any = {
sendMsgToMain("newFile", args.info);
},
openFile(args: any) {
- sendMsgToMain("openTab", "/file/" + args.fileKey, args.title, undefined, args.target);
+ sendMsgToMain("openFile", "/file/" + args.fileKey, args.title, undefined, args.target);
+ },
+ openPrototype(args: any) {
+ sendMsgToMain("openFile", "/proto/" + args.fileKey, args.title, "?node-id=" + args.pageId, args.target);
},
close(args: any) {
sendMsgToMain("closeTab", args.suppressReopening);
@@ -339,60 +329,64 @@ const publicAPI: any = {
setIsPreloaded() {
sendMsgToMain("setIsPreloaded");
},
- setPluginMenuData(args: WepApi.SetPluginMenuDataProps) {
+ setPluginMenuData(args: WebApi.SetPluginMenuDataProps) {
const pluginMenuData = [];
for (const item of args.data) {
if (isMenuItem(item)) {
pluginMenuData.push(item);
} else {
- console.error("[desktop] invalid plugin menu item", args);
+ sendMsgToMain("log-error", "[desktop] invalid plugin menu item", args);
}
}
sendMsgToMain("setPluginMenuData", pluginMenuData);
},
- async createMultipleNewLocalFileExtensions(args: any) {
- const result = await postPromiseMessageToMainProcess(
- "createMultipleNewLocalFileExtensions",
- args.options,
- args.depth,
- );
+ setFeatureFlags(args: any) {
+ sendMsgToMain("setFeatureFlags", args);
+ },
+ startAppAuth(args: any) {
+ sendMsgToMain("startAppAuth", args);
+ },
+ finishAppAuth(args: any) {
+ sendMsgToMain("finishAppAuth", args);
+ },
+ openDevTools(args: { mode: string }) {
+ sendMsgToMain("openDevTools", args.mode);
+ },
+
+ async createMultipleNewLocalFileExtensions(args: WebApi.CreateMultipleExtension) {
+ const result = await E.ipcRenderer.invoke("createMultipleNewLocalFileExtensions", args);
+
return { data: result };
},
async getAllLocalFileExtensionIds() {
- const list = await postPromiseMessageToMainProcess("getAllLocalFileExtensionIds");
+ const list = await E.ipcRenderer.invoke("getAllLocalFileExtensionIds");
return { data: list };
},
- async getLocalFileExtensionManifest(args: any) {
- const manifest = await postPromiseMessageToMainProcess("getLocalFileExtensionManifest", args.id);
+ async getLocalFileExtensionManifest(args: WebApi.ExtensionId) {
+ const manifest = await E.ipcRenderer.invoke("getLocalFileExtensionManifest", args.id);
return { data: manifest };
},
- async getLocalFileExtensionSource(args: any) {
- const source = await postPromiseMessageToMainProcess("getLocalFileExtensionSource", args.id);
+ async getLocalFileExtensionSource(args: WebApi.ExtensionId) {
+ const source = await E.ipcRenderer.invoke("getLocalFileExtensionSource", args.id);
return { data: source };
},
- removeLocalFileExtension(args: any) {
- console.log("unimplemented removeLocalFileExtension", args);
- sendMsgToMain("removeLocalFileExtension", args.id);
+ removeLocalFileExtension(args: WebApi.ExtensionId) {
+ E.ipcRenderer.send("removeLocalFileExtension", args.id);
},
- openExtensionDirectory(args: any) {
- console.log("unimplemented openExtensionDirectory", args);
- sendMsgToMain("openExtensionDirectory", args.id);
+ openExtensionDirectory(args: WebApi.ExtensionId) {
+ E.ipcRenderer.send("openExtensionDirectory", args.id);
},
- async writeNewExtensionToDisk(args: any) {
- // args looks like {dirName: "user-typed plugin name", files: [
- // {name: "filename.js", content: "filecontents"}
- // ]}
- // TODO: data is supposed to be the extensionId of the new extension!
- console.log("unimplemented writeNewExtensionToDisk", args);
- const extId = await postPromiseMessageToMainProcess("writeNewExtensionToDisk", args);
+ async writeNewExtensionToDisk(args: WebApi.WriteNewExtensionToDiskArgs) {
+ const extId = await E.ipcRenderer.invoke("writeNewExtensionToDisk", args);
return { data: extId };
},
- async isDevToolsOpened(...args: any[]) {
- console.log("unimplemented isDevToolsOpened, args: ", args);
- return { data: true };
+ async isDevToolsOpened() {
+ const isOpened = await E.ipcRenderer.invoke("isDevToolsOpened");
+
+ return { data: isOpened };
},
getFontFile(args: any) {
@@ -400,12 +394,14 @@ const publicAPI: any = {
const fontPath = args.path;
if (!fontMap) {
+ sendMsgToMain("log-error", "No fonts");
reject(new Error("No fonts"));
return;
}
const faces = fontMap[fontPath];
if (!faces || faces.length === 0) {
+ sendMsgToMain("log-error", "Invalid path: ", fontPath);
reject(new Error("Invalid path"));
return;
}
@@ -434,6 +430,7 @@ const publicAPI: any = {
getClipboardData(args: any) {
return new Promise((resolve, reject) => {
if (E.clipboard.has("org.nspasteboard.ConcealedType")) {
+ sendMsgToMain("log-error", "Clipboard unavailable");
reject(new Error("Clipboard unavailable"));
return;
}
@@ -449,7 +446,7 @@ const publicAPI: any = {
const unsafeHTML = E.clipboard.readHTML().trim();
if (unsafeHTML.includes("")) {
- data = new Buffer(unsafeHTML);
+ data = Buffer.from(unsafeHTML);
}
} else if (format === "image/svg+xml") {
data = E.clipboard.readBuffer(format);
@@ -459,7 +456,7 @@ const publicAPI: any = {
if (data.byteLength === 0) {
const unsafeText = E.clipboard.readText().trim();
if (unsafeText.startsWith("
- );
-};
-
-export default ShortcutsBody;
diff --git a/src/renderer/components/Body/index.tsx b/src/renderer/components/Body/index.tsx
deleted file mode 100644
index 98c082cd..00000000
--- a/src/renderer/components/Body/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import * as React from "react";
-import { observer, inject } from "mobx-react";
-
-import SettingsComponent from "./Settings";
-import { isComponentUrl, getComponentTitle } from "Utils/Common";
-import { Settings } from "Store/Settings";
-
-interface BodyProps {
- tabs?: TabsStore;
- settings?: Settings;
-}
-
-@inject("tabs")
-@inject("settings")
-@observer
-class Body extends React.Component {
- props: BodyProps;
- private components: any;
-
- constructor(props: BodyProps) {
- super(props);
-
- this.props = props;
- this.components = {
- Settings: ,
- };
- }
-
- private loadComponent = () => {
- const tabs = this.props.tabs.tabs;
- const currentTabId = this.props.tabs.current;
- const currentTab = tabs.find(t => t.id === currentTabId);
-
- if (currentTab && isComponentUrl(currentTab.url)) {
- const name = getComponentTitle(currentTab.url);
-
- return this.components[name];
- }
-
- return "";
- };
-
- render() {
- return (
-
- {this.loadComponent()}
-
- );
- }
-}
-
-export default Body;
diff --git a/src/renderer/components/Header/index.tsx b/src/renderer/components/Header/index.tsx
new file mode 100755
index 00000000..09767293
--- /dev/null
+++ b/src/renderer/components/Header/index.tsx
@@ -0,0 +1,32 @@
+import * as React from "react";
+
+import { Text, Button, Icon } from "Elements";
+
+import "./style.scss";
+
+interface HeaderProps {
+ text: string;
+ textAlign?: "left" | "right" | "center";
+ displayCloseButton?: boolean;
+ className?: string;
+ additionalContent?: React.ReactElement;
+ onCloseClick?(e: React.MouseEvent): void;
+}
+
+const Header: React.FunctionComponent = props => {
+ return (
+
+
{props.text}
+
{props.additionalContent || null}
+ {props.displayCloseButton ? (
+
+ ) : (
+ ""
+ )}
+
+ );
+};
+
+export default Header;
diff --git a/src/renderer/components/Header/style.scss b/src/renderer/components/Header/style.scss
new file mode 100644
index 00000000..d0404fb7
--- /dev/null
+++ b/src/renderer/components/Header/style.scss
@@ -0,0 +1,23 @@
+.header {
+ display: grid;
+ grid-template-columns: 1fr 50px 20px;
+ justify-content: space-between;
+ background-color: var(--bg-header);
+ padding: 10px 14px 10px 30px;
+ align-items: center;
+ height: 30px;
+
+ &__text {
+ padding: 0;
+ margin: 0;
+ color: var(--fg-header);
+ fill: var(--fg-header);
+ }
+ &__additional {
+ display: flex;
+ }
+ &__close {
+ color: var(--fg-header-control);
+ fill: var(--fg-header-control);
+ }
+}
diff --git a/src/renderer/components/Settings/index.tsx b/src/renderer/components/Settings/index.tsx
new file mode 100644
index 00000000..035177fc
--- /dev/null
+++ b/src/renderer/components/Settings/index.tsx
@@ -0,0 +1,83 @@
+import * as E from "electron";
+import * as React from "react";
+import { observer, inject } from "mobx-react";
+
+import "./style.scss";
+import { Text, Button, Icon } from "Elements";
+import Header from "../Header";
+import General from "./views/General";
+import Themes from "./views/Themes";
+import { Views } from "Store/Views";
+import { Settings as SettingsStore } from "Store/Settings";
+
+interface SettingsProps {
+ settings?: SettingsStore;
+ views?: Views;
+}
+
+@inject("settings")
+@inject("views")
+@observer
+class Settings extends React.Component {
+ props: SettingsProps;
+ viewMap = {
+ General,
+ Themes,
+ };
+
+ constructor(props: SettingsProps) {
+ super(props);
+
+ this.props = props;
+ }
+
+ onCloseClick = (e: React.MouseEvent): void => {
+ e.nativeEvent.stopImmediatePropagation();
+ e.stopPropagation();
+
+ this.props.settings!.setSettings();
+
+ E.ipcRenderer.send("closeSettingsView");
+ };
+
+ onSyncThemes = () => {
+ E.ipcRenderer.send("sync-themes");
+ };
+
+ render(): JSX.Element {
+ const View = this.viewMap[this.props.views.settingsView];
+ const viewName = this.props.views.settingsView;
+ const isSyncDisabled = this.props.settings!.isSyncDisabled;
+
+ return (
+
+ );
+ }
+}
+
+export default Settings;
diff --git a/src/renderer/components/Settings/style.scss b/src/renderer/components/Settings/style.scss
new file mode 100644
index 00000000..adc9ecae
--- /dev/null
+++ b/src/renderer/components/Settings/style.scss
@@ -0,0 +1,56 @@
+.settings {
+ padding: 5% 0px;
+ width: 70%;
+ margin: auto;
+ height: -webkit-fill-available;
+
+ &__header {
+ border-top: 1px solid var(--borders);
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+ }
+
+ &__panel {
+ display: flex;
+ justify-content: left;
+ align-items: center;
+ background: var(--bg-toolbar);
+ color: var(--bg-panel);
+ padding: 14px 10px 14px 30px;
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+ }
+
+ &__body {
+ overflow: scroll;
+ overflow-x: hidden;
+ overflow-y: overlay;
+ background: var(--bg-panel);
+ padding: 20px 30px;
+ height: 80%;
+ border-bottom: 1px solid var(--borders);
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+
+ &::-webkit-scrollbar {
+ width: 0px;
+ background: transparent;
+ }
+ &::-webkit-scrollbar-thumb {
+ width: 0;
+ background: transparent;
+ }
+ }
+
+ &__tab {
+ padding: 10px 0px;
+ margin-right: 36px;
+ background: var(--bg-toolbar);
+ border: 0;
+
+ &:hover {
+ cursor: pointer;
+ background: var(--bg-toolbar);
+ }
+ }
+}
diff --git a/src/renderer/components/Settings/views/General/index.scss b/src/renderer/components/Settings/views/General/index.scss
new file mode 100644
index 00000000..49e91acf
--- /dev/null
+++ b/src/renderer/components/Settings/views/General/index.scss
@@ -0,0 +1,17 @@
+.general {
+ padding-bottom: 20px;
+
+ .add {
+ align-self: center;
+
+ &:hover {
+ cursor: pointer;
+ }
+ }
+
+ .button {
+ &:hover {
+ cursor: pointer;
+ }
+ }
+}
diff --git a/src/renderer/components/Settings/views/General/index.tsx b/src/renderer/components/Settings/views/General/index.tsx
new file mode 100644
index 00000000..994f34e0
--- /dev/null
+++ b/src/renderer/components/Settings/views/General/index.tsx
@@ -0,0 +1,119 @@
+import * as React from "react";
+import { observer, inject } from "mobx-react";
+
+import "./index.scss";
+import { Input, List, CheckBox, Text, Button, Icon } from "Elements";
+import { Settings } from "Store/Settings";
+import ListItems from "./listItems";
+
+interface GeneralBodyProps {
+ settings?: Settings;
+}
+
+const GeneralBody: React.FunctionComponent = props => {
+ return (
+
+
+
+ Scale UI
+ props.settings.updateFigmaUiScale(d)}
+ />
+
+
+
+ Scale Tabs
+ props.settings.updatePanelScale(d)}
+ />
+
+
+
+
+ Main settings
+
+
+
+
+
+
+
Export files to
+
+ props.settings.selectExportDir()}>
+
+
+ }
+ value={props.settings.settings.app.exportDir}
+ onChange={(e): void => props.settings.inputExportDir(e.target.value)}
+ />
+
+
+
+
+
+
Font directories
+
+
+
+
+
+ {/*
+ UI font
+
+ */}
+
+
+
+ );
+};
+
+export default inject("settings")(observer(GeneralBody));
diff --git a/src/renderer/components/Settings/views/General/listItems.tsx b/src/renderer/components/Settings/views/General/listItems.tsx
new file mode 100644
index 00000000..a9ead204
--- /dev/null
+++ b/src/renderer/components/Settings/views/General/listItems.tsx
@@ -0,0 +1,31 @@
+import * as React from "react";
+
+import "./index.scss";
+import { Icon } from "Elements";
+
+interface GeneralBodyProps {
+ items: string[];
+
+ onRemove?(index: number): void;
+}
+
+const ListItems: React.FunctionComponent = props => {
+ return (
+
+ {props.items.map((item, i) => (
+
+ {props.onRemove ? (
+
props.onRemove(i)}>
+
+
+ ) : (
+ ""
+ )}
+
{item}
+
+ ))}
+
+ );
+};
+
+export default ListItems;
diff --git a/src/renderer/components/Settings/views/Themes/index.scss b/src/renderer/components/Settings/views/Themes/index.scss
new file mode 100644
index 00000000..edded41f
--- /dev/null
+++ b/src/renderer/components/Settings/views/Themes/index.scss
@@ -0,0 +1,127 @@
+.themeview {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ grid-column-gap: 3%;
+ grid-row-gap: 3%;
+
+ &_item {
+ &_tumbl {
+ flex-direction: column;
+ height: 159px;
+ border: 1px solid var(--borders);
+ border-radius: 6px 6px 0 0;
+
+ &_top {
+ height: 8px;
+ background-color: var(--bg-header);
+ border-radius: 6px 6px 0 0;
+ }
+
+ &_toolpanel {
+ display: grid;
+ grid-template-columns: 60px 1fr 60px;
+ height: 24px;
+ align-items: center;
+ background-color: var(--bg-toolbar);
+
+ &>div {
+ display: flex;
+ align-items: flex-end;
+ }
+
+ &>div:nth-child(1) {
+ padding-left: 6px;
+ }
+
+ &>div:nth-child(2) {
+ justify-content: center;
+ }
+
+ }
+
+ &_body {
+ display: grid;
+ grid-template-columns: 60px 1fr 60px;
+ height: 127px;
+
+ &_left {
+ padding-left: 8px;
+ padding-top: 10px;
+ background-color: var(--bg-panel);
+ border-right: 1px solid var(--borders);
+
+ &_text1 {
+ width: 40px;
+ height: 4px;
+ background-color: var(--text);
+ }
+
+ &_text2 {
+ margin-top: 6px;
+ width: 28px;
+ height: 4px;
+ background-color: var(--text);
+ }
+ }
+
+ &_center {
+ background-color: var(--borders);
+ }
+
+ &_right {
+ border-left: 1px solid var(--borders);
+ background-color: var(--bg-panel);
+ }
+ }
+
+ &_panel {
+ display: flex;
+ justify-content: space-between;
+ padding: 14px;
+ border-radius: 0 0 6px 6px;
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+ border-bottom: 1px solid var(--borders);
+
+ &_name {
+ max-width: 10vw;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ font-size: 16px;
+ color: var(--text-active);
+ }
+
+ &_author {
+ font-size: 12px;
+ max-width: 10vw;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ color: var(--text-disabled);
+ }
+
+ &>div {
+ display: flex;
+ }
+
+ &>div:nth-child(1) {
+ flex-direction: column;
+ }
+
+ &>div:nth-child(2) {
+ align-self: center;
+ }
+
+ }
+ }
+ }
+}
+
+.template_button {
+ height: 14px;
+ width: 30px;
+ border-radius: 2px;
+ background: var(--bg-toolbar-active);
+ margin: 1px;
+}
diff --git a/src/renderer/components/Settings/views/Themes/index.tsx b/src/renderer/components/Settings/views/Themes/index.tsx
new file mode 100644
index 00000000..af56c156
--- /dev/null
+++ b/src/renderer/components/Settings/views/Themes/index.tsx
@@ -0,0 +1,55 @@
+import * as React from "react";
+import { observer, inject } from "mobx-react";
+import { toJS } from "mobx";
+
+import { DEFAULT_THEME, TEST_THEME_ID } from "Const";
+
+import ThemeItem from "./themeItem";
+import { Themes as ThemesStore } from "Store/Themes";
+import { Settings } from "Store/Settings";
+import "./index.scss";
+
+interface ThemeViewProps {
+ settings?: Settings;
+ themes?: ThemesStore;
+}
+
+@inject("settings")
+@inject("themes")
+@observer
+class ThemesBody extends React.Component {
+ props: ThemeViewProps;
+
+ constructor(props: ThemeViewProps) {
+ super(props);
+
+ this.props = props;
+ }
+
+ onClickApply = (e: React.MouseEvent, theme: Themes.Theme): void => {
+ this.props.themes.changeTheme(theme.id);
+ };
+ onClickDefaultThemeApply = (e: React.MouseEvent): void => {
+ this.props.themes.changeTheme("0");
+ };
+
+ render(): JSX.Element {
+ const themes = toJS(this.props.themes.themes);
+ const currentTheme = toJS(this.props.themes.currentTheme);
+
+ return (
+
+
+
+ {themes.map(theme =>
+ theme.id !== TEST_THEME_ID ? (
+
+ ) : null,
+ )}
+
+
+ );
+ }
+}
+
+export default ThemesBody;
diff --git a/src/renderer/components/Settings/views/Themes/themeItem.tsx b/src/renderer/components/Settings/views/Themes/themeItem.tsx
new file mode 100644
index 00000000..bf3a4584
--- /dev/null
+++ b/src/renderer/components/Settings/views/Themes/themeItem.tsx
@@ -0,0 +1,60 @@
+import * as React from "react";
+
+import { Button, Text, Icon } from "Elements";
+import { getColorPallet } from "Utils/Render";
+
+import "./index.scss";
+
+interface ThemeViewItemProps {
+ currentTheme: string;
+ theme: Themes.Theme;
+
+ onClickApply(e: React.MouseEvent, theme: Themes.Theme): void;
+}
+
+const ThemeItem: React.FunctionComponent = props => {
+ const theme = props.theme;
+ const pallet = getColorPallet(theme);
+
+ return (
+
+
+
+
+ {theme.name}
+ {theme.author}
+
+
+
+ );
+};
+
+export default ThemeItem;
diff --git a/src/renderer/components/Tabs/index.tsx b/src/renderer/components/Tabs/index.tsx
index 2268aaf6..e66dbf15 100755
--- a/src/renderer/components/Tabs/index.tsx
+++ b/src/renderer/components/Tabs/index.tsx
@@ -4,7 +4,7 @@ import { observer, inject } from "mobx-react";
import { toJS } from "mobx";
import * as Const from "Const";
-import { isComponentUrl } from "Utils/Common";
+import { isValidProjectLink } from "Utils/Common";
import TabList from "./tabs";
import "./style.scss";
@@ -14,8 +14,10 @@ interface TabsProps {
@inject("tabs")
@observer
-class Tabs extends React.Component {
+class Tabs extends React.Component {
props: TabsProps;
+ private pos = { x: 0, y: 0 };
+ private isMoving = false;
constructor(props: TabsProps) {
super(props);
@@ -23,124 +25,33 @@ class Tabs extends React.Component {
this.props = props;
}
- private close = (e: React.MouseEvent & Event, id: number) => {
+ private close = (e: React.MouseEvent & Event, id: number): void => {
e.stopPropagation();
- const tabs = toJS(this.props.tabs!.tabs);
- const tab = this.props.tabs.getTab(id);
- const currentTabId: number = toJS(this.props.tabs!.current);
- const index: number = tabs.findIndex(t => t.id === id);
+ const tabs = toJS(this.props.tabs.tabs);
+ const currentTabId: number | undefined = toJS(this.props.tabs.current);
+ const currentTabIndex: number = tabs.findIndex(t => t.id === id);
- if (isComponentUrl(tab.url)) {
- E.ipcRenderer.send(Const.MAINTAB);
- } else {
- E.ipcRenderer.send(Const.CLOSETAB, id);
- }
+ E.ipcRenderer.send("closeTab", id);
this.props.tabs.deleteTab(id);
- if (id !== currentTabId) return;
+ if (!currentTabId || id !== currentTabId) return;
- if (isComponentUrl(tab.url)) {
- this.props.tabs!.setFocus(1);
- } else {
- this.props.tabs!.setFocus(index !== 0 ? tabs[index > 0 ? index - 1 : index].id : 1);
- }
+ const index = currentTabIndex > 0 ? currentTabIndex - 1 : currentTabIndex;
+ const nextTab = this.props.tabs!.tabs[index];
+
+ this.props.tabs.setFocus(nextTab ? nextTab.id : undefined);
};
- private clickTab = (e: React.MouseEvent & Event, tab: Tab) => {
+ private clickTab = (e: React.MouseEvent & Event, tab: Tab): void => {
e.stopPropagation();
switch (e.button) {
- // Handle left click, set focuse on the target tab
+ // Handle left click, set focus on the target tab
case 0:
{
- const tabEl = e.target as any;
-
this.focus(e, tab.id);
-
- // Move tab
- // if (/tab/.test(tabEl.className)) {
- // const currentTab: Tab = this.props.tabs.tabs.find(t => t.id === tab.id )
- // const TabContainer = tabEl.parentNode as any;
- // const TabContainerRect = TabContainer.getBoundingClientRect();
- // const TabBox = tabEl.getBoundingClientRect();
- // const BoxXShift = event.pageX - TabBox.left;
- // let fakeTab: any;
- // let fakeTabBox: ClientRect | DOMRect;
- // let fakeTabClassName: string;
- // let shift = 1;
- // let isMove = false;
-
- // const onMouseMove = (e: MouseEvent) => {
- // const TabBoxUpdated = tabEl.getBoundingClientRect();
- // const left = Math.abs(e.pageX - (BoxXShift + TabBox.width));
-
- // tabEl.style.position = 'absolute';
- // tabEl.style.zIndex = '1000';
- // tabEl.style.height = '28px';
-
- // if (!isMove) {
- // this.props.tabs.updateTab({ ...currentTab, moves: true });
- // fakeTab = document.getElementsByClassName('fakeTab')[0] as any;
- // fakeTabBox = fakeTab.getBoundingClientRect();
- // fakeTabClassName = fakeTab.className;
- // isMove = true;
- // }
-
- // // left side restriction
- // if ((e.pageX + (TabBox.left - BoxXShift)) > TabContainerRect.right) {
- // return;
- // }
-
- // // right side restriction
- // if ((e.pageX - BoxXShift) < TabContainerRect.left) {
- // shift += 3;
-
- // if (Math.floor((left / shift) < 0 ? 0 : (left / shift)) !== 0) {
- // tabEl.style.left = `-${left / shift}px`;
- // } else {
- // tabEl.style.left = `0px`;
- // }
-
- // return;
- // }
-
- // if (TabBoxUpdated.left > fakeTabBox.right - 30) {
- // console.log('Move tab to right ', TabBoxUpdated.left, fakeTabBox.right - 30);
- // // fakeTab.className = fakeTabClassName.replace(/order(\d)/, match => {
- // // let order = parseInt(match.replace(/\D/g, ''));
- // // return 'order' + (order + 2);
- // // });
- // this.props.tabs.updateTab({ ...currentTab, order: currentTab.order + 2 });
- // }
-
- // if (TabBoxUpdated.right < fakeTabBox.left + 30) {
- // console.log('Move tab to left ', TabBoxUpdated.right, fakeTabBox.left + 30);
- // // fakeTab.className = fakeTabClassName.replace(/order(\d)/, match => {
- // // let order = parseInt(match.replace(/\D/g, ''));
- // // return 'order' + (order - 2);
- // // });
- // this.props.tabs.updateTab({ ...currentTab, order: currentTab.order - 2 });
- // }
-
- // tabEl.style.left = `${left}px`;
- // shift = 0;
- // };
- // const onMouseUp = (e: MouseEvent) => {
- // tabEl.style.position = 'relative';
- // tabEl.style.left = `0px`;
- // tabEl.style.zIndex = '0';
-
- // this.props.tabs.updateTab({ id: currentTab.id, moves: false });
-
- // document.removeEventListener('mousemove', onMouseMove);
- // document.removeEventListener('mouseup', onMouseUp);
- // };
-
- // document.addEventListener('mousemove', onMouseMove)
- // document.addEventListener('mouseup', onMouseUp);
- // }
}
break;
// Handle middle click, close tab
@@ -158,45 +69,52 @@ class Tabs extends React.Component {
}
};
- private focus = (event: React.MouseEvent & Event, id: number) => {
+ private focus = (event: React.MouseEvent & Event, id: number): void => {
event.stopPropagation();
event.nativeEvent.stopImmediatePropagation();
- const tab = this.props.tabs.getTab(id);
- if (isComponentUrl(tab.url)) {
- E.ipcRenderer.send(Const.CLEARVIEW);
- } else {
- E.ipcRenderer.send(Const.FOCUSTAB, id);
- }
+ E.ipcRenderer.send("setTabFocus", id);
- this.props.tabs!.setFocus(id);
+ this.props.tabs.setFocus(id);
};
- private popup = (event: React.MouseEvent & Event, id: number) => {
+ private popup = (event: React.MouseEvent & Event, id: number): void => {
const context: E.MenuItemConstructorOptions[] = [
{
id: "copyAppUrl",
label: "Copy App Url",
- click: () => {
+ click: (): void => {
const tab: Tab | undefined = this.props.tabs.getTab(id);
- tab && E.clipboard.writeText(encodeURI(`figma://file/${tab.fileKey}/${tab.title}`));
+ let url = `figma://file/${tab.fileKey}/${tab.title}`;
+
+ if (!isValidProjectLink(tab.url)) {
+ url = tab.url;
+ }
+
+ tab && E.clipboard.writeText(encodeURI(url));
},
},
{
id: "copyUrl",
label: "Copy Url",
- click: () => {
+ click: (): void => {
const tab: Tab | undefined = this.props.tabs.getTab(id);
- tab && E.clipboard.writeText(`${Const.HOMEPAGE}/file/${tab.fileKey}`);
+ let url = `${Const.HOMEPAGE}/file/${tab.fileKey}`;
+
+ if (!isValidProjectLink(tab.url)) {
+ url = tab.url;
+ }
+
+ tab && E.clipboard.writeText(url);
},
},
{ type: "separator" },
{
id: "openInBrowser",
label: "Open in Browser",
- click: () => {
+ click: (): void => {
const tab: Tab | undefined = this.props.tabs.getTab(id);
tab && E.remote.shell.openExternal(`${Const.HOMEPAGE}/file/${tab.fileKey}`);
@@ -207,8 +125,7 @@ class Tabs extends React.Component {
id: "close",
label: "Close",
visible: true,
- click: () => {
- console.log("close tab id: ", id);
+ click: (): void => {
this.close(event, id);
},
},
@@ -221,8 +138,47 @@ class Tabs extends React.Component {
});
};
- render() {
- return ;
+ private mouseDownHandler = (e: React.MouseEvent) => {
+ (e.target as HTMLDivElement).style.cursor = "grabbing";
+
+ this.isMoving = true;
+ this.pos.x = e.pageX;
+ this.pos.y = e.pageY;
+
+ window.addEventListener("mousemove", this.mouseMoveHandler);
+ window.addEventListener("mouseup", this.mouseUpHandler);
+ };
+ private mouseUpHandler = (e: MouseEvent) => {
+ (e.target as HTMLDivElement).style.cursor = "grab";
+ this.isMoving = false;
+
+ window.removeEventListener("mousemove", this.mouseMoveHandler);
+ window.removeEventListener("mouseup", this.mouseUpHandler);
+ };
+ private mouseMoveHandler = (e: MouseEvent) => {
+ if (!this.isMoving) {
+ return;
+ }
+
+ const w = E.remote.getCurrentWindow();
+ const windowBounds = w.getBounds();
+
+ w.setBounds({
+ ...windowBounds,
+ x: e.screenX - this.pos.x,
+ y: e.screenY - this.pos.y,
+ });
+ };
+
+ render(): JSX.Element {
+ return (
+
+ );
}
}
diff --git a/src/renderer/components/Tabs/style.scss b/src/renderer/components/Tabs/style.scss
index 1dbd2fb4..646a4de3 100755
--- a/src/renderer/components/Tabs/style.scss
+++ b/src/renderer/components/Tabs/style.scss
@@ -1,84 +1,52 @@
-@import '../../colors.scss';
-
.tabBar {
- position: relative;
- display: flex;
+ position: relative;
+ overflow-x: hidden;
+ display: flex;
+ align-content: stretch;
}
.tab {
- display: inline-flex;
- -webkit-app-region: no-drag;
- align-items: center;
- padding: 0px 10px;
- &:hover {
- background-color: $gray_1;
- }
-
- & > span {
- position: relative;
- // pointer-events: none;
- user-select: none;
- cursor: default;
- white-space: nowrap;
- font: {
- size: 10px;
- }
- color: $white_1;
-
- &:hover {
- &::after {
- cursor: pointer;
- }
- }
-
- &::after {
- content: '';
- position: absolute;
- top: -8px;
- left: -10px;
- height: 28px;
- width: 115%;
- }
- }
-}
-.active {
- -webkit-app-region: no-drag;
- background-color: $gray_1;
-}
-
-.fakeTab {
- -webkit-app-region: no-drag;
- position: relative;
- display: inline;
- align-items: center;
- padding: 0px 10px;
- pointer-events: none;
- user-select: none;
- background-color: transparent;
-
- & > span {
- opacity: 0;
- white-space: nowrap;
- font: {
- size: 10px;
- }
- }
-}
-
-.tabClose {
- -webkit-app-region: no-drag;
- margin: 0px 0px 3px 10px;
- &:hover {
- cursor: pointer;
- }
-}
-.newTab {
- -webkit-app-region: no-drag;
- display: flex;
- align-items: center;
- padding: 2px 6px;
- &:hover {
- background-color: $black_1;
- cursor: pointer;
- }
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ padding: 0 10px;
+ user-select: none;
+ overflow: hidden;
+ background-color: var(--bg-tab);
+ color: var(--fg-tab);
+ fill: var(--fg-tab);
+
+ &:hover {
+ background-color: var(--bg-tab-hover);
+ color: var(--fg-tab-hover);
+ fill: var(--fg-tab-hover);
+ cursor: pointer;
+ }
+
+ &__text {
+ overflow: hidden;
+ text-align: center;
+ white-space: nowrap;
+ text-overflow: clip;
+ font-size: var(--fontControlSize);
+ margin-right: 6px;
+ }
+
+ &__close {
+ height: 16px;
+ color: var(--fg-tab);
+ fill: var(--fg-tab);
+
+ &:hover {
+ color: var(--fg-tab-hover);
+ fill: var(--fg-tab-hover);
+ cursor: pointer;
+ }
+ }
+
+ &_active {
+ background-color: var(--bg-tab-active);
+ color: var(--fg-tab-active);
+ fill: var(--fg-tab-active);
+ }
}
diff --git a/src/renderer/components/Tabs/tabs.tsx b/src/renderer/components/Tabs/tabs.tsx
index 682728ff..30e6dffb 100755
--- a/src/renderer/components/Tabs/tabs.tsx
+++ b/src/renderer/components/Tabs/tabs.tsx
@@ -1,33 +1,33 @@
import * as React from "react";
+import { Text, Button, Icon } from "Elements";
+
interface Props {
tabs: TabsStore;
close(e: React.MouseEvent, id: number): void;
clickTab(e: React.MouseEvent, tab: Tab): void;
+ mouseDownHandler(e: React.MouseEvent): void;
}
-const Tabs: React.SFC = props => {
+const Tabs: React.FunctionComponent = props => {
return (
-
+
{props.tabs.tabs.map((t: Tab, i) => (
-
-
props.clickTab(e, t)}>{t.title}
-
props.close(e, t.id)}>
-
-
-
-
+
props.clickTab(e, t)}
+ onAuxClick={e => props.clickTab(e, t)}
+ >
+ {t.title}
+
))}
diff --git a/src/renderer/components/ThemeCreator/index.tsx b/src/renderer/components/ThemeCreator/index.tsx
new file mode 100644
index 00000000..b3d149e8
--- /dev/null
+++ b/src/renderer/components/ThemeCreator/index.tsx
@@ -0,0 +1,110 @@
+import * as E from "electron";
+import * as React from "react";
+import { observer, inject } from "mobx-react";
+import { toJS } from "mobx";
+
+import "./style.scss";
+import View from "./view";
+import { Themes } from "Store/Themes";
+import { AVAILABLE_THEME_COLOR_VALUE } from "Const";
+
+interface CreatorProps {
+ themes?: Themes;
+}
+
+@inject("themes")
+@observer
+class ThemeCreator extends React.Component
{
+ props: CreatorProps;
+
+ constructor(props: CreatorProps) {
+ super(props);
+
+ this.props = props;
+ }
+
+ onChange = (
+ e: React.MouseEvent | React.ChangeEvent,
+ key: string,
+ color: string,
+ ): void => {
+ this.props.themes!.changeCreatorThemePalette(key, color);
+ };
+
+ onChangeThemeName = (e: React.MouseEvent | React.ChangeEvent, value: string) => {
+ this.props.themes.changeCreatorThemeName(value);
+ };
+ onChangeThemeAuthorName = (
+ e: React.MouseEvent | React.ChangeEvent,
+ value: string,
+ ) => {
+ this.props.themes.changeCreatorThemeAuthorName(value);
+ };
+
+ onCloseClick = (e: React.MouseEvent): void => {
+ e.nativeEvent.stopImmediatePropagation();
+ e.stopPropagation();
+
+ this.props.themes!.saveCreatorTheme();
+
+ E.ipcRenderer.send("closeThemeCreatorView");
+ };
+
+ onColorClick = (e: React.MouseEvent, key: string): void => {
+ const target = e.target as HTMLInputElement;
+
+ switch (e.button) {
+ case 2: {
+ const context: E.MenuItemConstructorOptions[] = [
+ {
+ id: "copy_color",
+ label: "Copy color",
+ visible: true,
+ click: (): void => {
+ E.clipboard.writeText(target.value);
+ },
+ },
+ {
+ id: "paste_color",
+ label: "Paste color",
+ visible: true,
+ click: (): void => {
+ const text = E.clipboard.readText();
+
+ if (AVAILABLE_THEME_COLOR_VALUE.test(text)) {
+ this.props.themes!.changeCreatorThemePalette(key, text);
+ }
+ },
+ },
+ ];
+
+ const menu = E.remote.Menu.buildFromTemplate(context);
+
+ menu.popup({
+ window: E.remote.getCurrentWindow(),
+ });
+ }
+ }
+ };
+
+ onExportClick = (): void => {
+ E.ipcRenderer.send("themeCreatorExportTheme", toJS(this.props.themes!.creatorTheme));
+ };
+
+ onApplyThemeClick = (): void => {
+ E.ipcRenderer.send("themes-change", toJS(this.props.themes!.creatorTheme));
+ };
+
+ render(): JSX.Element {
+ return (
+
+ );
+ }
+}
+
+export default ThemeCreator;
diff --git a/src/renderer/components/ThemeCreator/previewer.tsx b/src/renderer/components/ThemeCreator/previewer.tsx
new file mode 100755
index 00000000..29af10cc
--- /dev/null
+++ b/src/renderer/components/ThemeCreator/previewer.tsx
@@ -0,0 +1,730 @@
+import * as React from "react";
+
+interface PreviewerProps {
+ zoom: number;
+}
+
+const Previewer: React.FunctionComponent = props => {
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+export default Previewer;
diff --git a/src/renderer/components/ThemeCreator/style.scss b/src/renderer/components/ThemeCreator/style.scss
new file mode 100644
index 00000000..97359aca
--- /dev/null
+++ b/src/renderer/components/ThemeCreator/style.scss
@@ -0,0 +1,83 @@
+.creator {
+ padding: 5% 0px;
+ width: 80%;
+ margin: auto;
+ height: -webkit-fill-available;
+
+ &__header {
+ border-top: 1px solid var(--borders);
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+ }
+
+ &__body {
+ display: grid;
+ grid-template-columns: 1fr 30%;
+ grid-template-rows: 1fr 50px;
+ overflow: scroll;
+ overflow-x: hidden;
+ overflow-y: overlay;
+ background: var(--bg-panel);
+ padding: 20px 30px;
+ height: 80%;
+ border-bottom: 1px solid var(--borders);
+ border-left: 1px solid var(--borders);
+ border-right: 1px solid var(--borders);
+
+ &::-webkit-scrollbar {
+ width: 0px;
+ background: transparent;
+ }
+ &::-webkit-scrollbar-thumb {
+ width: 0;
+ background: transparent;
+ }
+
+ &_left {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ grid-template-rows: 30px 30px 1fr;
+ grid-template-areas:
+ "a b"
+ "c d"
+ "e e";
+ }
+
+ &_zoom {
+ padding: 10px 20px 0 0;
+ }
+
+ &_buttons {
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ }
+ }
+
+ &_view {
+ grid-area: e;
+ height: 50vmin;
+ margin: 20px 20px 0 0;
+ padding: 20px;
+ overflow: auto;
+ background-color: #ffffff;
+
+ &::-webkit-scrollbar {
+ width: 0px;
+ background: transparent;
+ }
+ &::-webkit-scrollbar-thumb {
+ width: 0;
+ background: transparent;
+ }
+ }
+
+ &_list {
+ height: 58vmin;
+
+ &_item {
+ display: grid;
+ grid-template-columns: 40px 1fr;
+ }
+ }
+}
diff --git a/src/renderer/components/ThemeCreator/view.tsx b/src/renderer/components/ThemeCreator/view.tsx
new file mode 100755
index 00000000..243a17b8
--- /dev/null
+++ b/src/renderer/components/ThemeCreator/view.tsx
@@ -0,0 +1,107 @@
+import * as React from "react";
+import { observer, inject } from "mobx-react";
+
+import { Button, Input, Text, List } from "Elements";
+import { getColorPallet } from "Utils/Render";
+import { PALETTE_TEXT } from "Const";
+import Header from "../Header";
+import Previewer from "./previewer";
+import { Themes } from "Store/Themes";
+import { toJS } from "mobx";
+
+interface TopPanelProps {
+ themes?: Themes;
+
+ onCloseClick(e: React.MouseEvent): void;
+ onColorClick(e: React.MouseEvent, key: string): void;
+ onExportClick(): void;
+ onApplyThemeClick(): void;
+}
+
+const ThemeCreator: React.FunctionComponent = props => {
+ const theme = toJS(props.themes!.creatorTheme);
+ const paletteKeys = Object.keys(theme.palette);
+ const palette = getColorPallet(theme);
+
+ return (
+
+
+
+
+
Theme name
+
Theme author name
+
props.themes!.changeCreatorThemeName(e.target.value)}
+ />
+
props.themes!.changeCreatorThemeAuthorName(e.target.value)}
+ />
+
+
+
+
+
+ Color palette
+
+ {paletteKeys.map((key, index) => (
+ {
+ props.themes!.changeCreatorThemePalette(key, e.target.value);
+ }}
+ onClick={e => props.onColorClick(e, key)}
+ />
+ ))}
+
+
+
+ props.themes!.changeCreatorThemeZoom(d)}
+ />
+
+
+
+
+
+ );
+};
+
+export default inject("themes")(observer(ThemeCreator));
diff --git a/src/renderer/components/TopPanel/index.tsx b/src/renderer/components/TopPanel/index.tsx
index 955ea629..81036c2f 100755
--- a/src/renderer/components/TopPanel/index.tsx
+++ b/src/renderer/components/TopPanel/index.tsx
@@ -4,17 +4,20 @@ import { observer, inject } from "mobx-react";
import Panel from "./toppanel";
import { Settings } from "Store/Settings";
+import { Views } from "Store/Views";
import "./style.scss";
interface TopPanelProps {
tabs?: TabsStore;
settings?: Settings;
+ views?: Views;
}
@inject("tabs")
@inject("settings")
+@inject("views")
@observer
-class TopPanel extends React.Component {
+class TopPanel extends React.Component {
props: TopPanelProps;
constructor(props: TopPanelProps) {
@@ -23,26 +26,30 @@ class TopPanel extends React.Component {
this.props = props;
}
- private onMainTab = (e: React.MouseEvent & Event) => {
+ private onMainTab = (e: React.MouseEvent & Event): void => {
e.nativeEvent.stopImmediatePropagation();
e.stopPropagation();
- E.ipcRenderer.send("maintab");
- this.props.tabs!.setFocus(1);
+ E.ipcRenderer.send("setFocusToMainTab");
+ this.props.tabs.setFocus();
};
- private onOpenSettings = (e: React.MouseEvent & Event) => {
+ private onNewProject = (e: React.MouseEvent & Event): void => {
e.nativeEvent.stopImmediatePropagation();
e.stopPropagation();
- E.remote.app.emit("handle-command", "openSettings");
+ E.ipcRenderer.send("newProject");
};
- private onHomeClick = (event: React.MouseEvent & Event) => {
- E.ipcRenderer.send("toHome");
+ private onOpenMenu = (e: React.MouseEvent & Event): void => {
+ e.nativeEvent.stopImmediatePropagation();
+ e.stopPropagation();
+
+ E.ipcRenderer.send("openMenu");
};
+
private closew = (event: React.MouseEvent & Event) => {
- E.ipcRenderer.send("app-exit");
+ E.ipcRenderer.send("appExit");
};
private maxiw = (event: React.MouseEvent & Event) => {
E.ipcRenderer.send("window-maximize");
@@ -51,23 +58,23 @@ class TopPanel extends React.Component {
E.ipcRenderer.send("window-minimize");
};
- private newTab = () => {
- E.ipcRenderer.send("newtab");
+ private newTab = (): void => {
+ E.ipcRenderer.send("newTab");
};
- render() {
+ render(): JSX.Element {
return (
);
}
diff --git a/src/renderer/components/TopPanel/style.scss b/src/renderer/components/TopPanel/style.scss
index dd1a4acd..de3bb4c3 100755
--- a/src/renderer/components/TopPanel/style.scss
+++ b/src/renderer/components/TopPanel/style.scss
@@ -1,32 +1,19 @@
-@import '../../colors.scss';
+.top-panel {
+ display: grid;
+ grid-template: "a b c";
+ grid-template-columns: auto 1fr auto;
+ background-color: var(--bg-header);
-#app, #react-page {
- &>.panel {
- display: grid;
- grid-template: "a b c";
- grid-template-columns: auto 1fr auto;
- background-color: $black_1;
- -webkit-app-region: drag;
+ &>.panelButtons {
+ display: inline-flex;
+ flex-direction: row;
+ align-content: center;
- &>.panelButtons {
- display: inline-flex;
- flex-direction: row;
- align-content: center;
- -webkit-app-region: no-drag;
- &>.button {
- display: flex;
- align-items: center;
- padding: 6px 8px 6px 6px;
- &:hover {
- background-color: $gray_1;
- cursor: pointer;
- }
- }
- }
- }
-
- &>#body {
- overflow-y: auto;
- }
+ &>.button {
+ display: flex;
+ align-items: center;
+ }
+ }
}
+
diff --git a/src/renderer/components/TopPanel/toppanel.tsx b/src/renderer/components/TopPanel/toppanel.tsx
index 722d1afd..9a5323b2 100755
--- a/src/renderer/components/TopPanel/toppanel.tsx
+++ b/src/renderer/components/TopPanel/toppanel.tsx
@@ -1,95 +1,51 @@
import * as React from "react";
+
+import { Icon, Button } from "Elements";
import Tabs from "Components/Tabs";
interface TopPanelProps {
current: number;
scalePanel: number;
+ visibleNewProjectBtn: boolean;
- onMainTab(e: React.MouseEvent): void;
- openSettings(e: React.MouseEvent): void;
- onHomeClick(e: React.MouseEvent): void;
- getTab(id: number): Tab | undefined;
newTab(): void;
+ onMainTab(e: React.MouseEvent): void;
+ onNewProject(e: React.MouseEvent): void;
+ openMenu(e: React.MouseEvent): void;
closew(e: React.MouseEvent): void;
maxiw(e: React.MouseEvent): void;
miniw(e: React.MouseEvent): void;
}
-const TopPanel: React.SFC = props => {
- const currentTab: Tab | undefined = props.getTab(props.current);
-
+const TopPanel: React.FunctionComponent = props => {
return (
-
-
-
- {!currentTab || (!!currentTab && currentTab.showBackBtn) ? (
-
- ) : null}
-
+
+
+
+
+
+ {props.visibleNewProjectBtn ? (
+
+
+
+ ) : (
+ ""
+ )}
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
);
diff --git a/src/renderer/components/index.tsx b/src/renderer/components/index.tsx
index 4bed7825..b393379e 100755
--- a/src/renderer/components/index.tsx
+++ b/src/renderer/components/index.tsx
@@ -1,20 +1,47 @@
import * as React from "react";
+import { observer, inject } from "mobx-react";
-import Body from "./Body";
+import { getColorPallet } from "Utils/Render";
+import { Views } from "Store/Views";
+import { Themes } from "Store/Themes";
import TopPanel from "./TopPanel";
+import Settings from "./Settings";
+import ThemeCreator from "./ThemeCreator";
import "./style.scss";
-class App extends React.Component<{}, {}> {
- props: {};
+interface AppProps {
+ views?: Views;
+ themes?: Themes;
+}
+
+const viewMap = {
+ TopPanel,
+ Settings,
+ ThemeCreator,
+};
- constructor(props: {}) {
+@inject("views")
+@inject("themes")
+@observer
+class App extends React.Component
{
+ props: AppProps;
+
+ constructor(props: AppProps) {
super(props);
this.props = props;
}
- render() {
- return [, ];
+ render(): JSX.Element {
+ const theme = this.props.themes.getThemeById(this.props.themes.currentTheme);
+ const pallet = getColorPallet(theme);
+
+ const View = viewMap[this.props.views.view];
+ return (
+
+
+
+ );
}
}
diff --git a/src/renderer/components/style.scss b/src/renderer/components/style.scss
index 181b8c87..8fabbf9f 100644
--- a/src/renderer/components/style.scss
+++ b/src/renderer/components/style.scss
@@ -1,44 +1,153 @@
-$list: a b c d e f g h i j k l m n o p q r s t;
+html,
+body,
+#app,
+#react-page {
+ --fontControlSize: 12px;
+ --fontSize: 16px;
+ --fontSubtitleSize: 18px;
+ --fontTitleSize: 22px;
-html, body, #app, #react-page {
- margin: 0;
- padding: 0;
- outline: none;
- border: 0;
- height: 100%;
+ margin: 0;
+ padding: 0;
+ outline: none;
+ border: 0;
+ height: 100%;
- font: {
- family: 'Roboto', sans-serif;
- }
+ font: {
+ family: 'Inter', sans-serif;
+ size: var(--fontSize);
+ weight: 400;
+ }
}
-@each $i in $list {
- .gridArea-#{$i} {
- grid-area: #{$i}
- }
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0;
+ padding: 0;
}
-@for $i from 1 through 50 {
- .order#{$i} {
- order: #{$i};
- }
+#body {
+ overflow-y: auto;
+ height: 100%;
+}
+
+.hover:hover {
+ cursor: pointer;
}
.hidden {
- display: none;
+ display: none;
}
-.grid_1x2 {
- display: grid;
- grid-template-columns: 1fr 1fr;
+.section {
+ padding: 30px 0px;
+ border-bottom: 1px solid var(--borders);
+
+ &_end {
+ border-bottom: 0px;
+ }
}
-.grid_2x1 {
- display: grid;
- grid-template: "a b" "c c";
- grid-template-columns: 1fr 20px;
+.grid {
+ display: grid;
+
+ &_1x2 {
+ grid-template-columns: 1fr 1fr;
+ }
+
+ &_1x3 {
+ grid-template-columns: 10fr 2fr 10fr;
+ }
+
+ &_1x3_input {
+ grid-template-columns: 10fr 30px 10fr;
+ }
}
.grid_cgap5per {
- grid-column-gap: 5%;
+ grid-column-gap: 5%;
+}
+
+.justify__content {
+ justify-content: left;
+
+ &_center {
+ justify-content: center;
+ }
+
+ &_right {
+ justify-content: right;
+ }
+
+ &_space_around {
+ justify-content: space-around;
+ }
+}
+
+.align_items_center {
+ align-items: center;
+}
+
+.flex {
+ display: flex;
+
+ &_column {
+ flex-direction: column;
+ }
+
+ &_grow_1 {
+ flex-grow: 1;
+ }
+}
+
+.width {
+ &_60px {
+ width: 60px;
+ }
+ &_100px {
+ width: 100px;
+ }
+ &_110px {
+ width: 110px;
+ }
+ &_120px {
+ width: 120px;
+ }
+}
+
+.border_light {
+ border: 1px solid var(--borders);
+}
+
+.pad {
+ &_left {
+ &_6px {
+ padding-left: 6px;
+ }
+ &_10px {
+ padding-left: 10px;
+ }
+ }
+
+ &_top {
+ &_10px {
+ padding-top: 10px;
+ }
+ }
+}
+
+.marg {
+ &_right {
+ &_10px {
+ margin-right: 10px;
+ }
+ }
+}
+
+.pointer_events_none {
+ pointer-events: none;
}
diff --git a/src/renderer/elements/AreaList/index.scss b/src/renderer/elements/AreaList/index.scss
deleted file mode 100644
index 42d98ae1..00000000
--- a/src/renderer/elements/AreaList/index.scss
+++ /dev/null
@@ -1,52 +0,0 @@
-@import '../../colors.scss';
-
-.area {
- height: 200px;
- position: relative;
- overflow-y: scroll;
- padding-left: 10px;
- background-color: $white_1;
-
- &::-webkit-scrollbar {
- width: 6px;
- }
- &::-webkit-scrollbar-track {
- background-color: $gray_2;
- }
- &::-webkit-scrollbar-thumb {
- background-color: $blue_1;
- }
-
- &>.item {
- display: flex;
- color: $black_2;
- align-items: center;
- justify-content: space-between;
- transition: all .1s ease;
- font: {
- size: 18px;
- }
- padding: 6px 20px 2px 10px;
- border-bottom: 1px solid $blue_2;
-
- &>span {
- max-width: calc(100vw - 320px);
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
-
- &:hover {
- background-color: $blue_2;
- }
-
- &>.remove {
- display: inline-flex;
- margin-left: 5px;
-
- &:hover {
- cursor: pointer;
- }
- }
- }
-}
diff --git a/src/renderer/elements/AreaList/index.tsx b/src/renderer/elements/AreaList/index.tsx
deleted file mode 100644
index dc98df1b..00000000
--- a/src/renderer/elements/AreaList/index.tsx
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as React from "react";
-
-import "./index.scss";
-
-export interface AreaProps {
- onRemove(index: number): void;
- c?: string;
- items?: string[];
-}
-
-export class Area extends React.Component
{
- constructor(props: AreaProps) {
- super(props);
- }
-
- render() {
- return (
-
- {this.props.items &&
- this.props.items.map((item, i) => (
-
-
{item}
-
this.props.onRemove(i)}>
-
-
-
-
-
- ))}
-
- );
- }
-}
diff --git a/src/renderer/elements/Button/index.scss b/src/renderer/elements/Button/index.scss
new file mode 100644
index 00000000..6e58cfe4
--- /dev/null
+++ b/src/renderer/elements/Button/index.scss
@@ -0,0 +1,111 @@
+.button {
+ --buttonWidthXxs: 2px;
+ --buttonWidthXs: 4px;
+ --buttonWidthS: 6px;
+ --buttonWidthM: 8px;
+ --buttonWidthL: 12px;
+ --buttonWidthXl: 16px;
+ --buttonWidthXxl: 20px;
+
+ --buttonHeightXxs: 2px;
+ --buttonHeightXs: 4px;
+ --buttonHeightS: 6px;
+ --buttonHeightM: 8px;
+ --buttonHeightL: 12px;
+ --buttonHeightXl: 16px;
+ --buttonHeightXxl: 20px;
+
+ transition: all .1s ease;
+ user-select: none;
+
+
+ &_primary {
+ padding: var(--buttonHeightS) var(--buttonWidthM);
+ border: 1px solid var(--text);
+ border-radius: 5px;
+ color: var(--text);
+
+ &:active {
+ border-color: var(--bg-toolbar-active);
+ }
+ &:hover {
+ cursor: pointer;
+ }
+ }
+ &_secondary {
+ padding: var(--buttonHeightS) var(--buttonWidthM);
+ border: 1px solid var(--bg-toolbar-active);
+ background-color: var(--bg-toolbar-active);
+ border-radius: 5px;
+ color: var(--fg-toolbar-active);
+
+ &:active {
+ border-color: var(--bg-toolbar-active);
+ }
+ &:hover {
+ cursor: pointer;
+ }
+ }
+
+ &_thin {
+ padding: var(buttonHeightS) var(--buttonWidthM);
+ }
+ &_thick {
+ padding: var(buttonHeightL) var(--buttonWidthXxl);
+ }
+
+ &_rounded {
+ border-radius: 5px;
+ }
+
+ &_clear {
+ background: transparent;
+ border: 0px;
+ border-radius: 0px;
+ padding: 0px;
+ }
+ &_clear:hover {
+ border: 0px;
+ box-shadow: none;
+ }
+
+ &_title {
+ padding: 12px;
+ color: var(--fg-header);
+ background-color: var(--bg-header-control);
+
+ &:hover {
+ background-color: var(--bg-header-control-hover);
+ color: var(--bg-header-hover);
+ cursor: pointer;
+ }
+ }
+ &_control {
+ padding: 12px 18px;
+ background-color: var(--bg-header-control);
+ color: var(--fg-header-control);
+
+ &:hover {
+ background-color: var(--bg-header-control-hover);
+ color: var(--bg-header-control-hover);
+ cursor: pointer;
+ }
+ }
+ &_close {
+ color: var(--fg-header-control);
+ &:hover {
+ background: var(--bg-window-close);
+ cursor: pointer;
+ }
+ }
+
+ &_disabled {
+ color: var(--text-disabled);
+ border-color: var(--text-disabled);
+ cursor: default;
+
+ &:hover {
+ cursor: default;
+ }
+ }
+}
diff --git a/src/renderer/elements/Button/index.tsx b/src/renderer/elements/Button/index.tsx
new file mode 100644
index 00000000..59962169
--- /dev/null
+++ b/src/renderer/elements/Button/index.tsx
@@ -0,0 +1,46 @@
+import * as React from "react";
+
+import { Text } from "..";
+import "./index.scss";
+
+export interface ButtonProps {
+ onClick?(e: React.MouseEvent): void;
+ type?: "primary" | "secondary";
+ className?: string;
+ text?: string;
+ contentBefore?: JSX.Element;
+ contentAfter?: JSX.Element;
+ disabled?: boolean;
+}
+
+export class Button extends React.Component {
+ constructor(props: ButtonProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ let type = this.props.type;
+ if (!type) {
+ type = "primary";
+ }
+
+ const classNames: string[] = ["button", `button_${type}`];
+ const onClick = this.props.onClick || ((): void => {});
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+ if (this.props.disabled) {
+ classNames.push("button_disabled");
+ }
+
+ return (
+
+ {this.props.contentBefore ?
{this.props.contentBefore}
: ""}
+ {this.props.text ?
{this.props.text} : ""}
+ {this.props.children ? this.props.children : ""}
+ {this.props.contentAfter ?
{this.props.contentAfter}
: ""}
+
+ );
+ }
+}
diff --git a/src/renderer/elements/CheckBox/index.scss b/src/renderer/elements/CheckBox/index.scss
index 85198ac7..6aa6b6fb 100644
--- a/src/renderer/elements/CheckBox/index.scss
+++ b/src/renderer/elements/CheckBox/index.scss
@@ -1,7 +1,13 @@
@import '../../colors.scss';
.checkbox {
- position: relative;
+ --checkSize: 12px;
+ --checkWidth: 28px;
+ --checkBorder: 1px;
+ color: var(--text);
+
+ position: relative;
+ padding: 6px 0;
&>label {
position: relative;
@@ -12,58 +18,58 @@
&>span {
position: relative;
- padding-left: 57px;
+ padding-left: 45px;
user-select: none;
}
&>span::before {
content: '';
position: absolute;
- top: -2px;
- left: 0px;
- width: 45px;
- height: 20px;
- background-color: $llgray_1;
- border: 1px solid $black_2;
- border-radius: 20px;
+ top: 1px;
+ left: 1px;
+ width: var(--checkWidth);
+ height: var(--checkSize);
+ background-color: $white_1;
+ border: var(--checkBorder) solid var(--borders);
+ border-radius: var(--checkSize);
transition: all .1s ease;
}
&>span:hover::before {
- box-shadow: 0 0 2px 0px $black_2;
+ box-shadow: 0 0 1px 0px $black_2;
}
&>span::after {
content: '';
position: absolute;
- top: 0px;
- left: 3px;
- width: 16px;
- height: 16px;
- background-color: $llgray_1;
- border: 1px solid $black_2;
- border-radius: 20px;
+ top: 1px;
+ left: 1px;
+ width: var(--checkSize);
+ height: var(--checkSize);
+ background-color: var(--bg-header);;
+ border: var(--checkBorder) solid var(--borders);
+ border-radius: var(--checkSize);
transition: all .2s ease;
}
&>input[type="checkbox"]:checked ~ span::before {
content: '';
position: absolute;
- top: -2px;
+ top: 1px;
left: 0px;
- width: 45px;
- height: 20px;
- background-color: $black_2;
- border: 1px solid $black_2;
- border-radius: 20px;
+ width: var(--checkWidth);
+ height: var(--checkSize);
+ background-color: var(--bg-header);
+ border: var(--checkBorder) solid var(--borders);
+ border-radius: var(--checkSize);
transition: all .1s ease;
}
&>input[type="checkbox"]:checked ~ span::after {
content: '';
position: absolute;
- top: 0px;
- left: 27px;
- width: 16px;
- height: 16px;
- background-color: $llgray_1;
+ top: 1px;
+ left: calc(var(--checkWidth) - var(--checkSize));
+ width: var(--checkSize);
+ height: var(--checkSize);
+ background-color: $white_1;
border: 1px solid $black_2;
- border-radius: 20px;
+ border-radius: var(--checkSize);
transition: all .2s ease;
}
@@ -94,8 +100,8 @@
left: 0px;
width: 45px;
height: 20px;
- background-color: $llgray_1;
- border: 1px solid $gray_2;
+ background-color: var(--borders);
+ border: 1px solid var(--borders);
border-radius: 20px;
transition: all .1s ease;
}
@@ -106,8 +112,8 @@
left: 3px;
width: 16px;
height: 16px;
- background-color: $llgray_1;
- border: 1px solid $gray_2;
+ background-color: var(--borders);
+ border: 1px solid var(--borders);
border-radius: 20px;
transition: all .2s ease;
}
diff --git a/src/renderer/elements/CheckBox/index.tsx b/src/renderer/elements/CheckBox/index.tsx
index 855e9904..59d8cee5 100644
--- a/src/renderer/elements/CheckBox/index.tsx
+++ b/src/renderer/elements/CheckBox/index.tsx
@@ -7,18 +7,30 @@ export interface CheckBoxProps {
text?: string; // text for label
value?: boolean;
disabled?: boolean;
- title?: string;
- s?: string; // custom style classes
+ hidden?: boolean;
+ className?: string; // custom style classes
}
-export class CheckBox extends React.Component {
+export class CheckBox extends React.Component {
constructor(props: CheckBoxProps) {
super(props);
}
- render() {
+ render(): JSX.Element {
+ const classNames: string[] = ["checkbox"];
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+ if (this.props.disabled) {
+ classNames.push("disabled");
+ }
+ if (this.props.hidden) {
+ classNames.push("hidden");
+ }
+
return (
-
+
);
diff --git a/src/renderer/elements/ComboBox/index.scss b/src/renderer/elements/ComboBox/index.scss
new file mode 100644
index 00000000..79620581
--- /dev/null
+++ b/src/renderer/elements/ComboBox/index.scss
@@ -0,0 +1,24 @@
+.combobox {
+ -webkit-appearance: none;
+ padding: 5px 10px;
+ width: 150px;
+ border-radius: 3px;
+ background: #FFFFFF;
+ outline: none;
+
+ &:focus {
+ background: #FFFFFF;
+ outline: none;
+ }
+
+ &:after {
+ position: absolute;
+ content: "";
+ top: 14px;
+ right: 10px;
+ width: 0;
+ height: 0;
+ border: 6px solid transparent;
+ border-color: #fff transparent transparent transparent;
+ }
+}
diff --git a/src/renderer/elements/ComboBox/index.tsx b/src/renderer/elements/ComboBox/index.tsx
new file mode 100644
index 00000000..cdf48a40
--- /dev/null
+++ b/src/renderer/elements/ComboBox/index.tsx
@@ -0,0 +1,31 @@
+import * as React from "react";
+
+import "./index.scss";
+
+export interface ComboBoxProps {
+ className?: string;
+ items?: string[];
+}
+
+export class ComboBox extends React.Component
{
+ constructor(props: ComboBoxProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ const classNames: string[] = ["combobox"];
+ const items = this.props.items || [];
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+
+ return (
+
+ );
+ }
+}
diff --git a/src/renderer/elements/Hint/index.scss b/src/renderer/elements/Hint/index.scss
new file mode 100644
index 00000000..7b895652
--- /dev/null
+++ b/src/renderer/elements/Hint/index.scss
@@ -0,0 +1,2 @@
+.hint {}
+.hint:hover {}
diff --git a/src/renderer/elements/Hint/index.tsx b/src/renderer/elements/Hint/index.tsx
new file mode 100644
index 00000000..a1232678
--- /dev/null
+++ b/src/renderer/elements/Hint/index.tsx
@@ -0,0 +1,24 @@
+import * as React from "react";
+
+import "./index.scss";
+
+export interface HintProps {
+ className?: string;
+ hint: JSX.Element;
+}
+
+export class Hint extends React.Component {
+ constructor(props: HintProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ const classNames: string[] = ["hint"];
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+
+ return {this.props.children}
;
+ }
+}
diff --git a/src/renderer/elements/Icon/icons/ArrowLeft.tsx b/src/renderer/elements/Icon/icons/ArrowLeft.tsx
new file mode 100644
index 00000000..fe8661de
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/ArrowLeft.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const ArrowLeft: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/ArrowRight.tsx b/src/renderer/elements/Icon/icons/ArrowRight.tsx
new file mode 100644
index 00000000..f52cdd42
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/ArrowRight.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const ArrowRight: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#333333";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Burger.tsx b/src/renderer/elements/Icon/icons/Burger.tsx
new file mode 100644
index 00000000..c2bd159c
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Burger.tsx
@@ -0,0 +1,18 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Burger: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "18";
+ const color = props.color ? props.color : "#FFFFFF";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Close.tsx b/src/renderer/elements/Icon/icons/Close.tsx
new file mode 100644
index 00000000..f5ba0d80
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Close.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Close: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#2C2C2C";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Component.tsx b/src/renderer/elements/Icon/icons/Component.tsx
new file mode 100644
index 00000000..3fb4c5af
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Component.tsx
@@ -0,0 +1,50 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Component: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "18";
+ const color = props.color ? props.color : "#FFFFFF";
+
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Corner.tsx b/src/renderer/elements/Icon/icons/Corner.tsx
new file mode 100644
index 00000000..07e3f69e
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Corner.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Corner: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#333333";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Delete.tsx b/src/renderer/elements/Icon/icons/Delete.tsx
new file mode 100644
index 00000000..fcd884d6
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Delete.tsx
@@ -0,0 +1,18 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Delete: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "18";
+ const color = props.color ? props.color : "#FFFFFF";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Folder.tsx b/src/renderer/elements/Icon/icons/Folder.tsx
new file mode 100644
index 00000000..abda3f46
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Folder.tsx
@@ -0,0 +1,22 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Folder: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#333333";
+
+ return (
+
+
+
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Github.tsx b/src/renderer/elements/Icon/icons/Github.tsx
new file mode 100644
index 00000000..0cc1f096
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Github.tsx
@@ -0,0 +1,17 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Github: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Hand.tsx b/src/renderer/elements/Icon/icons/Hand.tsx
new file mode 100644
index 00000000..7d8dc1e0
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Hand.tsx
@@ -0,0 +1,20 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Hand: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "18";
+ const color = props.color ? props.color : "#FFFFFF";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Main.tsx b/src/renderer/elements/Icon/icons/Main.tsx
new file mode 100644
index 00000000..21c0b66c
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Main.tsx
@@ -0,0 +1,18 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Main: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Maximize.tsx b/src/renderer/elements/Icon/icons/Maximize.tsx
new file mode 100644
index 00000000..c904641b
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Maximize.tsx
@@ -0,0 +1,19 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Maximize: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/MenuCorner.tsx b/src/renderer/elements/Icon/icons/MenuCorner.tsx
new file mode 100644
index 00000000..3c91317f
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/MenuCorner.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const MenuCorner: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Minimize.tsx b/src/renderer/elements/Icon/icons/Minimize.tsx
new file mode 100644
index 00000000..aae3c488
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Minimize.tsx
@@ -0,0 +1,14 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Minimize: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Pencil.tsx b/src/renderer/elements/Icon/icons/Pencil.tsx
new file mode 100644
index 00000000..e1fa1c5a
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Pencil.tsx
@@ -0,0 +1,17 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Pencil: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Plus.tsx b/src/renderer/elements/Icon/icons/Plus.tsx
new file mode 100644
index 00000000..581cb509
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Plus.tsx
@@ -0,0 +1,15 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Plus: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Settings.tsx b/src/renderer/elements/Icon/icons/Settings.tsx
new file mode 100644
index 00000000..875f97d3
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Settings.tsx
@@ -0,0 +1,19 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Settings: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/icons/Sync.tsx b/src/renderer/elements/Icon/icons/Sync.tsx
new file mode 100644
index 00000000..775d3b29
--- /dev/null
+++ b/src/renderer/elements/Icon/icons/Sync.tsx
@@ -0,0 +1,20 @@
+import * as React from "react";
+
+import { IconProps } from "..";
+import "../index.scss";
+
+export const Sync: React.FunctionComponent = props => {
+ const size = props.size ? props.size : "16";
+ const color = props.color ? props.color : "#7a7a7a";
+
+ return (
+
+
+
+ );
+};
diff --git a/src/renderer/elements/Icon/index.scss b/src/renderer/elements/Icon/index.scss
new file mode 100644
index 00000000..c60f7c6a
--- /dev/null
+++ b/src/renderer/elements/Icon/index.scss
@@ -0,0 +1,5 @@
+.icon {
+ display: inline-flex;
+ justify-content: center;
+ align-items: center;
+}
diff --git a/src/renderer/elements/Icon/index.tsx b/src/renderer/elements/Icon/index.tsx
new file mode 100644
index 00000000..a06c6b4c
--- /dev/null
+++ b/src/renderer/elements/Icon/index.tsx
@@ -0,0 +1,100 @@
+import * as React from "react";
+
+import { Close } from "./icons/Close";
+import { Corner } from "./icons/Corner";
+import { Folder } from "./icons/Folder";
+import { Github } from "./icons/Github";
+import { Pencil } from "./icons/Pencil";
+import { ArrowLeft } from "./icons/ArrowLeft";
+import { ArrowRight } from "./icons/ArrowRight";
+import { Main } from "./icons/Main";
+import { Plus } from "./icons/Plus";
+import { Maximize } from "./icons/Maximize";
+import { Minimize } from "./icons/Minimize";
+import { Settings } from "./icons/Settings";
+import { Hand } from "./icons/Hand";
+import { Component } from "./icons/Component";
+import { Burger } from "./icons/Burger";
+import { Delete } from "./icons/Delete";
+import { MenuCorner } from "./icons/MenuCorner";
+import { Sync } from "./icons/Sync";
+
+import "../../animations.scss";
+import "./index.scss";
+
+type Icons =
+ | "Close"
+ | "Corner"
+ | "Folder"
+ | "Github"
+ | "Pencil"
+ | "ArrowLeft"
+ | "ArrowRight"
+ | "Main"
+ | "Plus"
+ | "Maximize"
+ | "Minimize"
+ | "Hand"
+ | "Component"
+ | "Burger"
+ | "Delete"
+ | "Sync"
+ | "MenuCorner"
+ | "Settings";
+
+export interface IconProps {
+ color?: string;
+ size?: string;
+}
+
+export interface ContainerProps extends IconProps {
+ type: Icons;
+ isSpinner?: boolean;
+ className?: string;
+}
+
+export class Icon extends React.Component {
+ private iconsMap = {
+ Close,
+ Corner,
+ Folder,
+ Github,
+ Pencil,
+ ArrowLeft,
+ ArrowRight,
+ Main,
+ Plus,
+ Maximize,
+ Minimize,
+ Hand,
+ Component,
+ Burger,
+ Delete,
+ Settings,
+ Sync,
+ MenuCorner,
+ };
+
+ constructor(props: ContainerProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ const classNames: string[] = ["icon"];
+ const IconView = this.iconsMap[this.props.type];
+ const size = this.props.size || "16";
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+ if (this.props.isSpinner) {
+ classNames.push("spin");
+ }
+
+ return (
+
+
+
+ );
+ }
+}
diff --git a/src/renderer/elements/Input/index.scss b/src/renderer/elements/Input/index.scss
new file mode 100644
index 00000000..45b257dc
--- /dev/null
+++ b/src/renderer/elements/Input/index.scss
@@ -0,0 +1,142 @@
+@import '../../colors.scss';
+
+.input {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ border-radius: 2px;
+
+ & input:focus {
+ border: 0;
+ outline: none;
+ }
+
+ &__label {
+ color: var(--text);
+ }
+
+ &__color {
+ background-color: var(--bg-panel);
+ width: 30px;
+ height: 30px;
+ border: none;
+ outline: none;
+ margin: 0;
+ padding: 0 10px 0 0;
+
+ &:focus, &:active {
+ background-color: var(--bg-panel);
+ border: none;
+ outline: none;
+ margin: 0;
+ padding: 0 10px 0 0;
+ }
+ }
+
+ &__content_before {
+ display: flex;
+ justify-self: center;
+ }
+ &__content_after {
+ display: flex;
+ justify-self: center;
+ }
+
+ &_inline {
+ display: inline-flex;
+ }
+
+ &_grid3 {
+ display: grid;
+ grid-template-columns: 40px 1fr 40px;
+ }
+
+ &__range {
+ --thumbSize: 16px;
+ --trackSize: 2px;
+ background-color: var(--bg-panel);
+ -webkit-appearance: none;
+ appearance: none;
+ height: var(--thumbSize);
+ margin: 0;
+ padding: 0;
+ border: 0;
+ width: 100%;
+ }
+
+ &__range::-webkit-slider-runnable-track {
+ background: var(--text);
+ height: var(--trackSize);
+ border-radius: calc(var(--trackSize) / 2);
+ }
+
+ &__range::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ appearance: none;
+ border: 1 solid var(--text);
+ background: var(--text);
+ width: var(--thumbSize);
+ height: var(--thumbSize);
+ border-radius: calc(var(--thumbSize));
+ margin-top: calc(((var(--thumbSize) - var(--trackSize)) / 2) * -1);
+ }
+
+ &__range:hover::-webkit-slider-thumb {
+ cursor: pointer;
+ }
+
+ &__range:hover::-webkit-slider-runnable-track {
+ cursor: pointer;
+ }
+
+ &__text {
+ margin: 8px 10px;
+ border: 0;
+ background-color: var(--bg-panel);
+ color: var(--text);
+ font: {
+ family: 'Inter', sans-serif;
+ size: 14px;
+ weight: 300;
+ };
+ }
+
+ &__text:focus {
+ border: 0;
+ outline: none;
+ }
+
+ &__text::placeholder {
+ color: $gray_2;
+ flex-grow: 1;
+ user-select: none;
+ }
+
+ &__content_before {
+ padding-left: 12px;
+ }
+
+ &__content_after {
+ padding-right: 12px;
+ }
+
+
+ &_w_40per input {
+ width: 40%;
+ }
+
+ &_w_60per input {
+ width: 60%;
+ }
+ &_w_70per input {
+ width: 70%;
+ }
+
+ &_w_80per input {
+ width: 80%;
+ }
+
+ &_w_100per input {
+ width: 100%;
+ }
+}
diff --git a/src/renderer/elements/Input/index.tsx b/src/renderer/elements/Input/index.tsx
new file mode 100644
index 00000000..cb924250
--- /dev/null
+++ b/src/renderer/elements/Input/index.tsx
@@ -0,0 +1,45 @@
+import * as React from "react";
+
+import { InputColor, InputColorProps } from "./types/Color";
+import { InputRange, InputRangeProps } from "./types/Range";
+import { InputText, InputTextProps } from "./types/Text";
+
+import "./index.scss";
+
+export interface InputBaseProps {
+ className?: string;
+}
+
+export interface TextInputProps extends InputTextProps {
+ type: "text";
+}
+export interface ColorProps extends InputColorProps {
+ type: "color";
+}
+export interface RangeInputProps extends InputRangeProps {
+ type: "range";
+}
+
+type InputsProps = (TextInputProps | RangeInputProps | ColorProps) & InputBaseProps;
+
+export class Input extends React.Component {
+ private inputMap = {
+ text: InputText,
+ range: InputRange,
+ color: InputColor,
+ };
+
+ constructor(props: InputsProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ const Input = this.inputMap[this.props.type];
+
+ return (
+
+
+
+ );
+ }
+}
diff --git a/src/renderer/elements/Input/types/Color.tsx b/src/renderer/elements/Input/types/Color.tsx
new file mode 100644
index 00000000..a63e5640
--- /dev/null
+++ b/src/renderer/elements/Input/types/Color.tsx
@@ -0,0 +1,33 @@
+import * as React from "react";
+
+import "../index.scss";
+
+export interface InputColorProps {
+ onChange(event: React.ChangeEvent, color: string): void;
+ onClick?(event: React.MouseEvent): void;
+ value?: string;
+ label?: string;
+ labelPos?: "left" | "right" | "top" | "bottom";
+ readonlyInput?: boolean;
+}
+
+export const InputColor: React.FunctionComponent = props => {
+ return (
+
+ props.onChange(e, e.target.value)}
+ onClick={props.onClick}
+ onAuxClick={props.onClick}
+ />
+ {props.label ? (
+ {props.label}
+ ) : (
+ ""
+ )}
+
+ );
+};
diff --git a/src/renderer/elements/Input/types/Number.tsx b/src/renderer/elements/Input/types/Number.tsx
new file mode 100644
index 00000000..83329395
--- /dev/null
+++ b/src/renderer/elements/Input/types/Number.tsx
@@ -0,0 +1,32 @@
+import * as React from "react";
+
+import "../index.scss";
+
+export interface InputNumberProps {
+ onChange(event: React.MouseEvent | React.ChangeEvent, delta: number): void;
+ value?: string | number;
+ readonlyInput?: boolean;
+ suffix?: string;
+}
+
+export const InputNumber: React.FunctionComponent = props => {
+ return (
+
+ props.onChange(e, +props.value - 5)}>
+ -
+
+
+ props.onChange(e, +e.target.value)}
+ />
+ {props.suffix || "%"}
+
+ props.onChange(e, +props.value + 5)}>
+ +
+
+
+ );
+};
diff --git a/src/renderer/elements/Input/types/Range.tsx b/src/renderer/elements/Input/types/Range.tsx
new file mode 100644
index 00000000..6f41be70
--- /dev/null
+++ b/src/renderer/elements/Input/types/Range.tsx
@@ -0,0 +1,40 @@
+import * as React from "react";
+
+import "../index.scss";
+
+export interface InputRangeProps {
+ onChange(event: React.MouseEvent | React.ChangeEvent, delta: number): void;
+ value?: string | number;
+ suffix?: string;
+ displayLabel?: boolean;
+ displayValue?: boolean;
+ readonlyInput?: boolean;
+ min?: number;
+ max?: number;
+ step?: number;
+}
+
+export const InputRange: React.FunctionComponent = props => {
+ return (
+
+ props.onChange(e, +e.target.value)}
+ />
+ {props.displayValue ? (
+
+ {props.value}
+ {props.suffix ? props.suffix : ""}
+
+ ) : (
+ ""
+ )}
+
+ );
+};
diff --git a/src/renderer/elements/Input/types/Text.tsx b/src/renderer/elements/Input/types/Text.tsx
new file mode 100644
index 00000000..e8c9b77f
--- /dev/null
+++ b/src/renderer/elements/Input/types/Text.tsx
@@ -0,0 +1,40 @@
+import * as React from "react";
+
+import "../index.scss";
+
+export interface InputTextProps {
+ onChange(event: React.MouseEvent | React.ChangeEvent, delta: number): void;
+ value?: string | number;
+ displayLabel?: boolean;
+ suffix?: string;
+ labelPos?: "left" | "right" | "top" | "bottom";
+ contentBefore?: JSX.Element;
+ contentAfter?: JSX.Element;
+ placeholder?: string;
+ readonlyInput?: boolean;
+}
+
+export const InputText: React.FunctionComponent = props => {
+ return (
+
+ {props.contentBefore ? {props.contentBefore}
: ""}
+ props.onChange(e, +e.target.value)}
+ />
+ {props.displayLabel ? (
+
+ {props.value}
+ {props.suffix ? props.suffix : ""}
+
+ ) : (
+ ""
+ )}
+ {props.contentAfter ? {props.contentAfter}
: ""}
+
+ );
+};
diff --git a/src/renderer/elements/List/index.scss b/src/renderer/elements/List/index.scss
new file mode 100644
index 00000000..c046133d
--- /dev/null
+++ b/src/renderer/elements/List/index.scss
@@ -0,0 +1,72 @@
+@import '../../colors.scss';
+
+.list {
+ height: 170px;
+ position: relative;
+ overflow-y: scroll;
+ padding-left: 10px;
+ background-color: var(--bg-panel);
+
+ &::-webkit-scrollbar {
+ width: 4px;
+ }
+
+ &::-webkit-scrollbar-track {
+ background-color: transparent;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ background-color: $gray_2;
+ border-radius: 5px;
+ }
+
+ &_hidden_tracks {
+ &::-webkit-scrollbar {
+ width: 0px;
+ border: none;
+ background-color: transparent;
+ }
+
+ &::-webkit-scrollbar-track {
+ width: 0px;
+ border: none;
+ background-color: transparent;
+ }
+
+ &::-webkit-scrollbar-thumb {
+ width: 0px;
+ border: none;
+ background-color: transparent;
+ }
+ }
+
+ &_grab {
+ cursor: grab;
+ overflow: auto;
+ user-select: none;
+ }
+
+ &__item {
+ display: flex;
+ color: var(--text);
+ align-items: center;
+ padding: 10px 0px 10px 0px;
+
+ &>span {
+ max-width: calc(100vw - 320px);
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ }
+
+ }
+
+ &__delete {
+ margin-right: 10px;
+ height: 16px;
+
+ &:hover {
+ cursor: pointer;
+ }
+ }
+}
diff --git a/src/renderer/elements/List/index.tsx b/src/renderer/elements/List/index.tsx
new file mode 100644
index 00000000..d5bf985a
--- /dev/null
+++ b/src/renderer/elements/List/index.tsx
@@ -0,0 +1,80 @@
+import * as React from "react";
+
+import "./index.scss";
+
+export interface ListProps {
+ onRemove?(index: number): void;
+ className?: string;
+ style?: React.CSSProperties;
+ children: JSX.Element | JSX.Element[];
+ grabToScroll?: boolean;
+}
+
+export class List extends React.Component {
+ private area: React.RefObject;
+ private pos = { top: 0, left: 0, x: 0, y: 0 };
+ private isMoving = false;
+
+ constructor(props: ListProps) {
+ super(props);
+
+ this.area = React.createRef();
+ }
+
+ private mouseUpHandler = (e: React.MouseEvent) => {
+ this.area.current.style.cursor = "grab";
+ this.isMoving = false;
+ };
+ private mouseDownHandler = (e: React.MouseEvent) => {
+ this.area.current.style.cursor = "grabbing";
+ this.isMoving = true;
+
+ this.pos = {
+ left: this.area.current.scrollLeft,
+ top: this.area.current.scrollTop,
+ x: e.clientX,
+ y: e.clientY,
+ };
+ };
+ private mouseMoveHandler = (e: React.MouseEvent) => {
+ if (!this.isMoving) {
+ return;
+ }
+
+ const dx = e.clientX - this.pos.x;
+ const dy = e.clientY - this.pos.y;
+
+ this.area.current.scrollTop = this.pos.top - dy;
+ this.area.current.scrollLeft = this.pos.left - dx;
+ };
+
+ render(): JSX.Element {
+ const classNames: string[] = ["list"];
+ const isDraggable = this.props.grabToScroll;
+
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+ if (isDraggable) {
+ classNames.push("list_grab");
+ }
+
+ return isDraggable ? (
+
+ {this.props.children}
+
+ ) : (
+
+ {this.props.children}
+
+ );
+ }
+}
diff --git a/src/renderer/elements/Text/index.scss b/src/renderer/elements/Text/index.scss
new file mode 100644
index 00000000..e99e7edb
--- /dev/null
+++ b/src/renderer/elements/Text/index.scss
@@ -0,0 +1,33 @@
+.text {
+ font: {
+ size: var(--fontSize);
+ family: 'Inter', sans-serif;
+ }
+
+ &_title {
+ display: block;
+ font-size: var(--fontTitleSize);
+ font-weight: 600;
+ }
+ &_subtitle {
+ color: var(--text-active);
+ display: block;
+ padding-bottom: 20px;
+ font-size: var(--fontSubtitleSize);
+ font-weight: 600;
+ }
+
+ &_light {
+ color: var(--fg-tab-active);
+ }
+ &_dark {
+ color: var(--text-active);
+ }
+ &_inactive {
+ color: var(--text-disabled);
+ }
+
+ &_nopadding {
+ padding: 0;
+ }
+}
diff --git a/src/renderer/elements/Text/index.tsx b/src/renderer/elements/Text/index.tsx
new file mode 100644
index 00000000..813bfe9f
--- /dev/null
+++ b/src/renderer/elements/Text/index.tsx
@@ -0,0 +1,32 @@
+import * as React from "react";
+
+import "./index.scss";
+
+export interface TextProps {
+ className?: string;
+ type?: "title" | "subtitle";
+ color?: "light" | "dark" | "inactive";
+ children: string;
+}
+
+export class Text extends React.Component {
+ constructor(props: TextProps) {
+ super(props);
+ }
+
+ render(): JSX.Element {
+ const classNames: string[] = ["text"];
+
+ if (this.props.type) {
+ classNames.push(`text_${this.props.type}`);
+ }
+ if (this.props.color) {
+ classNames.push(`text_${this.props.color}`);
+ }
+ if (this.props.className) {
+ classNames.push(this.props.className);
+ }
+
+ return {this.props.children};
+ }
+}
diff --git a/src/renderer/elements/index.ts b/src/renderer/elements/index.ts
index 30004a52..c775eb5b 100644
--- a/src/renderer/elements/index.ts
+++ b/src/renderer/elements/index.ts
@@ -1,3 +1,8 @@
-export * from "./AreaList";
-export * from "./input";
+export * from "./List";
+export * from "./Text";
+export * from "./Hint";
+export * from "./Icon";
+export * from "./Input";
+export * from "./Button";
export * from "./CheckBox";
+export * from "./ComboBox";
diff --git a/src/renderer/elements/input/index.scss b/src/renderer/elements/input/index.scss
deleted file mode 100644
index 4e4cfb44..00000000
--- a/src/renderer/elements/input/index.scss
+++ /dev/null
@@ -1,73 +0,0 @@
-@import '../../colors.scss';
-
-.input.simple {
- width: 100%;
-
- &>.body {
- border: 0;
-
- &>input {
- background-color: transparent;
- border: 0px;
- outline: 0;
- margin: 0;
- padding: 0;
- width: 100%;
- font: {
- size: 18px;
- }
- }
- }
-}
-
-.input.number {
- display: grid;
- grid-template-columns: 30px 1fr 30px;
-
- &>.button {
- color: $black_2;
- font: {
- size: 18px;
- weight: 600;
- }
- padding: 10px 10px;
- transition: all .1s ease;
- user-select: none;
-
- &:hover {
- cursor: pointer;
- text-shadow: 0 0 2px $gray_1;
- }
- &:active {}
- }
-
- &>.body {
- display: grid;
- grid-template-columns: 52% 1fr;
- grid-column-gap: 2px;
- align-items: center;
- border: 1px solid $black_2;
- border-radius: 20px;
-
- &:hover {
- box-shadow: 0 0 2px $gray_1;
- }
-
- &>input {
- background-color: transparent;
- justify-self: right;
- border: 0px;
- outline: 0;
- margin: 0;
- padding: 0;
- width: 32px;
- font: {
- size: 18px;
- }
- text-align: right;
-
- &:active {}
- }
- &>.suffix {}
- }
-}
\ No newline at end of file
diff --git a/src/renderer/elements/input/index.tsx b/src/renderer/elements/input/index.tsx
deleted file mode 100644
index d65e6c85..00000000
--- a/src/renderer/elements/input/index.tsx
+++ /dev/null
@@ -1,57 +0,0 @@
-import * as React from "react";
-
-import "./index.scss";
-
-export enum InputTypes {
- SIMPLE = "simple",
- NUMBER = "number",
-}
-
-export interface InputProps {
- onChange(event: React.MouseEvent | React.ChangeEvent, delta: number): void;
- type?: InputTypes;
- value?: string | number;
- readonlyInput?: boolean;
- sufix?: string;
-}
-
-export class Input extends React.Component {
- constructor(props: InputProps) {
- super(props);
- }
-
- render() {
- return (
-
- {this.props.type === InputTypes.NUMBER ? (
-
- this.props.onChange(e, +this.props.value - 5)}>
- -
-
-
- this.props.onChange(e, +e.target.value)}
- />
- {this.props.sufix || "%"}
-
- this.props.onChange(e, +this.props.value + 5)}>
- +
-
-
- ) : (
-
- this.props.onChange(e, +e.target.value)}
- />
-
- )}
-
- );
- }
-}
diff --git a/src/renderer/index.tsx b/src/renderer/index.tsx
index 7ad60871..87925d33 100755
--- a/src/renderer/index.tsx
+++ b/src/renderer/index.tsx
@@ -5,13 +5,14 @@ import stores from "./stores";
import App from "./components";
import { isDev } from "Utils/Common";
-import shortcuts from "Utils/Render/shortcuts";
onError((err: any) => {
console.log("Mobx error: ", err);
});
-shortcuts();
+if (module.hot) {
+ module.hot.accept();
+}
const root: string = isDev ? "app" : "react-page";
diff --git a/src/renderer/stores/Routes.ts b/src/renderer/stores/Routes.ts
deleted file mode 100644
index 55713500..00000000
--- a/src/renderer/stores/Routes.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { RouterState, RouterStore } from "mobx-state-router";
-
-const routes = [
- {
- name: "general",
- pattern: "/",
- },
- {
- name: "shortcuts",
- pattern: "/shortcuts",
- },
-];
-
-class Routes {
- route: RouterStore;
-
- constructor() {
- this.route = new RouterStore(this, routes, new RouterState("general"));
- }
-}
-
-const routeStore = new Routes();
-
-export default routeStore;
-export { Routes };
diff --git a/src/renderer/stores/Settings.ts b/src/renderer/stores/Settings.ts
index 39c6a212..8212ce1c 100644
--- a/src/renderer/stores/Settings.ts
+++ b/src/renderer/stores/Settings.ts
@@ -1,14 +1,16 @@
import * as E from "electron";
-import * as S from "electron-settings";
-import { observable, action, toJS, autorun } from "mobx";
-
-import * as Const from "Const";
+import { storage } from "Storage";
+import { observable, action, toJS } from "mobx";
export class Settings {
- @observable settings: ISettings;
+ @observable settings?: SettingsInterface;
+
+ @observable isSyncDisabled: boolean;
constructor() {
- this.settings = S.getAll() as any;
+ this.settings = storage.get();
+
+ this.isSyncDisabled = false;
this.events();
}
@@ -23,7 +25,7 @@ export class Settings {
this.settings.ui.scaleFigmaUI = 1;
}
- E.remote.app.emit("update-figma-ui-scale", d);
+ E.ipcRenderer.send("updateFigmaUiScale", d);
};
@action
public updatePanelScale = (delta: number): void => {
@@ -35,34 +37,24 @@ export class Settings {
this.settings.ui.scalePanel = 1;
}
- E.remote.app.emit("update-panel-scale", d);
+ E.ipcRenderer.send("updatePanelScale", d);
};
- @action
- public updateShowMainMenu = (show: boolean): void => {
- this.settings.app.showMainMenu = show;
-
- E.remote.app.emit("set-hide-main-menu", show);
- };
- @action
- public updateDisableMainMenu = (disabled: boolean): void => {
- this.settings.app.disabledMainMenu = disabled;
-
- E.remote.app.emit("set-disable-main-menu", disabled);
- };
@action
public saveLastOpenedTabs = (save: boolean): void => {
this.settings.app.saveLastOpenedTabs = save;
};
+
@action
- public updateWindowFrame = (show: boolean): void => {
- this.settings.app.windowFrame = show;
+ public enableColorSpaceSrgb = (enabled: boolean): void => {
+ this.settings.app.enableColorSpaceSrgb = enabled;
+
+ E.ipcRenderer.send("enableColorSpaceSrgbWasChanged", enabled);
};
- @action
- public updateDisabledFonts = (disabled: boolean): void => {
- this.settings.app.disabledFonts = disabled;
- E.remote.app.emit("set-disable-fonts", disabled);
+ @action
+ public visibleNewProjectBtn = (visible: boolean): void => {
+ this.settings.app.visibleNewProjectBtn = visible;
};
@action
@@ -91,24 +83,48 @@ export class Settings {
this.settings.app.fontDirs = this.settings.app.fontDirs.filter((e, i) => i !== index);
};
+ @action
+ public changeTheme = (id: string): void => {
+ if (!this.settings.theme) {
+ this.settings.theme = {
+ currentTheme: "0",
+ };
+ }
+
+ this.settings.theme.currentTheme = id;
+ };
+
+ public setSettings = () => {
+ const settings = toJS(this.settings);
+
+ storage.set(settings);
+
+ E.ipcRenderer.send("updateVisibleNewProjectBtn", settings.app.visibleNewProjectBtn);
+ };
+
private events = (): void => {
- E.ipcRenderer.on(Const.UPDATEUISCALE, (sender: Event, scale: number) => {
+ E.ipcRenderer.on("updateUiScale", (sender, scale) => {
this.settings.ui.scaleFigmaUI = scale;
});
- E.ipcRenderer.on(Const.UPDATEPANELSCALE, (sender: Event, scale: number) => {
+ E.ipcRenderer.on("updatePanelScale", (sender, scale) => {
this.settings.ui.scalePanel = scale;
});
- E.ipcRenderer.on(Const.UPDATEPANELHEIGHT, (sender: Event, height: number) => {
+ E.ipcRenderer.on("updatePanelHeight", (sender, height) => {
this.settings.app.panelHeight = height;
});
- E.ipcRenderer.on(Const.UPDATEMAINMENUVIS, (sender: Event, show: boolean) => {
- this.settings.app.showMainMenu = show;
+ E.ipcRenderer.on("updateVisibleNewProjectBtn", (sender, height) => {
+ this.settings.app.visibleNewProjectBtn = height;
+ });
+ E.ipcRenderer.on("themes-change", (sender, theme) => {
+ this.settings.theme.currentTheme = theme.id;
+ });
+ E.ipcRenderer.on("sync-themes-start", () => {
+ this.isSyncDisabled = true;
+ });
+ E.ipcRenderer.on("sync-themes-end", () => {
+ this.isSyncDisabled = false;
});
};
}
export const settings = new Settings();
-
-autorun(() => {
- S.setAll(toJS(settings.settings));
-});
diff --git a/src/renderer/stores/Tabs.ts b/src/renderer/stores/Tabs.ts
index 55964ba8..524a5217 100755
--- a/src/renderer/stores/Tabs.ts
+++ b/src/renderer/stores/Tabs.ts
@@ -1,19 +1,16 @@
import * as E from "electron";
import { observable, action, autorun, toJS } from "mobx";
-import * as Const from "Const";
-import { isComponentUrl } from "Utils/Common";
-
export class Tabs implements TabsStore {
@observable tabs: Tab[] = [];
- @observable current = 1;
+ @observable current: number | undefined;
constructor() {
this.events();
}
@action
- addTab = (data: { id: number; url: string; showBackBtn: boolean; title?: string }): void => {
+ addTab = (data: { id: number; url: string; showBackBtn: boolean; title?: string; focused?: boolean }): void => {
this.tabs.push({
id: data.id,
title: data.title ? data.title : "Figma",
@@ -21,6 +18,7 @@ export class Tabs implements TabsStore {
moves: false,
showBackBtn: data.showBackBtn,
order: this.tabs.length === 0 ? 1 : this.tabs.length + 1,
+ focused: data.focused,
});
};
@@ -30,7 +28,7 @@ export class Tabs implements TabsStore {
};
@action
- setFocus = (id: number): void => {
+ setFocus = (id?: number): void => {
this.current = id;
};
@@ -67,47 +65,40 @@ export class Tabs implements TabsStore {
};
private events = (): void => {
- E.ipcRenderer.on(Const.TABADDED, (sender: any, data: Tab) => {
- if (isComponentUrl(data.url)) {
- const collection: number[] = this.tabs.map(el => el.id);
-
- data.id = this.generateUniqueId(collection);
-
- this.addTab({
- id: data.id,
- url: data.url,
- title: data.title,
- showBackBtn: data.showBackBtn,
- });
- } else {
- this.addTab({
- id: data.id,
- url: data.url,
- title: data.title ? data.title : "Recent Files",
- showBackBtn: data.showBackBtn,
- });
+ E.ipcRenderer.on("didTabAdd", (sender, data) => {
+ this.addTab({
+ id: data.id,
+ url: data.url,
+ title: data.title ? data.title : "Recent Files",
+ showBackBtn: data.showBackBtn,
+ focused: data.focused,
+ });
+
+ if (data.focused) {
+ this.setFocus(data.id);
}
-
- this.setFocus(data.id);
});
- E.ipcRenderer.on(Const.CLOSEALLTAB, () => {
- this.current = 1;
+ E.ipcRenderer.on("closeAllTabs", () => {
+ this.current = undefined;
this.tabs = [];
});
- E.ipcRenderer.on(Const.SETTITLE, (sender: any, data: { id: number; title: string }) => {
+ E.ipcRenderer.on("setTitle", (sender, data) => {
this.tabs = this.tabs.map(t => (t.id === data.id ? { ...t, title: data.title } : t));
});
- E.ipcRenderer.on(Const.SETTABURL, (sender: any, data: { id: number; url: string }) => {
+ E.ipcRenderer.on("setTabUrl", (sender, data) => {
this.tabs = this.tabs.map(t => (t.id === data.id ? { ...t, url: data.url } : t));
});
- E.ipcRenderer.on(Const.UPDATEFILEKEY, (sender: any, data: { id: number; fileKey: string }) => {
+ E.ipcRenderer.on("updateFileKey", (sender, data) => {
this.tabs = this.tabs.map(t => (t.id === data.id ? { ...t, fileKey: data.fileKey } : t));
});
+ E.ipcRenderer.on("mainTabFocused", sender => {
+ this.setFocus();
+ });
- E.ipcRenderer.on(Const.CLOSETAB, (sender: any, data: { id: number }) => {
+ E.ipcRenderer.on("closeTab", (sender, data) => {
const index: number = this.tabs.findIndex(t => t.id === data.id);
this.deleteTab(data.id);
@@ -119,5 +110,5 @@ export class Tabs implements TabsStore {
export const tabs: Tabs = new Tabs();
autorun(() => {
- E.ipcRenderer.send(Const.RECIVETABS, toJS(tabs.tabs));
+ E.ipcRenderer.send("receiveTabs", toJS(tabs.tabs));
});
diff --git a/src/renderer/stores/Themes.ts b/src/renderer/stores/Themes.ts
new file mode 100644
index 00000000..cd155579
--- /dev/null
+++ b/src/renderer/stores/Themes.ts
@@ -0,0 +1,96 @@
+import * as E from "electron";
+
+import { DEFAULT_THEME, TEST_THEME_ID } from "Const";
+import { observable, action, toJS } from "mobx";
+import { storage } from "Storage";
+
+export class Themes {
+ @observable themes: Themes.Theme[] = [];
+ @observable currentTheme: string;
+ @observable creatorTheme: Themes.Theme;
+ @observable previewerZoom: number;
+
+ constructor() {
+ this.currentTheme = storage.get().theme.currentTheme;
+ this.creatorTheme = {
+ ...DEFAULT_THEME,
+ id: TEST_THEME_ID,
+ };
+ this.previewerZoom = 1;
+
+ this.events();
+ }
+
+ @action
+ setTheme = (theme: string): void => {
+ this.currentTheme = theme;
+ };
+
+ @action
+ changeTheme = (id: string): void => {
+ this.currentTheme = id;
+
+ if (id === "0") {
+ E.ipcRenderer.send("set-default-theme");
+ } else {
+ const theme = toJS(this.getThemeById(id));
+ E.ipcRenderer.send("themes-change", theme);
+ }
+ };
+
+ @action
+ changeCreatorThemeName = (value: string): void => {
+ this.creatorTheme.name = value;
+ };
+ @action
+ changeCreatorThemeAuthorName = (value: string): void => {
+ this.creatorTheme.author = value;
+ };
+ @action
+ changeCreatorThemePalette = (key: string, value: string): void => {
+ this.creatorTheme.palette[key] = value;
+ };
+ @action
+ changeCreatorThemeZoom = (delta: number): void => {
+ this.previewerZoom = +(delta / 100).toFixed(2);
+ };
+
+ saveCreatorTheme = () => {
+ E.ipcRenderer.send("saveCreatorTheme", toJS(this.creatorTheme));
+ };
+
+ getThemeById = (id: string): Themes.Theme | undefined => {
+ const theme = this.themes.find(theme => {
+ return theme.id === id;
+ });
+
+ if (!theme) {
+ return DEFAULT_THEME;
+ }
+
+ return theme;
+ };
+ private events = (): void => {
+ E.ipcRenderer.on("getUploadedThemes", (sender, themes) => {
+ this.themes = themes;
+ });
+ E.ipcRenderer.on("themes-change", (sender, theme) => {
+ if (theme.id === TEST_THEME_ID) {
+ const testTheme = toJS(this.themes).find(t => t.id === theme.id);
+
+ if (testTheme) {
+ const themes = toJS(this.themes).filter(t => t.id !== theme.id);
+ testTheme.palette = theme.palette;
+ this.themes = [...themes, testTheme];
+ }
+ }
+
+ this.setTheme(theme.id);
+ });
+ E.ipcRenderer.on("loadCreatorTheme", (sender, theme) => {
+ this.creatorTheme = theme;
+ });
+ };
+}
+
+export const themes = new Themes();
diff --git a/src/renderer/stores/Views.ts b/src/renderer/stores/Views.ts
new file mode 100644
index 00000000..bfa63e63
--- /dev/null
+++ b/src/renderer/stores/Views.ts
@@ -0,0 +1,28 @@
+import * as E from "electron";
+import { observable, action } from "mobx";
+
+export class Views {
+ @observable view: View = "TopPanel";
+ @observable settingsView: SettingsView = "General";
+
+ constructor() {
+ this.events();
+ }
+
+ @action
+ setView = (view: View): void => {
+ this.view = view;
+ };
+ @action
+ setSettingsView = (view: SettingsView): void => {
+ this.settingsView = view;
+ };
+
+ private events = (): void => {
+ E.ipcRenderer.on("renderView", (sender, view) => {
+ this.setView(view);
+ });
+ };
+}
+
+export const views = new Views();
diff --git a/src/renderer/stores/index.ts b/src/renderer/stores/index.ts
index 1ea9f03a..b3d96d5f 100755
--- a/src/renderer/stores/index.ts
+++ b/src/renderer/stores/index.ts
@@ -1,17 +1,20 @@
import { tabs } from "./Tabs";
-import route, { Routes } from "./Routes";
+import { Views, views } from "./Views";
import { Settings, settings } from "./Settings";
+import { Themes, themes } from "./Themes";
export interface Stores {
tabs: TabsStore;
settings: Settings;
- route: Routes;
+ themes: Themes;
+ views: Views;
}
const stores: Stores = {
tabs,
settings,
- route,
+ themes,
+ views,
};
export default stores;
diff --git a/src/utils/Common/app.ts b/src/utils/Common/app.ts
deleted file mode 100644
index 7162f66e..00000000
--- a/src/utils/Common/app.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import * as E from "electron";
-
-export const app = E.remote ? E.remote.app : E.app;
diff --git a/src/utils/Common/extensions.ts b/src/utils/Common/extensions.ts
new file mode 100644
index 00000000..db1fcae3
--- /dev/null
+++ b/src/utils/Common/extensions.ts
@@ -0,0 +1,14 @@
+export function sanitizeFileName(input: string): string {
+ const illegalRe = /[\/\?<>\\:\*\|":]/g;
+ const controlRe = /[\x00-\x1f\x80-\x9f]/g;
+ const reservedRe = /^\.+$/;
+ const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i;
+ const windowsTrailingRe = /[\. ]+$/;
+
+ return input
+ .replace(illegalRe, "")
+ .replace(controlRe, "")
+ .replace(reservedRe, "")
+ .replace(windowsReservedRe, "")
+ .replace(windowsTrailingRe, "");
+}
diff --git a/src/utils/Common/getComponentTitle.ts b/src/utils/Common/getComponentTitle.ts
deleted file mode 100644
index 8aca293c..00000000
--- a/src/utils/Common/getComponentTitle.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const getComponentTitle = (url: string): string => url.substr(url.search(/\/\//) + 2);
diff --git a/src/utils/Common/index.ts b/src/utils/Common/index.ts
index b977c97f..d0f13602 100644
--- a/src/utils/Common/index.ts
+++ b/src/utils/Common/index.ts
@@ -1,8 +1,9 @@
/**
* Common utils
*/
-export * from "./app";
+export * from "./url";
+export * from "./wait";
export * from "./isDev";
export * from "./menuTypes";
-export * from "./url";
-export * from "./getComponentTitle";
+export * from "./themes";
+export * from "./extensions";
diff --git a/src/utils/Common/menuTypes.ts b/src/utils/Common/menuTypes.ts
index c1fe22ad..e549cdcd 100644
--- a/src/utils/Common/menuTypes.ts
+++ b/src/utils/Common/menuTypes.ts
@@ -71,19 +71,39 @@ export const isPluginName = (data: any): boolean => data.type === "plugin-name"
export const isActionMenuItemName = (data: Menu.Items.MenuName): boolean => isStringKeyName(data) || isPluginName(data);
-export const isActionMenuItem = (data: Menu.MenuItem): boolean =>
- data.type === "run-menu-action" &&
- isActionMenuItemName(data.name) &&
- (data.menuAction === undefined || isMenuAction(data.menuAction)) &&
- (data.disabled === undefined || typeof data.disabled === "boolean");
+export const isActionMenuItem = (data: Menu.MenuItem): boolean => {
+ if (data.type !== "run-menu-action") {
+ return false;
+ }
+
+ const item = data as Menu.Items.Menu;
+
+ if (
+ isActionMenuItemName(item.name) &&
+ (item.menuAction === undefined || isMenuAction(item.menuAction)) &&
+ (item.disabled === undefined || typeof item.disabled === "boolean")
+ ) {
+ return true;
+ }
+
+ return false;
+};
export const isSeparatorMenuItem = (data: Menu.MenuItem): boolean => data.type === "separator";
-export const isSubmenuMenuItem = (data: Menu.MenuItem): boolean =>
- data.type === "submenu" &&
- typeof data.name === "string" &&
- Array.isArray(data.submenu) &&
- data.submenu.every(isMenuItem);
+export const isSubmenuMenuItem = (data: Menu.MenuItem): boolean => {
+ if (data.type !== "submenu") {
+ return false;
+ }
+
+ const item = data as Menu.Items.Submenu;
+
+ if (typeof item.name === "string" && Array.isArray(item.submenu) && item.submenu.every(isMenuItem)) {
+ return true;
+ }
+
+ return false;
+};
export const isMenuItem = (data: Menu.MenuItem): boolean => {
return isActionMenuItem(data) || isSeparatorMenuItem(data) || isSubmenuMenuItem(data);
diff --git a/src/utils/Common/themes.ts b/src/utils/Common/themes.ts
new file mode 100644
index 00000000..6c72fde3
--- /dev/null
+++ b/src/utils/Common/themes.ts
@@ -0,0 +1,124 @@
+export const variablesColorsMap: Themes.ColorsMap = {
+ "rgb(255, 255, 255)": "var(--bg-panel)",
+ "rgb(252, 252, 252)": "var(--bg-panel)",
+ "rgb(248, 248, 248)": "var(--bg-panel-hover)",
+ "rgb(240, 240, 240)": "var(--bg-panel-hover)",
+ "rgb(241, 249, 255)": "var(--bg-panel-hover)",
+ "rgb(237, 245, 250)": "var(--bg-panel-hover)",
+ "rgb(229, 229, 229)": "var(--borders)",
+ "rgb(229, 229, 229) 1px 0px 0px 0px": `var(--borders) 1px 0px 0px 0px`,
+ "rgb(229, 229, 229) 0px 1px 0px 0px": `var(--borders) 0px 1px 0px 0px`,
+ "rgb(229, 229, 229) 0px 0px 0px 1px": `var(--borders) 0px 0px 0px 1px`,
+ "rgb(239, 239, 239)": "var(--borders)",
+ "rgb(217, 217, 217)": "var(--borders)",
+ "rgb(212, 212, 212)": "var(--borders)",
+ "rgb(218, 235, 247)": "var(--bg-panel-hover)",
+ "rgb(191, 186, 252)": "var(--fg-component-disabled-row-active)",
+ "rgb(180, 180, 250)": "var(--fg-component-disabled-row-active)",
+ "rgb(179, 179, 179)": "var(--text-disabled)",
+ "rgb(166, 172, 175)": "var(--text-disabled)",
+ "rgb(123, 97, 255)": "var(--fg-component)",
+ "rgb(68, 68, 68)": "var(--text)",
+ "rgb(51, 51, 51)": "var(--text)",
+ "rgb(44, 44, 44)": "var(--bg-toolbar)",
+ "rgb(5, 5, 5)": "var(--text-active)",
+ "rgb(0, 0, 0)": "var(--text-active)",
+ "rgba(0, 0, 0, 0.06)": "var(--borders)",
+ "rgba(0, 0, 0, 0.1)": "var(--borders)",
+ "rgba(0, 0, 0, 0.15)": "var(--text)",
+ "rgba(0, 0, 0, 0.2)": "var(--text)",
+ "rgba(0, 0, 0, 0.3)": "var(--text-disabled)",
+ "rgba(0, 0, 0, 0.4)": "var(--text)",
+ "rgba(0, 0, 0, 0.6)": "var(--text)",
+ "rgba(0, 0, 0, 0.5)": "var(--text)",
+ "rgba(0, 0, 0, 0.75)": "var(--text)",
+ "rgba(0, 0, 0, 0.8)": "var(--textActive)",
+ "rgba(0, 0, 0, 0.9)": "var(--text)",
+ "rgba(0, 0, 0, 0.95)": "var(--text)",
+ "rgba(44, 44, 44, 0.8)": "var(--bg-toolbar)",
+ "rgba(51, 51, 51, 0.3)": "var(--text-disabled)",
+ "rgba(123, 97, 255, 0.4)": "var(--fg-component-disabled)",
+ "rgba(255, 255, 255, 0)": "var(--bg-panel)",
+ "rgba(255, 255, 255, 0.2)": "var(--bg-panel)",
+ "rgba(255, 255, 255, 0.4)": "var(--bg-panel)",
+ "rgba(255, 255, 255, 0.05)": "var(--bg-panel)",
+ "rgba(255, 255, 255, 0.5)": "var(--bg-panel)",
+ "rgba(255, 255, 255, 0.8)": "var(--text)",
+ "rgba(255, 255, 255, 0.95)": "var(--bg-panel)",
+ "rgb(24, 160, 251)": "var(--bg-toolbar-active)",
+ "rgb(24, 160, 251) 0px 0px 0px 1px inset": `var(--bg-toolbar-active) 0px 0px 0px 1px inset`,
+ "rgb(230, 230, 230) 0px 0px 0px 1px inset": "var(--text) 0px 0px 0px 1px inset",
+ "rgb(230, 230, 230)": "var(--borders)",
+ "rgb(230, 230, 230) 0px -1px": "var(--borders) 0px -1px",
+ "rgb(27, 196, 125)": "var(--bg-beta-label)",
+};
+
+export const getColorsMap = (palette: Themes.Palette, currentPalette?: Themes.ColorsMap): Themes.ColorsMap => {
+ const defaultColorsMap: Themes.ColorsMap = {
+ "rgb(255, 255, 255)": palette["bg-panel"],
+ "rgb(252, 252, 252)": palette["bg-panel"],
+ "rgb(248, 248, 248)": palette["bg-panel-hover"],
+ "rgb(240, 240, 240)": palette["bg-panel-hover"],
+ "rgb(241, 249, 255)": palette["bg-panel-hover"],
+ "rgb(237, 245, 250)": palette["bg-panel-hover"],
+ "rgb(229, 229, 229)": palette["borders"],
+ "rgb(229, 229, 229) 1px 0px 0px 0px": `${palette.borders} 1px 0px 0px 0px`,
+ "rgb(229, 229, 229) 0px 1px 0px 0px": `${palette.borders} 0px 1px 0px 0px`,
+ "rgb(229, 229, 229) 0px 0px 0px 1px": `${palette.borders} 0px 0px 0px 1px`,
+ "rgb(239, 239, 239)": palette["borders"],
+ "rgb(217, 217, 217)": palette["borders"],
+ "rgb(212, 212, 212)": palette["borders"],
+ "rgb(218, 235, 247)": palette["bg-toolbar-hover"],
+ "rgb(191, 186, 252)": palette["fg-component-disabled-row-active"],
+ "rgb(180, 180, 250)": palette["fg-component-disabled-row-active"],
+ "rgb(179, 179, 179)": palette["text-disabled"],
+ "rgb(166, 172, 175)": palette["text-disabled"],
+ "rgb(123, 97, 255)": palette["fg-component"],
+ "rgb(68, 68, 68)": palette.text,
+ "rgb(51, 51, 51)": palette.text,
+ "rgb(44, 44, 44)": palette["bg-toolbar"],
+ "rgb(5, 5, 5)": palette["text-active"],
+ "rgb(0, 0, 0)": palette["text-active"],
+ "rgba(0, 0, 0, 0.06)": palette.borders,
+ "rgba(0, 0, 0, 0.1)": palette.borders,
+ "rgba(0, 0, 0, 0.15)": palette.text,
+ "rgba(0, 0, 0, 0.2)": palette.text,
+ "rgba(0, 0, 0, 0.3)": palette["text-disabled"],
+ "rgba(0, 0, 0, 0.4)": palette.text,
+ "rgba(0, 0, 0, 0.6)": palette.text,
+ "rgba(0, 0, 0, 0.5)": palette.text,
+ "rgba(0, 0, 0, 0.75)": palette.text,
+ "rgba(0, 0, 0, 0.8)": palette["text-active"],
+ "rgba(0, 0, 0, 0.9)": palette.text,
+ "rgba(0, 0, 0, 0.95)": palette.text,
+ "rgba(44, 44, 44, 0.8)": palette["bg-toolbar"],
+ "rgba(51, 51, 51, 0.3)": palette["text-disabled"],
+ "rgba(123, 97, 255, 0.4)": palette["fg-component-disabled"],
+ "rgba(255, 255, 255, 0)": palette["bg-panel"],
+ "rgba(255, 255, 255, 0.2)": palette["bg-panel"],
+ "rgba(255, 255, 255, 0.4)": palette["bg-panel"],
+ "rgba(255, 255, 255, 0.05)": palette["bg-panel"],
+ "rgba(255, 255, 255, 0.5)": palette["bg-panel"],
+ "rgba(255, 255, 255, 0.8)": palette.text,
+ "rgba(255, 255, 255, 0.95)": palette["bg-panel"],
+ "rgb(24, 160, 251)": palette["bg-toolbar-active"],
+ "rgb(24, 160, 251) 0px 0px 0px 1px inset": `${palette["bg-toolbar-active"]} 0px 0px 0px 1px inset`,
+ "rgb(230, 230, 230) 0px 0px 0px 1px inset": `${palette["bg-toolbar-active"]} 0px 0px 0px 1px inset`,
+ "rgb(230, 230, 230)": `${palette.borders}`,
+ "rgb(230, 230, 230) 0px -1px": `${palette.borders} 0px -1px`,
+ "rgb(27, 196, 125)": `${palette["bg-beta-label"]}`,
+ };
+
+ if (currentPalette) {
+ const updatedColorsMap: Themes.ColorsMap = {};
+ const keys = Object.keys(currentPalette);
+
+ for (const key of keys) {
+ updatedColorsMap[currentPalette[key]] = defaultColorsMap[key];
+ }
+
+ return updatedColorsMap;
+ }
+
+ return defaultColorsMap;
+};
diff --git a/src/utils/Common/url.ts b/src/utils/Common/url.ts
index 1478486b..8d9361bd 100644
--- a/src/utils/Common/url.ts
+++ b/src/utils/Common/url.ts
@@ -1,9 +1,9 @@
import * as Url from "url";
import { PROTOCOL, HOMEPAGE } from "Const";
-export const isComponentUrl = (url: string): boolean => /^component:\/\/\w+/.test(url);
+export const isPrototypeUrl = (url: string): boolean => /figma\.com\/proto\/.+\/.+?node-id=.+/.test(url);
-export const isRedeemAuthUrl = (url: string): boolean => /[a-z]{4,5}:\/\/app_auth\/redeem.+/.test(url);
+export const isCommunityUrl = (url: string): boolean => /figma\.com\/community\/.+/.test(url);
export const isFigmaProtocolUrl = (url: string): boolean => {
const regex = new RegExp(`^${PROTOCOL}://.+`);
@@ -11,6 +11,13 @@ export const isFigmaProtocolUrl = (url: string): boolean => {
return regex.test(url);
};
+export const parseURL = (url: string): URL | undefined => {
+ try {
+ return new URL(url);
+ } catch (_a) {}
+ return undefined;
+};
+
export const normalizeUrl = (url: string): string => {
if (!isFigmaProtocolUrl(url)) {
return url;
@@ -32,9 +39,13 @@ export const getParsedUrl = (data: string): Url.UrlWithStringQuery => {
};
export const isAppAuthGrandLink = (url: string) => /\/app_auth\/.*\/grant/.test(url);
+export const isAppAuthRedeem = (url: string) => /\/app_auth\/redeem\?g_secret=.+/.test(url);
export const isAppAuthLink = (url: string) => /figma:\/\/app_auth\/redeem\?g_secret=.*/.test(url);
-export const isValidProjectLink = (url: string) => /^(figma:\/\/|https?:\/\/w{0,3}?\.?figma\.com)/.test(url);
+export const isRecentFilesLink = (url: string) =>
+ /^(figma:\/\/|https?:\/\/w{0,3}?\.?figma\.com\/files\/recent)/.test(url);
+
+export const isValidProjectLink = (url: string) => /^(figma:\/\/|https?:\/\/w{0,3}?\.?figma\.com\/file\/)/.test(url);
-export const isProtoLink = (url: string) => /^https:\/\/w{0,3}?.figma.com\/proto/.test(url);
+export const isFigmaDocLink = (url: string) => /^https:\/\/w{0,3}?.figma.com\/plugin-docs/.test(url);
diff --git a/src/utils/Common/wait.ts b/src/utils/Common/wait.ts
new file mode 100644
index 00000000..e92481cb
--- /dev/null
+++ b/src/utils/Common/wait.ts
@@ -0,0 +1,3 @@
+export function wait(ms: number) {
+ return new Promise(resolve => setTimeout(resolve, ms));
+}
diff --git a/src/utils/Main/Menu/menu.ts b/src/utils/Main/Menu/menu.ts
index 8af13fa8..85b829bd 100644
--- a/src/utils/Main/Menu/menu.ts
+++ b/src/utils/Main/Menu/menu.ts
@@ -1,14 +1,17 @@
import * as E from "electron";
-import { getMenuTemlate } from "Utils/Main";
+import { getMenuTemplate } from "Utils/Main";
import { stringOfActionMenuItemName, assertNever } from "Utils/Common";
import MenuState from "Main/MenuState";
-export const handlePluginMenuAction = (item: Menu.PluginMenuItem, window: E.BrowserWindow) => {
- const currentView = window.getBrowserView();
+export const handlePluginMenuAction = (item: Menu.PluginMenuItem, window: E.BrowserWindow): void => {
+ if (item && item.pluginMenuAction && window) {
+ if (item.pluginMenuAction.type === "manage") {
+ handleUrl(window, "/my_plugins");
+ return;
+ }
- if (item && item.pluginMenuAction && currentView) {
- currentView.webContents.send("handlePluginMenuAction", item.pluginMenuAction);
+ window.webContents.send("handlePluginMenuAction", item.pluginMenuAction);
}
};
@@ -21,6 +24,7 @@ export const electronOfPluginMenuItem = (input: Menu.MenuItem): Menu.PluginMenuI
label,
click: handlePluginMenuAction,
enabled: !input.disabled,
+ visible: input.visible,
pluginMenuAction: input.menuAction,
};
}
@@ -55,7 +59,7 @@ export const setMenuFromTemplate = (
if (template) {
mainMenu = E.Menu.buildFromTemplate(template as E.MenuItemConstructorOptions[]);
} else {
- mainMenu = E.Menu.buildFromTemplate(getMenuTemlate(pluginMenuItems) as E.MenuItemConstructorOptions[]);
+ mainMenu = E.Menu.buildFromTemplate(getMenuTemplate(pluginMenuItems) as E.MenuItemConstructorOptions[]);
}
E.Menu.setApplicationMenu(mainMenu);
@@ -88,9 +92,11 @@ export const resetMenu = (pluginMenuData: Menu.MenuItem[], template?: E.MenuItem
const menuItem: E.MenuItem = menuItemMap[action];
menuItem.enabled = MenuState.actionState ? !!MenuState.actionState[action] : false;
}
+
+ return mainMenu;
};
-export const item = (label: string, accelerator: string, params: Menu.Params) => {
+export const item = (label: string, accelerator: string, params: E.MenuItemConstructorOptions) => {
const props: E.MenuItemConstructorOptions = {
label,
enabled: true,
@@ -101,24 +107,17 @@ export const item = (label: string, accelerator: string, params: Menu.Params) =>
props.accelerator = accelerator;
}
- return new E.MenuItem(props);
+ return props;
};
-export const commandToMainProcess = (item: E.MenuItemConstructorOptions) => {
- E.app.emit("handle-command", item.id);
+export const commandToMainProcess = (item: Menu.PluginMenuItem, window: E.BrowserWindow) => {
+ E.app.emit("handle-command", window.webContents, item.id);
};
-export const handleCommandItemClick = (item: any, window: E.BrowserWindow) => {
- const currentView = window.getBrowserView();
-
- currentView.webContents.send("handlePageCommand", item.command);
+export const handleCommandItemClick = (item: Menu.PluginMenuItem, window: E.BrowserWindow) => {
+ window.webContents.send("handlePageCommand", item.id);
};
-export const handleItemAction = (item: any, window: E.BrowserWindow) => {
- // FIXME: ugly hack
- if (!item.accelerator && item.accelerator && !/ctrl|alt|shift|meta/i.test(item.accelerator)) return;
-
- const currentView = window.getBrowserView();
-
- currentView.webContents.send("handleAction", item.action, "os-menu");
+export const handleUrl = (window: E.BrowserWindow, url: string) => {
+ E.app.emit("handleUrl", window.webContents.id, url);
};
diff --git a/src/utils/Main/Menu/menuItems.ts b/src/utils/Main/Menu/menuItems.ts
index 37e8dce9..3a742955 100644
--- a/src/utils/Main/Menu/menuItems.ts
+++ b/src/utils/Main/Menu/menuItems.ts
@@ -1,212 +1,21 @@
import * as E from "electron";
-import Commander from "Main/Commander";
-import { item, commandToMainProcess, handleCommandItemClick, handleItemAction } from "Utils/Main";
+import { LINKS } from "Const";
+import { item, commandToMainProcess, handleUrl, toggleDetachedDevTools } from "Utils/Main";
-const SEPARATOR = { type: "separator" };
-const FILE_MENU = {
- label: "File",
+const PLUGINS_MENU = {
+ label: "Plugins",
submenu: [
- item("New File", "Ctrl+N", { id: "newFile", click: commandToMainProcess }),
- item("Open File Browser", "Ctrl+O", { id: "openFileBrowser", click: commandToMainProcess }),
- item("Reopen Closed Tab", "Ctrl+Shift+T", { id: "reopenClosedTab", click: commandToMainProcess }),
- SEPARATOR,
{
- label: "Close Window",
- accelerator: "Ctrl+Shift+W",
- click() {
- Commander.exec("close-window");
+ label: "Manage plugins...",
+ click(item, window): void {
+ if (!window) {
+ return;
+ }
+
+ handleUrl(window, "/my_plugins");
},
},
- item("Close Tab", "Ctrl+W", { id: "closeTab", click: commandToMainProcess }),
- SEPARATOR,
- item("Save As .fig...", "Ctrl+Shift+S", { action: "save-as", click: handleItemAction }),
- item("Export...", "Ctrl+Shift+E", { action: "export-selected-exportables", click: handleItemAction }),
- SEPARATOR,
- item("Settings", "", { id: "openSettings", click: commandToMainProcess }),
- { role: "quit" },
- ],
-} as E.MenuItemConstructorOptions;
-const EDIT_MENU = {
- label: "Edit",
- submenu: [
- item("Undo", "Ctrl+Z", { command: "undo", click: handleCommandItemClick }),
- item("Redo", "Control+Y", { command: "redo", click: handleCommandItemClick }),
- SEPARATOR,
- { role: "cut" },
- { role: "copy" },
- { role: "paste" },
- item("Paste Over Selection", "Shift+Ctrl+V", { action: "paste-over-selection", click: handleItemAction }),
- SEPARATOR,
- item("Pick Color", "", { action: "toggle-dropper", click: handleItemAction }),
- SEPARATOR,
- item("Set Default Style", "Alt+Ctrl+X", { action: "set-default-style", click: handleItemAction }),
- item("Copy Properties", "Alt+Ctrl+C", { action: "copy-properties", click: handleItemAction }),
- item("Paste Properties", "Alt+Ctrl+V", { action: "paste-properties", click: handleItemAction }),
- SEPARATOR,
- item("Select All", "Ctrl+A", { command: "selectAll", click: handleCommandItemClick }),
- item("Select None", null, { action: "deselect-all", click: handleItemAction }),
- item("Select Inverse", "Shift+Ctrl+A", { action: "select-inverse", click: handleItemAction }),
- SEPARATOR,
- item("Select All with Same Style", null, { action: "select-same-style", click: handleItemAction }),
- item("Select All with Same Fill", null, { action: "select-same-fill", click: handleItemAction }),
- item("Select All with Same Stroke", null, { action: "select-same-stroke", click: handleItemAction }),
- item("Select All with Same Effect", null, { action: "select-same-effect", click: handleItemAction }),
- item("Select All with Same Text", null, { action: "select-same-text", click: handleItemAction }),
- item("Select All with Same Font", null, { action: "select-same-font", click: handleItemAction }),
- item("Select All with Same Instance", null, { action: "select-same-instance", click: handleItemAction }),
- ],
-} as E.MenuItemConstructorOptions;
-const VIEW_MENU = {
- label: "View",
- submenu: [
- item("Show Pixel Grid", "Ctrl+'", { action: "toggle-grid", click: handleItemAction }),
- item("Show Layout Grids", "Ctrl+Shift+4", { action: "toggle-shown-layout-grids", click: handleItemAction }),
- item("Show Mask Outlines", null, { action: "toggle-show-masks", click: handleItemAction }),
- item("Frame Outlines", null, { action: "toggle-show-artboard-outlines", click: handleItemAction }),
- item("Show Rulers", "", { action: "toggle-rulers", click: handleItemAction }),
- item("Show Layers Panel", "Ctrl+Shift+\\", { action: "toggle-sidebar", click: handleItemAction }),
- item("Show UI", "Ctrl+\\", { action: "toggle-ui", click: handleItemAction }),
- item("Show Outlines", "Ctrl+Shift+3", { action: "toggle-outlines", click: handleItemAction }),
- SEPARATOR,
- item("Switch to Layers", "Alt+1", { action: "toggle-layers", click: handleItemAction }),
- item("Switch to Components", "Alt+2", { action: "toggle-publish", click: handleItemAction }),
- item("Switch to Team Library", "Alt+3", { action: "toggle-library", click: handleItemAction }),
- SEPARATOR,
- item("Pixel Preview", "Control+Alt+Y", { action: "toggle-pixel-preview", click: handleItemAction }),
- item("Show Transparency Checkerboard", "Alt+Shift+'", { action: "toggle-checkerboard", click: handleItemAction }),
- SEPARATOR,
- item("Zoom In", "", { action: "zoom-in", click: handleItemAction }),
- item("Zoom Out", "", { action: "zoom-out", click: handleItemAction }),
- item("Zoom to 100%", "", { action: "zoom-reset", click: handleItemAction }),
- item("Zoom to Fit", "", { action: "zoom-to-fit", click: handleItemAction }),
- item("Zoom to Selection", "", { action: "zoom-to-selection", click: handleItemAction }),
- SEPARATOR,
- item("Scale UI Normal", "Ctrl+Shift+Backspace", { id: "scale-normal", click: commandToMainProcess }),
- item("Scale UI + 10%", "Ctrl+=", { id: "scale-inc0.1", click: commandToMainProcess }),
- item("Scale UI - 10%", "Ctrl+-", { id: "scale-dic0.1", click: commandToMainProcess }),
- item("Scale UI + 5%", "Ctrl+Shift+=", { id: "scale-inc0.05", click: commandToMainProcess }),
- item("Scale UI - 5%", "Ctrl+Shift+-", { id: "scale-dic0.05", click: commandToMainProcess }),
- SEPARATOR,
- item("Find Next Frame", "", { action: "next-artboard", click: handleItemAction }),
- item("Find Previous Frame", "", { action: "previous-artboard", click: handleItemAction }),
- SEPARATOR,
- { role: "togglefullscreen" },
- ],
-} as E.MenuItemConstructorOptions;
-const OBJECT_MENU = {
- label: "Object",
- submenu: [
- item("Group Selection", "Ctrl+G", { action: "group-selection", click: handleItemAction }),
- item("Ungroup Selection", "Shift+Ctrl+G", { action: "ungroup-selection", click: handleItemAction }),
- item("Frame Selection", "Ctrl+Alt+G", { action: "frame-selection", click: handleItemAction }),
- item("Use as Mask", "Alt+Ctrl+M", { action: "mask-selection", click: handleItemAction }),
- SEPARATOR,
- item("Create Component", "Ctrl+Alt+K", { action: "create-symbol", click: handleItemAction }),
- item("Go to Master Component", null, { action: "find-symbol", click: handleItemAction }),
- item("Reset Instance", null, { action: "reset-symbol", click: handleItemAction }),
- item("Detach Instance", "Ctrl+Alt+B", { action: "detach-instance", click: handleItemAction }),
- item("Resize to Fit", null, { action: "resize-to-fit", click: handleItemAction }),
- item("Toggle Clipping", null, { action: "toggle-frame-clipping", click: handleItemAction }),
- SEPARATOR,
- item("Bring to Front", "Ctrl+Shift+]", { action: "bring-to-front", click: handleItemAction }),
- item("Bring Forward", "Ctrl+]", { action: "bring-forward", click: handleItemAction }),
- item("Send Backward", "Ctrl+[", { action: "send-backward", click: handleItemAction }),
- item("Send to Back", "Ctrl+Shift+[", { action: "send-to-back", click: handleItemAction }),
- SEPARATOR,
- item("Flip Horizontal", "", { action: "flip-horizontal", click: handleItemAction }),
- item("Flip Vertical", "", { action: "flip-vertical", click: handleItemAction }),
- // item('Flip Horizontal', 'Shift+H', { action: 'flip-horizontal', click: handleItemAction }),
- // item('Flip Vertical', 'Shift+V', { action: 'flip-vertical', click: handleItemAction }),
- SEPARATOR,
- item("Rotate 180˚", null, { action: "rotate-180", click: handleItemAction }),
- item("Rotate 90˚ Left", null, { action: "rotate-90-counterclockwise", click: handleItemAction }),
- item("Rotate 90˚ Right", null, { action: "rotate-90-clockwise", click: handleItemAction }),
- SEPARATOR,
- item("Flatten Selection", "Ctrl+E", { action: "flatten-selection", click: handleItemAction }),
- item("Outline Stroke", "Shift+Ctrl+O", { action: "outline-stroke", click: handleItemAction }),
- {
- label: "Boolean Groups",
- submenu: [
- item("Union Selection", null, { action: "live-boolean-union", click: handleItemAction }),
- item("Subtract Selection", null, { action: "live-boolean-subtract", click: handleItemAction }),
- item("Intersect Selection", null, { action: "live-boolean-intersect", click: handleItemAction }),
- item("Exclude Selection", null, { action: "live-boolean-xor", click: handleItemAction }),
- ],
- },
- SEPARATOR,
- item("Duplicate Selection in Place", "Ctrl+D", { action: "duplicate-in-place", click: handleItemAction }),
- item("Delete Selection", "Backspace", { action: "delete-selection", click: handleItemAction }),
- item("Rasterize Selection", null, { action: "convert-to-raster", click: handleItemAction }),
- SEPARATOR,
- item("Show/Hide Selection", "Shift+Ctrl+H", { action: "toggle-shown-for-selected-nodes", click: handleItemAction }),
- item("Lock/Unlock Selection", "Shift+Ctrl+L", {
- action: "toggle-locked-for-selected-nodes",
- click: handleItemAction,
- }),
- item("Hide Other Layers", null, { action: "hide-sibling-layers", click: handleItemAction }),
- item("Collapse Layers", "Alt+L", { action: "collapse-layers", click: handleItemAction }),
- SEPARATOR,
- item("Remove Fill", "Alt+/", { action: "remove-fill", click: handleItemAction }),
- item("Remove Stroke", "/", { action: "remove-stroke", click: handleItemAction }),
- item("Swap Fill and Stroke", "", { action: "swap-fill-and-stroke", click: handleItemAction }),
- // item('Swap Fill and Stroke', 'Shift+X', { action: 'swap-fill-and-stroke', click: handleItemAction }),
- ],
-} as E.MenuItemConstructorOptions;
-const VECTOR_MENU = {
- label: "Vector",
- submenu: [
- item("Join Selection", "Ctrl+J", { action: "join-selection", click: handleItemAction }),
- item("Smooth Join Selection", null, { action: "smooth-join-selection", click: handleItemAction }),
- item("Delete and Heal Selection", "Shift+Backspace", {
- action: "delete-and-heal-selection",
- click: handleItemAction,
- }),
- ],
-} as E.MenuItemConstructorOptions;
-const TEXT_MENU = {
- label: "Text",
- submenu: [
- item("Toggle Bold", "Ctrl+B", { action: "text-toggle-bold", click: handleItemAction }),
- item("Toggle Italic", "Ctrl+I", { action: "text-toggle-italic", click: handleItemAction }),
- item("Toggle Underline", "Ctrl+U", { action: "text-toggle-underline", click: handleItemAction }),
- item("Toggle Strikethrough", null, { action: "text-toggle-strikethrough", click: handleItemAction }),
- SEPARATOR,
- item("Text Original Case", null, { action: "text-original-case", click: handleItemAction }),
- item("Text Upper Case", null, { action: "text-upper-case", click: handleItemAction }),
- item("Text Lower Case", null, { action: "text-lower-case", click: handleItemAction }),
- ],
-} as E.MenuItemConstructorOptions;
-const ARRANGE_MENU = {
- label: "Arrange",
- submenu: [
- item("Round to Pixels", null, { action: "round-to-pixels", click: handleItemAction }),
- SEPARATOR,
- item("Align Left", null, { action: "align-left", click: handleItemAction }),
- item("Align Horizontal Centers", null, { action: "align-horizontal-center", click: handleItemAction }),
- item("Align Right", null, { action: "align-right", click: handleItemAction }),
- item("Align Top", null, { action: "align-top", click: handleItemAction }),
- item("Align Vertical Centers", null, { action: "align-vertical-center", click: handleItemAction }),
- item("Align Bottom", null, { action: "align-bottom", click: handleItemAction }),
- SEPARATOR,
- item("Pack Horizontal", null, { action: "pack-horizontal", click: handleItemAction }),
- item("Pack Vertical", null, { action: "pack-vertical", click: handleItemAction }),
- SEPARATOR,
- item("Distribute Horizontal Spacing", "Ctrl+Alt+Control+H", {
- action: "distribute-horizontal-spacing",
- click: handleItemAction,
- }),
- item("Distribute Vertical Spacing", "Ctrl+Alt+Control+V", {
- action: "distribute-vertical-spacing",
- click: handleItemAction,
- }),
- SEPARATOR,
- item("Distribute Left", null, { action: "distribute-left", click: handleItemAction }),
- item("Distribute Horizontal Centers", null, { action: "distribute-horizontal-center", click: handleItemAction }),
- item("Distribute Right", null, { action: "distribute-right", click: handleItemAction }),
- item("Distribute Top", null, { action: "distribute-top", click: handleItemAction }),
- item("Distribute Vertical Centers", null, { action: "distribute-vertical-center", click: handleItemAction }),
- item("Distribute Bottom", null, { action: "distribute-bottom", click: handleItemAction }),
],
} as E.MenuItemConstructorOptions;
@@ -215,69 +24,108 @@ const HELP_MENU = {
submenu: [
{
label: "Help Page",
- click() {
- E.shell.openExternal("https://help.figma.com");
+ click(): void {
+ E.shell.openExternal(LINKS.HELP_PAGE);
+ },
+ },
+ {
+ label: "Plugins documentation",
+ click(item, window): void {
+ if (!window) {
+ return;
+ }
+
+ E.shell.openExternal(LINKS.PLUGINS_DOCS);
},
},
{
label: "Community Forum",
- click() {
- E.shell.openExternal("https://spectrum.chat/figma");
+ click(): void {
+ E.shell.openExternal(LINKS.FIGMA_COMMUNITY_FORUM);
+ },
+ },
+ {
+ label: "Figma Linux Community Forum",
+ click(): void {
+ E.shell.openExternal(LINKS.FIGMA_LINUX_COMMUNITY_FORUM);
+ },
+ },
+ {
+ label: "Figma Linux in Telegram",
+ click(): void {
+ E.shell.openExternal(LINKS.FIGMA_LINUX_TELEGRAM);
+ },
+ },
+ {
+ label: "Figma Linux Themes",
+ click(): void {
+ E.shell.openExternal(LINKS.THEMES_REPO);
},
},
{
label: "Video Tutorials",
- click() {
- E.shell.openExternal("https://www.youtube.com/playlist?list=PLXDU_eVOJTx4HJKh8tQkQRtIe5YlP5smB");
+ click(): void {
+ E.shell.openExternal(LINKS.VIDEO_TUTORIALS);
},
},
{
label: "Release Notes",
- click() {
- E.shell.openExternal("http://releases.figma.com");
+ click(): void {
+ E.shell.openExternal(LINKS.RELEASE_NOTES);
},
},
{
label: "Legal Summary",
- click() {
- E.shell.openExternal("https://www.figma.com/summary-of-policy");
+ click(): void {
+ E.shell.openExternal(LINKS.LEGAL_SUMMARY);
},
},
- SEPARATOR,
+ { type: "separator" },
{
label: "Sign Out",
- click() {
- Commander.exec("sign-out");
+ click(): void {
+ E.app.emit("sign-out");
},
},
- SEPARATOR,
+ { type: "separator" },
{
label: "Toggle Developer Tools",
accelerator: "Ctrl+Alt+I",
- click(item, window) {
- Commander.exec("toggle-developer-tools", item, window);
+ click(): void {
+ E.app.emit("toggle-current-tab-devtools");
},
},
{
label: "Toggle Window Developer Tools",
accelerator: "Shift+Ctrl+Alt+I",
- click(item, window) {
- Commander.exec("toggle-window-developer-tools", item, window);
+ click(_, window): void {
+ if (!window) {
+ return;
+ }
+
+ toggleDetachedDevTools(window.webContents);
+ },
+ },
+ {
+ label: "Toggle Additional Developer Tools",
+ accelerator: "Shift+Ctrl+Alt+S",
+ click(): void {
+ E.app.emit("toggle-settings-developer-tools");
},
},
item("GPU", "", { id: "chrome://gpu", click: commandToMainProcess }),
],
} as E.MenuItemConstructorOptions;
-export const getMenuTemlate = (pluginMenuItems?: any[]) => {
+export const getMenuTemplate = (pluginMenuItems?: any[]): E.MenuItemConstructorOptions[] => {
const menu: E.MenuItemConstructorOptions[] = [
- FILE_MENU,
- EDIT_MENU,
- VIEW_MENU,
- OBJECT_MENU,
- VECTOR_MENU,
- TEXT_MENU,
- ARRANGE_MENU,
+ item("New File", "Ctrl+N", { id: "newFile", click: commandToMainProcess }),
+ item("Open File Browser", "Ctrl+O", { id: "openFileBrowser", click: commandToMainProcess }),
+ item("Open File URL from Clipboard", "Ctrl+Shift+O", { id: "openFileUrlClipboard", click: commandToMainProcess }),
+ { type: "separator" },
+ item("Close Tab", "Ctrl+W", { id: "closeTab", click: commandToMainProcess }),
+ item("Reopen Closed Tab", "Ctrl+Shift+T", { id: "reopenClosedTab", click: commandToMainProcess }),
+ { type: "separator" },
];
if (pluginMenuItems && pluginMenuItems.length > 0) {
@@ -285,9 +133,32 @@ export const getMenuTemlate = (pluginMenuItems?: any[]) => {
label: "Plugins",
submenu: pluginMenuItems,
});
+ } else {
+ menu.push(PLUGINS_MENU);
+ menu.push({ type: "separator" });
}
+ menu.push({
+ label: "Theme Creator",
+ click: () => {
+ E.app.emit("openThemeCreatorView");
+ },
+ });
+ menu.push({
+ label: "Settings",
+ click: () => {
+ E.app.emit("openSettingsView");
+ },
+ });
menu.push(HELP_MENU);
+ menu.push({ type: "separator" });
+ menu.push({
+ label: "Exit",
+ click: () => {
+ E.app.quit();
+ },
+ });
+
return menu;
};
diff --git a/src/utils/Main/cmd.ts b/src/utils/Main/cmd.ts
deleted file mode 100755
index 09f17603..00000000
--- a/src/utils/Main/cmd.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { exec } from "child_process";
-
-export const cmd = (command: string): Promise =>
- new Promise((res, rej) => {
- exec(command, (err, stdout, stderr) => {
- if (err) rej(err);
-
- res(stdout);
- });
- });
diff --git a/src/utils/Main/commands.ts b/src/utils/Main/commands.ts
deleted file mode 100644
index 6d44f603..00000000
--- a/src/utils/Main/commands.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import * as E from "electron";
-
-import { toggleDetachedDevTools } from "Utils/Main";
-import { app } from "Utils/Common";
-
-export const commands = (): Map => {
- const map = new Map();
-
- map.set("toggle-developer-tools", (item: E.MenuItemConstructorOptions, window: E.BrowserWindow) => {
- const browserView = window.getBrowserView();
-
- if (browserView && browserView.webContents) {
- toggleDetachedDevTools(browserView.webContents);
- }
- });
- map.set("toggle-window-developer-tools", (item: E.MenuItemConstructorOptions, window: E.BrowserWindow) => {
- toggleDetachedDevTools(window.webContents);
- });
-
- map.set("close-window", () => {
- app.exit();
- });
-
- map.set("sign-out", () => {
- app.emit("sign-out");
- });
-
- return map;
-};
diff --git a/src/utils/Main/devTools.ts b/src/utils/Main/devTools.ts
index d44c1733..5a3e63bc 100644
--- a/src/utils/Main/devTools.ts
+++ b/src/utils/Main/devTools.ts
@@ -1,7 +1,7 @@
import * as E from "electron";
export const toggleDetachedDevTools = (webContents: E.WebContents) => {
- if (webContents.isDevToolsOpened()) {
+ if (!webContents || webContents.isDevToolsOpened()) {
webContents.closeDevTools();
return;
diff --git a/src/utils/Main/dialogs.ts b/src/utils/Main/dialogs.ts
new file mode 100755
index 00000000..adc5a509
--- /dev/null
+++ b/src/utils/Main/dialogs.ts
@@ -0,0 +1,20 @@
+import * as E from "electron";
+
+export async function showMessageBox(view: E.BrowserWindow, options: E.MessageBoxOptions) {
+ const result = await E.dialog.showMessageBox(view, options);
+ return result.response;
+}
+export function showMessageBoxSync(view: E.BrowserWindow, options: E.MessageBoxOptions) {
+ const result = E.dialog.showMessageBoxSync(view, options);
+ return result;
+}
+
+export async function showOpenDialog(view: E.BrowserWindow, options: E.OpenDialogOptions) {
+ const result = await E.dialog.showOpenDialog(view, options);
+ return !result.canceled ? result.filePaths : null;
+}
+
+export async function showSaveDialog(view: E.BrowserWindow, options: E.SaveDialogOptions) {
+ const result = await E.dialog.showSaveDialog(view, options);
+ return !result.canceled && result.filePath ? result.filePath : null;
+}
diff --git a/src/utils/Main/fs.ts b/src/utils/Main/fs.ts
new file mode 100755
index 00000000..aa843536
--- /dev/null
+++ b/src/utils/Main/fs.ts
@@ -0,0 +1,22 @@
+import * as fs from "fs";
+
+export async function mkdirIfNotExists(path: string) {
+ fs.mkdir(path, error => {
+ if (error && error.code !== "EEXIST") {
+ throw error;
+ }
+ });
+}
+
+export async function access(path: string): Promise {
+ try {
+ await fs.promises.access(path);
+ return true;
+ } catch (error) {
+ return false;
+ }
+}
+
+export async function mkPath(path: string): Promise {
+ return fs.promises.mkdir(path, { recursive: true });
+}
diff --git a/src/utils/Main/index.ts b/src/utils/Main/index.ts
index f4002264..35685bef 100644
--- a/src/utils/Main/index.ts
+++ b/src/utils/Main/index.ts
@@ -1,12 +1,13 @@
/**
* Utils only for Main process
*/
+export * from "./fs";
export * from "./net";
export * from "./url";
-export * from "./cmd";
+export * from "./themes";
+export * from "./dialogs";
export * from "./cookies";
export * from "./devTools";
export * from "./Menu/menu";
-export * from "./commands";
export * from "./Menu/menuItems";
export * from "./ipcMainHelpers";
diff --git a/src/utils/Main/ipcMainHelpers.ts b/src/utils/Main/ipcMainHelpers.ts
index 842799cf..373a00fd 100644
--- a/src/utils/Main/ipcMainHelpers.ts
+++ b/src/utils/Main/ipcMainHelpers.ts
@@ -3,7 +3,7 @@ import * as E from "electron";
import Tab from "Main/window/Tabs";
import { isDev } from "Utils/Common";
-export function listenToWebBinding(channel: string, listener: Function): void {
+export function listenToWebBinding(channel: string, listener: (sender: E.WebContents, ...args: any[]) => void): void {
E.ipcMain.on(`web:${channel}`, (event: E.IpcMainEvent, ...args: any[]) => {
isDev && console.log(`[ipc] from web: ${channel}`);
@@ -11,7 +11,10 @@ export function listenToWebBinding(channel: string, listener: Function): void {
});
}
-export function listenToWebBindingPromise(channel: string, listener: Function): void {
+export function listenToWebBindingPromise(
+ channel: string,
+ listener: (sender: E.WebContents, ...args: any[]) => void,
+): void {
E.ipcMain.on(`web-promise:${channel}`, async (event: E.IpcMainEvent, promiseID: number, ...args: any[]) => {
isDev && console.log(`[ipc] from web: ${channel} (promise ${promiseID})`);
@@ -36,7 +39,10 @@ export function listenToWebBindingPromise(channel: string, listener: Function):
});
}
-export function listenToWebRegisterCallback(channel: string, listener: Function): void {
+export function listenToWebRegisterCallback(
+ channel: string,
+ listener: (sender: E.WebContents, ...args: any[]) => () => void,
+): void {
E.ipcMain.on(`web-callback:${channel}`, (event: E.IpcMainEvent, args: any, callbackID: number) => {
isDev && console.log(`[ipc] from web: ${channel} (callback ${callbackID})`);
diff --git a/src/utils/Main/themes.ts b/src/utils/Main/themes.ts
new file mode 100644
index 00000000..b7d3fc47
--- /dev/null
+++ b/src/utils/Main/themes.ts
@@ -0,0 +1,278 @@
+import { app, net } from "electron";
+import * as Azip from "adm-zip";
+import * as fs from "fs";
+import * as path from "path";
+import { v4 } from "uuid";
+
+import {
+ AVAILABLE_THEME_FIELDS,
+ AVAILABLE_THEME_FIELDS_COUNT,
+ AVAILABLE_THEME_COLOR_VALUE,
+ DEFAULT_THEME,
+ TEST_THEME_ID,
+ DOWNLOAD_ZIP_URI,
+ DOWNLOAD_ZIP_PATH,
+} from "Const";
+import { storage } from "Main/Storage";
+import WindowManager from "Main/window/WindowManager";
+import { mkPath, access, showSaveDialog } from "Utils/Main";
+import { logger } from "Main/Logger";
+
+export const themesDirectory = path.resolve(app.getPath("userData"), "Themes");
+export const creatorThemeDirectory = path.resolve(app.getPath("userData"), "ThemeCreator");
+export const creatorThemeFileName = "theme.json";
+
+export function checkThemeColorValue(value: string): boolean {
+ return AVAILABLE_THEME_COLOR_VALUE.test(value);
+}
+
+function translatePaletteToKebabCase(themeFile: Themes.Theme): Themes.Theme {
+ const theme = {
+ id: themeFile.id,
+ name: themeFile.name,
+ author: themeFile.author,
+ } as Themes.Theme;
+
+ const palette = Object.keys(themeFile.palette);
+ const newPalette = {} as Themes.Palette;
+
+ for (const paletteKey of palette) {
+ const paletteValue = themeFile.palette[paletteKey];
+ const newPaletteKey = paletteKey.replace(/([A-Z])/gm, "-$1").toLowerCase();
+
+ newPalette[newPaletteKey] = paletteValue;
+ }
+
+ theme.palette = newPalette;
+
+ return theme;
+}
+
+function translatePaletteToCamelCase(themeFile: Themes.Theme): Themes.Theme {
+ const theme = {
+ id: themeFile.id,
+ name: themeFile.name,
+ author: themeFile.author,
+ } as Themes.Theme;
+
+ const palette = Object.keys(themeFile.palette);
+ const newPalette = {} as Themes.Palette;
+
+ for (const paletteKey of palette) {
+ const paletteValue = themeFile.palette[paletteKey];
+ const newPaletteKey = paletteKey.replace(/-([a-z])/g, s => s.replace("-", "").toUpperCase());
+
+ newPalette[newPaletteKey] = paletteValue;
+ }
+
+ theme.palette = newPalette;
+
+ return theme;
+}
+
+export async function readThemeFile(filePath: string): Promise {
+ const buffer = await fs.promises.readFile(filePath);
+ const fileText = buffer.toString();
+ const theme: Themes.Theme = JSON.parse(fileText);
+
+ return theme;
+}
+
+export function isValidThemePalette(theme: Themes.Theme, fileName?: string): boolean {
+ if (!theme.palette) {
+ return false;
+ }
+
+ if (!fileName) {
+ fileName = theme.name;
+ }
+
+ const palette = Object.keys(theme.palette);
+
+ if (palette.length !== AVAILABLE_THEME_FIELDS_COUNT) {
+ logger.error(`The file "${fileName}" has invalid count of palette colors`);
+ return false;
+ }
+
+ for (const paletteKey of palette) {
+ const paletteValue = theme.palette[paletteKey];
+
+ if (!AVAILABLE_THEME_FIELDS.includes(paletteKey)) {
+ logger.error(`Theme "${fileName}" has unavailable color field "${paletteKey}"`);
+ return false;
+ }
+
+ if (!checkThemeColorValue(paletteValue)) {
+ logger.error(`Theme "${fileName}" has incorrect color value: "${paletteValue}" for "${paletteKey}" field`);
+ return false;
+ }
+ }
+
+ return true;
+}
+
+export async function writeThemeFile(filePath: string, theme: Themes.Theme): Promise {
+ return fs.promises.writeFile(filePath, JSON.stringify(translatePaletteToCamelCase(theme)));
+}
+
+export async function isValidThemeFile(filePath: string, theme: Themes.Theme): Promise {
+ const extname = path.extname(filePath);
+
+ if (extname !== ".json") {
+ logger.error(`The file "${filePath}" has not .json extension`);
+ return false;
+ }
+
+ if (!theme.author || !theme.name || !theme.palette) {
+ logger.error(`The file "${filePath}" has not the author or name or palette fields`);
+ return false;
+ }
+
+ if (!isValidThemePalette(theme, filePath)) {
+ return false;
+ }
+
+ return true;
+}
+
+export async function loadCreatorTheme(): Promise {
+ await mkPath(creatorThemeDirectory);
+
+ const filePath = path.resolve(creatorThemeDirectory, creatorThemeFileName);
+ const defaultTheme: Themes.Theme = {
+ ...DEFAULT_THEME,
+ id: TEST_THEME_ID,
+ };
+
+ if (!(await access(filePath))) {
+ return defaultTheme;
+ }
+
+ const themeFile = await fs.promises.readFile(filePath).catch(error => {
+ logger.error("Cannot read theme creator file: '${filePath}', error: ", error);
+
+ return defaultTheme;
+ });
+
+ const theme = JSON.parse(themeFile.toString()) as Themes.Theme;
+ const data = translatePaletteToCamelCase(theme);
+
+ if (!isValidThemePalette(data, filePath)) {
+ return defaultTheme;
+ }
+
+ return {
+ ...translatePaletteToKebabCase(data),
+ id: TEST_THEME_ID,
+ };
+}
+export async function saveCreatorTheme(theme: Themes.Theme): Promise {
+ await mkPath(creatorThemeDirectory);
+
+ const filePath = path.resolve(creatorThemeDirectory, creatorThemeFileName);
+
+ return writeThemeFile(filePath, theme);
+}
+
+export async function exportCreatorTheme(theme: Themes.Theme): Promise {
+ const themeData = translatePaletteToCamelCase(theme);
+
+ if (!isValidThemePalette(themeData)) {
+ return;
+ }
+
+ delete themeData.id;
+
+ const wm = WindowManager.instance;
+ const themeName = `${theme.name.replace(/\s/, "_")}.json`;
+ const lastDir = storage.get().app.exportDir;
+ const dir = lastDir ? `${lastDir}/${themeName}` : themeName;
+
+ const filePath = await showSaveDialog(wm.mainWindow, {
+ title: "Choose theme export directory location",
+ defaultPath: dir,
+ });
+ if (!filePath) {
+ return;
+ }
+
+ return writeThemeFile(filePath, themeData);
+}
+
+export async function getThemesFromDirectory(): Promise {
+ const files = await fs.promises.readdir(themesDirectory);
+ const creatorTheme = await loadCreatorTheme();
+ const themes: Themes.Theme[] = [creatorTheme];
+
+ for (const fileName of files) {
+ const fullFilePath = path.resolve(themesDirectory, fileName);
+ const themeFile = await readThemeFile(fullFilePath);
+
+ if (await isValidThemeFile(fullFilePath, themeFile)) {
+ const theme: Themes.Theme = translatePaletteToKebabCase(themeFile);
+
+ if (!theme.id) {
+ theme.id = v4();
+
+ await writeThemeFile(fullFilePath, theme);
+ }
+
+ themes.push(theme);
+ }
+ }
+
+ return themes;
+}
+
+export async function getThemesCount(): Promise {
+ const files = await fs.promises.readdir(themesDirectory);
+
+ return files.length;
+}
+
+export function updateThemesFromRepository(): Promise {
+ return new Promise((res, rej) => {
+ net
+ .request(DOWNLOAD_ZIP_URI)
+ .on("response", response => {
+ const buffers: Uint8Array[] = [];
+ let length = 0;
+
+ response.on("error", (error: Error) => {
+ logger.error("Cannot download themes, error: ", error);
+ rej(error);
+ });
+ response.on("data", data => {
+ buffers.push(data);
+ length += data.length;
+ });
+ response.on("end", async () => {
+ const buffer = Buffer.concat(buffers);
+
+ await fs.promises.writeFile(DOWNLOAD_ZIP_PATH, buffer).catch(error => {
+ rej(error);
+ });
+
+ const zip = new Azip(DOWNLOAD_ZIP_PATH);
+
+ for (const entry of zip.getEntries()) {
+ if (/\.json/.test(entry.entryName) && !entry.isDirectory) {
+ const themeData = entry.getData().toString("utf8");
+ const themeFileName = path.parse(entry.entryName).base;
+ const filePath = path.resolve(themesDirectory, themeFileName);
+
+ try {
+ const theme = JSON.parse(themeData) as Themes.Theme;
+ await writeThemeFile(filePath, theme);
+ } catch (error) {
+ logger.error("Cannot parse JSON file: ", filePath, error);
+ }
+ }
+ }
+
+ res();
+ });
+ })
+ .end();
+ });
+}
diff --git a/src/utils/Main/url.ts b/src/utils/Main/url.ts
index 4eaf06d3..0d0561b6 100755
--- a/src/utils/Main/url.ts
+++ b/src/utils/Main/url.ts
@@ -12,3 +12,7 @@ export const winUrlProd = formatUrl({
export const isFileBrowser = (url: string): boolean => {
return !/file\/.+/.test(url);
};
+
+export const isFigmaValidUrl = (url: string): boolean => {
+ return /^(figma:\/\/|https?:\/\/w{0,3}?\.?figma\.com)/.test(url);
+};
diff --git a/src/utils/Render/ShortcutsMap.ts b/src/utils/Render/ShortcutsMap.ts
deleted file mode 100755
index ba1745b4..00000000
--- a/src/utils/Render/ShortcutsMap.ts
+++ /dev/null
@@ -1,120 +0,0 @@
-export const shortcutsMap: ShortcutsMap[] = [
- { accelerator: "Ctrl+N", value: "newFile", type: "id" },
- { accelerator: "Ctrl+O", value: "openFileBrowser", type: "id" },
- { accelerator: "Ctrl+Shift+T", value: "reopenClosedTab", type: "id" },
- { accelerator: "Ctrl+W", value: "closeTab", type: "id" },
- { accelerator: "Ctrl+Shift+S", value: "save-as", type: "action" },
- { accelerator: "Ctrl+Shift+E", value: "export-selected-exportables", type: "action" },
- { accelerator: "Ctrl+Z", value: "undo", type: "command" },
- { accelerator: "Ctrl+Y", value: "redo", type: "command" },
- { accelerator: "Shift+Ctrl+V", value: "paste-over-selection", type: "action" },
- { accelerator: "I", value: "toggle-dropper", type: "action" },
- { accelerator: "Alt+Ctrl+X", value: "set-default-style", type: "action" },
- { accelerator: "Alt+Ctrl+C", value: "copy-properties", type: "action" },
- { accelerator: "Alt+Ctrl+V", value: "paste-properties", type: "action" },
- { accelerator: "Ctrl+A", value: "selectAll", type: "command" },
- { accelerator: "", value: "deselect-all", type: "action" },
- { accelerator: "Shift+Ctrl+A", value: "select-inverse", type: "action" },
- { accelerator: "", value: "select-same-style", type: "action" },
- { accelerator: "", value: "select-same-fill", type: "action" },
- { accelerator: "", value: "select-same-stroke", type: "action" },
- { accelerator: "", value: "select-same-effect", type: "action" },
- { accelerator: "", value: "select-same-text", type: "action" },
- { accelerator: "", value: "select-same-font", type: "action" },
- { accelerator: "", value: "select-same-instance", type: "action" },
- { accelerator: "Ctrl+'", value: "toggle-grid", type: "action" },
- { accelerator: "Ctrl+Shift+4", value: "toggle-shown-layout-grids", type: "action" },
- { accelerator: "", value: "toggle-show-masks", type: "action" },
- { accelerator: "", value: "toggle-show-artboard-outlines", type: "action" },
- { accelerator: "Shift+R", value: "toggle-rulers", type: "action" },
- { accelerator: "Ctrl+Shift+\\", value: "toggle-sidebar", type: "action" },
- { accelerator: "Ctrl+\\", value: "toggle-ui", type: "action" },
- { accelerator: "Ctrl+Shift+3", value: "toggle-outlines", type: "action" },
- { accelerator: "Alt+1", value: "toggle-layers", type: "action" },
- { accelerator: "Alt+2", value: "toggle-publish", type: "action" },
- { accelerator: "Alt+3", value: "toggle-library", type: "action" },
- { accelerator: "Ctrl+Alt+Y", value: "toggle-pixel-preview", type: "action" },
- { accelerator: "Alt+Shift+'", value: "toggle-checkerboard", type: "action" },
- { accelerator: "", value: "zoom-in", type: "action" },
- { accelerator: "", value: "zoom-out", type: "action" },
- { accelerator: "Shift+0", value: "zoom-reset", type: "action" },
- { accelerator: "Shift+1", value: "zoom-to-fit", type: "action" },
- { accelerator: "Shift+2", value: "zoom-to-selection", type: "action" },
- { accelerator: "Ctrl+Shift+Backspace", value: "scale-normal", type: "id" },
- { accelerator: "Ctrl+=", value: "scale-inc0.1", type: "id" },
- { accelerator: "Ctrl+-", value: "scale-dic0.1", type: "id" },
- { accelerator: "Ctrl+Shift+=", value: "scale-inc0.05", type: "id" },
- { accelerator: "Ctrl+Shift+-", value: "scale-dic0.05", type: "id" },
- { accelerator: "N", value: "next-artboard", type: "action" },
- { accelerator: "Shift+N", value: "previous-artboard", type: "action" },
- { accelerator: "Ctrl+G", value: "group-selection", type: "action" },
- { accelerator: "Shift+Ctrl+G", value: "ungroup-selection", type: "action" },
- { accelerator: "Ctrl+Alt+G", value: "frame-selection", type: "action" },
- { accelerator: "Alt+Ctrl+M", value: "mask-selection", type: "action" },
- { accelerator: "Ctrl+Alt+K", value: "create-symbol", type: "action" },
- { accelerator: "", value: "find-symbol", type: "action" },
- { accelerator: "", value: "reset-symbol", type: "action" },
- { accelerator: "Ctrl+Alt+B", value: "detach-instance", type: "action" },
- { accelerator: "", value: "resize-to-fit", type: "action" },
- { accelerator: "", value: "toggle-frame-clipping", type: "action" },
- { accelerator: "Ctrl+Shift+]", value: "bring-to-front", type: "action" },
- { accelerator: "Ctrl+]", value: "bring-forward", type: "action" },
- { accelerator: "Ctrl+[", value: "send-backward", type: "action" },
- { accelerator: "Ctrl+Shift+[", value: "send-to-back", type: "action" },
- { accelerator: "", value: "flip-horizontal", type: "action" },
- { accelerator: "", value: "flip-vertical", type: "action" },
- // { accelerator: 'Shift+H', value: 'flip-horizontal', type: 'action' },
- // { accelerator: 'Shift+V', value: 'flip-vertical', type: 'action' },
- { accelerator: "", value: "rotate-180", type: "action" },
- { accelerator: "", value: "rotate-90-counterclockwise", type: "action" },
- { accelerator: "", value: "rotate-90-clockwise", type: "action" },
- { accelerator: "Ctrl+E", value: "flatten-selection", type: "action" },
- { accelerator: "Shift+Ctrl+O", value: "outline-stroke", type: "action" },
- { accelerator: "", value: "live-boolean-union", type: "action" },
- { accelerator: "", value: "live-boolean-subtract", type: "action" },
- { accelerator: "", value: "live-boolean-intersect", type: "action" },
- { accelerator: "", value: "live-boolean-xor", type: "action" },
- { accelerator: "Ctrl+D", value: "duplicate-in-place", type: "action" },
- { accelerator: "Backspace", value: "delete-selection", type: "action" },
- { accelerator: "", value: "convert-to-raster", type: "action" },
- { accelerator: "Shift+Ctrl+H", value: "toggle-shown-for-selected-nodes", type: "action" },
- { accelerator: "Shift+Ctrl+L", value: "toggle-locked-for-selected-nodes", type: "action" },
- { accelerator: "", value: "hide-sibling-layers", type: "action" },
- { accelerator: "Alt+L", value: "collapse-layers", type: "action" },
- { accelerator: "Alt+/", value: "remove-fill", type: "action" },
- { accelerator: "/", value: "remove-stroke", type: "action" },
- { accelerator: "", value: "swap-fill-and-stroke", type: "action" },
- // { accelerator: 'Shift+X', value: 'swap-fill-and-stroke', type: 'action' },
- { accelerator: "Ctrl+J", value: "join-selection", type: "action" },
- { accelerator: "", value: "smooth-join-selection", type: "action" },
- { accelerator: "Shift+Backspace", value: "delete-and-heal-selection", type: "action" },
- { accelerator: "Ctrl+B", value: "text-toggle-bold", type: "action" },
- { accelerator: "Ctrl+I", value: "text-toggle-italic", type: "action" },
- { accelerator: "Ctrl+U", value: "text-toggle-underline", type: "action" },
- { accelerator: "", value: "text-toggle-strikethrough", type: "action" },
- { accelerator: "", value: "text-original-case", type: "action" },
- { accelerator: "", value: "text-upper-case", type: "action" },
- { accelerator: "", value: "text-lower-case", type: "action" },
- { accelerator: "", value: "round-to-pixels", type: "action" },
- { accelerator: "", value: "align-left", type: "action" },
- { accelerator: "", value: "align-horizontal-center", type: "action" },
- { accelerator: "", value: "align-right", type: "action" },
- { accelerator: "", value: "align-top", type: "action" },
- { accelerator: "", value: "align-vertical-center", type: "action" },
- { accelerator: "", value: "align-bottom", type: "action" },
- { accelerator: "", value: "pack-horizontal", type: "action" },
- { accelerator: "", value: "pack-vertical", type: "action" },
- { accelerator: "Shift+Alt+Ctrl+H", value: "distribute-horizontal-spacing", type: "action" },
- { accelerator: "Shift+Alt+Ctrl+V", value: "distribute-vertical-spacing", type: "action" },
- { accelerator: "", value: "distribute-left", type: "action" },
- { accelerator: "", value: "distribute-horizontal-center", type: "action" },
- { accelerator: "", value: "distribute-right", type: "action" },
- { accelerator: "", value: "distribute-top", type: "action" },
- { accelerator: "", value: "distribute-vertical-center", type: "action" },
- { accelerator: "", value: "distribute-bottom", type: "action" },
-
- { accelerator: "Ctrl+Shift+W", value: "close-window", type: "id" },
-
- { accelerator: "Ctrl+Alt+I", value: "toggle-developer-tools", type: "id" },
- { accelerator: "Shift+Ctrl+Alt+I", value: "toggle-window-developer-tools", type: "id" },
-];
diff --git a/src/utils/Render/index.ts b/src/utils/Render/index.ts
index 54bcc89e..6d6c09a6 100644
--- a/src/utils/Render/index.ts
+++ b/src/utils/Render/index.ts
@@ -1,4 +1,2 @@
-/**
- * Utils only for Renderer process
- */
+export * from "./themes";
export * from "./webBindingsHelpers";
diff --git a/src/utils/Render/shortcuts.ts b/src/utils/Render/shortcuts.ts
deleted file mode 100755
index bf281267..00000000
--- a/src/utils/Render/shortcuts.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import * as E from "electron";
-import * as Settings from "electron-settings";
-
-import { app } from "Utils/Common";
-import { shortcutsMap } from "./ShortcutsMap";
-import shortcutMan from "Middleware/ShortcutMan";
-
-export default () => {
- const currentWindow = E.remote.BrowserWindow.getAllWindows()[0];
-
- for (const shortcut of shortcutsMap) {
- if (shortcut.accelerator === "") continue;
-
- switch (shortcut.type) {
- case "command":
- {
- shortcutMan.bind(shortcut.accelerator.toLocaleLowerCase(), () => {
- if (!Settings.get("app.disabledMainMenu")) return;
-
- console.log("command: ", !Settings.get("app.disabledMainMenu"), shortcut);
-
- // TODO: Replce on Event Emitter. Send the event to Main process
- // MenuHelper.handleCommandItemClick({ command: shortcut.value, accelerator: shortcut.accelerator }, currentWindow);
- app.emit(
- "handle-page-command",
- { command: shortcut.value, accelerator: shortcut.accelerator },
- currentWindow,
- );
- });
- }
- break;
- case "id":
- {
- shortcutMan.bind(shortcut.accelerator.toLocaleLowerCase(), () => {
- if (!Settings.get("app.disabledMainMenu")) return;
-
- console.log("id: ", !Settings.get("app.disabledMainMenu"), shortcut);
-
- app.emit("handle-command", shortcut.value);
- });
- }
- break;
-
- default: {
- }
- }
- }
-};
diff --git a/src/utils/Render/themes.ts b/src/utils/Render/themes.ts
new file mode 100644
index 00000000..ce559cc8
--- /dev/null
+++ b/src/utils/Render/themes.ts
@@ -0,0 +1,10 @@
+export const getColorPallet = (theme: Themes.Theme): React.CSSProperties => {
+ const props = {} as CSSStyleDeclaration;
+
+ for (const key of Object.keys(theme.palette)) {
+ const prop = theme.palette[key];
+ props[`--${key}`] = prop;
+ }
+
+ return props as React.CSSProperties;
+};
diff --git a/src/utils/Render/webBindingsHelpers.ts b/src/utils/Render/webBindingsHelpers.ts
index 82ebf8c7..b23cdbe9 100644
--- a/src/utils/Render/webBindingsHelpers.ts
+++ b/src/utils/Render/webBindingsHelpers.ts
@@ -1,47 +1,5 @@
import * as E from "electron";
-export const postPromiseMessageToMainProcess = (function() {
- let nextPromiseID = 0;
- const pendingPromises = new Map();
-
- E.ipcRenderer.on("handlePromiseResolve", (event: E.Event, promiseID: number, result: any) => {
- const pendingPromise = pendingPromises.get(promiseID);
- if (pendingPromise) {
- pendingPromises.delete(promiseID);
- pendingPromise.resolve(result);
- } else {
- console.error("[desktop] unexpected resolve for promise", promiseID);
- }
- });
- E.ipcRenderer.on("handlePromiseReject", (event: E.Event, promiseID: number, error: any) => {
- const pendingPromise = pendingPromises.get(promiseID);
- if (pendingPromise) {
- pendingPromises.delete(promiseID);
- pendingPromise.reject(error);
- } else {
- console.error("[desktop] unexpected reject for promise", promiseID);
- }
- });
-
- return function(channel: string, ...args: any[]) {
- return new Promise(function(resolve, reject) {
- const promiseID = nextPromiseID++;
- const noResp = setTimeout(() => console.log("pPMTMP no response:", promiseID, channel), 1000);
- pendingPromises.set(promiseID, {
- resolve: (r: any) => {
- clearTimeout(noResp);
- resolve(r);
- },
- reject: (r: any) => {
- clearTimeout(noResp);
- reject(r);
- },
- });
- E.ipcRenderer.send("web-promise:" + channel, promiseID, ...args);
- });
- };
-})();
-
export const postCallbackMessageToMainProcess = (channel: string, ...args: any[]) => {
E.ipcRenderer.send(`web-callback:${channel}`, ...args);
};
@@ -63,7 +21,7 @@ export const registerCallbackWithMainProcess = (() => {
}
});
- return function(channel: string, args: any, callback: Function) {
+ return function(channel: string, args: any, callback: (result: any) => void) {
const callbackID = nextCallbackID++;
registeredCallbacks.set(callbackID, callback);
diff --git a/tsconfig.json b/tsconfig.json
index 85ea85cd..1565fe41 100755
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,62 +1,64 @@
{
- "extends": "./node_modules/electron-webpack/tsconfig-base.json",
- "compilerOptions": {
- "jsx": "react",
- "outDir": "./dist",
- "baseUrl": "./",
- "noImplicitAny": true,
- "allowJs": false,
- "target": "es6",
- "module": "commonjs",
- "moduleResolution": "node",
- "sourceMap": true,
- "preserveConstEnums": true,
- "removeComments": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "allowSyntheticDefaultImports": true,
- "strictPropertyInitialization": false,
- "noImplicitThis": false,
- "allowUnusedLabels": true,
- "noUnusedLocals": false,
- "strictNullChecks": false,
- "lib": [
- "dom",
- "es7",
- "esnext"
- ],
- "typeRoots": [
- "node_modules/@types",
- "@types/**/*.d.ts"
- ],
- "paths": {
- "Main": ["src/main"],
- "Main/*": ["src/main/*"],
- "Components": ["src/renderer/components"],
- "Components/*": ["src/renderer/components/*"],
- "Elements/*": ["src/renderer/elements/*"],
- "Elements": ["src/renderer/elements"],
- "Store": ["src/renderer/stores"],
- "Store/*": ["src/renderer/stores/*"],
- "Middleware": ["src/middleware"],
- "Middleware/*": ["src/middleware/*"],
- "Const": ["src/constants"],
- "Utils": ["src/utils"],
- "Utils/*": ["src/utils/*"],
- "*": ["node_modules/@types/*"]
- },
- },
- "include": [
- "@types/**/*",
- "src/main/index.ts",
- "src/renderer/index.tsx",
- "src/middleware/loadMainContent.ts",
- "src/middleware/loadContent.ts",
- "src/middleware/*.ts"
+ "extends": "./node_modules/electron-webpack/tsconfig-base.json",
+ "compilerOptions": {
+ "jsx": "react",
+ "outDir": "./dist",
+ "baseUrl": "./",
+ "noImplicitAny": true,
+ "allowJs": false,
+ "target": "es6",
+ "module": "commonjs",
+ "moduleResolution": "node",
+ "sourceMap": true,
+ "preserveConstEnums": true,
+ "removeComments": true,
+ "emitDecoratorMetadata": true,
+ "experimentalDecorators": true,
+ "allowSyntheticDefaultImports": true,
+ "strictPropertyInitialization": false,
+ "noImplicitThis": false,
+ "allowUnusedLabels": true,
+ "noUnusedLocals": false,
+ "strictNullChecks": false,
+ "lib": [
+ "dom",
+ "es7",
+ "esnext"
+ ],
+ "typeRoots": [
+ "node_modules/@types",
+ "@types/**/*.d.ts"
],
- "exclude": [
- "node_modules",
- "biuld",
- "*.sass"
- ]
+ "paths": {
+ "Main": ["src/main"],
+ "Main/*": ["src/main/*"],
+ "Components": ["src/renderer/components"],
+ "Components/*": ["src/renderer/components/*"],
+ "Elements/*": ["src/renderer/elements/*"],
+ "Elements": ["src/renderer/elements"],
+ "Store": ["src/renderer/stores"],
+ "Store/*": ["src/renderer/stores/*"],
+ "Middleware": ["src/middleware"],
+ "Middleware/*": ["src/middleware/*"],
+ "Const": ["src/constants"],
+ "Utils": ["src/utils"],
+ "Utils/*": ["src/utils/*"],
+ "Enums": ["@types/enums.ts"],
+ "Storage": ["src/main/Storage.ts"],
+ "*": ["node_modules/@types/*"]
+ },
+ },
+ "include": [
+ "@types/**/*",
+ "src/main/index.ts",
+ "src/renderer/index.tsx",
+ "src/middleware/loadMainContent.ts",
+ "src/middleware/loadContent.ts",
+ "src/middleware/*.ts"
+ ],
+ "exclude": [
+ "node_modules",
+ "build",
+ "*.sass"
+ ]
}