mirror of https://github.com/tauri-apps/tauri
chore: add `.prettierrc` in repo root (#2145)
This commit is contained in:
parent
e0a8e09cab
commit
66916b739f
|
@ -217,41 +217,29 @@
|
|||
"tauri-runtime": {
|
||||
"path": "./core/tauri-runtime",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-utils"
|
||||
],
|
||||
"dependencies": ["tauri-utils"],
|
||||
"postversion": "node ../../.scripts/sync-prerelease.js ${ pkg.pkg } ${ release.type }"
|
||||
},
|
||||
"tauri-runtime-wry": {
|
||||
"path": "./core/tauri-runtime-wry",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-utils",
|
||||
"tauri-runtime"
|
||||
],
|
||||
"dependencies": ["tauri-utils", "tauri-runtime"],
|
||||
"postversion": "node ../../.scripts/sync-prerelease.js ${ pkg.pkg } ${ release.type }"
|
||||
},
|
||||
"tauri-codegen": {
|
||||
"path": "./core/tauri-codegen",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-utils"
|
||||
]
|
||||
"dependencies": ["tauri-utils"]
|
||||
},
|
||||
"tauri-macros": {
|
||||
"path": "./core/tauri-macros",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-codegen"
|
||||
]
|
||||
"dependencies": ["tauri-codegen"]
|
||||
},
|
||||
"tauri-build": {
|
||||
"path": "./core/tauri-build",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-codegen",
|
||||
"tauri-utils"
|
||||
],
|
||||
"dependencies": ["tauri-codegen", "tauri-utils"],
|
||||
"postversion": "node ../../.scripts/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }"
|
||||
},
|
||||
"tauri": {
|
||||
|
@ -268,9 +256,7 @@
|
|||
"cli.js": {
|
||||
"path": "./tooling/cli.js",
|
||||
"manager": "javascript",
|
||||
"dependencies": [
|
||||
"cli.rs"
|
||||
],
|
||||
"dependencies": ["cli.rs"],
|
||||
"postversion": "node ../../.scripts/sync-cli-metadata.js ${ pkg.pkg } ${ release.type }",
|
||||
"assets": [
|
||||
{
|
||||
|
@ -282,9 +268,7 @@
|
|||
"cli.rs": {
|
||||
"path": "./tooling/cli.rs",
|
||||
"manager": "rust",
|
||||
"dependencies": [
|
||||
"tauri-bundler"
|
||||
],
|
||||
"dependencies": ["tauri-bundler"],
|
||||
"postversion": "cargo check"
|
||||
},
|
||||
"create-tauri-app": {
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
module.exports = {
|
||||
singleQuote: true,
|
||||
semi: false,
|
||||
trailingComma: 'none'
|
||||
}
|
|
@ -10,36 +10,36 @@ we should look to find a more "rusty way" to import / "pin" a version value in o
|
|||
rust binaries.
|
||||
*/
|
||||
|
||||
const { readFileSync, writeFileSync } = require("fs");
|
||||
const { readFileSync, writeFileSync } = require('fs')
|
||||
|
||||
const filePath = `../../tooling/cli.rs/metadata.json`;
|
||||
const packageNickname = process.argv[2];
|
||||
const bump = process.argv[3];
|
||||
if (bump !== "prerelease") {
|
||||
const filePath = `../../tooling/cli.rs/metadata.json`
|
||||
const packageNickname = process.argv[2]
|
||||
const bump = process.argv[3]
|
||||
if (bump !== 'prerelease') {
|
||||
throw new Error(
|
||||
`We don't handle anything except prerelease right now. Exiting.`
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
const inc = (version) => {
|
||||
const v = version.split("");
|
||||
const n = v.pop();
|
||||
return [...v, String(Number(n) + 1)].join("");
|
||||
};
|
||||
|
||||
// read file into js object
|
||||
const metadata = JSON.parse(readFileSync(filePath, "utf-8"));
|
||||
|
||||
// set field version
|
||||
let version;
|
||||
if (packageNickname === "cli.js") {
|
||||
version = inc(metadata[packageNickname].version);
|
||||
metadata[packageNickname].version = version;
|
||||
} else {
|
||||
version = inc(metadata[packageNickname]);
|
||||
metadata[packageNickname] = version;
|
||||
const v = version.split('')
|
||||
const n = v.pop()
|
||||
return [...v, String(Number(n) + 1)].join('')
|
||||
}
|
||||
|
||||
writeFileSync(filePath, JSON.stringify(metadata, null, 2) + "\n");
|
||||
console.log(`wrote ${version} for ${packageNickname} into metadata.json`);
|
||||
console.dir(metadata);
|
||||
// read file into js object
|
||||
const metadata = JSON.parse(readFileSync(filePath, 'utf-8'))
|
||||
|
||||
// set field version
|
||||
let version
|
||||
if (packageNickname === 'cli.js') {
|
||||
version = inc(metadata[packageNickname].version)
|
||||
metadata[packageNickname].version = version
|
||||
} else {
|
||||
version = inc(metadata[packageNickname])
|
||||
metadata[packageNickname] = version
|
||||
}
|
||||
|
||||
writeFileSync(filePath, JSON.stringify(metadata, null, 2) + '\n')
|
||||
console.log(`wrote ${version} for ${packageNickname} into metadata.json`)
|
||||
console.dir(metadata)
|
||||
|
|
|
@ -8,7 +8,7 @@ This script is solely intended to be run as part of the `covector version` step
|
|||
keep the `tauri-runtime`, `tauri-runtime-wry` and `tauri-driver` crates version without the `beta` or `beta-rc` suffix.
|
||||
*/
|
||||
|
||||
const { readFileSync, writeFileSync } = require("fs")
|
||||
const { readFileSync, writeFileSync } = require('fs')
|
||||
|
||||
const packageNickname = process.argv[2]
|
||||
const bump = process.argv[3]
|
||||
|
@ -19,7 +19,10 @@ let changelogPath
|
|||
|
||||
if (packageNickname === 'tauri-runtime') {
|
||||
manifestPath = '../../core/tauri-runtime/Cargo.toml'
|
||||
dependencyManifestPaths = ['../../core/tauri/Cargo.toml', '../../core/tauri-runtime-wry/Cargo.toml']
|
||||
dependencyManifestPaths = [
|
||||
'../../core/tauri/Cargo.toml',
|
||||
'../../core/tauri-runtime-wry/Cargo.toml'
|
||||
]
|
||||
changelogPath = '../../core/tauri-runtime/CHANGELOG.md'
|
||||
} else if (packageNickname === 'tauri-runtime-wry') {
|
||||
manifestPath = '../../core/tauri-runtime-wry/Cargo.toml'
|
||||
|
@ -33,16 +36,24 @@ if (packageNickname === 'tauri-runtime') {
|
|||
throw new Error(`Unexpected package ${packageNickname}`)
|
||||
}
|
||||
|
||||
let manifest = readFileSync(manifestPath, "utf-8")
|
||||
manifest = manifest.replace(/version = "(\d+\.\d+\.\d+)-[^0-9\.]+\.0"/, 'version = "$1"')
|
||||
let manifest = readFileSync(manifestPath, 'utf-8')
|
||||
manifest = manifest.replace(
|
||||
/version = "(\d+\.\d+\.\d+)-[^0-9\.]+\.0"/,
|
||||
'version = "$1"'
|
||||
)
|
||||
writeFileSync(manifestPath, manifest)
|
||||
|
||||
let changelog = readFileSync(changelogPath, "utf-8")
|
||||
let changelog = readFileSync(changelogPath, 'utf-8')
|
||||
changelog = changelog.replace(/(\d+\.\d+\.\d+)-[^0-9\.]+\.0/, '$1')
|
||||
writeFileSync(changelogPath, changelog)
|
||||
|
||||
for (const dependencyManifestPath of dependencyManifestPaths) {
|
||||
let dependencyManifest = readFileSync(dependencyManifestPath, "utf-8")
|
||||
dependencyManifest = dependencyManifest.replace(new RegExp(packageNickname + ' = { version = "(\\d+\\.\\d+\.\\d+)-[^0-9\.]+\.0"'), `${packageNickname} = { version = "$1"`)
|
||||
let dependencyManifest = readFileSync(dependencyManifestPath, 'utf-8')
|
||||
dependencyManifest = dependencyManifest.replace(
|
||||
new RegExp(
|
||||
packageNickname + ' = { version = "(\\d+\\.\\d+.\\d+)-[^0-9.]+.0"'
|
||||
),
|
||||
`${packageNickname} = { version = "$1"`
|
||||
)
|
||||
writeFileSync(dependencyManifestPath, dependencyManifest)
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
// polyfills
|
||||
if (!String.prototype.startsWith) {
|
||||
String.prototype.startsWith = function (searchString, position) {
|
||||
position = position || 0;
|
||||
return this.substr(position, searchString.length) === searchString;
|
||||
};
|
||||
position = position || 0
|
||||
return this.substr(position, searchString.length) === searchString
|
||||
}
|
||||
}
|
||||
|
||||
(function () {
|
||||
;(function () {
|
||||
function uid() {
|
||||
const length = new Int8Array(1)
|
||||
window.crypto.getRandomValues(length)
|
||||
|
@ -20,41 +20,41 @@ if (!String.prototype.startsWith) {
|
|||
}
|
||||
|
||||
function ownKeys(object, enumerableOnly) {
|
||||
var keys = Object.keys(object);
|
||||
var keys = Object.keys(object)
|
||||
if (Object.getOwnPropertySymbols) {
|
||||
var symbols = Object.getOwnPropertySymbols(object);
|
||||
var symbols = Object.getOwnPropertySymbols(object)
|
||||
if (enumerableOnly)
|
||||
symbols = symbols.filter(function (sym) {
|
||||
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
||||
});
|
||||
keys.push.apply(keys, symbols);
|
||||
return Object.getOwnPropertyDescriptor(object, sym).enumerable
|
||||
})
|
||||
keys.push.apply(keys, symbols)
|
||||
}
|
||||
return keys;
|
||||
return keys
|
||||
}
|
||||
|
||||
function _objectSpread(target) {
|
||||
for (var i = 1; i < arguments.length; i++) {
|
||||
var source = arguments[i] != null ? arguments[i] : {};
|
||||
var source = arguments[i] != null ? arguments[i] : {}
|
||||
if (i % 2) {
|
||||
ownKeys(source, true).forEach(function (key) {
|
||||
_defineProperty(target, key, source[key]);
|
||||
});
|
||||
_defineProperty(target, key, source[key])
|
||||
})
|
||||
} else if (Object.getOwnPropertyDescriptors) {
|
||||
Object.defineProperties(
|
||||
target,
|
||||
Object.getOwnPropertyDescriptors(source)
|
||||
);
|
||||
)
|
||||
} else {
|
||||
ownKeys(source).forEach(function (key) {
|
||||
Object.defineProperty(
|
||||
target,
|
||||
key,
|
||||
Object.getOwnPropertyDescriptor(source, key)
|
||||
);
|
||||
});
|
||||
)
|
||||
})
|
||||
}
|
||||
}
|
||||
return target;
|
||||
return target
|
||||
}
|
||||
|
||||
function _defineProperty(obj, key, value) {
|
||||
|
@ -63,52 +63,52 @@ if (!String.prototype.startsWith) {
|
|||
value: value,
|
||||
enumerable: true,
|
||||
configurable: true,
|
||||
writable: true,
|
||||
});
|
||||
writable: true
|
||||
})
|
||||
} else {
|
||||
obj[key] = value;
|
||||
obj[key] = value
|
||||
}
|
||||
return obj;
|
||||
return obj
|
||||
}
|
||||
|
||||
if (!window.__TAURI__) {
|
||||
window.__TAURI__ = {};
|
||||
window.__TAURI__ = {}
|
||||
}
|
||||
|
||||
window.__TAURI__.transformCallback = function transformCallback(
|
||||
callback,
|
||||
once
|
||||
) {
|
||||
var identifier = uid();
|
||||
var identifier = uid()
|
||||
|
||||
window[identifier] = function (result) {
|
||||
if (once) {
|
||||
delete window[identifier];
|
||||
delete window[identifier]
|
||||
}
|
||||
|
||||
return callback && callback(result);
|
||||
};
|
||||
return callback && callback(result)
|
||||
}
|
||||
|
||||
return identifier;
|
||||
};
|
||||
return identifier
|
||||
}
|
||||
|
||||
window.__TAURI__._invoke = function invoke(cmd, args = {}, key = null) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var callback = window.__TAURI__.transformCallback(function (r) {
|
||||
resolve(r);
|
||||
delete window[error];
|
||||
}, true);
|
||||
resolve(r)
|
||||
delete window[error]
|
||||
}, true)
|
||||
var error = window.__TAURI__.transformCallback(function (e) {
|
||||
reject(e);
|
||||
delete window[callback];
|
||||
}, true);
|
||||
reject(e)
|
||||
delete window[callback]
|
||||
}, true)
|
||||
|
||||
if (typeof cmd === "string") {
|
||||
args.cmd = cmd;
|
||||
} else if (typeof cmd === "object") {
|
||||
args = cmd;
|
||||
if (typeof cmd === 'string') {
|
||||
args.cmd = cmd
|
||||
} else if (typeof cmd === 'object') {
|
||||
args = cmd
|
||||
} else {
|
||||
return reject(new Error("Invalid argument type."));
|
||||
return reject(new Error('Invalid argument type.'))
|
||||
}
|
||||
|
||||
if (window.rpc) {
|
||||
|
@ -118,238 +118,259 @@ if (!String.prototype.startsWith) {
|
|||
{
|
||||
callback: callback,
|
||||
error: error,
|
||||
__invokeKey: key || __TAURI_INVOKE_KEY__,
|
||||
__invokeKey: key || __TAURI_INVOKE_KEY__
|
||||
},
|
||||
args
|
||||
)
|
||||
);
|
||||
)
|
||||
} else {
|
||||
window.addEventListener("DOMContentLoaded", function () {
|
||||
window.addEventListener('DOMContentLoaded', function () {
|
||||
window.rpc.notify(
|
||||
cmd,
|
||||
_objectSpread(
|
||||
{
|
||||
callback: callback,
|
||||
error: error,
|
||||
__invokeKey: key || __TAURI_INVOKE_KEY__,
|
||||
__invokeKey: key || __TAURI_INVOKE_KEY__
|
||||
},
|
||||
args
|
||||
)
|
||||
);
|
||||
});
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// open <a href="..."> links with the Tauri API
|
||||
function __openLinks() {
|
||||
document.querySelector("body").addEventListener(
|
||||
"click",
|
||||
document.querySelector('body').addEventListener(
|
||||
'click',
|
||||
function (e) {
|
||||
var target = e.target;
|
||||
var target = e.target
|
||||
while (target != null) {
|
||||
if (
|
||||
target.matches ? target.matches("a") : target.msMatchesSelector("a")
|
||||
target.matches ? target.matches('a') : target.msMatchesSelector('a')
|
||||
) {
|
||||
if (
|
||||
target.href &&
|
||||
target.href.startsWith("http") &&
|
||||
target.target === "_blank"
|
||||
target.href.startsWith('http') &&
|
||||
target.target === '_blank'
|
||||
) {
|
||||
window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Shell",
|
||||
window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Shell',
|
||||
message: {
|
||||
cmd: "open",
|
||||
path: target.href,
|
||||
cmd: 'open',
|
||||
path: target.href
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
e.preventDefault();
|
||||
_KEY_VALUE_
|
||||
)
|
||||
e.preventDefault()
|
||||
}
|
||||
break;
|
||||
break
|
||||
}
|
||||
target = target.parentElement;
|
||||
target = target.parentElement
|
||||
}
|
||||
},
|
||||
true
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
if (
|
||||
document.readyState === "complete" ||
|
||||
document.readyState === "interactive"
|
||||
document.readyState === 'complete' ||
|
||||
document.readyState === 'interactive'
|
||||
) {
|
||||
__openLinks();
|
||||
__openLinks()
|
||||
} else {
|
||||
window.addEventListener(
|
||||
"DOMContentLoaded",
|
||||
'DOMContentLoaded',
|
||||
function () {
|
||||
__openLinks();
|
||||
__openLinks()
|
||||
},
|
||||
true
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
// drag region
|
||||
document.addEventListener('mousedown', (e) => {
|
||||
if (e.target.hasAttribute("data-tauri-drag-region") && e.buttons === 1) {
|
||||
if (e.target.hasAttribute('data-tauri-drag-region') && e.buttons === 1) {
|
||||
// start dragging if the element has a `tauri-drag-region` data attribute and maximize on double-clicking it
|
||||
e.detail === 2
|
||||
? window.__TAURI__._invoke(
|
||||
"tauri",
|
||||
window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: "Window",
|
||||
__tauriModule: 'Window',
|
||||
message: {
|
||||
cmd: "toggleMaximize",
|
||||
},
|
||||
cmd: e.detail === 2 ? 'toggleMaximize' : 'startDragging'
|
||||
}
|
||||
},
|
||||
_KEY_VALUE_
|
||||
)
|
||||
: window.__TAURI__._invoke(
|
||||
"tauri",
|
||||
{
|
||||
__tauriModule: "Window",
|
||||
message: {
|
||||
cmd: "startDragging",
|
||||
},
|
||||
},
|
||||
_KEY_VALUE_
|
||||
);
|
||||
}
|
||||
})
|
||||
|
||||
window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Event",
|
||||
window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Event',
|
||||
message: {
|
||||
cmd: "listen",
|
||||
event: "tauri://window-created",
|
||||
cmd: 'listen',
|
||||
event: 'tauri://window-created',
|
||||
handler: window.__TAURI__.transformCallback(function (event) {
|
||||
if (event.payload) {
|
||||
var windowLabel = event.payload.label;
|
||||
window.__TAURI__.__windows.push({ label: windowLabel });
|
||||
var windowLabel = event.payload.label
|
||||
window.__TAURI__.__windows.push({ label: windowLabel })
|
||||
}
|
||||
})
|
||||
}
|
||||
}),
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
_KEY_VALUE_
|
||||
)
|
||||
|
||||
let permissionSettable = false;
|
||||
let permissionValue = "default";
|
||||
let permissionSettable = false
|
||||
let permissionValue = 'default'
|
||||
|
||||
function isPermissionGranted() {
|
||||
if (window.Notification.permission !== "default") {
|
||||
return Promise.resolve(window.Notification.permission === "granted");
|
||||
if (window.Notification.permission !== 'default') {
|
||||
return Promise.resolve(window.Notification.permission === 'granted')
|
||||
}
|
||||
return window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Notification",
|
||||
return window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Notification',
|
||||
message: {
|
||||
cmd: "isNotificationPermissionGranted",
|
||||
cmd: 'isNotificationPermissionGranted'
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
_KEY_VALUE_
|
||||
)
|
||||
}
|
||||
|
||||
function setNotificationPermission(value) {
|
||||
permissionSettable = true;
|
||||
window.Notification.permission = value;
|
||||
permissionSettable = false;
|
||||
permissionSettable = true
|
||||
window.Notification.permission = value
|
||||
permissionSettable = false
|
||||
}
|
||||
|
||||
function requestPermission() {
|
||||
return window.__TAURI__
|
||||
.invoke('tauri', {
|
||||
__tauriModule: "Notification",
|
||||
.invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Notification',
|
||||
message: {
|
||||
cmd: "requestNotificationPermission",
|
||||
cmd: 'requestNotificationPermission'
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_)
|
||||
_KEY_VALUE_
|
||||
)
|
||||
.then(function (permission) {
|
||||
setNotificationPermission(permission);
|
||||
return permission;
|
||||
});
|
||||
setNotificationPermission(permission)
|
||||
return permission
|
||||
})
|
||||
}
|
||||
|
||||
function sendNotification(options) {
|
||||
if (typeof options === "object") {
|
||||
Object.freeze(options);
|
||||
if (typeof options === 'object') {
|
||||
Object.freeze(options)
|
||||
}
|
||||
|
||||
isPermissionGranted().then(function (permission) {
|
||||
if (permission) {
|
||||
return window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Notification",
|
||||
return window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Notification',
|
||||
message: {
|
||||
cmd: "notification",
|
||||
cmd: 'notification',
|
||||
options:
|
||||
typeof options === "string"
|
||||
typeof options === 'string'
|
||||
? {
|
||||
title: options,
|
||||
title: options
|
||||
}
|
||||
: options
|
||||
}
|
||||
: options,
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
_KEY_VALUE_
|
||||
)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
window.Notification = function (title, options) {
|
||||
var opts = options || {};
|
||||
var opts = options || {}
|
||||
sendNotification(
|
||||
Object.assign(opts, {
|
||||
title: title,
|
||||
title: title
|
||||
})
|
||||
);
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
window.Notification.requestPermission = requestPermission;
|
||||
window.Notification.requestPermission = requestPermission
|
||||
|
||||
Object.defineProperty(window.Notification, "permission", {
|
||||
Object.defineProperty(window.Notification, 'permission', {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return permissionValue;
|
||||
return permissionValue
|
||||
},
|
||||
set: function (v) {
|
||||
if (!permissionSettable) {
|
||||
throw new Error("Readonly property");
|
||||
throw new Error('Readonly property')
|
||||
}
|
||||
permissionValue = v;
|
||||
},
|
||||
});
|
||||
permissionValue = v
|
||||
}
|
||||
})
|
||||
|
||||
isPermissionGranted().then(function (response) {
|
||||
if (response === null) {
|
||||
setNotificationPermission("default");
|
||||
setNotificationPermission('default')
|
||||
} else {
|
||||
setNotificationPermission(response ? "granted" : "denied");
|
||||
setNotificationPermission(response ? 'granted' : 'denied')
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
window.alert = function (message) {
|
||||
window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Dialog",
|
||||
window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Dialog',
|
||||
message: {
|
||||
cmd: "messageDialog",
|
||||
message: message,
|
||||
cmd: 'messageDialog',
|
||||
message: message
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
};
|
||||
_KEY_VALUE_
|
||||
)
|
||||
}
|
||||
|
||||
window.confirm = function (message) {
|
||||
return window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Dialog",
|
||||
return window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Dialog',
|
||||
message: {
|
||||
cmd: "askDialog",
|
||||
message: message,
|
||||
cmd: 'askDialog',
|
||||
message: message
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
};
|
||||
_KEY_VALUE_
|
||||
)
|
||||
}
|
||||
|
||||
// window.print works on Linux/Windows; need to use the API on macOS
|
||||
if (navigator.userAgent.includes('Mac')) {
|
||||
window.print = function () {
|
||||
return window.__TAURI__._invoke('tauri', {
|
||||
__tauriModule: "Window",
|
||||
return window.__TAURI__._invoke(
|
||||
'tauri',
|
||||
{
|
||||
__tauriModule: 'Window',
|
||||
message: {
|
||||
cmd: "print"
|
||||
cmd: 'print'
|
||||
}
|
||||
},
|
||||
}, _KEY_VALUE_);
|
||||
_KEY_VALUE_
|
||||
)
|
||||
}
|
||||
}
|
||||
})();
|
||||
})()
|
||||
|
|
|
@ -75,10 +75,7 @@
|
|||
{
|
||||
"label": "CI/CD",
|
||||
"type": "category",
|
||||
"items": [
|
||||
"usage/ci-cd/workflow",
|
||||
"usage/ci-cd/cross-platform"
|
||||
]
|
||||
"items": ["usage/ci-cd/workflow", "usage/ci-cd/cross-platform"]
|
||||
},
|
||||
"usage/contributor-guide"
|
||||
]
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -41,7 +41,7 @@ body {
|
|||
color: #f0f4f5;
|
||||
border: solid 1px rgba(255, 255, 255, 0.055);
|
||||
box-shadow: 0 1px 5px 0 rgb(0 0 0 / 20%);
|
||||
font-family: "Courier New", Courier, monospace;
|
||||
font-family: 'Courier New', Courier, monospace;
|
||||
font-size: 12px;
|
||||
word-wrap: break-word;
|
||||
padding: 0px 15px;
|
||||
|
@ -80,7 +80,7 @@ button:active {
|
|||
.button {
|
||||
border: 0;
|
||||
border-radius: 0.25rem;
|
||||
background: #67D6ED;
|
||||
background: #67d6ed;
|
||||
color: rgb(0, 0, 0);
|
||||
font-family: system-ui, sans-serif;
|
||||
font-size: 1rem;
|
||||
|
@ -120,9 +120,9 @@ button:active {
|
|||
}
|
||||
|
||||
.nv_selected {
|
||||
color: #67D6ED;
|
||||
color: #67d6ed;
|
||||
padding-left: 8px;
|
||||
border-left: solid 5px #67D6ED;
|
||||
border-left: solid 5px #67d6ed;
|
||||
}
|
||||
|
||||
.content {
|
||||
|
@ -138,14 +138,14 @@ main {
|
|||
height: 100%;
|
||||
}
|
||||
|
||||
[type="radio"]:checked~label {
|
||||
[type='radio']:checked ~ label {
|
||||
background: rgb(36, 37, 38);
|
||||
color: #67D6ED;
|
||||
color: #67d6ed;
|
||||
border-bottom: 1px solid transparent;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
[type="radio"]:checked~label~.content {
|
||||
[type='radio']:checked ~ label ~ .content {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
import svelte from "rollup-plugin-svelte";
|
||||
import resolve from "@rollup/plugin-node-resolve";
|
||||
import commonjs from "@rollup/plugin-commonjs";
|
||||
import livereload from "rollup-plugin-livereload";
|
||||
import { terser } from "rollup-plugin-terser";
|
||||
import svelte from 'rollup-plugin-svelte'
|
||||
import resolve from '@rollup/plugin-node-resolve'
|
||||
import commonjs from '@rollup/plugin-commonjs'
|
||||
import livereload from 'rollup-plugin-livereload'
|
||||
import { terser } from 'rollup-plugin-terser'
|
||||
|
||||
const production = !process.env.ROLLUP_WATCH;
|
||||
const production = !process.env.ROLLUP_WATCH
|
||||
|
||||
export default {
|
||||
input: "src/main.js",
|
||||
input: 'src/main.js',
|
||||
output: {
|
||||
sourcemap: true,
|
||||
format: "iife",
|
||||
name: "app",
|
||||
file: "public/build/bundle.js",
|
||||
format: 'iife',
|
||||
name: 'app',
|
||||
file: 'public/build/bundle.js'
|
||||
},
|
||||
plugins: [
|
||||
svelte({
|
||||
compilerOptions: {
|
||||
// enable run-time checks when not in production
|
||||
dev: !production,
|
||||
dev: !production
|
||||
},
|
||||
emitCss: false,
|
||||
emitCss: false
|
||||
}),
|
||||
|
||||
// If you have external dependencies installed from
|
||||
|
@ -30,7 +30,7 @@ export default {
|
|||
// https://github.com/rollup/plugins/tree/master/packages/commonjs
|
||||
resolve({
|
||||
browser: true,
|
||||
dedupe: ["svelte"],
|
||||
dedupe: ['svelte']
|
||||
}),
|
||||
commonjs(),
|
||||
|
||||
|
@ -40,38 +40,38 @@ export default {
|
|||
|
||||
// Watch the `public` directory and refresh the
|
||||
// browser on changes when not in production
|
||||
!production && livereload("public"),
|
||||
!production && livereload('public'),
|
||||
|
||||
// If we're building for production (npm run build
|
||||
// instead of npm run dev), minify
|
||||
production && terser(),
|
||||
production && terser()
|
||||
],
|
||||
watch: {
|
||||
clearScreen: false,
|
||||
},
|
||||
};
|
||||
clearScreen: false
|
||||
}
|
||||
}
|
||||
|
||||
function serve() {
|
||||
let server;
|
||||
let server
|
||||
|
||||
function toExit() {
|
||||
if (server) server.kill(0);
|
||||
if (server) server.kill(0)
|
||||
}
|
||||
|
||||
return {
|
||||
writeBundle() {
|
||||
if (server) return;
|
||||
server = require("child_process").spawn(
|
||||
"npm",
|
||||
["run", "start", "--", "--dev"],
|
||||
if (server) return
|
||||
server = require('child_process').spawn(
|
||||
'npm',
|
||||
['run', 'start', '--', '--dev'],
|
||||
{
|
||||
stdio: ["ignore", "inherit", "inherit"],
|
||||
shell: true,
|
||||
stdio: ['ignore', 'inherit', 'inherit'],
|
||||
shell: true
|
||||
}
|
||||
);
|
||||
)
|
||||
|
||||
process.on("SIGTERM", toExit);
|
||||
process.on("exit", toExit);
|
||||
},
|
||||
};
|
||||
process.on('SIGTERM', toExit)
|
||||
process.on('exit', toExit)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,11 +24,7 @@
|
|||
"name": "theme",
|
||||
"takesValue": true,
|
||||
"description": "App theme",
|
||||
"possibleValues": [
|
||||
"light",
|
||||
"dark",
|
||||
"system"
|
||||
]
|
||||
"possibleValues": ["light", "dark", "system"]
|
||||
},
|
||||
{
|
||||
"short": "v",
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import App from "./App.svelte";
|
||||
import App from './App.svelte'
|
||||
|
||||
const app = new App({
|
||||
target: document.body,
|
||||
});
|
||||
target: document.body
|
||||
})
|
||||
|
||||
export default app;
|
||||
export default app
|
||||
|
|
|
@ -1,25 +1,27 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1>Tauri Commands</h1>
|
||||
<div>Response: <span id="response"></span></div>
|
||||
<div >Without Args: <span id="response-optional"></span></div>
|
||||
<div>Without Args: <span id="response-optional"></span></div>
|
||||
<div id="container"></div>
|
||||
<script>
|
||||
function runCommand(commandName, args, optional) {
|
||||
const id = optional ? "#response-optional" : "#response";
|
||||
const id = optional ? '#response-optional' : '#response'
|
||||
const result = document.querySelector(id)
|
||||
window.__TAURI__.invoke(commandName, args).then(response => {
|
||||
window.__TAURI__
|
||||
.invoke(commandName, args)
|
||||
.then((response) => {
|
||||
result.innerText = `Ok(${response})`
|
||||
}).catch(error => {
|
||||
})
|
||||
.catch((error) => {
|
||||
result.innerText = `Err(${error})`
|
||||
})
|
||||
}
|
||||
|
@ -31,7 +33,7 @@
|
|||
{ name: 'simple_command' },
|
||||
{ name: 'stateful_command' },
|
||||
{ name: 'async_simple_command' },
|
||||
{ name: 'future_simple_command'},
|
||||
{ name: 'future_simple_command' },
|
||||
{ name: 'async_stateful_command' },
|
||||
{ name: 'simple_command_with_result' },
|
||||
{ name: 'stateful_command_with_result' },
|
||||
|
@ -40,23 +42,27 @@
|
|||
{ name: 'future_simple_command_with_result' },
|
||||
{ name: 'async_stateful_command_with_result' },
|
||||
{ name: 'command_arguments_wild' },
|
||||
{ name: 'command_arguments_struct', args: { "Person": { "name": "ferris", age: 6 } } },
|
||||
{ name: 'command_arguments_tuple_struct', args: { "InlinePerson": [ "ferris", 6 ] } },
|
||||
{
|
||||
name: 'command_arguments_struct',
|
||||
args: { Person: { name: 'ferris', age: 6 } }
|
||||
},
|
||||
{
|
||||
name: 'command_arguments_tuple_struct',
|
||||
args: { InlinePerson: ['ferris', 6] }
|
||||
}
|
||||
]
|
||||
|
||||
for (const command of commands) {
|
||||
const { name } = command
|
||||
const args = command.args ?? { argument: 'value' }
|
||||
const button = document.createElement('button')
|
||||
button.innerHTML = `Run ${name}`;
|
||||
button.addEventListener("click", function () {
|
||||
button.innerHTML = `Run ${name}`
|
||||
button.addEventListener('click', function () {
|
||||
runCommand(name, args, false)
|
||||
runCommand(name, Object.create(null), true)
|
||||
});
|
||||
container.appendChild(button);
|
||||
})
|
||||
container.appendChild(button)
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": "",
|
||||
"withGlobalTauri": true
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": ""
|
||||
},
|
||||
|
|
|
@ -1,75 +1,74 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<div id="window-label"></div>
|
||||
<div id="container"></div>
|
||||
<div id="response"></div>
|
||||
|
||||
<script>
|
||||
var WebviewWindow = window.__TAURI__.window.WebviewWindow
|
||||
var thisTauriWindow = window.__TAURI__.window.getCurrent();
|
||||
var windowLabel = thisTauriWindow.label;
|
||||
var windowLabelContainer = document.getElementById("window-label");
|
||||
windowLabelContainer.innerHTML =
|
||||
"This is the " + windowLabel + " window.";
|
||||
var thisTauriWindow = window.__TAURI__.window.getCurrent()
|
||||
var windowLabel = thisTauriWindow.label
|
||||
var windowLabelContainer = document.getElementById('window-label')
|
||||
windowLabelContainer.innerHTML = 'This is the ' + windowLabel + ' window.'
|
||||
|
||||
var container = document.getElementById("container");
|
||||
var container = document.getElementById('container')
|
||||
|
||||
function createWindowMessageBtn(label) {
|
||||
var tauriWindow = WebviewWindow.getByLabel(label)
|
||||
var button = document.createElement("button");
|
||||
button.innerHTML = "Send message to " + label;
|
||||
button.addEventListener("click", function () {
|
||||
tauriWindow.emit("clicked", "message from " + windowLabel);
|
||||
});
|
||||
container.appendChild(button);
|
||||
var button = document.createElement('button')
|
||||
button.innerHTML = 'Send message to ' + label
|
||||
button.addEventListener('click', function () {
|
||||
tauriWindow.emit('clicked', 'message from ' + windowLabel)
|
||||
})
|
||||
container.appendChild(button)
|
||||
}
|
||||
|
||||
// global listener
|
||||
window.__TAURI__.event.listen("clicked", function (event) {
|
||||
responseContainer.innerHTML += "Got " + JSON.stringify(event) + " on global listener<br><br>";
|
||||
window.__TAURI__.event.listen('clicked', function (event) {
|
||||
responseContainer.innerHTML +=
|
||||
'Got ' + JSON.stringify(event) + ' on global listener<br><br>'
|
||||
})
|
||||
window.__TAURI__.event.listen('tauri://window-created', function (event) {
|
||||
createWindowMessageBtn(event.payload.label)
|
||||
})
|
||||
|
||||
var responseContainer = document.getElementById("response");
|
||||
var responseContainer = document.getElementById('response')
|
||||
// listener tied to this window
|
||||
thisTauriWindow.listen("clicked", function (event) {
|
||||
responseContainer.innerHTML += "Got " + JSON.stringify(event) + " on window listener<br><br>";
|
||||
});
|
||||
thisTauriWindow.listen('clicked', function (event) {
|
||||
responseContainer.innerHTML +=
|
||||
'Got ' + JSON.stringify(event) + ' on window listener<br><br>'
|
||||
})
|
||||
|
||||
var createWindowButton = document.createElement("button");
|
||||
createWindowButton.innerHTML = "Create window";
|
||||
createWindowButton.addEventListener("click", function () {
|
||||
var webviewWindow = new WebviewWindow(Math.random().toString());
|
||||
var createWindowButton = document.createElement('button')
|
||||
createWindowButton.innerHTML = 'Create window'
|
||||
createWindowButton.addEventListener('click', function () {
|
||||
var webviewWindow = new WebviewWindow(Math.random().toString())
|
||||
webviewWindow.once('tauri://created', function () {
|
||||
responseContainer.innerHTML += "Created new webview"
|
||||
responseContainer.innerHTML += 'Created new webview'
|
||||
})
|
||||
webviewWindow.once('tauri://error', function () {
|
||||
responseContainer.innerHTML += "Error creating new webview"
|
||||
responseContainer.innerHTML += 'Error creating new webview'
|
||||
})
|
||||
});
|
||||
container.appendChild(createWindowButton);
|
||||
})
|
||||
container.appendChild(createWindowButton)
|
||||
|
||||
var globalMessageButton = document.createElement("button");
|
||||
globalMessageButton.innerHTML = "Send global message";
|
||||
globalMessageButton.addEventListener("click", function () {
|
||||
var globalMessageButton = document.createElement('button')
|
||||
globalMessageButton.innerHTML = 'Send global message'
|
||||
globalMessageButton.addEventListener('click', function () {
|
||||
// emit to all windows
|
||||
window.__TAURI__.event.emit("clicked", "message from " + windowLabel);
|
||||
});
|
||||
container.appendChild(globalMessageButton);
|
||||
window.__TAURI__.event.emit('clicked', 'message from ' + windowLabel)
|
||||
})
|
||||
container.appendChild(globalMessageButton)
|
||||
|
||||
var allWindows = window.__TAURI__.window.getAll()
|
||||
for (var index in allWindows) {
|
||||
var label = allWindows[index].label;
|
||||
var label = allWindows[index].label
|
||||
if (label === windowLabel) {
|
||||
continue;
|
||||
continue
|
||||
}
|
||||
createWindowMessageBtn(label)
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"withGlobalTauri": true
|
||||
},
|
||||
"tauri": {
|
||||
|
|
|
@ -1,14 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1>index.html</h1>
|
||||
<select id="route">
|
||||
<option value="secondary.html">secondary.html</option>
|
||||
|
@ -19,6 +18,5 @@
|
|||
<button id="go">Go</button>
|
||||
<a id="link" href="secondary.html">Go</a>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -8,7 +8,7 @@ routeSelect.addEventListener('change', (event) => {
|
|||
})
|
||||
|
||||
document.querySelector('#go').addEventListener('click', () => {
|
||||
window.location.href = (window.location.origin + '/' + routeSelect.value)
|
||||
window.location.href = window.location.origin + '/' + routeSelect.value
|
||||
})
|
||||
|
||||
document.querySelector('#open-window').addEventListener('click', () => {
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1></h1>
|
||||
<button onclick="window.history.back()">Back</button>
|
||||
<script src="index.js"></script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1></h1>
|
||||
<button onclick="window.history.back()">Back</button>
|
||||
<script src="secondary.js"></script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,17 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1></h1>
|
||||
<button onclick="window.history.back()">Back</button>
|
||||
<script src="secondary.js"></script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Params</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Simple custom `Params` types check.</h1>
|
||||
</body>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Simple custom `Params` types check.</h1>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": ""
|
||||
},
|
||||
|
|
|
@ -1,23 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Sidecar</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<div></div>
|
||||
<script>
|
||||
const div = document.querySelector('div')
|
||||
window.__TAURI__.event.listen('message', event => {
|
||||
window.__TAURI__.event.listen('message', (event) => {
|
||||
const p = document.createElement('p')
|
||||
p.innerHTML = event.payload
|
||||
div.appendChild(p)
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": "",
|
||||
"withGlobalTauri": true
|
||||
|
|
|
@ -1,23 +1,21 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Sidecar</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<div></div>
|
||||
<script>
|
||||
const div = document.querySelector('div')
|
||||
window.__TAURI__.event.listen('message', event => {
|
||||
window.__TAURI__.event.listen('message', (event) => {
|
||||
const p = document.createElement('p')
|
||||
p.innerHTML = event.payload
|
||||
div.appendChild(p)
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "yarn package",
|
||||
"beforeBuildCommand": "yarn package",
|
||||
"withGlobalTauri": true
|
||||
|
|
|
@ -8,7 +8,7 @@ module.exports = {
|
|||
terminal: false
|
||||
})
|
||||
|
||||
rl.on('line', function(line){
|
||||
rl.on('line', function (line) {
|
||||
cb(line)
|
||||
})
|
||||
},
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
const { write, onMessage } = require('./communication')
|
||||
|
||||
onMessage(line => {
|
||||
onMessage((line) => {
|
||||
write(`read ${line}`)
|
||||
})
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h1>This is the main window!</h1>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
|
@ -11,6 +10,5 @@
|
|||
}, 2000)
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<title>Splashscreen</title>
|
||||
<style>
|
||||
body {
|
||||
|
@ -19,10 +18,9 @@
|
|||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<div class="splashscreen-image" />
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,21 +1,20 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Tauri</title>
|
||||
</head>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<body>
|
||||
<h3>Counter</h3>
|
||||
<div>
|
||||
<button id="increment-btn">Increment counter</button>
|
||||
</div>
|
||||
<h3>Database</h3>
|
||||
<div>
|
||||
<input id="store-input" placeholder="The value to store">
|
||||
<input id="store-input" placeholder="The value to store" />
|
||||
<button id="store-btn">Store</button>
|
||||
</div>
|
||||
<div>
|
||||
|
@ -32,26 +31,35 @@
|
|||
const responseContainer = document.querySelector('#response')
|
||||
|
||||
function updateResponse(response) {
|
||||
responseContainer.innerHTML = typeof response === "string" ? response : JSON.stringify(response)
|
||||
responseContainer.innerHTML =
|
||||
typeof response === 'string' ? response : JSON.stringify(response)
|
||||
}
|
||||
|
||||
incrementBtn.addEventListener('click', () => {
|
||||
window.__TAURI__.invoke('increment_counter').then(updateResponse).catch(updateResponse)
|
||||
window.__TAURI__
|
||||
.invoke('increment_counter')
|
||||
.then(updateResponse)
|
||||
.catch(updateResponse)
|
||||
})
|
||||
|
||||
storeBtn.addEventListener('click', () => {
|
||||
window.__TAURI__.invoke('db_insert', {
|
||||
window.__TAURI__
|
||||
.invoke('db_insert', {
|
||||
key: KEY,
|
||||
value: storeInput.value
|
||||
}).then(updateResponse).catch(updateResponse)
|
||||
})
|
||||
.then(updateResponse)
|
||||
.catch(updateResponse)
|
||||
})
|
||||
|
||||
readBtn.addEventListener('click', () => {
|
||||
window.__TAURI__.invoke('db_read', {
|
||||
window.__TAURI__
|
||||
.invoke('db_read', {
|
||||
key: KEY
|
||||
}).then(updateResponse).catch(updateResponse)
|
||||
})
|
||||
.then(updateResponse)
|
||||
.catch(updateResponse)
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": "",
|
||||
"withGlobalTauri": true
|
||||
|
|
|
@ -1,11 +1,7 @@
|
|||
{
|
||||
"build": {
|
||||
"distDir": [
|
||||
"../index.html"
|
||||
],
|
||||
"devPath": [
|
||||
"../index.html"
|
||||
],
|
||||
"distDir": ["../index.html"],
|
||||
"devPath": ["../index.html"],
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": ""
|
||||
},
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
"directory": "tooling/cli.js"
|
||||
},
|
||||
"scripts": {
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"postinstall": "husky install"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -1,31 +1,20 @@
|
|||
{
|
||||
"extends": [
|
||||
"config:base"
|
||||
],
|
||||
"extends": ["config:base"],
|
||||
"schedule": "after 3am on Wednesday",
|
||||
"ignorePaths": [],
|
||||
"labels": [
|
||||
"chore"
|
||||
],
|
||||
"enabledManagers": [
|
||||
"cargo",
|
||||
"npm"
|
||||
],
|
||||
"labels": ["chore"],
|
||||
"enabledManagers": ["cargo", "npm"],
|
||||
"cargo": {
|
||||
"enabled": true
|
||||
},
|
||||
"packageRules": [
|
||||
{
|
||||
"packagePatterns": [
|
||||
"*"
|
||||
],
|
||||
"packagePatterns": ["*"],
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"core/tauri/**"
|
||||
],
|
||||
"paths": ["core/tauri/**"],
|
||||
"groupName": "Tauri Core",
|
||||
"groupSlug": "allTauriCore",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -36,9 +25,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"core/tauri-build/**"
|
||||
],
|
||||
"paths": ["core/tauri-build/**"],
|
||||
"groupName": "Tauri Build",
|
||||
"groupSlug": "allTauriBuild",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -49,9 +36,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"core/tauri-codegen/**"
|
||||
],
|
||||
"paths": ["core/tauri-codegen/**"],
|
||||
"groupName": "Tauri Codegen",
|
||||
"groupSlug": "allTauriCodegen",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -62,9 +47,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"core/tauri-macros/**"
|
||||
],
|
||||
"paths": ["core/tauri-macros/**"],
|
||||
"groupName": "Tauri Macros",
|
||||
"groupSlug": "allTauriMacros",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -75,9 +58,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"core/tauri-utils/**"
|
||||
],
|
||||
"paths": ["core/tauri-utils/**"],
|
||||
"groupName": "Tauri Utils",
|
||||
"groupSlug": "allTauriUtils",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -88,9 +69,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"tooling/cli.rs/**"
|
||||
],
|
||||
"paths": ["tooling/cli.rs/**"],
|
||||
"groupName": "Tauri CLI",
|
||||
"groupSlug": "allTauriCLI",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -101,9 +80,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"tooling/bundler/**"
|
||||
],
|
||||
"paths": ["tooling/bundler/**"],
|
||||
"groupName": "Tauri Bundler",
|
||||
"groupSlug": "allTauriBundler",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -114,9 +91,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"tooling/cli.js/**"
|
||||
],
|
||||
"paths": ["tooling/cli.js/**"],
|
||||
"groupName": "Tauri JS CLI",
|
||||
"groupSlug": "allTauriJSCLI",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -127,9 +102,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"tooling/api/**"
|
||||
],
|
||||
"paths": ["tooling/api/**"],
|
||||
"groupName": "Tauri API Definitions",
|
||||
"groupSlug": "allTauriAPIDefinitions",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
@ -140,9 +113,7 @@
|
|||
},
|
||||
{
|
||||
"enabled": true,
|
||||
"paths": [
|
||||
"tooling/create-tauri-app/**"
|
||||
],
|
||||
"paths": ["tooling/create-tauri-app/**"],
|
||||
"groupName": "create-tauri-app",
|
||||
"groupSlug": "allCTA",
|
||||
"commitMessagePrefix": "chore(deps)",
|
||||
|
|
|
@ -17,8 +17,8 @@
|
|||
"lint": "eslint --ext ts \"./src/**/*.ts\"",
|
||||
"lint-fix": "eslint --fix --ext ts \"./src/**/*.ts\"",
|
||||
"lint:lockfile": "lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts npm yarn",
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore"
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -41,9 +41,7 @@ writeFileSync('dist/package.json', JSON.stringify(outputPkg, undefined, 2))
|
|||
/**
|
||||
* copy necessary files like `CHANGELOG.md` and Licenses to `./dist`
|
||||
*/
|
||||
const files = readdirSync('.').filter(
|
||||
(f) => f.startsWith('LICENSE')
|
||||
)
|
||||
const files = readdirSync('.').filter((f) => f.startsWith('LICENSE'))
|
||||
files.forEach((f) => copyFileSync(f, `dist/${f}`))
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica,
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica,
|
||||
Arial, sans-serif;
|
||||
margin: auto;
|
||||
max-width: 38rem;
|
||||
|
|
|
@ -1,59 +1,59 @@
|
|||
// Create web worker
|
||||
const THRESHOLD = 10000000;
|
||||
const worker = new Worker("worker.js");
|
||||
const THRESHOLD = 10000000
|
||||
const worker = new Worker('worker.js')
|
||||
/** @type {HTMLButtonElement} */
|
||||
const start = document.getElementById("start");
|
||||
const start = document.getElementById('start')
|
||||
/** @type {HTMLParagraphElement} */
|
||||
const status = document.getElementById("status");
|
||||
const results = document.getElementById("results");
|
||||
const status = document.getElementById('status')
|
||||
const results = document.getElementById('results')
|
||||
|
||||
const ITERATIONS = 1;
|
||||
const ITERATIONS = 1
|
||||
|
||||
let resolver;
|
||||
let resolver
|
||||
|
||||
const onMessage = (message) => {
|
||||
// Update the UI
|
||||
let prefix = "[Calculating]";
|
||||
let prefix = '[Calculating]'
|
||||
|
||||
if (message.data.status === "done") {
|
||||
if (message.data.status === 'done') {
|
||||
// tell tauri that we are done
|
||||
window.__TAURI__.invoke("tauri", {
|
||||
__tauriModule: "Process",
|
||||
window.__TAURI__.invoke('tauri', {
|
||||
__tauriModule: 'Process',
|
||||
message: {
|
||||
cmd: "exit",
|
||||
exitCode: 0,
|
||||
},
|
||||
});
|
||||
cmd: 'exit',
|
||||
exitCode: 0
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
status.innerHTML = `${prefix} Found <code>${message.data.count}</code> prime numbers in <code>${message.data.time}ms</code>`;
|
||||
status.innerHTML = `${prefix} Found <code>${message.data.count}</code> prime numbers in <code>${message.data.time}ms</code>`
|
||||
|
||||
if (message.data.status === "done") {
|
||||
resolver(message.data.time);
|
||||
if (message.data.status === 'done') {
|
||||
resolver(message.data.time)
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
worker.addEventListener("message", onMessage);
|
||||
worker.addEventListener('message', onMessage)
|
||||
|
||||
const benchmark = () => {
|
||||
return new Promise((resolve) => {
|
||||
const startTime = Date.now();
|
||||
resolver = resolve;
|
||||
worker.postMessage({ value: THRESHOLD, startTime });
|
||||
});
|
||||
};
|
||||
const startTime = Date.now()
|
||||
resolver = resolve
|
||||
worker.postMessage({ value: THRESHOLD, startTime })
|
||||
})
|
||||
}
|
||||
|
||||
const calculate = async () => {
|
||||
let total = 0;
|
||||
let total = 0
|
||||
|
||||
for (let i = 0; i < ITERATIONS; i++) {
|
||||
const result = await benchmark();
|
||||
total += result;
|
||||
const result = await benchmark()
|
||||
total += result
|
||||
}
|
||||
|
||||
const average = total / ITERATIONS;
|
||||
const average = total / ITERATIONS
|
||||
|
||||
results.innerText = `Average time: ${average}ms`;
|
||||
};
|
||||
results.innerText = `Average time: ${average}ms`
|
||||
}
|
||||
|
||||
window.addEventListener("DOMContentLoaded", calculate);
|
||||
window.addEventListener('DOMContentLoaded', calculate)
|
||||
|
|
|
@ -1,45 +1,45 @@
|
|||
const isPrime = (number) => {
|
||||
if (number % 2 === 0 && number > 2) {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
|
||||
let start = 2;
|
||||
const limit = Math.sqrt(number);
|
||||
let start = 2
|
||||
const limit = Math.sqrt(number)
|
||||
while (start <= limit) {
|
||||
if (number % start++ < 1) {
|
||||
return false;
|
||||
return false
|
||||
}
|
||||
}
|
||||
return number > 1;
|
||||
};
|
||||
return number > 1
|
||||
}
|
||||
|
||||
addEventListener("message", (e) => {
|
||||
const { startTime } = e.data;
|
||||
addEventListener('message', (e) => {
|
||||
const { startTime } = e.data
|
||||
|
||||
let n = 0;
|
||||
let total = 0;
|
||||
const THRESHOLD = e.data.value;
|
||||
const primes = [];
|
||||
let n = 0
|
||||
let total = 0
|
||||
const THRESHOLD = e.data.value
|
||||
const primes = []
|
||||
|
||||
let previous = startTime;
|
||||
let previous = startTime
|
||||
|
||||
while (++n <= THRESHOLD) {
|
||||
if (isPrime(n)) {
|
||||
primes.push(n);
|
||||
total++;
|
||||
primes.push(n)
|
||||
total++
|
||||
|
||||
const now = Date.now();
|
||||
const now = Date.now()
|
||||
|
||||
if (now - previous > 250) {
|
||||
previous = now;
|
||||
previous = now
|
||||
postMessage({
|
||||
status: "calculating",
|
||||
status: 'calculating',
|
||||
count: total,
|
||||
time: Date.now() - startTime,
|
||||
});
|
||||
time: Date.now() - startTime
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
postMessage({ status: "done", count: total, time: Date.now() - startTime });
|
||||
});
|
||||
postMessage({ status: 'done', count: total, time: Date.now() - startTime })
|
||||
})
|
||||
|
|
|
@ -10,39 +10,39 @@
|
|||
<h1>Welcome to Tauri!</h1>
|
||||
|
||||
<script>
|
||||
window.addEventListener("DOMContentLoaded", (event) => {
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.__TAURI__
|
||||
.invoke("tauri", {
|
||||
__tauriModule: "Fs",
|
||||
.invoke('tauri', {
|
||||
__tauriModule: 'Fs',
|
||||
message: {
|
||||
cmd: "readBinaryFile",
|
||||
path: ".tauri_3mb.json",
|
||||
cmd: 'readBinaryFile',
|
||||
path: '.tauri_3mb.json',
|
||||
options: {
|
||||
// home folder
|
||||
dir: 11,
|
||||
},
|
||||
},
|
||||
dir: 11
|
||||
}
|
||||
}
|
||||
})
|
||||
.then((_data) => {
|
||||
window.__TAURI__.invoke("tauri", {
|
||||
__tauriModule: "Process",
|
||||
window.__TAURI__.invoke('tauri', {
|
||||
__tauriModule: 'Process',
|
||||
message: {
|
||||
cmd: "exit",
|
||||
exitCode: 0,
|
||||
},
|
||||
});
|
||||
cmd: 'exit',
|
||||
exitCode: 0
|
||||
}
|
||||
})
|
||||
})
|
||||
.catch((_error) => {
|
||||
// error
|
||||
window.__TAURI__.invoke("tauri", {
|
||||
__tauriModule: "Process",
|
||||
window.__TAURI__.invoke('tauri', {
|
||||
__tauriModule: 'Process',
|
||||
message: {
|
||||
cmd: "exit",
|
||||
exitCode: 1,
|
||||
},
|
||||
});
|
||||
});
|
||||
});
|
||||
cmd: 'exit',
|
||||
exitCode: 1
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -10,15 +10,15 @@
|
|||
<h1>Welcome to Tauri!</h1>
|
||||
|
||||
<script>
|
||||
window.addEventListener("DOMContentLoaded", (event) => {
|
||||
window.__TAURI__.invoke("tauri", {
|
||||
__tauriModule: "Process",
|
||||
window.addEventListener('DOMContentLoaded', (event) => {
|
||||
window.__TAURI__.invoke('tauri', {
|
||||
__tauriModule: 'Process',
|
||||
message: {
|
||||
cmd: "exit",
|
||||
exitCode: 0,
|
||||
},
|
||||
});
|
||||
});
|
||||
cmd: 'exit',
|
||||
exitCode: 0
|
||||
}
|
||||
})
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -24,8 +24,8 @@
|
|||
"lint": "eslint --ext ts \"./src/**/*.ts\"",
|
||||
"lint-fix": "eslint --fix --ext ts \"./src/**/*.ts\"",
|
||||
"lint:lockfile": "lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts npm yarn",
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore"
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
|
|
@ -228,17 +228,11 @@
|
|||
"properties": {
|
||||
"beforeBuildCommand": {
|
||||
"description": "a shell command to run before `tauri build` kicks in",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"beforeDevCommand": {
|
||||
"description": "a shell command to run before `tauri dev` kicks in",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"devPath": {
|
||||
"description": "The path or URL to use on development.",
|
||||
|
@ -260,20 +254,14 @@
|
|||
},
|
||||
"features": {
|
||||
"description": "features passed to `cargo` commands",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"runner": {
|
||||
"description": "The binary used to build and run the application.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"withGlobalTauri": {
|
||||
"description": "Whether we should inject the Tauri API on `window.__TAURI__` or not.",
|
||||
|
@ -292,16 +280,10 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"category": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"copyright": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"deb": {
|
||||
"default": {
|
||||
|
@ -315,36 +297,24 @@
|
|||
]
|
||||
},
|
||||
"externalBin": {
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"icon": {
|
||||
"description": "The app's icons",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"identifier": {
|
||||
"description": "The app's identifier",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"longDescription": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"macOS": {
|
||||
"default": {
|
||||
|
@ -358,19 +328,13 @@
|
|||
},
|
||||
"resources": {
|
||||
"description": "App resources to bundle. Each resource is a path to a file or directory. Glob patterns are supported.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"shortDescription": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"targets": {
|
||||
"description": "The bundle targets, currently supports [\"deb\", \"app\", \"msi\", \"appimage\", \"dmg\"] or \"all\"",
|
||||
|
@ -415,197 +379,129 @@
|
|||
"CliArg": {
|
||||
"description": "A CLI argument definition",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"name"
|
||||
],
|
||||
"required": ["name"],
|
||||
"properties": {
|
||||
"conflictsWith": {
|
||||
"description": "Sets a conflicting argument by name i.e. when using this argument, the following argument can't be present and vice versa.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"conflictsWithAll": {
|
||||
"description": "The same as conflictsWith but allows specifying multiple two-way conflicts per argument.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"description": {
|
||||
"description": "The argument description which will be shown on the help information. Typically, this is a short (one line) description of the arg.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"index": {
|
||||
"description": "The positional argument index, starting at 1.\n\nThe index refers to position according to other positional argument. It does not define position in the argument list as a whole. When utilized with multiple=true, only the last positional argument may be defined as multiple (i.e. the one with the highest index).",
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
],
|
||||
"type": ["integer", "null"],
|
||||
"format": "uint64",
|
||||
"minimum": 0.0
|
||||
},
|
||||
"longDescription": {
|
||||
"description": "The argument long description which will be shown on the help information. Typically this a more detailed (multi-line) message that describes the argument.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"maxValues": {
|
||||
"description": "Specifies the maximum number of values are for this argument. For example, if you had a -f <file> argument where you wanted up to 3 'files', you would set .max_values(3), and this argument would be satisfied if the user provided, 1, 2, or 3 values.",
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
],
|
||||
"type": ["integer", "null"],
|
||||
"format": "uint64",
|
||||
"minimum": 0.0
|
||||
},
|
||||
"minValues": {
|
||||
"description": "Specifies the minimum number of values for this argument. For example, if you had a -f <file> argument where you wanted at least 2 'files', you would set `minValues: 2`, and this argument would be satisfied if the user provided, 2 or more values.",
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
],
|
||||
"type": ["integer", "null"],
|
||||
"format": "uint64",
|
||||
"minimum": 0.0
|
||||
},
|
||||
"multiple": {
|
||||
"description": "Specifies that the argument may appear more than once.\n\n- For flags, this results in the number of occurrences of the flag being recorded. For example -ddd or -d -d -d would count as three occurrences. - For options there is a distinct difference in multiple occurrences vs multiple values. For example, --opt val1 val2 is one occurrence, but two values. Whereas --opt val1 --opt val2 is two occurrences.",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
},
|
||||
"multipleOccurrences": {
|
||||
"description": "specifies that the argument may appear more than once.",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
},
|
||||
"name": {
|
||||
"description": "The unique argument name",
|
||||
"type": "string"
|
||||
},
|
||||
"numberOfValues": {
|
||||
"type": [
|
||||
"integer",
|
||||
"null"
|
||||
],
|
||||
"type": ["integer", "null"],
|
||||
"format": "uint64",
|
||||
"minimum": 0.0
|
||||
},
|
||||
"possibleValues": {
|
||||
"description": "Specifies a list of possible values for this argument. At runtime, the CLI verifies that only one of the specified values was used, or fails with an error message.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"requireEquals": {
|
||||
"description": "Requires that options use the --option=val syntax i.e. an equals between the option and associated value.",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
},
|
||||
"required": {
|
||||
"description": "Sets whether or not the argument is required by default.\n\n- Required by default means it is required, when no other conflicting rules have been evaluated - Conflicting rules take precedence over being required.",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
},
|
||||
"requiredIfEq": {
|
||||
"description": "Allows specifying that an argument is required conditionally with the signature [arg, value] the requirement will only become valid if the `arg`'s value equals `${value}`.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"requiredUnlessPresent": {
|
||||
"description": "Sets an arg that override this arg's required setting i.e. this arg will be required unless this other argument is present.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"requiredUnlessPresentAll": {
|
||||
"description": "Sets args that override this arg's required setting i.e. this arg will be required unless all these other arguments are present.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"requiredUnlessPresentAny": {
|
||||
"description": "Sets args that override this arg's required setting i.e. this arg will be required unless at least one of these other arguments are present.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"requires": {
|
||||
"description": "Tets an argument by name that is required when this one is present i.e. when using this argument, the following argument must be present.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"requiresAll": {
|
||||
"description": "Sts multiple arguments by names that are required when this one is present i.e. when using this argument, the following arguments must be present.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"requiresIf": {
|
||||
"description": "Allows a conditional requirement with the signature [arg, value] the requirement will only become valid if `arg`'s value equals `${value}`.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"short": {
|
||||
"description": "The short version of the argument, without the preceding -.\n\nNOTE: Any leading - characters will be stripped, and only the first non - character will be used as the short version.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
],
|
||||
"type": ["string", "null"],
|
||||
"maxLength": 1,
|
||||
"minLength": 1
|
||||
},
|
||||
"takesValue": {
|
||||
"description": "Specifies that the argument takes a value at run time.\n\nNOTE: values for arguments may be specified in any of the following methods - Using a space such as -o value or --option value - Using an equals and no space such as -o=value or --option=value - Use a short and no space such as -ovalue",
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -616,48 +512,30 @@
|
|||
"properties": {
|
||||
"afterHelp": {
|
||||
"description": "adds additional help information to be displayed in addition to auto-generated help this information is displayed after the auto-generated help information this is often used to describe how to use the arguments, or caveats to be noted.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"args": {
|
||||
"description": "list of args for the command",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"$ref": "#/definitions/CliArg"
|
||||
}
|
||||
},
|
||||
"beforeHelp": {
|
||||
"description": "adds additional help information to be displayed in addition to auto-generated help this information is displayed before the auto-generated help information. this is often used for header information",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"description": {
|
||||
"description": "command description which will be shown on the help information",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"longDescription": {
|
||||
"description": "command long description which will be shown on the help information",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"subcommands": {
|
||||
"description": "list of subcommands of this command.\n\nsubcommands are effectively sub-apps, because they can contain their own arguments, subcommands, usage, etc. they also function just like the app command, in that they get their own auto generated help and usage",
|
||||
"type": [
|
||||
"object",
|
||||
"null"
|
||||
],
|
||||
"type": ["object", "null"],
|
||||
"additionalProperties": {
|
||||
"$ref": "#/definitions/CliConfig"
|
||||
}
|
||||
|
@ -669,10 +547,7 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"depends": {
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
|
@ -791,43 +666,25 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"entitlements": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"exceptionDomain": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"frameworks": {
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"license": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"minimumSystemVersion": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"signingIdentity": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"useBootstrapper": {
|
||||
"default": false,
|
||||
|
@ -851,17 +708,11 @@
|
|||
"properties": {
|
||||
"productName": {
|
||||
"description": "App name. Automatically converted to kebab-case on Linux.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"version": {
|
||||
"description": "App version.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -870,10 +721,7 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"csp": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -898,9 +746,7 @@
|
|||
},
|
||||
"SystemTrayConfig": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"iconPath"
|
||||
],
|
||||
"required": ["iconPath"],
|
||||
"properties": {
|
||||
"iconPath": {
|
||||
"description": "Path to the icon to use on the system tray.\n\nIt is forced to be a `.png` file on Linux and macOS, and a `.ico` file on Windows.",
|
||||
|
@ -1051,27 +897,18 @@
|
|||
"dialog": {
|
||||
"description": "Display built-in dialog or use event system if disabled.",
|
||||
"default": true,
|
||||
"type": [
|
||||
"boolean",
|
||||
"null"
|
||||
]
|
||||
"type": ["boolean", "null"]
|
||||
},
|
||||
"endpoints": {
|
||||
"description": "The updater endpoints.",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"type": ["array", "null"],
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"pubkey": {
|
||||
"description": "Optional pubkey.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
@ -1116,33 +953,21 @@
|
|||
},
|
||||
"height": {
|
||||
"description": "The window height.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"label": {
|
||||
"description": "The window identifier.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"maxHeight": {
|
||||
"description": "The max window height.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"maxWidth": {
|
||||
"description": "The max window width.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"maximized": {
|
||||
|
@ -1152,18 +977,12 @@
|
|||
},
|
||||
"minHeight": {
|
||||
"description": "The min window height.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"minWidth": {
|
||||
"description": "The min window width.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"resizable": {
|
||||
|
@ -1173,10 +992,7 @@
|
|||
},
|
||||
"title": {
|
||||
"description": "The window title.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"transparent": {
|
||||
"description": "Whether the window is transparent or not.",
|
||||
|
@ -1185,10 +1001,7 @@
|
|||
},
|
||||
"url": {
|
||||
"description": "The window webview URL.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"visible": {
|
||||
"description": "Whether the window is visible or not.",
|
||||
|
@ -1197,26 +1010,17 @@
|
|||
},
|
||||
"width": {
|
||||
"description": "The window width.",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"x": {
|
||||
"description": "The horizontal position of the window's top left corner",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
},
|
||||
"y": {
|
||||
"description": "The vertical position of the window's top left corner",
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"type": ["number", "null"],
|
||||
"format": "double"
|
||||
}
|
||||
},
|
||||
|
@ -1226,22 +1030,13 @@
|
|||
"type": "object",
|
||||
"properties": {
|
||||
"certificateThumbprint": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"digestAlgorithm": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"timestampUrl": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"wix": {
|
||||
"anyOf": [
|
||||
|
@ -1301,10 +1096,7 @@
|
|||
},
|
||||
"license": {
|
||||
"description": "Path to the license file.",
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
},
|
||||
"mergeRefs": {
|
||||
"default": [],
|
||||
|
@ -1318,10 +1110,7 @@
|
|||
"type": "boolean"
|
||||
},
|
||||
"template": {
|
||||
"type": [
|
||||
"string",
|
||||
"null"
|
||||
]
|
||||
"type": ["string", "null"]
|
||||
}
|
||||
},
|
||||
"additionalProperties": false
|
||||
|
|
|
@ -27,8 +27,8 @@
|
|||
"lint": "eslint --ext ts \"./src/**/*.ts\"",
|
||||
"lint-fix": "eslint --fix --ext ts \"./src/**/*.ts\"",
|
||||
"lint:lockfile": "lockfile-lint --path yarn.lock --type yarn --validate-https --allowed-hosts npm yarn",
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format": "prettier --write --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"format:check": "prettier --check --end-of-line=auto \"./**/*.{cjs,js,jsx,ts,tsx,html,css,json}\" --ignore-path .gitignore",
|
||||
"test": "jest --runInBand"
|
||||
},
|
||||
"dependencies": {
|
||||
|
|
Loading…
Reference in New Issue