feat: support release (#361)
* feat: support release and set electron version to ^3.0.13 * docs: update readme to include destop app and release support * style: remove blank lines * fix: redirect load failed to home page * docs: add to test runbook * feat: support latest electron versions * feat: support mac menu * fix: downgrade to supported version of electron 8.3.0 * docs: update readme with release folder info * fix: mac issue with command bar * fix: support cmaps * docs: update readme Co-authored-by: kunzheng <58841788+kunzms@users.noreply.github.com>
25
README.md
|
@ -33,7 +33,7 @@ Form Labeling Tool requires [NodeJS (>= 10.x, Dubnium) and NPM](https://github.c
|
|||
cd OCR-Form-Tools
|
||||
yarn install
|
||||
yarn build
|
||||
yarn react-start
|
||||
yarn start
|
||||
```
|
||||
|
||||
### Set up this tool with Docker
|
||||
|
@ -44,7 +44,28 @@ Please see instructions [here](https://docs.microsoft.com/en-us/azure/cognitive-
|
|||
|
||||
Using a modern Web browser, FOTT can be run directly at: https://fott.azurewebsites.net/
|
||||
|
||||
**Note: The site is for testing purpose only.**
|
||||
### Run as desktop application
|
||||
|
||||
FOTT can be run as a desktop application after initial set up.
|
||||
|
||||
```bash
|
||||
yarn electron-start
|
||||
```
|
||||
|
||||
The desktop application has additional features, such as:
|
||||
- Support for local file system as provider storage
|
||||
- Support for cross-domain resource requests
|
||||
|
||||
### Release as desktop application
|
||||
|
||||
FOTT can be released as a distributable desktop application.
|
||||
|
||||
```bash
|
||||
yarn release
|
||||
```
|
||||
The distributable will saved in the releases folder of the cloned repository.
|
||||
|
||||
**Note: the site is for testing purpose only.**
|
||||
|
||||
## Using labeling tool
|
||||
|
||||
|
|
Двоичные данные
app-icons/Tag.png
До Ширина: | Высота: | Размер: 1.8 KiB |
Двоичные данные
app-icons/icon.icns
Двоичные данные
app-icons/icon.ico
До Ширина: | Высота: | Размер: 22 KiB После Ширина: | Высота: | Размер: 114 KiB |
Двоичные данные
app-icons/icon.png
До Ширина: | Высота: | Размер: 4.6 KiB После Ширина: | Высота: | Размер: 18 KiB |
|
@ -1,5 +1,32 @@
|
|||
# Test Runbook
|
||||
|
||||
## Feat: support distributable releasing
|
||||
|
||||
> ### Feature description ###
|
||||
- Support distributable releasing for Windows, Mac, and Linux
|
||||
|
||||
> ### Use Case ###
|
||||
|
||||
**As** a user
|
||||
**I want** to release my project as a distributable
|
||||
**So** I can easily set up FOTT
|
||||
|
||||
> ### Acceptance criteria ###
|
||||
|
||||
#### Scenario One ####
|
||||
|
||||
**Given** I've updated dependencies.
|
||||
**When** I run `yarn release`.
|
||||
**Then** a distributable installer should be created in the releases folder.
|
||||
|
||||
#### Scenario Two ####
|
||||
|
||||
**Given** I've created a distributable installer.
|
||||
**When** I execute the installer.
|
||||
**Then** a the FOTT desktop application should install and run as expected.
|
||||
|
||||
___
|
||||
|
||||
## Feat: support document management
|
||||
|
||||
> ### Feature description ###
|
||||
|
@ -11,8 +38,6 @@
|
|||
**I want** to delete a document and it's files through FOTT
|
||||
**So** I don't have to delete the document through a storage provider
|
||||
|
||||
> ### Acceptance criteria ###
|
||||
|
||||
#### Scenario One ####
|
||||
|
||||
**Given** I've selected a document in the editor page.
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
# only use if package.json doesn't contain a "build"
|
||||
|
||||
directories:
|
||||
output: releases
|
||||
buildResources: app-icons # this is where app-icons is store
|
||||
appId: com.microsoft.vott
|
||||
artifactName: '${productName}-${version}-${platform}.${ext}'
|
||||
extends: null # need this otherwise it won't use the entry point we set in "main" in package.json
|
||||
files:
|
||||
- filter:
|
||||
- build/ # copy this directory to the asar directory that electron-builder use to look for the main entry file
|
||||
mac:
|
||||
icon: app-icons/icon.icns
|
||||
target: dmg
|
||||
identity: null # don't sign the app
|
||||
win:
|
||||
icon: app-icons/icon.ico
|
||||
linux:
|
||||
target:
|
||||
- snap
|
||||
publish: null
|
12
package.json
|
@ -6,6 +6,7 @@
|
|||
"url": "https://github.com/microsoft/OCR-Form-Tools"
|
||||
},
|
||||
"description": "OCR Form Labeling Tool - an labeling tool for forms.",
|
||||
"homepage": ".",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/microsoft/OCR-Form-Tools"
|
||||
|
@ -14,13 +15,13 @@
|
|||
"private": true,
|
||||
"main": "build/main.js",
|
||||
"dependencies": {
|
||||
"file-type": "^14.6.2",
|
||||
"@azure/storage-blob": "10.3.0",
|
||||
"@fluentui/react": "^7.117.2",
|
||||
"axios": "^0.19.0",
|
||||
"bootstrap": "^4.4.1",
|
||||
"chart.js": "^2.9.3",
|
||||
"exif-js": "^2.3.0",
|
||||
"file-type": "^14.6.2",
|
||||
"lodash": "^4.17.15",
|
||||
"ol": "^5.3.3",
|
||||
"promise.allsettled": "^1.0.2",
|
||||
|
@ -59,7 +60,8 @@
|
|||
"electron:run:prod": "yarn webpack:prod && electron . --remote-debugging-port=9223",
|
||||
"electron:start:dev": "yarn electron-start",
|
||||
"electron:start:prod": "yarn webpack:prod && yarn electron-start",
|
||||
"electron-start": "yarn webpack:dev && node src/electron/start",
|
||||
"electron-start": "node src/electron/start",
|
||||
"release": "yarn build && yarn webpack:prod && yarn electron-builder",
|
||||
"tslint": "./node_modules/.bin/tslint 'src/**/*.ts*'",
|
||||
"tslintfix": "./node_modules/.bin/tslint 'src/**/*.ts*' --fix"
|
||||
},
|
||||
|
@ -94,17 +96,17 @@
|
|||
"@types/reactstrap": "^8.2.0",
|
||||
"@types/redux-logger": "^3.0.7",
|
||||
"acorn": "^7.1.1",
|
||||
"foreman": "^3.0.1",
|
||||
"electron": "^8.3.0",
|
||||
"electron": "8.3.0",
|
||||
"electron-builder": "^22.6.1",
|
||||
"enzyme": "^3.10.0",
|
||||
"enzyme-adapter-react-16": "^1.15.1",
|
||||
"eslint-utils": "^1.4.3",
|
||||
"foreman": "^3.0.1",
|
||||
"jquery": "^3.5.0",
|
||||
"kind-of": "^6.0.3",
|
||||
"minimist": "^1.2.2",
|
||||
"node-sass": "^4.14.1",
|
||||
"pdfjs-dist": "2.3.200",
|
||||
"pdfjs-dist": "^2.4.456",
|
||||
"react-scripts": "3.4.1",
|
||||
"redux-immutable-state-invariant": "^2.1.0",
|
||||
"redux-logger": "^3.0.6",
|
||||
|
|
Двоичные данные
public/favicon.ico
До Ширина: | Высота: | Размер: 15 KiB После Ширина: | Высота: | Размер: 114 KiB |
|
@ -3,8 +3,10 @@
|
|||
|
||||
import { appInfo } from "./appInfo"
|
||||
|
||||
const appVersionArr = appInfo.version.split(".");
|
||||
appVersionArr[1] = appVersionArr[1] + "-preview";
|
||||
const appVersion = appVersionArr.join(".");
|
||||
|
||||
const appVersion = "2.1-preview.1";
|
||||
const apiVersion = "v2.1-preview.1";
|
||||
|
||||
/**
|
||||
|
@ -34,10 +36,10 @@ export const constants = {
|
|||
apiModelsPath: `/formrecognizer/${apiVersion}/custom/models`,
|
||||
|
||||
pdfjsWorkerSrc(version: string) {
|
||||
return `//fotts.azureedge.net/npm/pdfjs-dist/${version}/pdf.worker.js`;
|
||||
return `http://fotts.azureedge.net/npm/pdfjs-dist/${version}/pdf.worker.js`;
|
||||
},
|
||||
|
||||
pdfjsCMapUrl(version: string) {
|
||||
return `//fotts.azureedge.net/npm/pdfjs-dist/${version}/cmaps/`;
|
||||
return `http://fotts.azureedge.net/npm/pdfjs-dist/${version}/cmaps/`;
|
||||
},
|
||||
};
|
||||
|
|
|
@ -13,27 +13,27 @@ import LocalFileSystem from "./providers/storage/localFileSystem";
|
|||
let mainWindow: BrowserWindow | null;
|
||||
let ipcMainProxy: IpcMainProxy;
|
||||
|
||||
const isMac = process.platform === "darwin"
|
||||
const isLinux = process.platform === "linux"
|
||||
|
||||
async function createWindow() {
|
||||
const windowOptions: BrowserWindowConstructorOptions = {
|
||||
width: 1024,
|
||||
height: 768,
|
||||
minWidth: 450,
|
||||
minHeight: 100,
|
||||
frame: process.platform === "linux",
|
||||
frame: isLinux,
|
||||
titleBarStyle: "hidden",
|
||||
backgroundColor: "#272B30",
|
||||
show: false,
|
||||
icon: "app-icons/Tag.png"
|
||||
icon: "app-icons/icon.png"
|
||||
};
|
||||
windowOptions.webPreferences = {
|
||||
nodeIntegration: true,
|
||||
webSecurity: false,
|
||||
};
|
||||
|
||||
const staticUrl = process.env.ELECTRON_START_URL || `file:///${__dirname}/index.html`;
|
||||
if (process.env.ELECTRON_START_URL) {
|
||||
windowOptions.webPreferences = {
|
||||
nodeIntegration: true,
|
||||
webSecurity: false,
|
||||
};
|
||||
}
|
||||
|
||||
mainWindow = new BrowserWindow(windowOptions);
|
||||
mainWindow.loadURL(staticUrl);
|
||||
mainWindow.maximize();
|
||||
|
@ -43,6 +43,10 @@ async function createWindow() {
|
|||
ipcMainProxy.unregisterAll();
|
||||
});
|
||||
|
||||
mainWindow.webContents.on("did-fail-load", () => {
|
||||
mainWindow.loadURL(staticUrl);
|
||||
});
|
||||
|
||||
mainWindow.once("ready-to-show", () => {
|
||||
mainWindow.show();
|
||||
});
|
||||
|
@ -92,10 +96,10 @@ function registerContextMenu(browserWindow: BrowserWindow): void {
|
|||
const menuItems: MenuItemConstructorOptions[] = [
|
||||
{
|
||||
label: "File", submenu: [
|
||||
{ role: "quit" },
|
||||
isMac ? { role: "close" } : { role: "quit" }
|
||||
],
|
||||
},
|
||||
// { role: "editMenu" },
|
||||
{ role: "editMenu" },
|
||||
{
|
||||
label: "View", submenu: [
|
||||
{ role: "reload" },
|
||||
|
@ -109,10 +113,16 @@ function registerContextMenu(browserWindow: BrowserWindow): void {
|
|||
],
|
||||
},
|
||||
{
|
||||
label: "Window", submenu: [
|
||||
{ role: "minimize" },
|
||||
{ role: "close" },
|
||||
]
|
||||
label: "Window", submenu:
|
||||
(isMac ? [
|
||||
{ role: "minimize" },
|
||||
{ role: "front" },
|
||||
{ type: "separator" },
|
||||
{ role: "window" }
|
||||
] : [
|
||||
{ role: "minimize" },
|
||||
{ role: "close" }
|
||||
])
|
||||
},
|
||||
];
|
||||
const menu = Menu.buildFromTemplate(menuItems);
|
||||
|
|
|
@ -29,7 +29,7 @@ export default class LocalFileSystem implements IStorageProvider {
|
|||
properties: ["openDirectory", "createDirectory"],
|
||||
});
|
||||
|
||||
if (!result.filePaths || result.filePaths.length !== 1) {
|
||||
if (!result || result.filePaths.length !== 1) {
|
||||
return reject();
|
||||
}
|
||||
|
||||
|
|
|
@ -50,5 +50,6 @@ const tryConnection = () => client.connect({ port: port }, () => {
|
|||
tryConnection();
|
||||
|
||||
client.on("error", (error) => {
|
||||
setTimeout(tryConnection, 1000);
|
||||
console.log(`Trying to connect to ${process.env.ELECTRON_START_URL}... (start web service with 'yarn react-start')`);
|
||||
setTimeout(tryConnection, 10000);
|
||||
});
|
||||
|
|
|
@ -7,7 +7,6 @@ import * as pdfjsLib from "pdfjs-dist";
|
|||
import { constants } from "../../../../common/constants";
|
||||
import {resizeCanvas} from "../../../../common/utils";
|
||||
|
||||
// temp hack for enabling worker
|
||||
pdfjsLib.GlobalWorkerOptions.workerSrc = constants.pdfjsWorkerSrc(pdfjsLib.version);
|
||||
|
||||
export interface IPDFAssetState {
|
||||
|
|
|
@ -34,6 +34,7 @@ import { getPrimaryGreenTheme, getPrimaryWhiteTheme,
|
|||
getGreenWithWhiteBackgroundTheme } from "../../../../common/themes";
|
||||
import axios from "axios";
|
||||
|
||||
pdfjsLib.GlobalWorkerOptions.workerSrc = constants.pdfjsWorkerSrc(pdfjsLib.version);
|
||||
const cMapUrl = constants.pdfjsCMapUrl(pdfjsLib.version);
|
||||
|
||||
export interface IPredictPageProps extends RouteComponentProps, React.Props<PredictPage> {
|
||||
|
|
|
@ -9,14 +9,19 @@ import { PlatformType, isElectron } from "../../../common/hostProcess";
|
|||
import { getLightGreyTheme, getSubMenuTheme } from "../../../common/themes";
|
||||
import "./titleBar.scss";
|
||||
|
||||
const isElectronCheck = isElectron();
|
||||
const platform = global && global.process && global.process.platform ? global.process.platform : PlatformType.Web;
|
||||
const isMac = platform === "darwin";
|
||||
const isLinux = platform === "linux";
|
||||
const isElectronAndNotMacOrLinux = isElectronCheck && !(isMac || isLinux);
|
||||
const isNotElectronAndMacOrLinux = !(isElectronCheck && (isMac || isLinux));
|
||||
|
||||
export interface ITitleBarProps extends React.Props<TitleBar> {
|
||||
icon?: string | JSX.Element;
|
||||
title?: string;
|
||||
}
|
||||
|
||||
export interface ITitleBarState {
|
||||
isElectron: boolean;
|
||||
platform: string;
|
||||
maximized: boolean;
|
||||
fullscreen: boolean;
|
||||
menu: Electron.Menu;
|
||||
|
@ -31,21 +36,16 @@ function mapStateToProps(state: IApplicationState) {
|
|||
@connect(mapStateToProps, null)
|
||||
export class TitleBar extends React.Component<ITitleBarProps, ITitleBarState> {
|
||||
public state: ITitleBarState = {
|
||||
isElectron: false,
|
||||
platform: global && global.process && global.process.platform ? global.process.platform : PlatformType.Web,
|
||||
maximized: false,
|
||||
fullscreen: false,
|
||||
menu: null,
|
||||
};
|
||||
|
||||
private isElectron: boolean;
|
||||
private remote: Electron.Remote;
|
||||
private currentWindow: Electron.BrowserWindow;
|
||||
|
||||
public componentDidMount() {
|
||||
this.isElectron = isElectron();
|
||||
|
||||
if (this.isElectron) {
|
||||
if (isElectronCheck) {
|
||||
this.remote = window.require("electron").remote as Electron.Remote;
|
||||
this.currentWindow = this.remote.getCurrentWindow();
|
||||
this.currentWindow.on("maximize", () => this.onMaximize(true));
|
||||
|
@ -106,11 +106,13 @@ export class TitleBar extends React.Component<ITitleBarProps, ITitleBarState> {
|
|||
|
||||
return (
|
||||
<div className="title-bar bg-lighter-3">
|
||||
<div className="title-bar-icon">
|
||||
{typeof (this.props.icon) === "string" && <FontIcon iconName={this.props.icon} />}
|
||||
{typeof (this.props.icon) !== "string" && this.props.icon}
|
||||
</div>
|
||||
{this.isElectron &&
|
||||
{isNotElectronAndMacOrLinux &&
|
||||
<div className="title-bar-icon">
|
||||
{typeof (this.props.icon) === "string" && <FontIcon iconName={this.props.icon} />}
|
||||
{typeof (this.props.icon) !== "string" && this.props.icon}
|
||||
</div>
|
||||
}
|
||||
{isElectronAndNotMacOrLinux &&
|
||||
<Customizer {...titleBarTheme}>
|
||||
<OverflowSet
|
||||
role="menubar"
|
||||
|
@ -123,7 +125,7 @@ export class TitleBar extends React.Component<ITitleBarProps, ITitleBarState> {
|
|||
<div className="title-bar-main">{this.props.title || "Welcome"}</div>
|
||||
<div className="title-bar-controls">
|
||||
{this.props.children}
|
||||
{this.isElectron &&
|
||||
{isElectronAndNotMacOrLinux &&
|
||||
[
|
||||
<Separator vertical key="seperator" className="mr-2 ml-2"/>,
|
||||
<div key="minimizeDiv">
|
||||
|
@ -191,11 +193,11 @@ export class TitleBar extends React.Component<ITitleBarProps, ITitleBarState> {
|
|||
|
||||
private onMenuItemClick(e: any, menuItem: Electron.MenuItem) {
|
||||
if (menuItem.label === "Zoom In") {
|
||||
this.currentWindow.webContents.setZoomLevel(this.currentWindow.webContents.zoomLevel + .3);
|
||||
this.currentWindow.webContents.setZoomLevel(this.currentWindow.webContents.getZoomLevel() + .3)
|
||||
} else if (menuItem.label === "Zoom Out") {
|
||||
this.currentWindow.webContents.setZoomLevel(this.currentWindow.webContents.zoomLevel - .3);
|
||||
this.currentWindow.webContents.setZoomLevel(this.currentWindow.webContents.getZoomLevel() - .3)
|
||||
} else if (menuItem.label === "Reset Zoom") {
|
||||
this.currentWindow.webContents.setZoomLevel(-3);
|
||||
this.currentWindow.webContents.setZoomLevel(0);
|
||||
} else if (menuItem.click) {
|
||||
menuItem.click.call(menuItem, menuItem, this.currentWindow);
|
||||
}
|
||||
|
|
112
yarn.lock
|
@ -1554,6 +1554,11 @@
|
|||
dependencies:
|
||||
defer-to-connect "^1.0.1"
|
||||
|
||||
"@tokenizer/token@^0.1.0", "@tokenizer/token@^0.1.1":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3"
|
||||
integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==
|
||||
|
||||
"@types/axios@^0.14.0":
|
||||
version "0.14.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/axios/-/axios-0.14.0.tgz#ec2300fbe7d7dddd7eb9d3abf87999964cafce46"
|
||||
|
@ -1691,9 +1696,9 @@
|
|||
integrity sha512-Bz23oN/5bi0rniKT24ExLf4cK0JdvN3dH/3k0whYkdN4eI4vS2ZW/2ENNn2uxHCzWcbdHIa/GRuWQytfzCjRYw==
|
||||
|
||||
"@types/node@^12.0.12":
|
||||
version "12.12.43"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.43.tgz#b60ce047822e526e7a9252e50844eee79d5386ff"
|
||||
integrity sha512-KUyZdkGCnVPuXfsKmDUu2XLui65LZIJ2s0M57noy5e+ixUT2oK33ep7zlvgzI8LElcWqbf8AR+o/3GqAPac2zA==
|
||||
version "12.12.47"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.47.tgz#5007b8866a2f9150de82335ca7e24dd1d59bdfb5"
|
||||
integrity sha512-yzBInQFhdY8kaZmqoL2+3U5dSTMrKaYcb561VU+lDzAYvqt+2lojvBEy+hmpSNuXnPTx7m9+04CzWYOUqWME2A==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
|
@ -3586,7 +3591,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^2.11.0, commander@^2.12.1, commander@^2.19.0, commander@^2.20.0:
|
||||
commander@^2.11.0, commander@^2.12.1, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0:
|
||||
version "2.20.3"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||
|
@ -4617,10 +4622,10 @@ electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.413:
|
|||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.459.tgz#49a43d78f60b5bf42312b636f3af43c695e0c652"
|
||||
integrity sha512-aN3Z89qEYIwVjzGi9SrcTjjopRZ3STUA6xTufS0fxZy8xOO2iqVw8rYKdT32CHgOKHOYj5KGmz3n6xUKE4QJiQ==
|
||||
|
||||
electron@^8.3.0:
|
||||
version "8.3.1"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-8.3.1.tgz#79e98c4d5b8e7c09a8a811f1aa78903f0c692721"
|
||||
integrity sha512-VZpgLVFyD2SwFDkO9rwUcNgrAMah+g38FEtALGxli8bRVTbcHl8bt21szfa0YUWpc6hWcaf6JdZjqDS5q73Bsg==
|
||||
electron@8.3.0:
|
||||
version "8.3.0"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-8.3.0.tgz#c2b565a4c10d6d287d20164bcd5a478468b940a9"
|
||||
integrity sha512-XRjiIJICZCgUr2vKSUI2PTkfP0gPFqCtqJUaTJSfCTuE3nTrxBKOUNeRMuCzEqspKkpFQU3SB3MdbMSHmZARlQ==
|
||||
dependencies:
|
||||
"@electron/get" "^1.0.1"
|
||||
"@types/node" "^12.0.12"
|
||||
|
@ -5376,6 +5381,16 @@ file-loader@4.3.0:
|
|||
loader-utils "^1.2.3"
|
||||
schema-utils "^2.5.0"
|
||||
|
||||
file-type@^14.6.2:
|
||||
version "14.6.2"
|
||||
resolved "https://registry.yarnpkg.com/file-type/-/file-type-14.6.2.tgz#5bf69c0d8c39de525d3d9de23d81a3b6e81cf69a"
|
||||
integrity sha512-kSZTAJxPXBdBgJyoC7TexkBWoMI/D1Gas6aTtAn9VIRFwCehwiluGV5O8O2GwqO5zIqeEvXxEKl/xfcaAKB0Yg==
|
||||
dependencies:
|
||||
readable-web-to-node-stream "^2.0.0"
|
||||
strtok3 "^6.0.3"
|
||||
token-types "^2.0.0"
|
||||
typedarray-to-buffer "^3.1.5"
|
||||
|
||||
file-uri-to-path@1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
|
||||
|
@ -5548,6 +5563,16 @@ for-own@^0.1.3:
|
|||
dependencies:
|
||||
for-in "^1.0.1"
|
||||
|
||||
foreman@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/foreman/-/foreman-3.0.1.tgz#805f28afc5a4bbaf08dbb1f5018c557dcbb8a410"
|
||||
integrity sha512-ek/qoM0vVKpxzkBUQN9k4Fs7l0XsHv4bqxuEW6oqIS4s0ouYKsQ19YjBzUJKTFRumFiSpUv7jySkrI6lfbhjlw==
|
||||
dependencies:
|
||||
commander "^2.15.1"
|
||||
http-proxy "^1.17.0"
|
||||
mustache "^2.2.1"
|
||||
shell-quote "^1.6.1"
|
||||
|
||||
forever-agent@~0.6.1:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
|
||||
|
@ -6344,7 +6369,7 @@ identity-obj-proxy@3.0.0:
|
|||
dependencies:
|
||||
harmony-reflect "^1.4.6"
|
||||
|
||||
ieee754@^1.1.4, ieee754@^1.1.6:
|
||||
ieee754@^1.1.13, ieee754@^1.1.4, ieee754@^1.1.6:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84"
|
||||
integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==
|
||||
|
@ -7764,7 +7789,7 @@ loader-utils@1.2.3:
|
|||
emojis-list "^2.0.0"
|
||||
json5 "^1.0.1"
|
||||
|
||||
loader-utils@^1.0.0, loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
|
||||
loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
|
||||
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
|
||||
|
@ -8314,6 +8339,11 @@ multicast-dns@^6.0.1:
|
|||
dns-packet "^1.3.1"
|
||||
thunky "^1.0.2"
|
||||
|
||||
mustache@^2.2.1:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.yarnpkg.com/mustache/-/mustache-2.3.2.tgz#a6d4d9c3f91d13359ab889a812954f9230a3d0c5"
|
||||
integrity sha512-KpMNwdQsYz3O/SBS1qJ/o3sqUJ5wSb8gb0pul8CO0S56b9Y2ALm8zCfsjPXsqGFfoNBkDwZuZIAjhsZI03gYVQ==
|
||||
|
||||
mute-stream@0.0.8:
|
||||
version "0.0.8"
|
||||
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
|
||||
|
@ -8397,11 +8427,6 @@ node-dir@^0.1.10:
|
|||
dependencies:
|
||||
minimatch "^3.0.2"
|
||||
|
||||
node-ensure@^0.0.0:
|
||||
version "0.0.0"
|
||||
resolved "https://registry.yarnpkg.com/node-ensure/-/node-ensure-0.0.0.tgz#ecae764150de99861ec5c810fd5d096b183932a7"
|
||||
integrity sha1-7K52QVDemYYexcgQ/V0Jaxg5Mqc=
|
||||
|
||||
node-forge@0.9.0:
|
||||
version "0.9.0"
|
||||
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.9.0.tgz#d624050edbb44874adca12bb9a52ec63cb782579"
|
||||
|
@ -9168,13 +9193,15 @@ pbkdf2@^3.0.3:
|
|||
safe-buffer "^5.0.1"
|
||||
sha.js "^2.4.8"
|
||||
|
||||
pdfjs-dist@2.3.200:
|
||||
version "2.3.200"
|
||||
resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-2.3.200.tgz#2920dc28ae7f2b8313cd6d6223c97ae85ac07eac"
|
||||
integrity sha512-+8wBjU5h8LPZOIvR9X2uCrp/8xWQG1DRDKMLg5lzGN1qyIAZlYUxA0KQyy12Nw5jN7ozulC6v97PMaDcLgAcFg==
|
||||
dependencies:
|
||||
node-ensure "^0.0.0"
|
||||
worker-loader "^2.0.0"
|
||||
pdfjs-dist@^2.4.456:
|
||||
version "2.4.456"
|
||||
resolved "https://registry.yarnpkg.com/pdfjs-dist/-/pdfjs-dist-2.4.456.tgz#0eaad2906cda866bbb393e79a0e5b4e68bd75520"
|
||||
integrity sha512-yckJEHq3F48hcp6wStEpbN9McOj328Ib09UrBlGAKxvN2k+qYPN5iq6TH6jD1C0pso7zTep+g/CKsYgdrQd5QA==
|
||||
|
||||
peek-readable@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.0.tgz#250b08b7de09db8573d7fd8ea475215bbff14348"
|
||||
integrity sha512-KGuODSTV6hcgdZvDrIDBUkN0utcAVj1LL7FfGbM0viKTtCHmtZcuEJ+lGqsp0fTFkGqesdtemV2yUSMeyy3ddA==
|
||||
|
||||
pend@~1.2.0:
|
||||
version "1.2.0"
|
||||
|
@ -10738,6 +10765,11 @@ readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.6.0:
|
|||
string_decoder "^1.1.1"
|
||||
util-deprecate "^1.0.1"
|
||||
|
||||
readable-web-to-node-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-2.0.0.tgz#751e632f466552ac0d5c440cc01470352f93c4b7"
|
||||
integrity sha512-+oZJurc4hXpaaqsN68GoZGQAQIA3qr09Or4fqEsargABnbe5Aau8hFn6ISVleT3cpY/0n/8drn7huyyEvTbghA==
|
||||
|
||||
readdirp@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
|
||||
|
@ -11323,14 +11355,6 @@ scheduler@^0.19.1:
|
|||
loose-envify "^1.1.0"
|
||||
object-assign "^4.1.1"
|
||||
|
||||
schema-utils@^0.4.0:
|
||||
version "0.4.7"
|
||||
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-0.4.7.tgz#ba74f597d2be2ea880131746ee17d0a093c68187"
|
||||
integrity sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==
|
||||
dependencies:
|
||||
ajv "^6.1.0"
|
||||
ajv-keywords "^3.1.0"
|
||||
|
||||
schema-utils@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-1.0.0.tgz#0b79a93204d7b600d4b2850d1f66c2a34951c770"
|
||||
|
@ -11551,7 +11575,7 @@ shebang-regex@^3.0.0:
|
|||
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
shell-quote@1.7.2:
|
||||
shell-quote@1.7.2, shell-quote@^1.6.1:
|
||||
version "1.7.2"
|
||||
resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2"
|
||||
integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==
|
||||
|
@ -12092,6 +12116,16 @@ strip-json-comments@~2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
|
||||
integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo=
|
||||
|
||||
strtok3@^6.0.3:
|
||||
version "6.0.3"
|
||||
resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.3.tgz#bc81e225c19a909eab86538ff3348c4b3b0553d3"
|
||||
integrity sha512-/3RaYN9rW5WEYNHSvn081CgL4HziT027hfi5tsksbPfeWxi3BSLb8tolZDzpYU3I78/0ZqRiFpMDAqN2t4YShA==
|
||||
dependencies:
|
||||
"@tokenizer/token" "^0.1.1"
|
||||
"@types/debug" "^4.1.5"
|
||||
debug "^4.1.1"
|
||||
peek-readable "^3.1.0"
|
||||
|
||||
style-loader@0.23.1:
|
||||
version "0.23.1"
|
||||
resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.23.1.tgz#cb9154606f3e771ab6c4ab637026a1049174d925"
|
||||
|
@ -12381,6 +12415,14 @@ toidentifier@1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
||||
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
||||
|
||||
token-types@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.0.0.tgz#b23618af744818299c6fbf125e0fdad98bab7e85"
|
||||
integrity sha512-WWvu8sGK8/ZmGusekZJJ5NM6rRVTTDO7/bahz4NGiSDb/XsmdYBn6a1N/bymUHuWYTWeuLUg98wUzvE4jPdCZw==
|
||||
dependencies:
|
||||
"@tokenizer/token" "^0.1.0"
|
||||
ieee754 "^1.1.13"
|
||||
|
||||
tough-cookie@^2.3.3, tough-cookie@^2.3.4, tough-cookie@^2.4.3, tough-cookie@^2.5.0, tough-cookie@~2.5.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
|
||||
|
@ -13263,14 +13305,6 @@ worker-farm@^1.7.0:
|
|||
dependencies:
|
||||
errno "~0.1.7"
|
||||
|
||||
worker-loader@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/worker-loader/-/worker-loader-2.0.0.tgz#45fda3ef76aca815771a89107399ee4119b430ac"
|
||||
integrity sha512-tnvNp4K3KQOpfRnD20m8xltE3eWh89Ye+5oj7wXEEHKac1P4oZ6p9oTj8/8ExqoSBnk9nu5Pr4nKfQ1hn2APJw==
|
||||
dependencies:
|
||||
loader-utils "^1.0.0"
|
||||
schema-utils "^0.4.0"
|
||||
|
||||
worker-rpc@^0.1.0:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/worker-rpc/-/worker-rpc-0.1.1.tgz#cb565bd6d7071a8f16660686051e969ad32f54d5"
|
||||
|
|