Merge pull request #581 from hashicorp/ICU-1356-enable-windows-platform-support
[desktop] Enable windows platform support
This commit is contained in:
19 files changed
+1605
-1435
No files matched your search
@@ -122,11 +122,20 @@ yarn install
|
||||
yarn build:ui:desktop
|
||||
```
|
||||
|
||||
In windows, UI is generated using docker to provide a stable UI across platforms.
|
||||
|
||||
```cmd
|
||||
yarn install
|
||||
docker-compose -f docker-compose-embedding.yml run build-desktop-production
|
||||
yarn build:ui:desktop:app
|
||||
```
|
||||
|
||||
To provide a signing identify for macOS build, use `BOUNDARY_DESKTOP_SIGNING_IDENTITY`
|
||||
environment variable to set signing certificate name (e.g Developer ID Application: * (*)).
|
||||
environment variable to set signing certificate name (e.g Developer ID Application: * (*)) when building desktop app using `yarn build:ui:desktop:app`.
|
||||
|
||||
Assets are saved to `ui/desktop/electron-app/out/make/`.
|
||||
DMG packaged desktop UI is available at asset location as `boundary.dmg`.
|
||||
EXE archived desktop UI is available at asset location under `zip` folder.
|
||||
|
||||
### Connect Boundary UI to Boundary local instance
|
||||
|
||||
|
||||
@@ -76,8 +76,9 @@ export default class StorageService extends Service {
|
||||
const inMemory = get(config, 'storage.memory');
|
||||
// Get the global context object (window) via service lookup,
|
||||
// because just reaching for a global is icky
|
||||
const globalContext = getOwner(this).lookup('service:-document')
|
||||
.documentElement.parentNode.defaultView;
|
||||
const globalContext =
|
||||
getOwner(this).lookup('service:-document').documentElement.parentNode
|
||||
.defaultView;
|
||||
// If memory storage enabled, return the memory storage instance,
|
||||
// otherwise return localStorage.
|
||||
return inMemory ? this.#memoryStorage : globalContext.localStorage;
|
||||
|
||||
@@ -72,10 +72,9 @@ export default class BaseAuthenticator extends SimpleAuthBaseAuthenticator {
|
||||
*/
|
||||
async restore(data) {
|
||||
if (!data) return reject();
|
||||
return this.validateToken(
|
||||
data.attributes.token,
|
||||
data.attributes.id
|
||||
).then(() => this.normalizeData(data));
|
||||
return this.validateToken(data.attributes.token, data.attributes.id).then(
|
||||
() => this.normalizeData(data)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -76,8 +76,8 @@ export default class OIDCAuthenticator extends BaseOIDCAuthenticator {
|
||||
* @param {string} token
|
||||
*/
|
||||
addTokenToAuthorization(token) {
|
||||
const adapterPrototype = this.store.adapterFor('application').constructor
|
||||
.prototype;
|
||||
const adapterPrototype =
|
||||
this.store.adapterFor('application').constructor.prototype;
|
||||
const headers = adapterPrototype?.headers;
|
||||
if (!headers) adapterPrototype.headers = {};
|
||||
adapterPrototype.headers.Authorization = null;
|
||||
|
||||
@@ -91,8 +91,8 @@ export default class PasswordAuthenticator extends BasePasswordAuthenticator {
|
||||
* @param {string} token
|
||||
*/
|
||||
addTokenToAuthorization(token) {
|
||||
const adapterPrototype = this.store.adapterFor('application').constructor
|
||||
.prototype;
|
||||
const adapterPrototype =
|
||||
this.store.adapterFor('application').constructor.prototype;
|
||||
const headers = adapterPrototype?.headers;
|
||||
if (!headers) adapterPrototype.headers = {};
|
||||
adapterPrototype.headers.Authorization = null;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
"build:ui:admin": "cd ui/admin && yarn build",
|
||||
"build:ui:desktop": "cd ui/desktop && yarn build",
|
||||
"build:ui:desktop:production": "cd ui/desktop && yarn build:production",
|
||||
"build:ui:desktop:app": "cd ui/desktop && yarn build:desktop",
|
||||
"lint": "npm-run-all lint:*",
|
||||
"lint:addons-api": "cd addons/api && yarn lint",
|
||||
"lint:addons-auth": "cd addons/auth && yarn lint",
|
||||
|
||||
@@ -217,6 +217,7 @@
|
||||
.rose-layout-global .rose-layout-global-body {
|
||||
main {
|
||||
flex-grow: 1;
|
||||
overflow: auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
@@ -1,25 +1,39 @@
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const https = require('https');
|
||||
const decompress = require('decompress');
|
||||
const os = require('os');
|
||||
const { isMac, isWindows } = require('../src/helpers/platform.js');
|
||||
|
||||
const artifactVersion = '0.2.2';
|
||||
const artifactVersion = '0.2.3';
|
||||
const artifactDestination = path.resolve(__dirname, '..', 'cli');
|
||||
|
||||
const downloadArtifact = version => {
|
||||
const url = `https://releases.hashicorp.com/boundary/${version}/boundary_${version}_darwin_amd64.zip`;
|
||||
const downloadArtifact = (version) => {
|
||||
const archivePlatform = {};
|
||||
// TODO: Support all available build machines
|
||||
if (isMac()) {
|
||||
archivePlatform.name = 'darwin';
|
||||
archivePlatform.arch = 'amd64';
|
||||
}
|
||||
|
||||
if (isWindows()) {
|
||||
archivePlatform.name = 'windows';
|
||||
archivePlatform.arch = 'amd64';
|
||||
}
|
||||
|
||||
const archiveName = `boundary_${version}_${archivePlatform.name}_${archivePlatform.arch}.zip`;
|
||||
const url = `https://releases.hashicorp.com/boundary/${version}/${archiveName}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'boundary-artifact-'));
|
||||
console.log('Create tmp artifact directory: ', tmpDir);
|
||||
|
||||
const artifactFileName = url.split('/').pop();
|
||||
if(!artifactFileName) reject('Could not find artifact filename in: ', url);
|
||||
if (!artifactFileName) reject('Could not find artifact filename in: ', url);
|
||||
|
||||
const artifactPath = path.resolve(tmpDir, artifactFileName);
|
||||
console.log('Download artifact url: ', url);
|
||||
https.get(url, (response) => {
|
||||
const stream = response.pipe(fs.createWriteStream(artifactPath))
|
||||
const stream = response.pipe(fs.createWriteStream(artifactPath));
|
||||
stream.on('close', () => resolve(artifactPath));
|
||||
stream.on('error', reject);
|
||||
});
|
||||
@@ -34,7 +48,7 @@ const extract = (artifactPath, destination) => {
|
||||
|
||||
module.exports = {
|
||||
setup: async () => {
|
||||
const artifactPath = await downloadArtifact(artifactVersion);
|
||||
await extract(artifactPath, artifactDestination);
|
||||
const artifactPath = await downloadArtifact(artifactVersion);
|
||||
await extract(artifactPath, artifactDestination);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
// Create config for use in electron forge
|
||||
// Create config
|
||||
const createConfig = () => {
|
||||
const config = {
|
||||
name: 'boundary',
|
||||
@@ -15,9 +15,9 @@ const createConfig = () => {
|
||||
return config;
|
||||
};
|
||||
|
||||
// Save config file
|
||||
// Save config to file
|
||||
const saveConfig = (config, destination) => {
|
||||
const configPath = `${destination}/config.js`;
|
||||
const configPath = path.join(destination, 'config.js');
|
||||
const content = `module.exports = ${JSON.stringify(config, null, 2)}`;
|
||||
fs.writeFileSync(configPath, content);
|
||||
console.log(`Create: ${configPath}`);
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
// Generated during build
|
||||
const config = require('./config.js');
|
||||
const { isMac } = require('../src/helpers/platform.js');
|
||||
|
||||
console.log(`\n[forge-config] Release commit: ${config.releaseCommit}`);
|
||||
console.log(`[forge-config] Release version: ${config.releaseVersion}`);
|
||||
|
||||
// MacOS signing identity
|
||||
if (process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY)
|
||||
if (isMac() && !process.env.BOUNDARY_DESKTOP_SIGNING_IDENTITY)
|
||||
console.warn(
|
||||
'[forge-config] WARNING: Could not find signing identity. Proceeding without signing.'
|
||||
);
|
||||
@@ -39,5 +40,8 @@ module.exports = {
|
||||
background: './assets/macos/background.png',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '@electron-forge/maker-squirrel',
|
||||
},
|
||||
],
|
||||
};
|
||||
@@ -8,8 +8,8 @@
|
||||
"author": "HashiCorp",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"build:cli": "node -e 'require(\"./config/cli.js\").setup()'",
|
||||
"build:config": "node -e 'require(\"./config/desktop.js\").setup()'",
|
||||
"build:cli": "node -e \"require('./config/cli.js').setup()\"",
|
||||
"build:config": "node -e \"require('./config/desktop.js').setup()\"",
|
||||
"start": "electron-forge start",
|
||||
"package": "electron-forge package",
|
||||
"premake": "yarn build:cli && yarn build:config",
|
||||
@@ -33,6 +33,7 @@
|
||||
"devDependencies": {
|
||||
"@electron-forge/cli": "6.0.0-beta.54",
|
||||
"@electron-forge/maker-dmg": "^6.0.0-beta.54",
|
||||
"@electron-forge/maker-squirrel": "^6.0.0-beta.55",
|
||||
"@electron-forge/maker-zip": "^6.0.0-beta.54",
|
||||
"decompress": "^4.2.1",
|
||||
"devtron": "^1.4.0",
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
const path = require('path');
|
||||
const { isWindows } = require('../helpers/platform.js');
|
||||
const { spawnSync } = require('../helpers/spawn-promise.js');
|
||||
|
||||
const cliPath = async () => path.resolve(__dirname, '..', '..', 'cli', 'boundary');
|
||||
const cliPath = async () => {
|
||||
let name = 'boundary';
|
||||
if (isWindows()) name = 'boundary.exe';
|
||||
return path.resolve(__dirname, '..', 'cli', name);
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
// Check boundary cli existence
|
||||
|
||||
@@ -1,30 +1,33 @@
|
||||
const { shell, dialog } = require('electron');
|
||||
const appUpdater = require('../helpers/app-updater.js');
|
||||
const { isMac, isWindows } = require('../helpers/platform.js');
|
||||
const config = require('../../config/config.js');
|
||||
const { version } = require('../cli/index.js');
|
||||
|
||||
const generateMenuTemplate = () => {
|
||||
const aboutDialog = () => {
|
||||
const appVersion = `Version: ${config.releaseVersion}`;
|
||||
const appCommit = `Commit: ${config.releaseCommit}`;
|
||||
const cliVersion = version().formatted;
|
||||
const copyright = config.copyright;
|
||||
|
||||
const dialogOpts = {
|
||||
type: 'none',
|
||||
message: config.productName,
|
||||
detail: `${appVersion}\n${appCommit}\n\n${cliVersion}\n\n${copyright}`,
|
||||
};
|
||||
dialog.showMessageBox(dialogOpts);
|
||||
}
|
||||
|
||||
return [
|
||||
// { role: 'appMenu' }
|
||||
{
|
||||
...(isMac() ? [{
|
||||
label: 'Boundary',
|
||||
submenu: [
|
||||
// { role: 'about' },
|
||||
{
|
||||
label: `About ${config.productName}`,
|
||||
click: () => {
|
||||
const appVersion = `Version: ${config.releaseVersion}`;
|
||||
const appCommit = `Commit: ${config.releaseCommit}`;
|
||||
const cliVersion = version().formatted;
|
||||
const copyright = config.copyright;
|
||||
|
||||
const dialogOpts = {
|
||||
type: 'none',
|
||||
message: config.productName,
|
||||
detail: `${appVersion}\n${appCommit}\n\n${cliVersion}\n\n${copyright}`,
|
||||
};
|
||||
dialog.showMessageBox(dialogOpts);
|
||||
},
|
||||
click: aboutDialog,
|
||||
},
|
||||
{
|
||||
id: 'update',
|
||||
@@ -40,7 +43,7 @@ const generateMenuTemplate = () => {
|
||||
{ type: 'separator' },
|
||||
{ role: 'quit' },
|
||||
],
|
||||
},
|
||||
}] : []),
|
||||
// { role: 'fileMenu' }
|
||||
{
|
||||
label: 'File',
|
||||
@@ -56,14 +59,23 @@ const generateMenuTemplate = () => {
|
||||
{ role: 'cut' },
|
||||
{ role: 'copy' },
|
||||
{ role: 'paste' },
|
||||
{ role: 'pasteAndMatchStyle' },
|
||||
{ role: 'delete' },
|
||||
{ role: 'selectAll' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Speech',
|
||||
submenu: [{ role: 'startSpeaking' }, { role: 'stopSpeaking' }],
|
||||
},
|
||||
...(isMac() ? [
|
||||
{ role: 'pasteAndMatchStyle' },
|
||||
{ role: 'delete' },
|
||||
{ role: 'selectAll' },
|
||||
{ type: 'separator' },
|
||||
{
|
||||
label: 'Speech',
|
||||
submenu: [
|
||||
{ role: 'startspeaking' },
|
||||
{ role: 'stopspeaking' }
|
||||
]
|
||||
}
|
||||
] : [
|
||||
{ role: 'delete' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'selectAll' }
|
||||
]),
|
||||
],
|
||||
},
|
||||
// { role: 'viewMenu' }
|
||||
@@ -86,10 +98,14 @@ const generateMenuTemplate = () => {
|
||||
submenu: [
|
||||
{ role: 'minimize' },
|
||||
{ role: 'zoom' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'front' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'window' },
|
||||
...(isMac() ? [
|
||||
{ type: 'separator' },
|
||||
{ role: 'front' },
|
||||
{ type: 'separator' },
|
||||
{ role: 'window' }
|
||||
] : [
|
||||
{ role: 'close' }
|
||||
])
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -99,6 +115,13 @@ const generateMenuTemplate = () => {
|
||||
label: 'Documentation',
|
||||
click: () => shell.openExternal('https://www.boundaryproject.io'),
|
||||
},
|
||||
...(isWindows() ? [
|
||||
// { role: 'about' },
|
||||
{
|
||||
label: `About ${config.productName}`,
|
||||
click: aboutDialog,
|
||||
},
|
||||
] : [])
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
@@ -50,7 +50,7 @@ const createAppUpdaterConfig = (url, version, destination) => {
|
||||
console.log(`[app-updater] url: ${url}, destination: ${destination}`);
|
||||
const json = { url, version };
|
||||
const config = JSON.stringify(json);
|
||||
const configPath = `${destination}/feed.json`;
|
||||
const configPath = path.join(destination, 'feed.json');
|
||||
if (debug) console.log(`[app-updater] config: ${config}`);
|
||||
fs.writeFileSync(configPath, config);
|
||||
return configPath;
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
const os = require('os');
|
||||
|
||||
module.exports = {
|
||||
isMac: () => Boolean(os.platform().match(/(darwin)/i)),
|
||||
isWindows: () => Boolean(os.platform().match(/(win32)/i)),
|
||||
};
|
||||
@@ -13,6 +13,17 @@
|
||||
ora "^5.0.0"
|
||||
pretty-ms "^7.0.0"
|
||||
|
||||
"@electron-forge/async-ora@6.0.0-beta.55":
|
||||
version "6.0.0-beta.55"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.55.tgz#9d6240f704e826fa284c76a36099062f29870049"
|
||||
integrity sha512-B5td9OP13wn5zQO6mcJp99dsckKA33qsCy8uyoBeaS5pRlX3DPzJjoP+rlmAgHDeEBbay/PzbgZjeB1bCJpAQA==
|
||||
dependencies:
|
||||
colors "^1.4.0"
|
||||
debug "^4.3.1"
|
||||
log-symbols "^4.0.0"
|
||||
ora "^5.0.0"
|
||||
pretty-ms "^7.0.0"
|
||||
|
||||
"@electron-forge/cli@6.0.0-beta.54":
|
||||
version "6.0.0-beta.54"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-6.0.0-beta.54.tgz#5105b1eab38f8f66d39903174f49428c155dbb0e"
|
||||
@@ -144,6 +155,15 @@
|
||||
fs-extra "^9.0.1"
|
||||
which "^2.0.2"
|
||||
|
||||
"@electron-forge/maker-base@6.0.0-beta.55":
|
||||
version "6.0.0-beta.55"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.55.tgz#344784dd26e77c7ff61aa6fdd093cf32e2d18bbc"
|
||||
integrity sha512-fsRj+RAkOtAZNm2y6e7HKF/FQEaIbujqaTtfcKVL401FMCfb8+Y/LuXDnulMTenLfXDtpMvgMiDGMKAnxa8pUQ==
|
||||
dependencies:
|
||||
"@electron-forge/shared-types" "6.0.0-beta.55"
|
||||
fs-extra "^9.0.1"
|
||||
which "^2.0.2"
|
||||
|
||||
"@electron-forge/maker-dmg@^6.0.0-beta.54":
|
||||
version "6.0.0-beta.54"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/maker-dmg/-/maker-dmg-6.0.0-beta.54.tgz#c3777b28c30c03b3dc18d1ca332d27f8c78c65b1"
|
||||
@@ -155,6 +175,17 @@
|
||||
optionalDependencies:
|
||||
electron-installer-dmg "^3.0.0"
|
||||
|
||||
"@electron-forge/maker-squirrel@^6.0.0-beta.55":
|
||||
version "6.0.0-beta.55"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/maker-squirrel/-/maker-squirrel-6.0.0-beta.55.tgz#f0540ea7c0bee9ad4d4dd1e4a4d7f7a22b17216a"
|
||||
integrity sha512-2ugnVUA1His7nquOtqXjmEFcfVqBV2WWKlEYb4T71aw4Sq+Dzsu3EPmcIjR7dtU8mBrQxRt0EYcz/ZDtgZOPag==
|
||||
dependencies:
|
||||
"@electron-forge/maker-base" "6.0.0-beta.55"
|
||||
"@electron-forge/shared-types" "6.0.0-beta.55"
|
||||
fs-extra "^9.0.1"
|
||||
optionalDependencies:
|
||||
electron-winstaller "^5.0.0"
|
||||
|
||||
"@electron-forge/maker-zip@^6.0.0-beta.54":
|
||||
version "6.0.0-beta.54"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/maker-zip/-/maker-zip-6.0.0-beta.54.tgz#83d322afd912587fd233e87c30339d8150f29bed"
|
||||
@@ -189,6 +220,16 @@
|
||||
electron-rebuild "^2.0.3"
|
||||
ora "^5.0.0"
|
||||
|
||||
"@electron-forge/shared-types@6.0.0-beta.55":
|
||||
version "6.0.0-beta.55"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.55.tgz#9dfc78d81a20bf95f66d393f723b18767896465a"
|
||||
integrity sha512-tPXnt2Eh1gW8wlk0ieN/IYGgKFPG6LEUUsTh+zPmnsD4Md9M6Tv9nNiUitM5xvVhNZkezJB/Q0K7f9t+6J4sdw==
|
||||
dependencies:
|
||||
"@electron-forge/async-ora" "6.0.0-beta.55"
|
||||
electron-packager "^15.0.0"
|
||||
electron-rebuild "^2.3.2"
|
||||
ora "^5.0.0"
|
||||
|
||||
"@electron-forge/template-base@6.0.0-beta.54":
|
||||
version "6.0.0-beta.54"
|
||||
resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.0-beta.54.tgz#a7f875ac3e70398d0310ee27f38057a566c6176a"
|
||||
@@ -415,6 +456,21 @@ array-find-index@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
|
||||
integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=
|
||||
|
||||
asar@^2.0.1:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/asar/-/asar-2.1.0.tgz#97c6a570408c4e38a18d4a3fb748a621b5a7844e"
|
||||
integrity sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA==
|
||||
dependencies:
|
||||
chromium-pickle-js "^0.2.0"
|
||||
commander "^2.20.0"
|
||||
cuint "^0.2.2"
|
||||
glob "^7.1.3"
|
||||
minimatch "^3.0.4"
|
||||
mkdirp "^0.5.1"
|
||||
tmp-promise "^1.0.5"
|
||||
optionalDependencies:
|
||||
"@types/glob" "^7.1.1"
|
||||
|
||||
asar@^3.0.0:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b"
|
||||
@@ -725,7 +781,7 @@ combined-stream@^1.0.6, combined-stream@~1.0.6:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^2.8.1:
|
||||
commander@^2.20.0, commander@^2.8.1:
|
||||
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==
|
||||
@@ -826,6 +882,11 @@ css-what@^4.0.0:
|
||||
resolved "https://registry.yarnpkg.com/css-what/-/css-what-4.0.0.tgz#35e73761cab2eeb3d3661126b23d7aa0e8432233"
|
||||
integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==
|
||||
|
||||
cuint@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b"
|
||||
integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=
|
||||
|
||||
currently-unhandled@^0.4.1:
|
||||
version "0.4.1"
|
||||
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
|
||||
@@ -854,7 +915,7 @@ debug@^3.1.0, debug@^3.2.6:
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1:
|
||||
debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
|
||||
integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==
|
||||
@@ -1111,7 +1172,7 @@ electron-packager@^15.0.0:
|
||||
semver "^7.1.3"
|
||||
yargs-parser "^20.0.0"
|
||||
|
||||
electron-rebuild@^2.0.3:
|
||||
electron-rebuild@^2.0.3, electron-rebuild@^2.3.2:
|
||||
version "2.3.5"
|
||||
resolved "https://registry.yarnpkg.com/electron-rebuild/-/electron-rebuild-2.3.5.tgz#10dc38d1ffe1515ba2eef8b8be8e973ad1e1d597"
|
||||
integrity sha512-1sQ1DRtQGpglFhc3urD4olMJzt/wxlbnAAsf+WY2xHf5c50ZovivZvCXSpVgTOP9f4TzOMvelWyspyfhxQKHzQ==
|
||||
@@ -1136,6 +1197,17 @@ electron-squirrel-startup@^1.0.0:
|
||||
dependencies:
|
||||
debug "^2.2.0"
|
||||
|
||||
electron-winstaller@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.yarnpkg.com/electron-winstaller/-/electron-winstaller-5.0.0.tgz#0db968f34d498b16c69566a40848f562e70e7bcc"
|
||||
integrity sha512-V+jFda7aVAm0htCG8Q95buPUpmXZW9ujh1HdhSlWY6y4QnJnw4TfrmxTlQWV4p2ioF/71JMI/1YF+/qbSICogA==
|
||||
dependencies:
|
||||
asar "^2.0.1"
|
||||
debug "^4.1.1"
|
||||
fs-extra "^7.0.1"
|
||||
lodash.template "^4.2.2"
|
||||
temp "^0.9.0"
|
||||
|
||||
electron@12.0.2:
|
||||
version "12.0.2"
|
||||
resolved "https://registry.yarnpkg.com/electron/-/electron-12.0.2.tgz#d92be205f1937627bd6718aad44ac161382b4c2d"
|
||||
@@ -1396,7 +1468,7 @@ fs-extra@^4.0.0:
|
||||
jsonfile "^4.0.0"
|
||||
universalify "^0.1.0"
|
||||
|
||||
fs-extra@^7.0.0:
|
||||
fs-extra@^7.0.0, fs-extra@^7.0.1:
|
||||
version "7.0.1"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9"
|
||||
integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==
|
||||
@@ -2080,11 +2152,31 @@ locate-path@^6.0.0:
|
||||
dependencies:
|
||||
p-locate "^5.0.0"
|
||||
|
||||
lodash._reinterpolate@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
|
||||
integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=
|
||||
|
||||
lodash.get@^4.0.0:
|
||||
version "4.4.2"
|
||||
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||
integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=
|
||||
|
||||
lodash.template@^4.2.2:
|
||||
version "4.5.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab"
|
||||
integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==
|
||||
dependencies:
|
||||
lodash._reinterpolate "^3.0.0"
|
||||
lodash.templatesettings "^4.0.0"
|
||||
|
||||
lodash.templatesettings@^4.0.0:
|
||||
version "4.2.0"
|
||||
resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33"
|
||||
integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==
|
||||
dependencies:
|
||||
lodash._reinterpolate "^3.0.0"
|
||||
|
||||
lodash@^4.17.10, lodash@^4.17.19, lodash@^4.17.20:
|
||||
version "4.17.21"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
@@ -3033,7 +3125,7 @@ restore-cursor@^3.1.0:
|
||||
onetime "^5.1.0"
|
||||
signal-exit "^3.0.2"
|
||||
|
||||
rimraf@^2.6.1, rimraf@^2.7.1:
|
||||
rimraf@^2.6.1, rimraf@^2.6.3, rimraf@^2.7.1:
|
||||
version "2.7.1"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec"
|
||||
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
|
||||
@@ -3047,6 +3139,13 @@ rimraf@^3.0.0, rimraf@^3.0.2:
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
rimraf@~2.6.2:
|
||||
version "2.6.3"
|
||||
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab"
|
||||
integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==
|
||||
dependencies:
|
||||
glob "^7.1.3"
|
||||
|
||||
roarr@^2.15.3:
|
||||
version "2.15.4"
|
||||
resolved "https://registry.yarnpkg.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd"
|
||||
@@ -3113,14 +3212,7 @@ semver@^6.2.0:
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
|
||||
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
|
||||
|
||||
semver@^7.1.3, semver@^7.2.1, semver@^7.3.2:
|
||||
version "7.3.5"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
|
||||
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@^7.3.5:
|
||||
semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.5:
|
||||
version "7.3.5"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7"
|
||||
integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
|
||||
@@ -3420,6 +3512,14 @@ tar@^6.0.2, tar@^6.0.5:
|
||||
mkdirp "^1.0.3"
|
||||
yallist "^4.0.0"
|
||||
|
||||
temp@^0.9.0:
|
||||
version "0.9.4"
|
||||
resolved "https://registry.yarnpkg.com/temp/-/temp-0.9.4.tgz#cd20a8580cb63635d0e4e9d4bd989d44286e7620"
|
||||
integrity sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==
|
||||
dependencies:
|
||||
mkdirp "^0.5.1"
|
||||
rimraf "~2.6.2"
|
||||
|
||||
throttleit@0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
|
||||
@@ -3438,6 +3538,21 @@ through@^2.3.6, through@^2.3.8:
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=
|
||||
|
||||
tmp-promise@^1.0.5:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c"
|
||||
integrity sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw==
|
||||
dependencies:
|
||||
bluebird "^3.5.0"
|
||||
tmp "0.1.0"
|
||||
|
||||
tmp@0.1.0:
|
||||
version "0.1.0"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877"
|
||||
integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==
|
||||
dependencies:
|
||||
rimraf "^2.6.3"
|
||||
|
||||
tmp@^0.0.33:
|
||||
version "0.0.33"
|
||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9"
|
||||
|
||||
+13
-5
@@ -11,11 +11,11 @@
|
||||
},
|
||||
"scripts": {
|
||||
"doc:toc": "doctoc README.md",
|
||||
"build": "EMBER_CLI_ELECTRON=true yarn build:production && yarn build:desktop",
|
||||
"build:production": "ember build --environment=production",
|
||||
"build": "yarn build:production && yarn build:desktop",
|
||||
"build:production": "cross-env EMBER_CLI_ELECTRON=true ember build --environment=production",
|
||||
"build:development": "ember build",
|
||||
"prebuild:desktop": "cp -r dist/ electron-app/ember-dist/",
|
||||
"build:desktop": "cd electron-app && yarn make",
|
||||
"prebuild:desktop": "cross-os prebuild:desktop",
|
||||
"build:desktop": "cd electron-app && yarn install && yarn make",
|
||||
"lint": "npm-run-all --aggregate-output --continue-on-error --parallel 'lint:!(fix)'",
|
||||
"lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix",
|
||||
"lint:hbs": "ember-template-lint .",
|
||||
@@ -34,10 +34,16 @@
|
||||
"clean:coverage": "rm -rf coverage_*",
|
||||
"pretest": "yarn clean:coverage",
|
||||
"test": "npm-run-all lint test:*",
|
||||
"test:ember": "COVERAGE=true ember exam --random",
|
||||
"test:ember": "cross-env COVERAGE=true ember exam --random",
|
||||
"postinstall": "cd electron-app && yarn install",
|
||||
"posttest": "ember coverage-merge && yarn clean:coverage"
|
||||
},
|
||||
"cross-os": {
|
||||
"prebuild:desktop": {
|
||||
"darwin": "cp -r dist/ electron-app/ember-dist/",
|
||||
"win32": "(robocopy dist electron-app\\ember-dist /MIR) ^& exit 0"
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"ember-named-blocks-polyfill": "^0.2.4"
|
||||
},
|
||||
@@ -54,6 +60,8 @@
|
||||
"broccoli-asset-rev": "^3.0.0",
|
||||
"clipboard": "^2.0.6",
|
||||
"core": "*",
|
||||
"cross-env": "^7.0.3",
|
||||
"cross-os": "^1.4.0",
|
||||
"doctoc": "^1.4.0",
|
||||
"ember-a11y-testing": "^4.0.2",
|
||||
"ember-auto-import": "^1.10.1",
|
||||
|
||||
Reference in new issue
Block a user