mirror of
https://github.com/ElectronNET/Electron.NET.git
synced 2026-02-15 05:35:01 +00:00
Compare commits
87 Commits
0.3.0-pre.
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8009348941 | ||
|
|
b3b124bde1 | ||
|
|
21226e1ef0 | ||
|
|
7174118a3e | ||
|
|
092789a5ec | ||
|
|
bff3fffcbd | ||
|
|
456135a562 | ||
|
|
300f52510c | ||
|
|
d85a64f515 | ||
|
|
53698d1d44 | ||
|
|
04a224aa4f | ||
|
|
891da140b7 | ||
|
|
17f761d184 | ||
|
|
9f6489891e | ||
|
|
c8f1cdf59f | ||
|
|
6c95dfd476 | ||
|
|
b180fc2ea8 | ||
|
|
682a1c38ed | ||
|
|
809b0a6be7 | ||
|
|
ae3f755648 | ||
|
|
7e6760a428 | ||
|
|
29fdbb5315 | ||
|
|
36bba6a49f | ||
|
|
44a010e0ed | ||
|
|
25770db138 | ||
|
|
1c99ab02cc | ||
|
|
73c56e2450 | ||
|
|
30037fce69 | ||
|
|
69048d5565 | ||
|
|
d9c8e04b5c | ||
|
|
368ef412bb | ||
|
|
cb20fbad25 | ||
|
|
89cdf2f55b | ||
|
|
1c62c1f132 | ||
|
|
d3e3188681 | ||
|
|
4f95043309 | ||
|
|
13f1203ccc | ||
|
|
9d0378798b | ||
|
|
1d6ef7a250 | ||
|
|
2d6d4e2320 | ||
|
|
df8e269d5c | ||
|
|
bdfbcd5b77 | ||
|
|
19e785f53f | ||
|
|
0b453177b5 | ||
|
|
8ed7f27722 | ||
|
|
321b8cd9e5 | ||
|
|
b326f863d8 | ||
|
|
f148fe6a14 | ||
|
|
515d325731 | ||
|
|
f32a40fe17 | ||
|
|
c53a5a9163 | ||
|
|
8d4cdddc46 | ||
|
|
70e8f85123 | ||
|
|
5a7cbd972f | ||
|
|
33da428c45 | ||
|
|
f1b4766360 | ||
|
|
e070759645 | ||
|
|
49eaa5e129 | ||
|
|
b3f5a3c52b | ||
|
|
0d732ce99e | ||
|
|
218b99808b | ||
|
|
7f507a6d86 | ||
|
|
81b3793966 | ||
|
|
1baa5c6200 | ||
|
|
5f76804065 | ||
|
|
70ffebf39d | ||
|
|
0a54735f35 | ||
|
|
1ac371b3da | ||
|
|
e854451043 | ||
|
|
331c2f548c | ||
|
|
b00adcbd38 | ||
|
|
ed6d24dbb1 | ||
|
|
bbc7c79d5a | ||
|
|
2389ae32bd | ||
|
|
42fecbdc98 | ||
|
|
95e02e2655 | ||
|
|
153625ba51 | ||
|
|
c97f914e7a | ||
|
|
d95b41fbae | ||
|
|
2b2b26e13b | ||
|
|
9bb2adca78 | ||
|
|
88d2daacb1 | ||
|
|
c90f003519 | ||
|
|
daa9f399e9 | ||
|
|
6246b44d68 | ||
|
|
347c1ef0e4 | ||
|
|
7c8eeef225 |
137
.github/CONTRIBUTING.md
vendored
Normal file
137
.github/CONTRIBUTING.md
vendored
Normal file
@@ -0,0 +1,137 @@
|
|||||||
|
# Contributing
|
||||||
|
|
||||||
|
## Project Scope
|
||||||
|
|
||||||
|
The Electron.NET project ultimately tries to provide a framework for developing cross-platform client applications on the basis of .NET and Electron. Anything that is related to this goal will be considered. The project aims to be as close to Electron with .NET as a basis as possible. If your contribution does not reflect that goal, the chances of accepting it are limited.
|
||||||
|
|
||||||
|
## Code License
|
||||||
|
|
||||||
|
This is an open source project falling under the [MIT License](../LICENSE). By using, distributing, or contributing to this project, you accept and agree that all code within the Electron.NET project and its libraries are licensed under MIT license.
|
||||||
|
|
||||||
|
## Becoming a Contributor
|
||||||
|
|
||||||
|
Usually appointing someone as a contributor follows this process:
|
||||||
|
|
||||||
|
1. An individual contributes actively via discussions (reporting bugs, giving feedback to existing or opening new issues) and / or pull requests
|
||||||
|
2. The individual is either directly asked, invited or asks for contributor rights on the project
|
||||||
|
3. The individual uses the contribution rights to sustain or increase the active contributions
|
||||||
|
|
||||||
|
Every contributor might have to sign the contributor's license agreement (CLA) to establish a legal trust between the project and its contributors.
|
||||||
|
|
||||||
|
## Working on Electron.NET
|
||||||
|
|
||||||
|
### Issue Discussion
|
||||||
|
|
||||||
|
Discussion of issues should be placed transparently in the issue tracker here on GitHub.
|
||||||
|
|
||||||
|
* [General issues, bugs, new features](https://github.com/ElectronNET/Electron.NET/issues)
|
||||||
|
* [General discussions, help, exchange of ideas](https://github.com/ElectronNET/Electron.NET/discussions)
|
||||||
|
|
||||||
|
### Modifying the code
|
||||||
|
|
||||||
|
Electron.NET and its libraries uses features from the latest versions of C# (e.g., C# 10). You will therefore need a C# compiler that is up for the job.
|
||||||
|
|
||||||
|
1. Fork and clone the repo.
|
||||||
|
2. First try to build the ElectronNET.Core library and see if you get the tests running.
|
||||||
|
3. You will be required to resolve some dependencies via NuGet.
|
||||||
|
|
||||||
|
The build system of Electron.NET uses NUKE.
|
||||||
|
|
||||||
|
### Code Conventions
|
||||||
|
|
||||||
|
Most parts in the Electron.NET project are fairly straight forward. Among these are:
|
||||||
|
|
||||||
|
* Always use statement blocks for control statements, e.g., in a for-loop, if-condition, ...
|
||||||
|
* You may use a simple (throw) statement in case of enforcing contracts on argument
|
||||||
|
* Be explicit about modifiers (some files follow an older convention of the code base, but we settled on the explicit style)
|
||||||
|
|
||||||
|
### Development Workflow
|
||||||
|
|
||||||
|
1. If no issue already exists for the work you'll be doing, create one to document the problem(s) being solved and self-assign.
|
||||||
|
2. Otherwise please let us know that you are working on the problem. Regular status updates (e.g. "still in progress", "no time anymore", "practically done", "pull request issued") are highly welcome.
|
||||||
|
3. Create a new branch—please don't work in the `main` branch directly. It is reserved for releases. We recommend naming the branch to match the issue being addressed (`feature/#777` or `issue-777`).
|
||||||
|
4. Add failing tests for the change you want to make. Tests are crucial and should be taken from W3C (or other specification).
|
||||||
|
5. Fix stuff. Always go from edge case to edge case.
|
||||||
|
6. All tests should pass now. Also your new implementation should not break existing tests.
|
||||||
|
7. Update the documentation to reflect any changes. (or document such changes in the original issue)
|
||||||
|
8. Push to your fork or push your issue-specific branch to the main repository, then submit a pull request against `develop`.
|
||||||
|
|
||||||
|
Just to illustrate the git workflow for Electron.NET a little bit more we've added the following graphs.
|
||||||
|
|
||||||
|
Initially, Electron.NET starts at the `main` branch. This branch should contain the latest stable (or released) version.
|
||||||
|
|
||||||
|
Here we now created a new branch called `develop`. This is the development branch.
|
||||||
|
|
||||||
|
Now active work is supposed to be done. Therefore a new branch should be created. Let's create one:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout -b feature/#777
|
||||||
|
```
|
||||||
|
|
||||||
|
There may be many of these feature branches. Most of them are also pushed to the server for discussion or synchronization.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git push -u origin feature/#777
|
||||||
|
```
|
||||||
|
|
||||||
|
Now feature branches may be closed when they are done. Here we simply merge with the feature branch(es). For instance the following command takes the `feature/#777` branch from the server and merges it with the `develop` branch.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout develop
|
||||||
|
git pull
|
||||||
|
git pull origin feature/#777
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, we may have all the features that are needed to release a new version of Electron.NET. Here we tag the release. For instance for the 1.0 release we use `v1.0`.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
git checkout main
|
||||||
|
git merge develop
|
||||||
|
git tag v1.0
|
||||||
|
```
|
||||||
|
|
||||||
|
(The last part is automatically performed by our CI system. Don't tag manually.)
|
||||||
|
|
||||||
|
### Versioning
|
||||||
|
|
||||||
|
The rules of [semver](http://semver.org/) don't necessarily apply here, but we will try to stay quite close to them.
|
||||||
|
|
||||||
|
Prior to version 1.0.0 we use the following scheme:
|
||||||
|
|
||||||
|
1. MINOR versions for reaching a feature milestone potentially combined with dramatic API changes
|
||||||
|
2. PATCH versions for refinements (e.g. performance improvements, bug fixes)
|
||||||
|
|
||||||
|
After releasing version 1.0.0 the scheme changes to become:
|
||||||
|
|
||||||
|
1. MAJOR versions at maintainers' discretion following significant changes to the codebase (e.g., API changes)
|
||||||
|
2. MINOR versions for backwards-compatible enhancements (e.g., performance improvements)
|
||||||
|
3. PATCH versions for backwards-compatible bug fixes (e.g., spec compliance bugs, support issues)
|
||||||
|
|
||||||
|
#### Code style
|
||||||
|
|
||||||
|
Regarding code style like indentation and whitespace, **follow the conventions you see used in the source already.** In general most of the [C# coding guidelines from Microsoft](https://msdn.microsoft.com/en-us/library/ff926074.aspx) are followed. This project prefers type inference with `var` to explicitly stating (redundant) information.
|
||||||
|
|
||||||
|
It is also important to keep a certain `async`-flow and to always use `ConfigureAwait(false)` in conjunction with an `await` expression.
|
||||||
|
|
||||||
|
## Backwards Compatibility
|
||||||
|
|
||||||
|
We always try to remain backwards compatible beyond the currently supported versions of .NET.
|
||||||
|
|
||||||
|
For instance, in December 2025 there have been activity to remove .NET 6 support from the codebase. We rejected this. Key points:
|
||||||
|
|
||||||
|
1. We have absolutely no need to drop `.net6` support. It doesn't hurt us in any way.
|
||||||
|
2. Many are still using `.net6`, including Electron.NET (non-Core) users. It doesn't make sense to force them to update two things at the same time (.NET + Electron.NET).
|
||||||
|
3. We MUST NOT and NEVER update `Microsoft.Build.Utilities.Core`. This will make Electron.NET stop working on older Visual Studio and MSBuild versions. There's are also no reasons to update it in the first place.
|
||||||
|
|
||||||
|
It's important to note that the Microsoft label of "Out of support" on .NET has almost no practical meaning. We've rarely (if ever) seen any bugs fixed in the same .NET version which mattered. The bugs that all new .NET versions have are much worse than mature .NET versions which are declared as "out of support". Keep in mind that the LTS matters most for active development / ongoing supported projects. If, e.g., a TV has been released a decade ago it most likely won't be patched. Still, you might want to deploy applications to it, which then naturally would involve being based on "out of support" versions of the framework.
|
||||||
|
|
||||||
|
TL;DR: Unless there is a technical reason (e.g., a crucial new API not being available) we should not drop "out of support" .NET versions. At the time of writing (December 2025) the minimum supported .NET version remains at `.net6`.
|
||||||
|
|
||||||
|
## Timeline
|
||||||
|
|
||||||
|
**All of this information is related to ElectronNET.Core pre-v1!**
|
||||||
|
|
||||||
|
We pretty much release whenever we have something new (i.e., do fixes such as a 0.1.1, or add new features, such as a 0.2.0) quite quickly.
|
||||||
|
|
||||||
|
We will go for a 1.0.0 release of this as early as ~mid of January 2026 (unless we find some critical things or want to extend the beta phase for ElectronNET.Core). This should be sufficient time to get some user input and have enough experience to call it stable.
|
||||||
@@ -1,33 +1,25 @@
|
|||||||
name: CI
|
name: Build and Publish
|
||||||
|
|
||||||
on: [push, pull_request]
|
on: [push]
|
||||||
|
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
|
NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }}
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: build-publish-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
# linux:
|
Integration-Tests:
|
||||||
# runs-on: ubuntu-latest
|
uses: ./.github/workflows/integration-tests.yml
|
||||||
# timeout-minutes: 10
|
name: '1'
|
||||||
|
|
||||||
# steps:
|
Publish:
|
||||||
# - uses: actions/checkout@v4
|
needs: [Integration-Tests]
|
||||||
|
|
||||||
# - name: Setup dotnet
|
|
||||||
# uses: actions/setup-dotnet@v4
|
|
||||||
# with:
|
|
||||||
# dotnet-version: |
|
|
||||||
# 6.0.x
|
|
||||||
# 8.0.x
|
|
||||||
# 10.0.x
|
|
||||||
|
|
||||||
# - name: Build
|
|
||||||
# run: ./build.sh
|
|
||||||
|
|
||||||
windows:
|
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
|
name: '2 / Publish'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
39
.github/workflows/PR Validation.yml
vendored
Normal file
39
.github/workflows/PR Validation.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
name: PR Validation
|
||||||
|
|
||||||
|
on: [pull_request]
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: pr-validation-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
Whitespace-Check:
|
||||||
|
uses: ./.github/workflows/trailing-whitespace-check.yml
|
||||||
|
secrets: inherit
|
||||||
|
name: '1'
|
||||||
|
|
||||||
|
Tests:
|
||||||
|
needs: Whitespace-Check
|
||||||
|
uses: ./.github/workflows/integration-tests.yml
|
||||||
|
secrets: inherit
|
||||||
|
name: '2'
|
||||||
|
|
||||||
|
build:
|
||||||
|
needs: [Whitespace-Check, Tests]
|
||||||
|
runs-on: windows-latest
|
||||||
|
timeout-minutes: 10
|
||||||
|
name: '3 / Build'
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Setup dotnet
|
||||||
|
uses: actions/setup-dotnet@v4
|
||||||
|
with:
|
||||||
|
dotnet-version: |
|
||||||
|
6.0.x
|
||||||
|
8.0.x
|
||||||
|
10.0.x
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: .\build.ps1
|
||||||
16
.github/workflows/integration-tests.yml
vendored
16
.github/workflows/integration-tests.yml
vendored
@@ -1,10 +1,7 @@
|
|||||||
name: Tests
|
name: Tests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
workflow_call:
|
||||||
branches: [ develop, main ]
|
|
||||||
pull_request:
|
|
||||||
branches: [ develop, main ]
|
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: integration-tests-${{ github.ref }}
|
group: integration-tests-${{ github.ref }}
|
||||||
@@ -12,7 +9,7 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
tests:
|
tests:
|
||||||
name: Integration Tests (${{ matrix.os }} / Electron ${{ matrix.electronVersion }})
|
name: ${{ matrix.os }} API-${{ matrix.electronVersion }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -45,6 +42,13 @@ jobs:
|
|||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Random delay (0-20 seconds)
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
DELAY=$((RANDOM % 21))
|
||||||
|
echo "Waiting for $DELAY seconds..."
|
||||||
|
sleep $DELAY
|
||||||
|
|
||||||
- name: Setup .NET
|
- name: Setup .NET
|
||||||
uses: actions/setup-dotnet@v4
|
uses: actions/setup-dotnet@v4
|
||||||
with:
|
with:
|
||||||
|
|||||||
4
.github/workflows/pr-comment.yml
vendored
4
.github/workflows/pr-comment.yml
vendored
@@ -2,7 +2,7 @@ name: Create PR Comments
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_run:
|
workflow_run:
|
||||||
workflows: ["Tests"]
|
workflows: [ "PR Validation" ]
|
||||||
types: [completed]
|
types: [completed]
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
@@ -14,7 +14,7 @@ jobs:
|
|||||||
pr-comment:
|
pr-comment:
|
||||||
name: Post Test Result as PR comment
|
name: Post Test Result as PR comment
|
||||||
runs-on: ubuntu-24.04
|
runs-on: ubuntu-24.04
|
||||||
if: github.event.workflow_run.event == 'pull_request'
|
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion != 'cancelled'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Download CTRF artifact
|
- name: Download CTRF artifact
|
||||||
|
|||||||
49
.github/workflows/retry-test-jobs.yml
vendored
Normal file
49
.github/workflows/retry-test-jobs.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Tests auto-rerun
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: [ "PR Validation", "Build and Publish" ]
|
||||||
|
types: [ completed ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
rerun-failed-matrix-jobs-once:
|
||||||
|
if: >
|
||||||
|
${{
|
||||||
|
github.event.workflow_run.conclusion == 'failure' &&
|
||||||
|
github.event.workflow_run.run_attempt == 1
|
||||||
|
}}
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
actions: write
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Decide whether to rerun (only if matrix jobs failed)
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
REPO: ${{ github.repository }}
|
||||||
|
RUN_ID: ${{ github.event.workflow_run.id }}
|
||||||
|
run: |
|
||||||
|
echo "Inspecting jobs of workflow run $RUN_ID in $REPO"
|
||||||
|
|
||||||
|
jobs_json="$(gh api -R $REPO repos/$REPO/actions/runs/$RUN_ID/jobs)"
|
||||||
|
|
||||||
|
echo "Jobs and conclusions:"
|
||||||
|
echo "$jobs_json" | jq '.jobs[] | {name: .name, conclusion: .conclusion}'
|
||||||
|
|
||||||
|
failed_matrix_jobs=$(echo "$jobs_json" | jq -r '
|
||||||
|
[ .jobs[]
|
||||||
|
| select(.conclusion == "failure"
|
||||||
|
and (.name | contains(" API-")))
|
||||||
|
]
|
||||||
|
| length // 0
|
||||||
|
')
|
||||||
|
failed_matrix_jobs=${failed_matrix_jobs:-0}
|
||||||
|
|
||||||
|
if [ "${failed_matrix_jobs}" -gt 0 ]; then
|
||||||
|
echo "Detected failing Integration Tests jobs – re-running failed jobs for this run."
|
||||||
|
gh run rerun -R "$REPO" "$RUN_ID" --failed
|
||||||
|
else
|
||||||
|
echo "Only non-matrix jobs (like Test Results) failed – not auto-rerunning."
|
||||||
|
fi
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
name: Trailing Whitespace Check
|
name: Whitespace Check
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
workflow_call:
|
||||||
types: [opened, synchronize, reopened]
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-trailing-whitespace:
|
check-whitespace:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
|||||||
35
Changelog.md
35
Changelog.md
@@ -1,10 +1,45 @@
|
|||||||
|
# 0.4.1
|
||||||
|
|
||||||
|
## ElectronNET.Core
|
||||||
|
|
||||||
|
- Fixed handling of `Center` property for windows (#1001)
|
||||||
|
- Added missing methods on `Cookies` (#1000)
|
||||||
|
|
||||||
|
# 0.4.0
|
||||||
|
|
||||||
|
## ElectronNET.Core
|
||||||
|
|
||||||
|
- Fixed ElectronSingleInstance handling (#996) @softworkz
|
||||||
|
- Fixed `PackageId` handling (#993) @softworkz
|
||||||
|
- Added cross-platform npm restore and check mismatch on publish (#988) @softworkz
|
||||||
|
|
||||||
|
# 0.3.1
|
||||||
|
|
||||||
|
## ElectronNET.Core
|
||||||
|
|
||||||
|
- Fixed issue transforming the project ID (#989, #990) @softworkz
|
||||||
|
|
||||||
# 0.3.0
|
# 0.3.0
|
||||||
|
|
||||||
## ElectronNET.Core
|
## ElectronNET.Core
|
||||||
|
|
||||||
- Updated infrastructure (#937, #939) @softworkz
|
- Updated infrastructure (#937, #939) @softworkz
|
||||||
|
- Updated all model classes to Electron API 39.2 (#949) @softworkz
|
||||||
- Fixed output path for `electron-builder` (#942) @softworkz
|
- Fixed output path for `electron-builder` (#942) @softworkz
|
||||||
|
- Fixed floating point display resolution (#944) @softworkz
|
||||||
|
- Fixed error in case of missing electron-host-hook (#978)
|
||||||
- Fixed previous API break using exposed `JsonElement` objects (#938) @softworkz
|
- Fixed previous API break using exposed `JsonElement` objects (#938) @softworkz
|
||||||
|
- Fixed and improved several test cases (#962) @softworkz
|
||||||
|
- Fixed startup of Electron.NET from VS Code Debug Adapter (#952)
|
||||||
|
- Fixed the `BrowserWindowOptions` (#945) @softworkz
|
||||||
|
- Fixed example for `AutoMenuHide` to reflect platform capabilities (#982) @markatosi
|
||||||
|
- Added several migration checks for publishing (#966) @softworkz
|
||||||
|
- Added more test runners for E2E tests (#950, #951) @agracio
|
||||||
|
- Added dynamic updates for tray menu (#973) @davidroth
|
||||||
|
- Added matrix tests with 6 runners and 2 electron version (#948) @softworkz
|
||||||
|
- Added additional APIs for WebContents (#958) @agracio
|
||||||
|
- Added documentation for MacOS package publish (#983) @markatosi
|
||||||
|
- Added sample application for `ElectronHostHook` (#967) @adityashirsatrao007
|
||||||
|
|
||||||
# 0.2.0
|
# 0.2.0
|
||||||
|
|
||||||
|
|||||||
@@ -133,9 +133,10 @@ builder.UseElectron(args, async () =>
|
|||||||
{
|
{
|
||||||
var options = new BrowserWindowOptions {
|
var options = new BrowserWindowOptions {
|
||||||
Show = false,
|
Show = false,
|
||||||
AutoHideMenuBar = true,
|
|
||||||
IsRunningBlazor = true, // <-- crucial
|
IsRunningBlazor = true, // <-- crucial
|
||||||
};
|
};
|
||||||
|
if (OperatingSystem.IsWindows() || OperatingSystem.IsLinux())
|
||||||
|
options.AutoHideMenuBar = true;
|
||||||
var browserWindow = await Electron.WindowManager.CreateWindowAsync(options);
|
var browserWindow = await Electron.WindowManager.CreateWindowAsync(options);
|
||||||
browserWindow.OnReadyToShow += () => browserWindow.Show();
|
browserWindow.OnReadyToShow += () => browserWindow.Show();
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -8,7 +8,9 @@ When you build an Electron.NET project, the following validation checks are perf
|
|||||||
|
|
||||||
| Code | Check | Description |
|
| Code | Check | Description |
|
||||||
|------|-------|-------------|
|
|------|-------|-------------|
|
||||||
| [ELECTRON001](#1-packagejson-not-allowed) | package.json not allowed | Ensures no package.json exists outside ElectronHostHook |
|
| [ELECTRON001](#1-packagejson-rules) | package.json location rules | Ensures `package.json`/`package-lock.json` aren’t present in unsupported locations (root `package.json` handled separately) |
|
||||||
|
| [ELECTRON008](#1-packagejson-rules) | root package.json contains electron | Warns when root `package.json` contains the word `electron` (case-insensitive) |
|
||||||
|
| [ELECTRON009](#1-packagejson-rules) | root package.json copied to output | Warns when root `package.json` is configured to be copied to output/publish |
|
||||||
| [ELECTRON002](#2-electron-manifestjson-not-allowed) | electron-manifest.json not allowed | Detects deprecated manifest files |
|
| [ELECTRON002](#2-electron-manifestjson-not-allowed) | electron-manifest.json not allowed | Detects deprecated manifest files |
|
||||||
| [ELECTRON003](#3-electron-builderjson-location) | electron-builder.json location | Verifies electron-builder.json exists in Properties folder |
|
| [ELECTRON003](#3-electron-builderjson-location) | electron-builder.json location | Verifies electron-builder.json exists in Properties folder |
|
||||||
| [ELECTRON004](#3-electron-builderjson-location) | electron-builder.json wrong location | Warns if electron-builder.json is found in incorrect locations |
|
| [ELECTRON004](#3-electron-builderjson-location) | electron-builder.json wrong location | Warns if electron-builder.json is found in incorrect locations |
|
||||||
@@ -18,30 +20,44 @@ When you build an Electron.NET project, the following validation checks are perf
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 1. package.json not allowed
|
## 1. package.json rules
|
||||||
|
|
||||||
**Warning Code:** `ELECTRON001`
|
**Warning Codes:** `ELECTRON001`, `ELECTRON008`, `ELECTRON009`
|
||||||
|
|
||||||
### What is checked
|
### What is checked
|
||||||
|
|
||||||
The build system scans for `package.json` and `package-lock.json` files in your project directory. These files should not exist in the project root or subdirectories (with one exception).
|
The build system scans for `package.json` and `package-lock.json` files in your project directory.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- **ELECTRON001**: `package.json` / `package-lock.json` must not exist in the project directory or subdirectories
|
||||||
|
- Exception: `ElectronHostHook` folder is allowed
|
||||||
|
- Note: a **root** `package.json` is **excluded** from `ELECTRON001` and validated by `ELECTRON008` / `ELECTRON009`
|
||||||
|
|
||||||
|
- **ELECTRON008**: If a root `package.json` exists, it must **not** contain electron-related dependencies or configuration.
|
||||||
|
|
||||||
|
- **ELECTRON009**: If a root `package.json` exists, it must **not** be configured to be copied to output/publish (for example via `CopyToOutputDirectory` / `CopyToPublishDirectory` metadata)
|
||||||
|
|
||||||
### Why this matters
|
### Why this matters
|
||||||
|
|
||||||
In previous versions of Electron.NET, a `package.json` file was required in the project. The new version generates this file automatically from MSBuild properties defined in your `.csproj` file.
|
Electron.NET generates its Electron-related `package.json` during publishing based on MSBuild properties. A user-maintained Electron-related `package.json` can conflict with that process.
|
||||||
|
|
||||||
|
Also, ensuring the root `package.json` is not copied prevents accidentally shipping it with the published app.
|
||||||
|
|
||||||
### Exception
|
### Exception
|
||||||
|
|
||||||
A `package.json` file **is allowed** in the `ElectronHostHook` folder if you're using custom host hooks. This is the only valid location for a manually maintained package.json.
|
A `package.json` / `package-lock.json` file **is allowed** in the `ElectronHostHook` folder if you're using custom host hooks.
|
||||||
|
|
||||||
### How to fix
|
### How to fix
|
||||||
|
|
||||||
|
If you have an Electron-related `package.json` from older Electron.NET versions:
|
||||||
|
|
||||||
1. **Open your project's `.csproj` file**
|
1. **Open your project's `.csproj` file**
|
||||||
2. **Add the required properties** to a PropertyGroup with the label `ElectronNetCommon`:
|
2. **Add the required properties** to a PropertyGroup with the label `ElectronNetCommon`:
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<PropertyGroup Label="ElectronNetCommon">
|
<PropertyGroup Label="ElectronNetCommon">
|
||||||
<PackageId>my-electron-app</PackageId>
|
<ElectronPackageId>my-electron-app</ElectronPackageId>
|
||||||
<Title>My Electron App</Title>
|
<Title>My Electron App</Title>
|
||||||
<Version>1.0.0</Version>
|
<Version>1.0.0</Version>
|
||||||
<Description>My awesome Electron.NET application</Description>
|
<Description>My awesome Electron.NET application</Description>
|
||||||
@@ -51,7 +67,12 @@ A `package.json` file **is allowed** in the `ElectronHostHook` folder if you're
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
```
|
```
|
||||||
|
|
||||||
3. **Delete the old `package.json`** file from your project root
|
3. **Delete** Electron-related `package.json` / `package-lock.json` files (except those under `ElectronHostHook` if applicable)
|
||||||
|
|
||||||
|
If you keep a root `package.json` for non-Electron reasons:
|
||||||
|
|
||||||
|
- Ensure it does **not** contain electron dependencies or configuration (fixes `ELECTRON008`)
|
||||||
|
- Ensure it is **not** copied to output/publish (fixes `ELECTRON009`)
|
||||||
|
|
||||||
> **See also:** [Migration Guide](Migration-Guide.md) for complete migration instructions.
|
> **See also:** [Migration Guide](Migration-Guide.md) for complete migration instructions.
|
||||||
|
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ dotnet add package ElectronNET.Core.AspNet # For ASP.NET projects
|
|||||||
### Step 2: Configure Project Settings
|
### Step 2: Configure Project Settings
|
||||||
|
|
||||||
**Auto-generated Configuration:**
|
**Auto-generated Configuration:**
|
||||||
ElectronNET.Core automatically creates `electron-builder.json` during the first build or NuGet restore. No manual configuration is needed for basic setups.
|
ElectronNET.Core automatically creates `electron-builder.json` in the `Properties` folder of your project during the first build or NuGet restore. No manual configuration is needed for basic setups.
|
||||||
|
|
||||||
**Migrate Existing Configuration:**
|
**Migrate Existing Configuration:**
|
||||||
If you have an existing `electron.manifest.json` file:
|
If you have an existing `electron.manifest.json` file:
|
||||||
@@ -63,6 +63,9 @@ You can also manually edit `electron-builder.json`:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
**Modify Launch Settings:**
|
||||||
|
ElectronNET.Core no longer needs a separate CLI tool (electronize.exe) for launching. You should update your launch settings to use either the ASP.NET-first or Electron-first approach. See [Debugging](../Using/Debugging.md) for details.
|
||||||
|
|
||||||
## 🎯 Testing Migration
|
## 🎯 Testing Migration
|
||||||
|
|
||||||
After completing the migration steps:
|
After completing the migration steps:
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ Add the Electron.NET configuration to your `.csproj` file:
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ElectronNET.Core" Version="0.3.0" />
|
<PackageReference Include="ElectronNET.Core" Version="0.4.1" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ These are the current default values when you don't make any changes:
|
|||||||
<ElectronSingleInstance>true</ElectronSingleInstance>
|
<ElectronSingleInstance>true</ElectronSingleInstance>
|
||||||
<ElectronSplashScreen></ElectronSplashScreen>
|
<ElectronSplashScreen></ElectronSplashScreen>
|
||||||
<ElectronIcon></ElectronIcon>
|
<ElectronIcon></ElectronIcon>
|
||||||
<PackageId>$(MSBuildProjectName.Replace(".", "-").ToLower())</PackageId>
|
<ElectronPackageId>$(MSBuildProjectName.Replace(".", "-").ToLower())</ElectronPackageId>
|
||||||
<ElectronBuilderJson>electron-builder.json</ElectronBuilderJson>
|
<ElectronBuilderJson>electron-builder.json</ElectronBuilderJson>
|
||||||
<Title>$(MSBuildProjectName)</Title>
|
<Title>$(MSBuildProjectName)</Title>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
@@ -38,15 +38,15 @@ Since electron builder still expects a `package.json` file to exist, ElectronNET
|
|||||||
|
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"name": "$(PackageId)",
|
"name": "$(ElectronPackageId)",
|
||||||
"productName": "$(ElectronTitle)",
|
"productName": "$(ElectronTitle)",
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "$(PackageId)",
|
"appId": "$(ElectronPackageId)",
|
||||||
"linux": {
|
"linux": {
|
||||||
"desktop": {
|
"desktop": {
|
||||||
"entry": { "Name": "$(Title)" }
|
"entry": { "Name": "$(Title)" }
|
||||||
},
|
},
|
||||||
"executableName": "$(PackageId)"
|
"executableName": "$(ElectronPackageId)"
|
||||||
},
|
},
|
||||||
"deb": {
|
"deb": {
|
||||||
"desktop": {
|
"desktop": {
|
||||||
|
|||||||
74
docs/Using/Custom_main.md
Normal file
74
docs/Using/Custom_main.md
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
# Using custom_main.js
|
||||||
|
|
||||||
|
This guide explains how to include and use a `custom_main.js` file in your Electron.NET application for advanced Electron/Node.js customization.
|
||||||
|
|
||||||
|
## Why use custom_main.js?
|
||||||
|
|
||||||
|
- Register custom protocol handlers (e.g., `myapp://`) — protocols must be registered before the app is fully initialized
|
||||||
|
- Integrate Node.js modules (e.g., telemetry, OS APIs)
|
||||||
|
- Control startup logic (abort, environment checks)
|
||||||
|
- Set up IPC messaging or preload scripts
|
||||||
|
|
||||||
|
## Step-by-Step Process
|
||||||
|
|
||||||
|
### 1. Create the custom_main.js file
|
||||||
|
|
||||||
|
Place your custom logic in `electron/custom_main.js`:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
module.exports.onStartup = function(host) {
|
||||||
|
// Example: Register a global shortcut for opening dev tools
|
||||||
|
const { app, globalShortcut, BrowserWindow } = require('electron');
|
||||||
|
app.on('ready', () => {
|
||||||
|
const ret = globalShortcut.register('Control+Shift+I', () => {
|
||||||
|
BrowserWindow.getAllWindows().forEach(win => win.webContents.openDevTools());
|
||||||
|
console.log('Ctrl+Shift+I is pressed: DevTools opened!');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
app.on('will-quit', () => {
|
||||||
|
globalShortcut.unregisterAll();
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Configure your .csproj to copy custom_main.js to output
|
||||||
|
|
||||||
|
Add this to your `.csproj` file:
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="electron\custom_main.js">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
<TargetPath>.electron\custom_main.js</TargetPath>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Build and run your app
|
||||||
|
|
||||||
|
Use the standard build/run commands:
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
dotnet build
|
||||||
|
dotnet run
|
||||||
|
```
|
||||||
|
|
||||||
|
Electron.NET will automatically load and execute your `custom_main.js` before initializing the .NET backend.
|
||||||
|
|
||||||
|
## Advanced Usage
|
||||||
|
|
||||||
|
Use environment variables to control features:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
const env = process.env.ASPNETCORE_ENVIRONMENT || 'Production';
|
||||||
|
if (env === 'Development') { /* enable dev features */ }
|
||||||
|
```
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
|
- `custom_main.js` must use CommonJS syntax (`module.exports.onStartup = ...`).
|
||||||
|
- Place the file in your source directory and copy it to `.electron` using `.csproj`.
|
||||||
|
- Electron.NET will abort startup if `onStartup` returns `false`.
|
||||||
|
|
||||||
|
### Complete example is available here [ElectronNetSampleApp](https://github.com/niteshsinghal85/ElectronNetSampleApp)
|
||||||
@@ -62,6 +62,52 @@ Add publish profiles to `Properties/PublishProfiles/`:
|
|||||||
</Project>
|
</Project>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### ASP.NET Application Profile (macOS Apple Silicon ARM64)
|
||||||
|
|
||||||
|
**osx-arm64.pubxml:**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||||
|
<PublishProvider>FileSystem</PublishProvider>
|
||||||
|
<PublishUrl>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishUrl>
|
||||||
|
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||||
|
<_TargetId>Folder</_TargetId>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
|
||||||
|
<ProjectGuid>48eff821-2f4d-60cc-aa44-be0f1d6e5f35</ProjectGuid>
|
||||||
|
<SelfContained>true</SelfContained>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ASP.NET Application Profile (macOS Intel x64)
|
||||||
|
|
||||||
|
**osx-x64.pubxml:**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<DeleteExistingFiles>true</DeleteExistingFiles>
|
||||||
|
<PublishProvider>FileSystem</PublishProvider>
|
||||||
|
<PublishUrl>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishUrl>
|
||||||
|
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||||
|
<_TargetId>Folder</_TargetId>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
|
||||||
|
<ProjectGuid>48eff821-2f4d-60cc-aa44-be0f1d6e5f35</ProjectGuid>
|
||||||
|
<SelfContained>true</SelfContained>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
|
```
|
||||||
|
|
||||||
#### Console Application Profile (Windows)
|
#### Console Application Profile (Windows)
|
||||||
|
|
||||||
**win-x64.pubxml:**
|
**win-x64.pubxml:**
|
||||||
@@ -103,6 +149,46 @@ Add publish profiles to `Properties/PublishProfiles/`:
|
|||||||
</Project>
|
</Project>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Console Application Profile (macOS Apple Silicon ARM64)
|
||||||
|
|
||||||
|
**osx-arm64.pubxml:**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
|
||||||
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RuntimeIdentifier>osx-arm64</RuntimeIdentifier>
|
||||||
|
<SelfContained>false</SelfContained>
|
||||||
|
<PublishSingleFile>false</PublishSingleFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Console Application Profile (macOS Intel x64)
|
||||||
|
|
||||||
|
**osx-x64.pubxml:**
|
||||||
|
|
||||||
|
```xml
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Any CPU</Platform>
|
||||||
|
<PublishDir>publish\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\</PublishDir>
|
||||||
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<RuntimeIdentifier>osx-x64</RuntimeIdentifier>
|
||||||
|
<SelfContained>false</SelfContained>
|
||||||
|
<PublishSingleFile>false</PublishSingleFile>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
||||||
|
```
|
||||||
|
|
||||||
### Step 2: Configure Electron Builder
|
### Step 2: Configure Electron Builder
|
||||||
|
|
||||||
ElectronNET.Core automatically adds a default `electron-builder.json` file under `Properties\electron-builder.json`.
|
ElectronNET.Core automatically adds a default `electron-builder.json` file under `Properties\electron-builder.json`.
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
- [Startup-Methods](Using/Startup-Methods.md)
|
- [Startup-Methods](Using/Startup-Methods.md)
|
||||||
- [Debugging](Using/Debugging.md)
|
- [Debugging](Using/Debugging.md)
|
||||||
- [Package Building](Using/Package-Building.md)
|
- [Package Building](Using/Package-Building.md)
|
||||||
|
- [Adding a `custom_main.js`](Using/Custom_main.md)
|
||||||
|
|
||||||
# API Reference
|
# API Reference
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<RootNamespace></RootNamespace>
|
<RootNamespace></RootNamespace>
|
||||||
<NoWarn>CS0649;CS0169</NoWarn>
|
<NoWarn>CS0649;CS0169</NoWarn>
|
||||||
<NukeRootDirectory>..</NukeRootDirectory>
|
<NukeRootDirectory>..</NukeRootDirectory>
|
||||||
@@ -11,9 +11,9 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Build" Version="17.11.48" />
|
<PackageReference Include="Microsoft.Build" Version="18.0.2" />
|
||||||
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="17.11.48" />
|
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="18.0.2" />
|
||||||
<PackageReference Include="Nuke.Common" Version="9.0.4" />
|
<PackageReference Include="Nuke.Common" Version="10.1.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ namespace ElectronNET.API
|
|||||||
CamelCase,
|
CamelCase,
|
||||||
}
|
}
|
||||||
|
|
||||||
private const int InvocationTimeout = 1000;
|
private static readonly TimeSpan InvocationTimeout = 1000.ms();
|
||||||
|
|
||||||
private readonly string objectName;
|
private readonly string objectName;
|
||||||
private readonly ConcurrentDictionary<string, Invocator> invocators;
|
private readonly ConcurrentDictionary<string, Invocator> invocators;
|
||||||
@@ -120,7 +120,7 @@ namespace ElectronNET.API
|
|||||||
return this.InvokeAsyncWithTimeout<T>(InvocationTimeout, arg, callerName);
|
return this.InvokeAsyncWithTimeout<T>(InvocationTimeout, arg, callerName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Task<T> InvokeAsyncWithTimeout<T>(int invocationTimeout, object arg = null, [CallerMemberName] string callerName = null)
|
protected Task<T> InvokeAsyncWithTimeout<T>(TimeSpan invocationTimeout, object arg = null, [CallerMemberName] string callerName = null)
|
||||||
{
|
{
|
||||||
Debug.Assert(callerName != null, nameof(callerName) + " != null");
|
Debug.Assert(callerName != null, nameof(callerName) + " != null");
|
||||||
|
|
||||||
@@ -245,7 +245,7 @@ namespace ElectronNET.API
|
|||||||
private readonly Task<T> tcsTask;
|
private readonly Task<T> tcsTask;
|
||||||
private TaskCompletionSource<T> tcs;
|
private TaskCompletionSource<T> tcs;
|
||||||
|
|
||||||
public Invocator(ApiBase apiBase, string callerName, int timeoutMs, object arg = null)
|
public Invocator(ApiBase apiBase, string callerName, TimeSpan timeout, object arg = null)
|
||||||
{
|
{
|
||||||
this.tcs = new TaskCompletionSource<T>(TaskCreationOptions.RunContinuationsAsynchronously);
|
this.tcs = new TaskCompletionSource<T>(TaskCreationOptions.RunContinuationsAsynchronously);
|
||||||
this.tcsTask = this.tcs.Task;
|
this.tcsTask = this.tcs.Task;
|
||||||
@@ -306,7 +306,7 @@ namespace ElectronNET.API
|
|||||||
_ = apiBase.Id >= 0 ? BridgeConnector.Socket.Emit(messageName, apiBase.Id) : BridgeConnector.Socket.Emit(messageName);
|
_ = apiBase.Id >= 0 ? BridgeConnector.Socket.Emit(messageName, apiBase.Id) : BridgeConnector.Socket.Emit(messageName);
|
||||||
}
|
}
|
||||||
|
|
||||||
System.Threading.Tasks.Task.Delay(timeoutMs).ContinueWith(_ =>
|
System.Threading.Tasks.Task.Delay(timeout).ContinueWith(_ =>
|
||||||
{
|
{
|
||||||
if (this.tcs != null)
|
if (this.tcs != null)
|
||||||
{
|
{
|
||||||
@@ -314,7 +314,9 @@ namespace ElectronNET.API
|
|||||||
{
|
{
|
||||||
if (this.tcs != null)
|
if (this.tcs != null)
|
||||||
{
|
{
|
||||||
var ex = new TimeoutException($"No response after {timeoutMs:D}ms trying to retrieve value {apiBase.objectName}.{callerName}()");
|
var ex = new TimeoutException(
|
||||||
|
$"No response after {(long)timeout.TotalMilliseconds}ms trying to retrieve value {apiBase.objectName}.{callerName}()"
|
||||||
|
);
|
||||||
this.tcs.TrySetException(ex);
|
this.tcs.TrySetException(ex);
|
||||||
this.tcs = null;
|
this.tcs = null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -186,6 +186,19 @@ public class BrowserWindow : ApiBase
|
|||||||
remove => RemoveEvent(value, Id);
|
remove => RemoveEvent(value, Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Emitted when the window is moved or resized.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// While not being an original Electron event, this one includes the bounds values,
|
||||||
|
/// saving the additional roundtrip for calling <see cref="GetBoundsAsync"/>.
|
||||||
|
/// </remarks>
|
||||||
|
public event Action<Rectangle> OnBoundsChanged
|
||||||
|
{
|
||||||
|
add => AddEvent(value, Id);
|
||||||
|
remove => RemoveEvent(value, Id);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// macOS: Emitted once when the window is moved to a new position.
|
/// macOS: Emitted once when the window is moved to a new position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ using ElectronNET.API.Entities;
|
|||||||
using ElectronNET.API.Serialization;
|
using ElectronNET.API.Serialization;
|
||||||
using System;
|
using System;
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace ElectronNET.API
|
namespace ElectronNET.API
|
||||||
{
|
{
|
||||||
@@ -54,10 +55,79 @@ namespace ElectronNET.API
|
|||||||
_changed -= value;
|
_changed -= value;
|
||||||
|
|
||||||
if (_changed == null)
|
if (_changed == null)
|
||||||
|
{
|
||||||
BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id);
|
BridgeConnector.Socket.Off("webContents-session-cookies-changed" + Id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private event Action<Cookie, CookieChangedCause, bool> _changed;
|
private event Action<Cookie, CookieChangedCause, bool> _changed;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sends a request to get all cookies matching filter, and resolves a callack with the response.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="filter">
|
||||||
|
/// </param>
|
||||||
|
/// <returns>A task which resolves an array of cookie objects.</returns>
|
||||||
|
public Task<Cookie[]> GetAsync(CookieFilter filter)
|
||||||
|
{
|
||||||
|
var tcs = new TaskCompletionSource<Cookie[]>();
|
||||||
|
var guid = Guid.NewGuid().ToString();
|
||||||
|
|
||||||
|
BridgeConnector.Socket.Once<Cookie[]>("webContents-session-cookies-get-completed" + guid, tcs.SetResult);
|
||||||
|
BridgeConnector.Socket.Emit("webContents-session-cookies-get", Id, filter, guid);
|
||||||
|
|
||||||
|
return tcs.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="details"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Task SetAsync(CookieDetails details)
|
||||||
|
{
|
||||||
|
var tcs = new TaskCompletionSource<object>();
|
||||||
|
var guid = Guid.NewGuid().ToString();
|
||||||
|
|
||||||
|
BridgeConnector.Socket.Once<object>("webContents-session-cookies-set-completed" + guid, tcs.SetResult);
|
||||||
|
BridgeConnector.Socket.Emit("webContents-session-cookies-set", Id, details, guid);
|
||||||
|
|
||||||
|
return tcs.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the cookies matching url and name
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="url">The URL associated with the cookie.</param>
|
||||||
|
/// <param name="name">The name of cookie to remove.</param>
|
||||||
|
/// <returns>A task which resolves when the cookie has been removed</returns>
|
||||||
|
public Task RemoveAsync(string url, string name)
|
||||||
|
{
|
||||||
|
var tcs = new TaskCompletionSource<object>();
|
||||||
|
var guid = Guid.NewGuid().ToString();
|
||||||
|
|
||||||
|
BridgeConnector.Socket.Once<object>("webContents-session-cookies-remove-completed" + guid, tcs.SetResult);
|
||||||
|
BridgeConnector.Socket.Emit("webContents-session-cookies-remove", Id, url, name, guid);
|
||||||
|
|
||||||
|
return tcs.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Writes any unwritten cookies data to disk.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>A task which resolves when the cookie store has been flushed</returns>
|
||||||
|
public Task FlushStoreAsync()
|
||||||
|
{
|
||||||
|
var tcs = new TaskCompletionSource<object>();
|
||||||
|
var guid = Guid.NewGuid().ToString();
|
||||||
|
|
||||||
|
BridgeConnector.Socket.Once<object>("webContents-session-cookies-flushStore-completed" + guid, tcs.SetResult);
|
||||||
|
BridgeConnector.Socket.Emit("webContents-session-cookies-flushStore", Id, guid);
|
||||||
|
|
||||||
|
return tcs.Task;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -24,13 +24,13 @@ namespace ElectronNET.API.Entities
|
|||||||
/// ( if y is used) Window's left offset from screen. Default is to center the
|
/// ( if y is used) Window's left offset from screen. Default is to center the
|
||||||
/// window.
|
/// window.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int X { get; set; } = -1;
|
public int? X { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// ( if x is used) Window's top offset from screen. Default is to center the
|
/// ( if x is used) Window's top offset from screen. Default is to center the
|
||||||
/// window.
|
/// window.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int Y { get; set; } = -1;
|
public int? Y { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The width and height would be used as web page's size, which means the actual
|
/// The width and height would be used as web page's size, which means the actual
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether the cookie is a host-only cookie; this will only be true if no domain was passed.
|
/// Gets or sets a value indicating whether the cookie is a host-only cookie; this will only be true if no domain was passed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HostOnly { get; set; }
|
public bool? HostOnly { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the path of the cookie.
|
/// Gets or sets the path of the cookie.
|
||||||
@@ -34,22 +34,22 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether the cookie is marked as secure.
|
/// Gets or sets a value indicating whether the cookie is marked as secure.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Secure { get; set; }
|
public bool? Secure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether the cookie is marked as HTTP only.
|
/// Gets or sets a value indicating whether the cookie is marked as HTTP only.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HttpOnly { get; set; }
|
public bool? HttpOnly { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets a value indicating whether the cookie is a session cookie or a persistent cookie with an expiration date.
|
/// Gets or sets a value indicating whether the cookie is a session cookie or a persistent cookie with an expiration date.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Session { get; set; }
|
public bool? Session { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the expiration date of the cookie as the number of seconds since the UNIX epoch. Not provided for session cookies.
|
/// Gets or sets the expiration date of the cookie as the number of seconds since the UNIX epoch. Not provided for session cookies.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double ExpirationDate { get; set; }
|
public double? ExpirationDate { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the SameSite policy applied to this cookie. Can be "unspecified", "no_restriction", "lax" or "strict".
|
/// Gets or sets the SameSite policy applied to this cookie. Can be "unspecified", "no_restriction", "lax" or "strict".
|
||||||
|
|||||||
@@ -29,16 +29,16 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// (optional) - Filters cookies by their Secure property.
|
/// (optional) - Filters cookies by their Secure property.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Secure { get; set; }
|
public bool? Secure { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// (optional) - Filters out session or persistent cookies.
|
/// (optional) - Filters out session or persistent cookies.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Session { get; set; }
|
public bool? Session { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// (optional) - Filters cookies by httpOnly.
|
/// (optional) - Filters cookies by httpOnly.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HttpOnly { get; set; }
|
public bool? HttpOnly { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,6 +102,29 @@ namespace ElectronNET.API
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Send a message to the renderer process synchronously via channel,
|
||||||
|
/// you can also send arbitrary arguments.
|
||||||
|
///
|
||||||
|
/// Note: Sending a synchronous message will block the whole renderer process,
|
||||||
|
/// unless you know what you are doing you should never use it.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel"></param>
|
||||||
|
/// <param name="listener"></param>
|
||||||
|
public void OnSync(string channel, Func<object, Task<object>> listener)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("registerSyncIpcMainChannel", channel);
|
||||||
|
BridgeConnector.Socket.On<JsonElement>(channel, (args) =>
|
||||||
|
{
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var arg = FormatArguments(args);
|
||||||
|
var result = await listener(arg);
|
||||||
|
BridgeConnector.Socket.Emit(channel + "Sync", result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Adds a one time listener method for the event. This listener is invoked only
|
/// Adds a one time listener method for the event. This listener is invoked only
|
||||||
/// the next time a message is sent to channel, after which it is removed.
|
/// the next time a message is sent to channel, after which it is removed.
|
||||||
@@ -154,5 +177,88 @@ namespace ElectronNET.API
|
|||||||
{
|
{
|
||||||
BridgeConnector.Socket.Emit("sendToIpcRendererBrowserView", browserView.Id, channel, data);
|
BridgeConnector.Socket.Emit("sendToIpcRendererBrowserView", browserView.Id, channel, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a handler for an invokeable IPC. This handler will be called
|
||||||
|
/// whenever a renderer calls ipcRenderer.invoke(channel, ...args).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel">Channelname.</param>
|
||||||
|
/// <param name="listener">Callback Method.</param>
|
||||||
|
public void Handle(string channel, Func<object, object> listener)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("registerHandleIpcMainChannel", channel);
|
||||||
|
BridgeConnector.Socket.On<JsonElement>(channel, (args) =>
|
||||||
|
{
|
||||||
|
var arg = FormatArguments(args);
|
||||||
|
var result = listener(arg);
|
||||||
|
BridgeConnector.Socket.Emit(channel + "Handle", result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a handler for an invokeable IPC. This handler will be called
|
||||||
|
/// whenever a renderer calls ipcRenderer.invoke(channel, ...args).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel">Channelname.</param>
|
||||||
|
/// <param name="listener">Callback Method.</param>
|
||||||
|
public void Handle(string channel, Func<object, Task<object>> listener)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("registerHandleIpcMainChannel", channel);
|
||||||
|
BridgeConnector.Socket.On<JsonElement>(channel, (args) =>
|
||||||
|
{
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var arg = FormatArguments(args);
|
||||||
|
var result = await listener(arg);
|
||||||
|
BridgeConnector.Socket.Emit(channel + "Handle", result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles a single invokeable IPC message, then removes the listener.
|
||||||
|
/// See ipcMain.handle(channel, listener).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel">Channelname.</param>
|
||||||
|
/// <param name="listener">Callback Method.</param>
|
||||||
|
public void HandleOnce(string channel, Func<object, object> listener)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("registerHandleOnceIpcMainChannel", channel);
|
||||||
|
BridgeConnector.Socket.Once<JsonElement>(channel, (args) =>
|
||||||
|
{
|
||||||
|
var arg = FormatArguments(args);
|
||||||
|
var result = listener(arg);
|
||||||
|
BridgeConnector.Socket.Emit(channel + "HandleOnce", result);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Handles a single invokeable IPC message, then removes the listener.
|
||||||
|
/// See ipcMain.handle(channel, listener).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel">Channelname.</param>
|
||||||
|
/// <param name="listener">Callback Method.</param>
|
||||||
|
public void HandleOnce(string channel, Func<object, Task<object>> listener)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("registerHandleOnceIpcMainChannel", channel);
|
||||||
|
BridgeConnector.Socket.Once<JsonElement>(channel, (args) =>
|
||||||
|
{
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
var arg = FormatArguments(args);
|
||||||
|
var result = await listener(arg);
|
||||||
|
BridgeConnector.Socket.Emit(channel + "HandleOnce", result);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes any handler for channel, if present.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="channel">Channelname.</param>
|
||||||
|
public void RemoveHandler(string channel)
|
||||||
|
{
|
||||||
|
BridgeConnector.Socket.Emit("removeHandlerIpcMainChannel", channel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -220,11 +220,33 @@ namespace ElectronNET.API
|
|||||||
_items.Clear();
|
_items.Clear();
|
||||||
_items.AddRange(menuItems);
|
_items.AddRange(menuItems);
|
||||||
|
|
||||||
|
RegisterMenuItemClickedHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets the tray menu items.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>Calling this method updates the context menu with the specified items. Any previously
|
||||||
|
/// set menu items will be replaced.</remarks>
|
||||||
|
/// <param name="menuItems">An array of <see cref="MenuItem"/> objects representing the menu items to display in the tray menu.
|
||||||
|
/// Cannot be null.</param>
|
||||||
|
public async Task SetMenuItems(MenuItem[] menuItems)
|
||||||
|
{
|
||||||
|
menuItems.AddMenuItemsId();
|
||||||
|
await BridgeConnector.Socket.Emit("set-contextMenu", new object[] { menuItems }).ConfigureAwait(false);
|
||||||
|
_items.Clear();
|
||||||
|
_items.AddRange(menuItems);
|
||||||
|
|
||||||
|
RegisterMenuItemClickedHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RegisterMenuItemClickedHandler()
|
||||||
|
{
|
||||||
BridgeConnector.Socket.Off("trayMenuItemClicked");
|
BridgeConnector.Socket.Off("trayMenuItemClicked");
|
||||||
BridgeConnector.Socket.On<string>("trayMenuItemClicked", (id) =>
|
BridgeConnector.Socket.On<string>("trayMenuItemClicked", (id) =>
|
||||||
{
|
{
|
||||||
MenuItem menuItem = _items.GetMenuItem(id);
|
MenuItem menuItem = _items.GetMenuItem(id);
|
||||||
menuItem?.Click();
|
menuItem?.Click?.Invoke();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -343,4 +365,4 @@ namespace ElectronNET.API
|
|||||||
public async Task Once<T>(string eventName, Action<T> action)
|
public async Task Once<T>(string eventName, Action<T> action)
|
||||||
=> await Events.Instance.Once(ModuleName, eventName, action).ConfigureAwait(false);
|
=> await Events.Instance.Once(ModuleName, eventName, action).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using ElectronNET.API.Entities;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ElectronNET.API.Entities;
|
||||||
|
using ElectronNET.Common;
|
||||||
|
|
||||||
// ReSharper disable InconsistentNaming
|
// ReSharper disable InconsistentNaming
|
||||||
|
|
||||||
@@ -173,7 +174,7 @@ public class WebContents : ApiBase
|
|||||||
/// Get system printers.
|
/// Get system printers.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>printers</returns>
|
/// <returns>printers</returns>
|
||||||
public Task<PrinterInfo[]> GetPrintersAsync() => this.InvokeAsyncWithTimeout<PrinterInfo[]>(5_000);
|
public Task<PrinterInfo[]> GetPrintersAsync() => this.InvokeAsyncWithTimeout<PrinterInfo[]>(8.seconds());
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Prints window's web page.
|
/// Prints window's web page.
|
||||||
@@ -388,7 +389,7 @@ public class WebContents : ApiBase
|
|||||||
/// Returns string - The user agent for this web page.
|
/// Returns string - The user agent for this web page.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Task<string> GetUserAgentAsync() => InvokeAsync<string>();
|
public Task<string> GetUserAgentAsync() => InvokeAsyncWithTimeout<string>(3.seconds());
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overrides the user agent for this web page.
|
/// Overrides the user agent for this web page.
|
||||||
|
|||||||
@@ -130,11 +130,8 @@ namespace ElectronNET.API
|
|||||||
options.Height += 7;
|
options.Height += 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.X == -1 && options.Y == -1)
|
if (!options.X.HasValue && !options.Y.HasValue)
|
||||||
{
|
{
|
||||||
options.X = 0;
|
|
||||||
options.Y = 0;
|
|
||||||
|
|
||||||
await BridgeConnector.Socket.Emit("createBrowserWindow", options, loadUrl).ConfigureAwait(false);
|
await BridgeConnector.Socket.Emit("createBrowserWindow", options, loadUrl).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
74
src/ElectronNET.API/Common/TimeSpanExtensions.cs
Normal file
74
src/ElectronNET.API/Common/TimeSpanExtensions.cs
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
// <copyright file="TimeSpanExtensions.cs" company="Emby LLC">
|
||||||
|
// Copyright © Emby LLC. All rights reserved.
|
||||||
|
// </copyright>
|
||||||
|
|
||||||
|
namespace ElectronNET.Common
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The TimeSpanExtensions class.
|
||||||
|
/// </summary>
|
||||||
|
[SuppressMessage("StyleCop.CSharp.NamingRules", "SA1300:Element should begin with upper-case letter", Justification = "OK")]
|
||||||
|
[SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1600:Elements should be documented", Justification = "OK")]
|
||||||
|
[SuppressMessage("ReSharper", "StyleCop.SA1300", Justification = "OK")]
|
||||||
|
[SuppressMessage("ReSharper", "InconsistentNaming", Justification = "OK")]
|
||||||
|
internal static class TimeSpanExtensions
|
||||||
|
{
|
||||||
|
public static TimeSpan ms(this int value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMilliseconds(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan ms(this long value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMilliseconds(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan seconds(this int value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromSeconds(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan minutes(this int value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMinutes(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan hours(this int value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromHours(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan days(this int value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromDays(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan ms(this double value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMilliseconds(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan seconds(this double value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromSeconds(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan minutes(this double value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromMinutes(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan hours(this double value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromHours(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TimeSpan days(this double value)
|
||||||
|
{
|
||||||
|
return TimeSpan.FromDays(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -28,12 +28,13 @@
|
|||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="SocketIOClient" Version="3.1.2" />
|
<PackageReference Include="SocketIOClient" Version="3.1.2" />
|
||||||
<PackageReference Include="System.Drawing.Common" Version="8.0.16" />
|
<PackageReference Include="System.Drawing.Common" Version="8.0.22" />
|
||||||
<PackageReference Include="System.Text.Json" Version="8.0.5" />
|
<PackageReference Include="System.Text.Json" Version="8.0.6" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<InternalsVisibleTo Include="ElectronNET.AspNet" />
|
<InternalsVisibleTo Include="ElectronNET.AspNet" />
|
||||||
<InternalsVisibleTo Include="ElectronNET.Core.AspNet" />
|
<InternalsVisibleTo Include="ElectronNET.Core.AspNet" />
|
||||||
|
<InternalsVisibleTo Include="ElectronNET.IntegrationTests" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
public string RuntimeIdentifier { get; internal set; }
|
public string RuntimeIdentifier { get; internal set; }
|
||||||
|
|
||||||
public string ElectronSingleInstance { get; internal set; }
|
public bool ElectronSingleInstance { get; internal set; }
|
||||||
|
|
||||||
public string Title { get; internal set; }
|
public string Title { get; internal set; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
namespace ElectronNET.Runtime.Services.ElectronProcess
|
namespace ElectronNET.Runtime.Services.ElectronProcess
|
||||||
{
|
{
|
||||||
using ElectronNET.Common;
|
|
||||||
using ElectronNET.Runtime.Data;
|
|
||||||
using System;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using ElectronNET.Common;
|
||||||
|
using ElectronNET.Runtime.Data;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Launches and manages the Electron app process.
|
/// Launches and manages the Electron app process.
|
||||||
@@ -33,14 +34,42 @@
|
|||||||
this.socketPort = socketPort;
|
this.socketPort = socketPort;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Task StartCore()
|
protected override async Task StartCore()
|
||||||
{
|
{
|
||||||
var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
|
var dir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory);
|
||||||
string startCmd, args, workingDir;
|
string startCmd, args, workingDir;
|
||||||
|
|
||||||
if (this.isUnpackaged)
|
if (this.isUnpackaged)
|
||||||
{
|
{
|
||||||
|
this.CheckRuntimeIdentifier();
|
||||||
|
|
||||||
var electrondir = Path.Combine(dir.FullName, ".electron");
|
var electrondir = Path.Combine(dir.FullName, ".electron");
|
||||||
|
|
||||||
|
ProcessRunner chmodRunner = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||||
|
{
|
||||||
|
var distFolder = Path.Combine(electrondir, "node_modules", "electron", "dist");
|
||||||
|
|
||||||
|
chmodRunner = new ProcessRunner("ElectronRunner-Chmod");
|
||||||
|
chmodRunner.Run("chmod", "-R +x " + distFolder, electrondir);
|
||||||
|
await chmodRunner.WaitForExitAsync().ConfigureAwait(true);
|
||||||
|
|
||||||
|
if (chmodRunner.LastExitCode != 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Failed to set executable permissions on Electron dist folder.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Console.Error.WriteLine("[StartCore]: Exception: " + chmodRunner?.StandardError);
|
||||||
|
Console.Error.WriteLine("[StartCore]: Exception: " + chmodRunner?.StandardOutput);
|
||||||
|
Console.Error.WriteLine("[StartCore]: Exception: " + ex);
|
||||||
|
}
|
||||||
|
|
||||||
startCmd = Path.Combine(electrondir, "node_modules", "electron", "dist", "electron");
|
startCmd = Path.Combine(electrondir, "node_modules", "electron", "dist", "electron");
|
||||||
|
|
||||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||||
@@ -53,17 +82,71 @@
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
dir = dir.Parent?.Parent;
|
dir = dir.Parent!.Parent!;
|
||||||
startCmd = Path.Combine(dir.FullName, this.electronBinaryName);
|
startCmd = Path.Combine(dir.FullName, this.electronBinaryName);
|
||||||
args = $"-dotnetpacked -electronforcedport={this.socketPort:D} " + this.extraArguments;
|
args = $"-dotnetpacked -electronforcedport={this.socketPort:D} " + this.extraArguments;
|
||||||
workingDir = dir.FullName;
|
workingDir = dir.FullName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// We don't await this in order to let the state transition to "Starting"
|
// We don't await this in order to let the state transition to "Starting"
|
||||||
Task.Run(async () => await this.StartInternal(startCmd, args, workingDir).ConfigureAwait(false));
|
Task.Run(async () => await this.StartInternal(startCmd, args, workingDir).ConfigureAwait(false));
|
||||||
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
private void CheckRuntimeIdentifier()
|
||||||
|
{
|
||||||
|
var buildInfoRid = ElectronNetRuntime.BuildInfo.RuntimeIdentifier;
|
||||||
|
if (string.IsNullOrEmpty(buildInfoRid))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var osPart = buildInfoRid.Split('-').First();
|
||||||
|
|
||||||
|
var mismatch = false;
|
||||||
|
|
||||||
|
switch (osPart)
|
||||||
|
{
|
||||||
|
case "win":
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||||
|
{
|
||||||
|
mismatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "linux":
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||||
|
{
|
||||||
|
mismatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "osx":
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
|
||||||
|
{
|
||||||
|
mismatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "freebsd":
|
||||||
|
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.FreeBSD))
|
||||||
|
{
|
||||||
|
mismatch = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mismatch)
|
||||||
|
{
|
||||||
|
throw new PlatformNotSupportedException($"This Electron.NET application was built for '{buildInfoRid}'. It cannot run on this platform.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Task StopCore()
|
protected override Task StopCore()
|
||||||
@@ -76,7 +159,7 @@
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await Task.Delay(10).ConfigureAwait(false);
|
await Task.Delay(10.ms()).ConfigureAwait(false);
|
||||||
|
|
||||||
Console.Error.WriteLine("[StartInternal]: startCmd: {0}", startCmd);
|
Console.Error.WriteLine("[StartInternal]: startCmd: {0}", startCmd);
|
||||||
Console.Error.WriteLine("[StartInternal]: args: {0}", args);
|
Console.Error.WriteLine("[StartInternal]: args: {0}", args);
|
||||||
@@ -85,7 +168,7 @@
|
|||||||
this.process.ProcessExited += this.Process_Exited;
|
this.process.ProcessExited += this.Process_Exited;
|
||||||
this.process.Run(startCmd, args, directoriy);
|
this.process.Run(startCmd, args, directoriy);
|
||||||
|
|
||||||
await Task.Delay(500).ConfigureAwait(false);
|
await Task.Delay(500.ms()).ConfigureAwait(false);
|
||||||
|
|
||||||
Console.Error.WriteLine("[StartInternal]: after run:");
|
Console.Error.WriteLine("[StartInternal]: after run:");
|
||||||
|
|
||||||
|
|||||||
@@ -165,13 +165,9 @@
|
|||||||
ElectronNetRuntime.DotnetAppType = DotnetAppType.AspNetCoreApp;
|
ElectronNetRuntime.DotnetAppType = DotnetAppType.AspNetCoreApp;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isSingleInstance?.Length > 0 && bool.TryParse(isSingleInstance, out var isSingleInstanceActive) && isSingleInstanceActive)
|
if (bool.TryParse(isSingleInstance, out var parsedBool))
|
||||||
{
|
{
|
||||||
buildInfo.ElectronSingleInstance = "yes";
|
buildInfo.ElectronSingleInstance = parsedBool;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
buildInfo.ElectronSingleInstance = "no";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (httpPort?.Length > 0 && int.TryParse(httpPort, out var port))
|
if (httpPort?.Length > 0 && int.TryParse(httpPort, out var port))
|
||||||
|
|||||||
@@ -61,6 +61,11 @@
|
|||||||
{
|
{
|
||||||
ElectronNetRuntime.OnAppReadyCallback = onAppReadyCallback;
|
ElectronNetRuntime.OnAppReadyCallback = onAppReadyCallback;
|
||||||
|
|
||||||
|
// no matter how this is set - let's unset to prevent Electron not starting as expected
|
||||||
|
// e.g., VS Code sets this env variable, but this will cause `require("electron")` to not
|
||||||
|
// work as expected, see issue #952
|
||||||
|
Environment.SetEnvironmentVariable("ELECTRON_RUN_AS_NODE", null);
|
||||||
|
|
||||||
var webPort = PortHelper.GetFreePort(ElectronNetRuntime.AspNetWebPort ?? ElectronNetRuntime.DefaultWebPort);
|
var webPort = PortHelper.GetFreePort(ElectronNetRuntime.AspNetWebPort ?? ElectronNetRuntime.DefaultWebPort);
|
||||||
ElectronNetRuntime.AspNetWebPort = webPort;
|
ElectronNetRuntime.AspNetWebPort = webPort;
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<Import Project="..\ElectronNET\build\ElectronNET.Core.props" Condition="$(ElectronNetDevMode)" />
|
<Import Project="..\ElectronNET\build\ElectronNET.Core.props" Condition="$(ElectronNetDevMode)" />
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<OutputType>exe</OutputType>
|
<OutputType>exe</OutputType>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
@@ -70,7 +70,7 @@
|
|||||||
<ProjectReference Include="..\ElectronNET.API\ElectronNET.API.csproj" Condition="$(ElectronNetDevMode)" />
|
<ProjectReference Include="..\ElectronNET.API\ElectronNET.API.csproj" Condition="$(ElectronNetDevMode)" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="ElectronNET.Core" Version="0.3.0" Condition="'$(ElectronNetDevMode)' != 'true'" />
|
<PackageReference Include="ElectronNET.Core" Version="0.4.1" Condition="'$(ElectronNetDevMode)' != 'true'" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Import Project="..\ElectronNET\build\ElectronNET.Core.targets" Condition="$(ElectronNetDevMode)" />
|
<Import Project="..\ElectronNET\build\ElectronNET.Core.targets" Condition="$(ElectronNetDevMode)" />
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<PublishDir>publish\Release\net8.0\linux-x64</PublishDir>
|
<PublishDir>publish\Release\net8.0\linux-x64</PublishDir>
|
||||||
<PublishProtocol>FileSystem</PublishProtocol>
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
<_TargetId>Folder</_TargetId>
|
<_TargetId>Folder</_TargetId>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
|
||||||
<SelfContained>false</SelfContained>
|
<SelfContained>false</SelfContained>
|
||||||
<PublishSingleFile>false</PublishSingleFile>
|
<PublishSingleFile>false</PublishSingleFile>
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ https://go.microsoft.com/fwlink/?LinkID=208121.
|
|||||||
<PublishUrl>publish\Release\net8.0\win-x64\</PublishUrl>
|
<PublishUrl>publish\Release\net8.0\win-x64\</PublishUrl>
|
||||||
<WebPublishMethod>FileSystem</WebPublishMethod>
|
<WebPublishMethod>FileSystem</WebPublishMethod>
|
||||||
<_TargetId>Folder</_TargetId>
|
<_TargetId>Folder</_TargetId>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<SelfContained>true</SelfContained>
|
<SelfContained>true</SelfContained>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
<PublishDir>publish\Release\net8.0\win-x64</PublishDir>
|
<PublishDir>publish\Release\net8.0\win-x64</PublishDir>
|
||||||
<PublishProtocol>FileSystem</PublishProtocol>
|
<PublishProtocol>FileSystem</PublishProtocol>
|
||||||
<_TargetId>Folder</_TargetId>
|
<_TargetId>Folder</_TargetId>
|
||||||
<TargetFramework>net8.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
<SelfContained>false</SelfContained>
|
<SelfContained>false</SelfContained>
|
||||||
<PublishSingleFile>false</PublishSingleFile>
|
<PublishSingleFile>false</PublishSingleFile>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<Project Sdk="Microsoft.VisualStudio.JavaScript.Sdk/1.0.4110890">
|
<Project Sdk="Microsoft.VisualStudio.JavaScript.Sdk/1.0.3864779">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include=".vscode\tasks.json" />
|
<None Include=".vscode\tasks.json" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
let isQuitWindowAllClosed = true, electronSocket;
|
let isQuitWindowAllClosed = true;
|
||||||
|
let electronSocket;
|
||||||
let appWindowAllClosedEventId;
|
let appWindowAllClosedEventId;
|
||||||
module.exports = (socket, app) => {
|
module.exports = (socket, app) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
// By default, quit when all windows are closed
|
// By default, quit when all windows are closed
|
||||||
app.on('window-all-closed', () => {
|
app.on("window-all-closed", () => {
|
||||||
// On macOS it is common for applications and their menu bar
|
// On macOS it is common for applications and their menu bar
|
||||||
// to stay active until the user quits explicitly with Cmd + Q
|
// to stay active until the user quits explicitly with Cmd + Q
|
||||||
if (process.platform !== 'darwin' && isQuitWindowAllClosed) {
|
if (process.platform !== "darwin" && isQuitWindowAllClosed) {
|
||||||
app.quit();
|
app.quit();
|
||||||
}
|
}
|
||||||
else if (appWindowAllClosedEventId) {
|
else if (appWindowAllClosedEventId) {
|
||||||
@@ -15,220 +16,224 @@ module.exports = (socket, app) => {
|
|||||||
// - OR -
|
// - OR -
|
||||||
// If the user has indicated NOT to quit when all windows are closed,
|
// If the user has indicated NOT to quit when all windows are closed,
|
||||||
// emit the event.
|
// emit the event.
|
||||||
electronSocket.emit('app-window-all-closed' + appWindowAllClosedEventId);
|
electronSocket.emit("app-window-all-closed" + appWindowAllClosedEventId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('quit-app-window-all-closed', (quit) => {
|
socket.on("quit-app-window-all-closed", (quit) => {
|
||||||
isQuitWindowAllClosed = quit;
|
isQuitWindowAllClosed = quit;
|
||||||
});
|
});
|
||||||
socket.on('register-app-window-all-closed', (id) => {
|
socket.on("register-app-window-all-closed", (id) => {
|
||||||
appWindowAllClosedEventId = id;
|
appWindowAllClosedEventId = id;
|
||||||
});
|
});
|
||||||
socket.on('register-app-before-quit', (id) => {
|
socket.on("register-app-before-quit", (id) => {
|
||||||
app.on('before-quit', (event) => {
|
app.on("before-quit", (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
electronSocket.emit('app-before-quit' + id);
|
electronSocket.emit("app-before-quit" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-will-quit', (id) => {
|
socket.on("register-app-will-quit", (id) => {
|
||||||
app.on('will-quit', (event) => {
|
app.on("will-quit", (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
electronSocket.emit('app-will-quit' + id);
|
electronSocket.emit("app-will-quit" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-browser-window-blur', (id) => {
|
socket.on("register-app-browser-window-blur", (id) => {
|
||||||
app.on('browser-window-blur', () => {
|
app.on("browser-window-blur", () => {
|
||||||
electronSocket.emit('app-browser-window-blur' + id);
|
electronSocket.emit("app-browser-window-blur" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-browser-window-focus', (id) => {
|
socket.on("register-app-browser-window-focus", (id) => {
|
||||||
app.on('browser-window-focus', () => {
|
app.on("browser-window-focus", () => {
|
||||||
electronSocket.emit('app-browser-window-focus' + id);
|
electronSocket.emit("app-browser-window-focus" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-browser-window-created', (id) => {
|
socket.on("register-app-browser-window-created", (id) => {
|
||||||
app.on('browser-window-created', () => {
|
app.on("browser-window-created", () => {
|
||||||
electronSocket.emit('app-browser-window-created' + id);
|
electronSocket.emit("app-browser-window-created" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-web-contents-created', (id) => {
|
socket.on("register-app-web-contents-created", (id) => {
|
||||||
app.on('web-contents-created', () => {
|
app.on("web-contents-created", () => {
|
||||||
electronSocket.emit('app-web-contents-created' + id);
|
electronSocket.emit("app-web-contents-created" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-accessibility-support-changed', (id) => {
|
socket.on("register-app-accessibility-support-changed", (id) => {
|
||||||
app.on('accessibility-support-changed', (event, accessibilitySupportEnabled) => {
|
app.on("accessibility-support-changed", (event, accessibilitySupportEnabled) => {
|
||||||
electronSocket.emit('app-accessibility-support-changed' + id, accessibilitySupportEnabled);
|
electronSocket.emit("app-accessibility-support-changed" + id, accessibilitySupportEnabled);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('appQuit', () => {
|
socket.on("appQuit", () => {
|
||||||
app.quit();
|
app.quit();
|
||||||
});
|
});
|
||||||
socket.on('appExit', (exitCode = 0) => {
|
socket.on("appExit", (exitCode = 0) => {
|
||||||
app.exit(exitCode);
|
app.exit(exitCode);
|
||||||
});
|
});
|
||||||
socket.on('appRelaunch', (options) => {
|
socket.on("appRelaunch", (options) => {
|
||||||
app.relaunch(options);
|
app.relaunch(options);
|
||||||
});
|
});
|
||||||
socket.on('appFocus', (options) => {
|
socket.on("appFocus", (options) => {
|
||||||
app.focus(options);
|
app.focus(options);
|
||||||
});
|
});
|
||||||
socket.on('appHide', () => {
|
socket.on("appHide", () => {
|
||||||
app.hide();
|
app.hide();
|
||||||
});
|
});
|
||||||
socket.on('appShow', () => {
|
socket.on("appShow", () => {
|
||||||
app.show();
|
app.show();
|
||||||
});
|
});
|
||||||
socket.on('appGetAppPath', () => {
|
socket.on("appGetAppPath", () => {
|
||||||
const path = app.getAppPath();
|
const path = app.getAppPath();
|
||||||
electronSocket.emit('appGetAppPathCompleted', path);
|
electronSocket.emit("appGetAppPathCompleted", path);
|
||||||
});
|
});
|
||||||
socket.on('appSetAppLogsPath', (path) => {
|
socket.on("appSetAppLogsPath", (path) => {
|
||||||
app.setAppLogsPath(path);
|
app.setAppLogsPath(path);
|
||||||
});
|
});
|
||||||
socket.on('appGetPath', (name) => {
|
socket.on("appGetPath", (name) => {
|
||||||
const path = app.getPath(name);
|
const path = app.getPath(name);
|
||||||
electronSocket.emit('appGetPathCompleted', path);
|
electronSocket.emit("appGetPathCompleted", path);
|
||||||
});
|
});
|
||||||
socket.on('appGetFileIcon', async (path, options) => {
|
socket.on("appGetFileIcon", async (path, options) => {
|
||||||
let error = {};
|
let error = {};
|
||||||
if (options) {
|
if (options) {
|
||||||
const nativeImage = await app.getFileIcon(path, options).catch((errorFileIcon) => error = errorFileIcon);
|
const nativeImage = await app
|
||||||
electronSocket.emit('appGetFileIconCompleted', [error, nativeImage]);
|
.getFileIcon(path, options)
|
||||||
|
.catch((errorFileIcon) => (error = errorFileIcon));
|
||||||
|
electronSocket.emit("appGetFileIconCompleted", [error, nativeImage]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const nativeImage = await app.getFileIcon(path).catch((errorFileIcon) => error = errorFileIcon);
|
const nativeImage = await app
|
||||||
electronSocket.emit('appGetFileIconCompleted', [error, nativeImage]);
|
.getFileIcon(path)
|
||||||
|
.catch((errorFileIcon) => (error = errorFileIcon));
|
||||||
|
electronSocket.emit("appGetFileIconCompleted", [error, nativeImage]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('appSetPath', (name, path) => {
|
socket.on("appSetPath", (name, path) => {
|
||||||
app.setPath(name, path);
|
app.setPath(name, path);
|
||||||
});
|
});
|
||||||
socket.on('appGetVersion', () => {
|
socket.on("appGetVersion", () => {
|
||||||
const version = app.getVersion();
|
const version = app.getVersion();
|
||||||
electronSocket.emit('appGetVersionCompleted', version);
|
electronSocket.emit("appGetVersionCompleted", version);
|
||||||
});
|
});
|
||||||
socket.on('appGetName', () => {
|
socket.on("appGetName", () => {
|
||||||
electronSocket.emit('appGetNameCompleted', app.name);
|
electronSocket.emit("appGetNameCompleted", app.name);
|
||||||
});
|
});
|
||||||
socket.on('appSetName', (name) => {
|
socket.on("appSetName", (name) => {
|
||||||
app.name = name;
|
app.name = name;
|
||||||
});
|
});
|
||||||
socket.on('appGetLocale', () => {
|
socket.on("appGetLocale", () => {
|
||||||
const locale = app.getLocale();
|
const locale = app.getLocale();
|
||||||
electronSocket.emit('appGetLocaleCompleted', locale);
|
electronSocket.emit("appGetLocaleCompleted", locale);
|
||||||
});
|
});
|
||||||
socket.on('appAddRecentDocument', (path) => {
|
socket.on("appAddRecentDocument", (path) => {
|
||||||
app.addRecentDocument(path);
|
app.addRecentDocument(path);
|
||||||
});
|
});
|
||||||
socket.on('appClearRecentDocuments', () => {
|
socket.on("appClearRecentDocuments", () => {
|
||||||
app.clearRecentDocuments();
|
app.clearRecentDocuments();
|
||||||
});
|
});
|
||||||
socket.on('appSetAsDefaultProtocolClient', (protocol, path, args) => {
|
socket.on("appSetAsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
const success = app.setAsDefaultProtocolClient(protocol, path, args);
|
const success = app.setAsDefaultProtocolClient(protocol, path, args);
|
||||||
electronSocket.emit('appSetAsDefaultProtocolClientCompleted', success);
|
electronSocket.emit("appSetAsDefaultProtocolClientCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('appRemoveAsDefaultProtocolClient', (protocol, path, args) => {
|
socket.on("appRemoveAsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
const success = app.removeAsDefaultProtocolClient(protocol, path, args);
|
const success = app.removeAsDefaultProtocolClient(protocol, path, args);
|
||||||
electronSocket.emit('appRemoveAsDefaultProtocolClientCompleted', success);
|
electronSocket.emit("appRemoveAsDefaultProtocolClientCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('appIsDefaultProtocolClient', (protocol, path, args) => {
|
socket.on("appIsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
const success = app.isDefaultProtocolClient(protocol, path, args);
|
const success = app.isDefaultProtocolClient(protocol, path, args);
|
||||||
electronSocket.emit('appIsDefaultProtocolClientCompleted', success);
|
electronSocket.emit("appIsDefaultProtocolClientCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('appSetUserTasks', (tasks) => {
|
socket.on("appSetUserTasks", (tasks) => {
|
||||||
const success = app.setUserTasks(tasks);
|
const success = app.setUserTasks(tasks);
|
||||||
electronSocket.emit('appSetUserTasksCompleted', success);
|
electronSocket.emit("appSetUserTasksCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('appGetJumpListSettings', () => {
|
socket.on("appGetJumpListSettings", () => {
|
||||||
const jumpListSettings = app.getJumpListSettings();
|
const jumpListSettings = app.getJumpListSettings();
|
||||||
electronSocket.emit('appGetJumpListSettingsCompleted', jumpListSettings);
|
electronSocket.emit("appGetJumpListSettingsCompleted", jumpListSettings);
|
||||||
});
|
});
|
||||||
socket.on('appSetJumpList', (categories) => {
|
socket.on("appSetJumpList", (categories) => {
|
||||||
app.setJumpList(categories);
|
app.setJumpList(categories);
|
||||||
});
|
});
|
||||||
socket.on('appRequestSingleInstanceLock', () => {
|
socket.on("appRequestSingleInstanceLock", () => {
|
||||||
const success = app.requestSingleInstanceLock();
|
const success = app.requestSingleInstanceLock();
|
||||||
electronSocket.emit('appRequestSingleInstanceLockCompleted', success);
|
electronSocket.emit("appRequestSingleInstanceLockCompleted", success);
|
||||||
app.on('second-instance', (event, args = [], workingDirectory = '') => {
|
app.on("second-instance", (event, args = [], workingDirectory = "") => {
|
||||||
electronSocket.emit('secondInstance', [args, workingDirectory]);
|
electronSocket.emit("secondInstance", [args, workingDirectory]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('appHasSingleInstanceLock', () => {
|
socket.on("appHasSingleInstanceLock", () => {
|
||||||
const hasLock = app.hasSingleInstanceLock();
|
const hasLock = app.hasSingleInstanceLock();
|
||||||
electronSocket.emit('appHasSingleInstanceLockCompleted', hasLock);
|
electronSocket.emit("appHasSingleInstanceLockCompleted", hasLock);
|
||||||
});
|
});
|
||||||
socket.on('appReleaseSingleInstanceLock', () => {
|
socket.on("appReleaseSingleInstanceLock", () => {
|
||||||
app.releaseSingleInstanceLock();
|
app.releaseSingleInstanceLock();
|
||||||
});
|
});
|
||||||
socket.on('appSetUserActivity', (type, userInfo, webpageUrl) => {
|
socket.on("appSetUserActivity", (type, userInfo, webpageUrl) => {
|
||||||
app.setUserActivity(type, userInfo, webpageUrl);
|
app.setUserActivity(type, userInfo, webpageUrl);
|
||||||
});
|
});
|
||||||
socket.on('appGetCurrentActivityType', () => {
|
socket.on("appGetCurrentActivityType", () => {
|
||||||
const activityType = app.getCurrentActivityType();
|
const activityType = app.getCurrentActivityType();
|
||||||
electronSocket.emit('appGetCurrentActivityTypeCompleted', activityType);
|
electronSocket.emit("appGetCurrentActivityTypeCompleted", activityType);
|
||||||
});
|
});
|
||||||
socket.on('appInvalidateCurrentActivity', () => {
|
socket.on("appInvalidateCurrentActivity", () => {
|
||||||
app.invalidateCurrentActivity();
|
app.invalidateCurrentActivity();
|
||||||
});
|
});
|
||||||
socket.on('appResignCurrentActivity', () => {
|
socket.on("appResignCurrentActivity", () => {
|
||||||
app.resignCurrentActivity();
|
app.resignCurrentActivity();
|
||||||
});
|
});
|
||||||
socket.on('appSetAppUserModelId', (id) => {
|
socket.on("appSetAppUserModelId", (id) => {
|
||||||
app.setAppUserModelId(id);
|
app.setAppUserModelId(id);
|
||||||
});
|
});
|
||||||
socket.on('appImportCertificate', (options) => {
|
socket.on("appImportCertificate", (options) => {
|
||||||
app.importCertificate(options, (result) => {
|
app.importCertificate(options, (result) => {
|
||||||
electronSocket.emit('appImportCertificateCompleted', result);
|
electronSocket.emit("appImportCertificateCompleted", result);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('appGetAppMetrics', () => {
|
socket.on("appGetAppMetrics", () => {
|
||||||
const processMetrics = app.getAppMetrics();
|
const processMetrics = app.getAppMetrics();
|
||||||
electronSocket.emit('appGetAppMetricsCompleted', processMetrics);
|
electronSocket.emit("appGetAppMetricsCompleted", processMetrics);
|
||||||
});
|
});
|
||||||
socket.on('appGetGpuFeatureStatus', () => {
|
socket.on("appGetGpuFeatureStatus", () => {
|
||||||
const gpuFeatureStatus = app.getGPUFeatureStatus();
|
const gpuFeatureStatus = app.getGPUFeatureStatus();
|
||||||
electronSocket.emit('appGetGpuFeatureStatusCompleted', gpuFeatureStatus);
|
electronSocket.emit("appGetGpuFeatureStatusCompleted", gpuFeatureStatus);
|
||||||
});
|
});
|
||||||
socket.on('appSetBadgeCount', (count) => {
|
socket.on("appSetBadgeCount", (count) => {
|
||||||
const success = app.setBadgeCount(count);
|
const success = app.setBadgeCount(count);
|
||||||
electronSocket.emit('appSetBadgeCountCompleted', success);
|
electronSocket.emit("appSetBadgeCountCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('appGetBadgeCount', () => {
|
socket.on("appGetBadgeCount", () => {
|
||||||
const count = app.getBadgeCount();
|
const count = app.getBadgeCount();
|
||||||
electronSocket.emit('appGetBadgeCountCompleted', count);
|
electronSocket.emit("appGetBadgeCountCompleted", count);
|
||||||
});
|
});
|
||||||
socket.on('appIsUnityRunning', () => {
|
socket.on("appIsUnityRunning", () => {
|
||||||
const isUnityRunning = app.isUnityRunning();
|
const isUnityRunning = app.isUnityRunning();
|
||||||
electronSocket.emit('appIsUnityRunningCompleted', isUnityRunning);
|
electronSocket.emit("appIsUnityRunningCompleted", isUnityRunning);
|
||||||
});
|
});
|
||||||
socket.on('appGetLoginItemSettings', (options) => {
|
socket.on("appGetLoginItemSettings", (options) => {
|
||||||
const loginItemSettings = app.getLoginItemSettings(options);
|
const loginItemSettings = app.getLoginItemSettings(options);
|
||||||
electronSocket.emit('appGetLoginItemSettingsCompleted', loginItemSettings);
|
electronSocket.emit("appGetLoginItemSettingsCompleted", loginItemSettings);
|
||||||
});
|
});
|
||||||
socket.on('appSetLoginItemSettings', (settings) => {
|
socket.on("appSetLoginItemSettings", (settings) => {
|
||||||
app.setLoginItemSettings(settings);
|
app.setLoginItemSettings(settings);
|
||||||
});
|
});
|
||||||
socket.on('appIsAccessibilitySupportEnabled', () => {
|
socket.on("appIsAccessibilitySupportEnabled", () => {
|
||||||
const isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled();
|
const isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled();
|
||||||
electronSocket.emit('appIsAccessibilitySupportEnabledCompleted', isAccessibilitySupportEnabled);
|
electronSocket.emit("appIsAccessibilitySupportEnabledCompleted", isAccessibilitySupportEnabled);
|
||||||
});
|
});
|
||||||
socket.on('appSetAccessibilitySupportEnabled', (enabled) => {
|
socket.on("appSetAccessibilitySupportEnabled", (enabled) => {
|
||||||
app.setAccessibilitySupportEnabled(enabled);
|
app.setAccessibilitySupportEnabled(enabled);
|
||||||
});
|
});
|
||||||
socket.on('appShowAboutPanel', () => {
|
socket.on("appShowAboutPanel", () => {
|
||||||
app.showAboutPanel();
|
app.showAboutPanel();
|
||||||
});
|
});
|
||||||
socket.on('appSetAboutPanelOptions', (options) => {
|
socket.on("appSetAboutPanelOptions", (options) => {
|
||||||
app.setAboutPanelOptions(options);
|
app.setAboutPanelOptions(options);
|
||||||
});
|
});
|
||||||
socket.on('appGetUserAgentFallback', () => {
|
socket.on("appGetUserAgentFallback", () => {
|
||||||
electronSocket.emit('appGetUserAgentFallbackCompleted', app.userAgentFallback);
|
electronSocket.emit("appGetUserAgentFallbackCompleted", app.userAgentFallback);
|
||||||
});
|
});
|
||||||
socket.on('appSetUserAgentFallback', (userAgent) => {
|
socket.on("appSetUserAgentFallback", (userAgent) => {
|
||||||
app.userAgentFallback = userAgent;
|
app.userAgentFallback = userAgent;
|
||||||
});
|
});
|
||||||
socket.on('register-app-on-event', (eventName, listenerName) => {
|
socket.on("register-app-on-event", (eventName, listenerName) => {
|
||||||
app.on(eventName, (...args) => {
|
app.on(eventName, (...args) => {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
electronSocket.emit(listenerName, args[1]);
|
electronSocket.emit(listenerName, args[1]);
|
||||||
@@ -238,7 +243,7 @@ module.exports = (socket, app) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-app-once-event', (eventName, listenerName) => {
|
socket.on("register-app-once-event", (eventName, listenerName) => {
|
||||||
app.once(eventName, (...args) => {
|
app.once(eventName, (...args) => {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
electronSocket.emit(listenerName, args[1]);
|
electronSocket.emit(listenerName, args[1]);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,313 +1,338 @@
|
|||||||
import { RelaunchOptions, LoginItemSettingsOptions, Settings, AboutPanelOptionsOptions } from "electron";
|
import type { Socket } from "net";
|
||||||
import { Socket } from "net";
|
import {
|
||||||
|
RelaunchOptions,
|
||||||
|
LoginItemSettingsOptions,
|
||||||
|
Settings,
|
||||||
|
AboutPanelOptionsOptions,
|
||||||
|
} from "electron";
|
||||||
|
|
||||||
|
let isQuitWindowAllClosed = true;
|
||||||
|
let electronSocket: Socket;
|
||||||
|
let appWindowAllClosedEventId: string;
|
||||||
|
|
||||||
let isQuitWindowAllClosed = true, electronSocket;
|
|
||||||
let appWindowAllClosedEventId;
|
|
||||||
export = (socket: Socket, app: Electron.App) => {
|
export = (socket: Socket, app: Electron.App) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
// By default, quit when all windows are closed
|
// By default, quit when all windows are closed
|
||||||
app.on('window-all-closed', () => {
|
app.on("window-all-closed", () => {
|
||||||
// On macOS it is common for applications and their menu bar
|
// On macOS it is common for applications and their menu bar
|
||||||
// to stay active until the user quits explicitly with Cmd + Q
|
// to stay active until the user quits explicitly with Cmd + Q
|
||||||
if (process.platform !== 'darwin' && isQuitWindowAllClosed) {
|
if (process.platform !== "darwin" && isQuitWindowAllClosed) {
|
||||||
app.quit();
|
app.quit();
|
||||||
} else if (appWindowAllClosedEventId) {
|
} else if (appWindowAllClosedEventId) {
|
||||||
// If the user is on macOS
|
// If the user is on macOS
|
||||||
// - OR -
|
// - OR -
|
||||||
// If the user has indicated NOT to quit when all windows are closed,
|
// If the user has indicated NOT to quit when all windows are closed,
|
||||||
// emit the event.
|
// emit the event.
|
||||||
electronSocket.emit('app-window-all-closed' + appWindowAllClosedEventId);
|
electronSocket.emit("app-window-all-closed" + appWindowAllClosedEventId);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("quit-app-window-all-closed", (quit) => {
|
||||||
|
isQuitWindowAllClosed = quit;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-app-window-all-closed", (id) => {
|
||||||
|
appWindowAllClosedEventId = id;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-app-before-quit", (id) => {
|
||||||
|
app.on("before-quit", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
electronSocket.emit("app-before-quit" + id);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('quit-app-window-all-closed', (quit) => {
|
socket.on("register-app-will-quit", (id) => {
|
||||||
isQuitWindowAllClosed = quit;
|
app.on("will-quit", (event) => {
|
||||||
|
event.preventDefault();
|
||||||
|
|
||||||
|
electronSocket.emit("app-will-quit" + id);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-window-all-closed', (id) => {
|
socket.on("register-app-browser-window-blur", (id) => {
|
||||||
appWindowAllClosedEventId = id;
|
app.on("browser-window-blur", () => {
|
||||||
|
electronSocket.emit("app-browser-window-blur" + id);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-before-quit', (id) => {
|
socket.on("register-app-browser-window-focus", (id) => {
|
||||||
app.on('before-quit', (event) => {
|
app.on("browser-window-focus", () => {
|
||||||
event.preventDefault();
|
electronSocket.emit("app-browser-window-focus" + id);
|
||||||
|
|
||||||
electronSocket.emit('app-before-quit' + id);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-will-quit', (id) => {
|
socket.on("register-app-browser-window-created", (id) => {
|
||||||
app.on('will-quit', (event) => {
|
app.on("browser-window-created", () => {
|
||||||
event.preventDefault();
|
electronSocket.emit("app-browser-window-created" + id);
|
||||||
|
|
||||||
electronSocket.emit('app-will-quit' + id);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-browser-window-blur', (id) => {
|
socket.on("register-app-web-contents-created", (id) => {
|
||||||
app.on('browser-window-blur', () => {
|
app.on("web-contents-created", () => {
|
||||||
electronSocket.emit('app-browser-window-blur' + id);
|
electronSocket.emit("app-web-contents-created" + id);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-browser-window-focus', (id) => {
|
socket.on("register-app-accessibility-support-changed", (id) => {
|
||||||
app.on('browser-window-focus', () => {
|
app.on(
|
||||||
electronSocket.emit('app-browser-window-focus' + id);
|
"accessibility-support-changed",
|
||||||
});
|
(event, accessibilitySupportEnabled) => {
|
||||||
|
electronSocket.emit(
|
||||||
|
"app-accessibility-support-changed" + id,
|
||||||
|
accessibilitySupportEnabled,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appQuit", () => {
|
||||||
|
app.quit();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appExit", (exitCode = 0) => {
|
||||||
|
app.exit(exitCode);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appRelaunch", (options) => {
|
||||||
|
app.relaunch(options as RelaunchOptions);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appFocus", (options) => {
|
||||||
|
app.focus(options);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appHide", () => {
|
||||||
|
app.hide();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appShow", () => {
|
||||||
|
app.show();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetAppPath", () => {
|
||||||
|
const path = app.getAppPath();
|
||||||
|
electronSocket.emit("appGetAppPathCompleted", path);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetAppLogsPath", (path) => {
|
||||||
|
app.setAppLogsPath(path);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetPath", (name) => {
|
||||||
|
const path = app.getPath(name);
|
||||||
|
electronSocket.emit("appGetPathCompleted", path);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetFileIcon", async (path, options) => {
|
||||||
|
let error = {};
|
||||||
|
|
||||||
|
if (options) {
|
||||||
|
const nativeImage = await app
|
||||||
|
.getFileIcon(path, options)
|
||||||
|
.catch((errorFileIcon) => (error = errorFileIcon));
|
||||||
|
|
||||||
|
electronSocket.emit("appGetFileIconCompleted", [error, nativeImage]);
|
||||||
|
} else {
|
||||||
|
const nativeImage = await app
|
||||||
|
.getFileIcon(path)
|
||||||
|
.catch((errorFileIcon) => (error = errorFileIcon));
|
||||||
|
|
||||||
|
electronSocket.emit("appGetFileIconCompleted", [error, nativeImage]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetPath", (name, path) => {
|
||||||
|
app.setPath(name, path);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetVersion", () => {
|
||||||
|
const version = app.getVersion();
|
||||||
|
electronSocket.emit("appGetVersionCompleted", version);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetName", () => {
|
||||||
|
electronSocket.emit("appGetNameCompleted", app.name);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetName", (name) => {
|
||||||
|
app.name = name;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetLocale", () => {
|
||||||
|
const locale = app.getLocale();
|
||||||
|
electronSocket.emit("appGetLocaleCompleted", locale);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appAddRecentDocument", (path) => {
|
||||||
|
app.addRecentDocument(path);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appClearRecentDocuments", () => {
|
||||||
|
app.clearRecentDocuments();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetAsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
|
const success = app.setAsDefaultProtocolClient(protocol, path, args);
|
||||||
|
electronSocket.emit("appSetAsDefaultProtocolClientCompleted", success);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appRemoveAsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
|
const success = app.removeAsDefaultProtocolClient(protocol, path, args);
|
||||||
|
electronSocket.emit("appRemoveAsDefaultProtocolClientCompleted", success);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appIsDefaultProtocolClient", (protocol, path, args) => {
|
||||||
|
const success = app.isDefaultProtocolClient(protocol, path, args);
|
||||||
|
electronSocket.emit("appIsDefaultProtocolClientCompleted", success);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetUserTasks", (tasks) => {
|
||||||
|
const success = app.setUserTasks(tasks);
|
||||||
|
electronSocket.emit("appSetUserTasksCompleted", success);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetJumpListSettings", () => {
|
||||||
|
const jumpListSettings = app.getJumpListSettings();
|
||||||
|
electronSocket.emit("appGetJumpListSettingsCompleted", jumpListSettings);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetJumpList", (categories) => {
|
||||||
|
app.setJumpList(categories);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appRequestSingleInstanceLock", () => {
|
||||||
|
const success = app.requestSingleInstanceLock();
|
||||||
|
electronSocket.emit("appRequestSingleInstanceLockCompleted", success);
|
||||||
|
|
||||||
|
app.on("second-instance", (event, args = [], workingDirectory = "") => {
|
||||||
|
electronSocket.emit("secondInstance", [args, workingDirectory]);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-browser-window-created', (id) => {
|
socket.on("appHasSingleInstanceLock", () => {
|
||||||
app.on('browser-window-created', () => {
|
const hasLock = app.hasSingleInstanceLock();
|
||||||
electronSocket.emit('app-browser-window-created' + id);
|
|
||||||
});
|
electronSocket.emit("appHasSingleInstanceLockCompleted", hasLock);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appReleaseSingleInstanceLock", () => {
|
||||||
|
app.releaseSingleInstanceLock();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetUserActivity", (type, userInfo, webpageUrl) => {
|
||||||
|
app.setUserActivity(type, userInfo, webpageUrl);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetCurrentActivityType", () => {
|
||||||
|
const activityType = app.getCurrentActivityType();
|
||||||
|
electronSocket.emit("appGetCurrentActivityTypeCompleted", activityType);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appInvalidateCurrentActivity", () => {
|
||||||
|
app.invalidateCurrentActivity();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appResignCurrentActivity", () => {
|
||||||
|
app.resignCurrentActivity();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetAppUserModelId", (id) => {
|
||||||
|
app.setAppUserModelId(id);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appImportCertificate", (options) => {
|
||||||
|
app.importCertificate(options, (result) => {
|
||||||
|
electronSocket.emit("appImportCertificateCompleted", result);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-web-contents-created', (id) => {
|
socket.on("appGetAppMetrics", () => {
|
||||||
app.on('web-contents-created', () => {
|
const processMetrics = app.getAppMetrics();
|
||||||
electronSocket.emit('app-web-contents-created' + id);
|
electronSocket.emit("appGetAppMetricsCompleted", processMetrics);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on("appGetGpuFeatureStatus", () => {
|
||||||
|
const gpuFeatureStatus = app.getGPUFeatureStatus();
|
||||||
|
electronSocket.emit("appGetGpuFeatureStatusCompleted", gpuFeatureStatus);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetBadgeCount", (count) => {
|
||||||
|
const success = app.setBadgeCount(count);
|
||||||
|
electronSocket.emit("appSetBadgeCountCompleted", success);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetBadgeCount", () => {
|
||||||
|
const count = app.getBadgeCount();
|
||||||
|
electronSocket.emit("appGetBadgeCountCompleted", count);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appIsUnityRunning", () => {
|
||||||
|
const isUnityRunning = app.isUnityRunning();
|
||||||
|
electronSocket.emit("appIsUnityRunningCompleted", isUnityRunning);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetLoginItemSettings", (options) => {
|
||||||
|
const loginItemSettings = app.getLoginItemSettings(
|
||||||
|
options as LoginItemSettingsOptions,
|
||||||
|
);
|
||||||
|
electronSocket.emit("appGetLoginItemSettingsCompleted", loginItemSettings);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetLoginItemSettings", (settings) => {
|
||||||
|
app.setLoginItemSettings(settings as Settings);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appIsAccessibilitySupportEnabled", () => {
|
||||||
|
const isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled();
|
||||||
|
electronSocket.emit(
|
||||||
|
"appIsAccessibilitySupportEnabledCompleted",
|
||||||
|
isAccessibilitySupportEnabled,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetAccessibilitySupportEnabled", (enabled) => {
|
||||||
|
app.setAccessibilitySupportEnabled(enabled);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appShowAboutPanel", () => {
|
||||||
|
app.showAboutPanel();
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetAboutPanelOptions", (options) => {
|
||||||
|
app.setAboutPanelOptions(options as AboutPanelOptionsOptions);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appGetUserAgentFallback", () => {
|
||||||
|
electronSocket.emit(
|
||||||
|
"appGetUserAgentFallbackCompleted",
|
||||||
|
app.userAgentFallback,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("appSetUserAgentFallback", (userAgent) => {
|
||||||
|
app.userAgentFallback = userAgent;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-app-on-event", (eventName, listenerName) => {
|
||||||
|
app.on(eventName, (...args) => {
|
||||||
|
if (args.length > 1) {
|
||||||
|
electronSocket.emit(listenerName, args[1]);
|
||||||
|
} else {
|
||||||
|
electronSocket.emit(listenerName);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-app-accessibility-support-changed', (id) => {
|
socket.on("register-app-once-event", (eventName, listenerName) => {
|
||||||
app.on('accessibility-support-changed', (event, accessibilitySupportEnabled) => {
|
app.once(eventName, (...args) => {
|
||||||
electronSocket.emit('app-accessibility-support-changed' + id, accessibilitySupportEnabled);
|
if (args.length > 1) {
|
||||||
});
|
electronSocket.emit(listenerName, args[1]);
|
||||||
});
|
} else {
|
||||||
|
electronSocket.emit(listenerName);
|
||||||
socket.on('appQuit', () => {
|
}
|
||||||
app.quit();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appExit', (exitCode = 0) => {
|
|
||||||
app.exit(exitCode);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appRelaunch', (options) => {
|
|
||||||
app.relaunch(options as RelaunchOptions);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appFocus', (options) => {
|
|
||||||
app.focus(options);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appHide', () => {
|
|
||||||
app.hide();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appShow', () => {
|
|
||||||
app.show();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetAppPath', () => {
|
|
||||||
const path = app.getAppPath();
|
|
||||||
electronSocket.emit('appGetAppPathCompleted', path);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetAppLogsPath', (path) => {
|
|
||||||
app.setAppLogsPath(path);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetPath', (name) => {
|
|
||||||
const path = app.getPath(name);
|
|
||||||
electronSocket.emit('appGetPathCompleted', path);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetFileIcon', async (path, options) => {
|
|
||||||
let error = {};
|
|
||||||
|
|
||||||
if (options) {
|
|
||||||
const nativeImage = await app.getFileIcon(path, options).catch((errorFileIcon) => error = errorFileIcon);
|
|
||||||
|
|
||||||
electronSocket.emit('appGetFileIconCompleted', [error, nativeImage]);
|
|
||||||
} else {
|
|
||||||
const nativeImage = await app.getFileIcon(path).catch((errorFileIcon) => error = errorFileIcon);
|
|
||||||
|
|
||||||
electronSocket.emit('appGetFileIconCompleted', [error, nativeImage]);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetPath', (name, path) => {
|
|
||||||
app.setPath(name, path);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetVersion', () => {
|
|
||||||
const version = app.getVersion();
|
|
||||||
electronSocket.emit('appGetVersionCompleted', version);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetName', () => {
|
|
||||||
electronSocket.emit('appGetNameCompleted', app.name);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetName', (name) => {
|
|
||||||
app.name = name;
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetLocale', () => {
|
|
||||||
const locale = app.getLocale();
|
|
||||||
electronSocket.emit('appGetLocaleCompleted', locale);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appAddRecentDocument', (path) => {
|
|
||||||
app.addRecentDocument(path);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appClearRecentDocuments', () => {
|
|
||||||
app.clearRecentDocuments();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetAsDefaultProtocolClient', (protocol, path, args) => {
|
|
||||||
const success = app.setAsDefaultProtocolClient(protocol, path, args);
|
|
||||||
electronSocket.emit('appSetAsDefaultProtocolClientCompleted', success);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appRemoveAsDefaultProtocolClient', (protocol, path, args) => {
|
|
||||||
const success = app.removeAsDefaultProtocolClient(protocol, path, args);
|
|
||||||
electronSocket.emit('appRemoveAsDefaultProtocolClientCompleted', success);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appIsDefaultProtocolClient', (protocol, path, args) => {
|
|
||||||
const success = app.isDefaultProtocolClient(protocol, path, args);
|
|
||||||
electronSocket.emit('appIsDefaultProtocolClientCompleted', success);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetUserTasks', (tasks) => {
|
|
||||||
const success = app.setUserTasks(tasks);
|
|
||||||
electronSocket.emit('appSetUserTasksCompleted', success);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetJumpListSettings', () => {
|
|
||||||
const jumpListSettings = app.getJumpListSettings();
|
|
||||||
electronSocket.emit('appGetJumpListSettingsCompleted', jumpListSettings);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetJumpList', (categories) => {
|
|
||||||
app.setJumpList(categories);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appRequestSingleInstanceLock', () => {
|
|
||||||
const success = app.requestSingleInstanceLock();
|
|
||||||
electronSocket.emit('appRequestSingleInstanceLockCompleted', success);
|
|
||||||
|
|
||||||
app.on('second-instance', (event, args = [], workingDirectory = '') => {
|
|
||||||
electronSocket.emit('secondInstance', [args, workingDirectory]);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appHasSingleInstanceLock', () => {
|
|
||||||
const hasLock = app.hasSingleInstanceLock();
|
|
||||||
|
|
||||||
electronSocket.emit('appHasSingleInstanceLockCompleted', hasLock);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appReleaseSingleInstanceLock', () => {
|
|
||||||
app.releaseSingleInstanceLock();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetUserActivity', (type, userInfo, webpageUrl) => {
|
|
||||||
app.setUserActivity(type, userInfo, webpageUrl);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetCurrentActivityType', () => {
|
|
||||||
const activityType = app.getCurrentActivityType();
|
|
||||||
electronSocket.emit('appGetCurrentActivityTypeCompleted', activityType);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appInvalidateCurrentActivity', () => {
|
|
||||||
app.invalidateCurrentActivity();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appResignCurrentActivity', () => {
|
|
||||||
app.resignCurrentActivity();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetAppUserModelId', (id) => {
|
|
||||||
app.setAppUserModelId(id);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appImportCertificate', (options) => {
|
|
||||||
app.importCertificate(options, (result) => {
|
|
||||||
electronSocket.emit('appImportCertificateCompleted', result);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetAppMetrics', () => {
|
|
||||||
const processMetrics = app.getAppMetrics();
|
|
||||||
electronSocket.emit('appGetAppMetricsCompleted', processMetrics);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetGpuFeatureStatus', () => {
|
|
||||||
const gpuFeatureStatus = app.getGPUFeatureStatus();
|
|
||||||
electronSocket.emit('appGetGpuFeatureStatusCompleted', gpuFeatureStatus);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetBadgeCount', (count) => {
|
|
||||||
const success = app.setBadgeCount(count);
|
|
||||||
electronSocket.emit('appSetBadgeCountCompleted', success);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetBadgeCount', () => {
|
|
||||||
const count = app.getBadgeCount();
|
|
||||||
electronSocket.emit('appGetBadgeCountCompleted', count);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appIsUnityRunning', () => {
|
|
||||||
const isUnityRunning = app.isUnityRunning();
|
|
||||||
electronSocket.emit('appIsUnityRunningCompleted', isUnityRunning);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetLoginItemSettings', (options) => {
|
|
||||||
const loginItemSettings = app.getLoginItemSettings(options as LoginItemSettingsOptions);
|
|
||||||
electronSocket.emit('appGetLoginItemSettingsCompleted', loginItemSettings);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetLoginItemSettings', (settings) => {
|
|
||||||
app.setLoginItemSettings(settings as Settings);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appIsAccessibilitySupportEnabled', () => {
|
|
||||||
const isAccessibilitySupportEnabled = app.isAccessibilitySupportEnabled();
|
|
||||||
electronSocket.emit('appIsAccessibilitySupportEnabledCompleted', isAccessibilitySupportEnabled);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetAccessibilitySupportEnabled', (enabled) => {
|
|
||||||
app.setAccessibilitySupportEnabled(enabled);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appShowAboutPanel', () => {
|
|
||||||
app.showAboutPanel();
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetAboutPanelOptions', (options) => {
|
|
||||||
app.setAboutPanelOptions(options as AboutPanelOptionsOptions);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appGetUserAgentFallback', () => {
|
|
||||||
electronSocket.emit('appGetUserAgentFallbackCompleted', app.userAgentFallback);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('appSetUserAgentFallback', (userAgent) => {
|
|
||||||
app.userAgentFallback = userAgent;
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-app-on-event', (eventName, listenerName) => {
|
|
||||||
app.on(eventName, (...args) => {
|
|
||||||
if (args.length > 1) {
|
|
||||||
electronSocket.emit(listenerName, args[1]);
|
|
||||||
} else {
|
|
||||||
electronSocket.emit(listenerName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-app-once-event', (eventName, listenerName) => {
|
|
||||||
app.once(eventName, (...args) => {
|
|
||||||
if (args.length > 1) {
|
|
||||||
electronSocket.emit(listenerName, args[1]);
|
|
||||||
} else {
|
|
||||||
electronSocket.emit(listenerName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,112 +3,118 @@ const electron_updater_1 = require("electron-updater");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-autoUpdater-error', (id) => {
|
socket.on("register-autoUpdater-error", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('error', (error) => {
|
electron_updater_1.autoUpdater.on("error", (error) => {
|
||||||
electronSocket.emit('autoUpdater-error' + id, error.message);
|
electronSocket.emit("autoUpdater-error" + id, error.message);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-autoUpdater-checking-for-update', (id) => {
|
socket.on("register-autoUpdater-checking-for-update", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('checking-for-update', () => {
|
electron_updater_1.autoUpdater.on("checking-for-update", () => {
|
||||||
electronSocket.emit('autoUpdater-checking-for-update' + id);
|
electronSocket.emit("autoUpdater-checking-for-update" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-autoUpdater-update-available', (id) => {
|
socket.on("register-autoUpdater-update-available", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('update-available', (updateInfo) => {
|
electron_updater_1.autoUpdater.on("update-available", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-available' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-available" + id, updateInfo);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-autoUpdater-update-not-available', (id) => {
|
socket.on("register-autoUpdater-update-not-available", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('update-not-available', (updateInfo) => {
|
electron_updater_1.autoUpdater.on("update-not-available", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-not-available' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-not-available" + id, updateInfo);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-autoUpdater-download-progress', (id) => {
|
socket.on("register-autoUpdater-download-progress", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('download-progress', (progressInfo) => {
|
electron_updater_1.autoUpdater.on("download-progress", (progressInfo) => {
|
||||||
electronSocket.emit('autoUpdater-download-progress' + id, progressInfo);
|
electronSocket.emit("autoUpdater-download-progress" + id, progressInfo);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-autoUpdater-update-downloaded', (id) => {
|
socket.on("register-autoUpdater-update-downloaded", (id) => {
|
||||||
electron_updater_1.autoUpdater.on('update-downloaded', (updateInfo) => {
|
electron_updater_1.autoUpdater.on("update-downloaded", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-downloaded' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-downloaded" + id, updateInfo);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
// Properties *****
|
// Properties *****
|
||||||
socket.on('autoUpdater-autoDownload', () => {
|
socket.on("autoUpdater-autoDownload", () => {
|
||||||
electronSocket.emit('autoUpdater-autoDownload-completed', electron_updater_1.autoUpdater.autoDownload);
|
electronSocket.emit("autoUpdater-autoDownload-completed", electron_updater_1.autoUpdater.autoDownload);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-autoDownload-set', (value) => {
|
socket.on("autoUpdater-autoDownload-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.autoDownload = value;
|
electron_updater_1.autoUpdater.autoDownload = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-autoInstallOnAppQuit', () => {
|
socket.on("autoUpdater-autoInstallOnAppQuit", () => {
|
||||||
electronSocket.emit('autoUpdater-autoInstallOnAppQuit-completed', electron_updater_1.autoUpdater.autoInstallOnAppQuit);
|
electronSocket.emit("autoUpdater-autoInstallOnAppQuit-completed", electron_updater_1.autoUpdater.autoInstallOnAppQuit);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-autoInstallOnAppQuit-set', (value) => {
|
socket.on("autoUpdater-autoInstallOnAppQuit-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.autoInstallOnAppQuit = value;
|
electron_updater_1.autoUpdater.autoInstallOnAppQuit = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-allowPrerelease', () => {
|
socket.on("autoUpdater-allowPrerelease", () => {
|
||||||
electronSocket.emit('autoUpdater-allowPrerelease-completed', electron_updater_1.autoUpdater.allowPrerelease);
|
electronSocket.emit("autoUpdater-allowPrerelease-completed", electron_updater_1.autoUpdater.allowPrerelease);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-allowPrerelease-set', (value) => {
|
socket.on("autoUpdater-allowPrerelease-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.allowPrerelease = value;
|
electron_updater_1.autoUpdater.allowPrerelease = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-fullChangelog', () => {
|
socket.on("autoUpdater-fullChangelog", () => {
|
||||||
electronSocket.emit('autoUpdater-fullChangelog-completed', electron_updater_1.autoUpdater.fullChangelog);
|
electronSocket.emit("autoUpdater-fullChangelog-completed", electron_updater_1.autoUpdater.fullChangelog);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-fullChangelog-set', (value) => {
|
socket.on("autoUpdater-fullChangelog-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.fullChangelog = value;
|
electron_updater_1.autoUpdater.fullChangelog = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-allowDowngrade', () => {
|
socket.on("autoUpdater-allowDowngrade", () => {
|
||||||
electronSocket.emit('autoUpdater-allowDowngrade-completed', electron_updater_1.autoUpdater.allowDowngrade);
|
electronSocket.emit("autoUpdater-allowDowngrade-completed", electron_updater_1.autoUpdater.allowDowngrade);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-allowDowngrade-set', (value) => {
|
socket.on("autoUpdater-allowDowngrade-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.allowDowngrade = value;
|
electron_updater_1.autoUpdater.allowDowngrade = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-updateConfigPath', () => {
|
socket.on("autoUpdater-updateConfigPath", () => {
|
||||||
electronSocket.emit('autoUpdater-updateConfigPath-completed', electron_updater_1.autoUpdater.updateConfigPath || '');
|
electronSocket.emit("autoUpdater-updateConfigPath-completed", electron_updater_1.autoUpdater.updateConfigPath || "");
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-updateConfigPath-set', (value) => {
|
socket.on("autoUpdater-updateConfigPath-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.updateConfigPath = value;
|
electron_updater_1.autoUpdater.updateConfigPath = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-currentVersion', () => {
|
socket.on("autoUpdater-currentVersion", () => {
|
||||||
electronSocket.emit('autoUpdater-currentVersion-completed', electron_updater_1.autoUpdater.currentVersion);
|
electronSocket.emit("autoUpdater-currentVersion-completed", electron_updater_1.autoUpdater.currentVersion);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-channel', () => {
|
socket.on("autoUpdater-channel", () => {
|
||||||
electronSocket.emit('autoUpdater-channel-completed', electron_updater_1.autoUpdater.channel || '');
|
electronSocket.emit("autoUpdater-channel-completed", electron_updater_1.autoUpdater.channel || "");
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-channel-set', (value) => {
|
socket.on("autoUpdater-channel-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.channel = value;
|
electron_updater_1.autoUpdater.channel = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-requestHeaders', () => {
|
socket.on("autoUpdater-requestHeaders", () => {
|
||||||
electronSocket.emit('autoUpdater-requestHeaders-completed', electron_updater_1.autoUpdater.requestHeaders);
|
electronSocket.emit("autoUpdater-requestHeaders-completed", electron_updater_1.autoUpdater.requestHeaders);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-requestHeaders-set', (value) => {
|
socket.on("autoUpdater-requestHeaders-set", (value) => {
|
||||||
electron_updater_1.autoUpdater.requestHeaders = value;
|
electron_updater_1.autoUpdater.requestHeaders = value;
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-checkForUpdatesAndNotify', async (guid) => {
|
socket.on("autoUpdater-checkForUpdatesAndNotify", async (guid) => {
|
||||||
electron_updater_1.autoUpdater.checkForUpdatesAndNotify().then((updateCheckResult) => {
|
electron_updater_1.autoUpdater
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesAndNotify-completed' + guid, updateCheckResult);
|
.checkForUpdatesAndNotify()
|
||||||
}).catch((error) => {
|
.then((updateCheckResult) => {
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesAndNotifyError' + guid, error);
|
electronSocket.emit("autoUpdater-checkForUpdatesAndNotify-completed" + guid, updateCheckResult);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
electronSocket.emit("autoUpdater-checkForUpdatesAndNotifyError" + guid, error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-checkForUpdates', async (guid) => {
|
socket.on("autoUpdater-checkForUpdates", async (guid) => {
|
||||||
electron_updater_1.autoUpdater.checkForUpdates().then((updateCheckResult) => {
|
electron_updater_1.autoUpdater
|
||||||
electronSocket.emit('autoUpdater-checkForUpdates-completed' + guid, updateCheckResult);
|
.checkForUpdates()
|
||||||
}).catch((error) => {
|
.then((updateCheckResult) => {
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesError' + guid, error);
|
electronSocket.emit("autoUpdater-checkForUpdates-completed" + guid, updateCheckResult);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
electronSocket.emit("autoUpdater-checkForUpdatesError" + guid, error);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-quitAndInstall', async (isSilent, isForceRunAfter) => {
|
socket.on("autoUpdater-quitAndInstall", async (isSilent, isForceRunAfter) => {
|
||||||
electron_updater_1.autoUpdater.quitAndInstall(isSilent, isForceRunAfter);
|
electron_updater_1.autoUpdater.quitAndInstall(isSilent, isForceRunAfter);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-downloadUpdate', async (guid) => {
|
socket.on("autoUpdater-downloadUpdate", async (guid) => {
|
||||||
const downloadedPath = await electron_updater_1.autoUpdater.downloadUpdate();
|
const downloadedPath = await electron_updater_1.autoUpdater.downloadUpdate();
|
||||||
electronSocket.emit('autoUpdater-downloadUpdate-completed' + guid, downloadedPath);
|
electronSocket.emit("autoUpdater-downloadUpdate-completed" + guid, downloadedPath);
|
||||||
});
|
});
|
||||||
socket.on('autoUpdater-getFeedURL', async (guid) => {
|
socket.on("autoUpdater-getFeedURL", async (guid) => {
|
||||||
const feedUrl = await electron_updater_1.autoUpdater.getFeedURL();
|
const feedUrl = await electron_updater_1.autoUpdater.getFeedURL();
|
||||||
electronSocket.emit('autoUpdater-getFeedURL-completed' + guid, feedUrl || '');
|
electronSocket.emit("autoUpdater-getFeedURL-completed" + guid, feedUrl || "");
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=autoUpdater.js.map
|
//# sourceMappingURL=autoUpdater.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"autoUpdater.js","sourceRoot":"","sources":["autoUpdater.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"autoUpdater.js","sourceRoot":"","sources":["autoUpdater.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,143 +1,192 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { autoUpdater } from 'electron-updater';
|
import { autoUpdater } from "electron-updater";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('register-autoUpdater-error', (id) => {
|
socket.on("register-autoUpdater-error", (id) => {
|
||||||
autoUpdater.on('error', (error) => {
|
autoUpdater.on("error", (error) => {
|
||||||
electronSocket.emit('autoUpdater-error' + id, error.message);
|
electronSocket.emit("autoUpdater-error" + id, error.message);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-autoUpdater-checking-for-update', (id) => {
|
socket.on("register-autoUpdater-checking-for-update", (id) => {
|
||||||
autoUpdater.on('checking-for-update', () => {
|
autoUpdater.on("checking-for-update", () => {
|
||||||
electronSocket.emit('autoUpdater-checking-for-update' + id);
|
electronSocket.emit("autoUpdater-checking-for-update" + id);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-autoUpdater-update-available', (id) => {
|
socket.on("register-autoUpdater-update-available", (id) => {
|
||||||
autoUpdater.on('update-available', (updateInfo) => {
|
autoUpdater.on("update-available", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-available' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-available" + id, updateInfo);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-autoUpdater-update-not-available', (id) => {
|
socket.on("register-autoUpdater-update-not-available", (id) => {
|
||||||
autoUpdater.on('update-not-available', (updateInfo) => {
|
autoUpdater.on("update-not-available", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-not-available' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-not-available" + id, updateInfo);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-autoUpdater-download-progress', (id) => {
|
socket.on("register-autoUpdater-download-progress", (id) => {
|
||||||
autoUpdater.on('download-progress', (progressInfo) => {
|
autoUpdater.on("download-progress", (progressInfo) => {
|
||||||
electronSocket.emit('autoUpdater-download-progress' + id, progressInfo);
|
electronSocket.emit("autoUpdater-download-progress" + id, progressInfo);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-autoUpdater-update-downloaded', (id) => {
|
socket.on("register-autoUpdater-update-downloaded", (id) => {
|
||||||
autoUpdater.on('update-downloaded', (updateInfo) => {
|
autoUpdater.on("update-downloaded", (updateInfo) => {
|
||||||
electronSocket.emit('autoUpdater-update-downloaded' + id, updateInfo);
|
electronSocket.emit("autoUpdater-update-downloaded" + id, updateInfo);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Properties *****
|
// Properties *****
|
||||||
|
|
||||||
socket.on('autoUpdater-autoDownload', () => {
|
socket.on("autoUpdater-autoDownload", () => {
|
||||||
electronSocket.emit('autoUpdater-autoDownload-completed', autoUpdater.autoDownload);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-autoDownload-completed",
|
||||||
|
autoUpdater.autoDownload,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-autoDownload-set', (value) => {
|
socket.on("autoUpdater-autoDownload-set", (value) => {
|
||||||
autoUpdater.autoDownload = value;
|
autoUpdater.autoDownload = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-autoInstallOnAppQuit', () => {
|
socket.on("autoUpdater-autoInstallOnAppQuit", () => {
|
||||||
electronSocket.emit('autoUpdater-autoInstallOnAppQuit-completed', autoUpdater.autoInstallOnAppQuit);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-autoInstallOnAppQuit-completed",
|
||||||
|
autoUpdater.autoInstallOnAppQuit,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-autoInstallOnAppQuit-set', (value) => {
|
socket.on("autoUpdater-autoInstallOnAppQuit-set", (value) => {
|
||||||
autoUpdater.autoInstallOnAppQuit = value;
|
autoUpdater.autoInstallOnAppQuit = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-allowPrerelease', () => {
|
socket.on("autoUpdater-allowPrerelease", () => {
|
||||||
electronSocket.emit('autoUpdater-allowPrerelease-completed', autoUpdater.allowPrerelease);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-allowPrerelease-completed",
|
||||||
|
autoUpdater.allowPrerelease,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-allowPrerelease-set', (value) => {
|
socket.on("autoUpdater-allowPrerelease-set", (value) => {
|
||||||
autoUpdater.allowPrerelease = value;
|
autoUpdater.allowPrerelease = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-fullChangelog', () => {
|
socket.on("autoUpdater-fullChangelog", () => {
|
||||||
electronSocket.emit('autoUpdater-fullChangelog-completed', autoUpdater.fullChangelog);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-fullChangelog-completed",
|
||||||
|
autoUpdater.fullChangelog,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-fullChangelog-set', (value) => {
|
socket.on("autoUpdater-fullChangelog-set", (value) => {
|
||||||
autoUpdater.fullChangelog = value;
|
autoUpdater.fullChangelog = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-allowDowngrade', () => {
|
socket.on("autoUpdater-allowDowngrade", () => {
|
||||||
electronSocket.emit('autoUpdater-allowDowngrade-completed', autoUpdater.allowDowngrade);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-allowDowngrade-completed",
|
||||||
|
autoUpdater.allowDowngrade,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-allowDowngrade-set', (value) => {
|
socket.on("autoUpdater-allowDowngrade-set", (value) => {
|
||||||
autoUpdater.allowDowngrade = value;
|
autoUpdater.allowDowngrade = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-updateConfigPath', () => {
|
socket.on("autoUpdater-updateConfigPath", () => {
|
||||||
electronSocket.emit('autoUpdater-updateConfigPath-completed', autoUpdater.updateConfigPath || '');
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-updateConfigPath-completed",
|
||||||
|
autoUpdater.updateConfigPath || "",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-updateConfigPath-set', (value) => {
|
socket.on("autoUpdater-updateConfigPath-set", (value) => {
|
||||||
autoUpdater.updateConfigPath = value;
|
autoUpdater.updateConfigPath = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-currentVersion', () => {
|
socket.on("autoUpdater-currentVersion", () => {
|
||||||
electronSocket.emit('autoUpdater-currentVersion-completed', autoUpdater.currentVersion);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-currentVersion-completed",
|
||||||
|
autoUpdater.currentVersion,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-channel', () => {
|
socket.on("autoUpdater-channel", () => {
|
||||||
electronSocket.emit('autoUpdater-channel-completed', autoUpdater.channel || '');
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-channel-completed",
|
||||||
|
autoUpdater.channel || "",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-channel-set', (value) => {
|
socket.on("autoUpdater-channel-set", (value) => {
|
||||||
autoUpdater.channel = value;
|
autoUpdater.channel = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-requestHeaders', () => {
|
socket.on("autoUpdater-requestHeaders", () => {
|
||||||
electronSocket.emit('autoUpdater-requestHeaders-completed', autoUpdater.requestHeaders);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-requestHeaders-completed",
|
||||||
|
autoUpdater.requestHeaders,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-requestHeaders-set', (value) => {
|
socket.on("autoUpdater-requestHeaders-set", (value) => {
|
||||||
autoUpdater.requestHeaders = value;
|
autoUpdater.requestHeaders = value;
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-checkForUpdatesAndNotify', async (guid) => {
|
socket.on("autoUpdater-checkForUpdatesAndNotify", async (guid) => {
|
||||||
autoUpdater.checkForUpdatesAndNotify().then((updateCheckResult) => {
|
autoUpdater
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesAndNotify-completed' + guid, updateCheckResult);
|
.checkForUpdatesAndNotify()
|
||||||
}).catch((error) => {
|
.then((updateCheckResult) => {
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesAndNotifyError' + guid, error);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-checkForUpdatesAndNotify-completed" + guid,
|
||||||
});
|
updateCheckResult,
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
electronSocket.emit(
|
||||||
|
"autoUpdater-checkForUpdatesAndNotifyError" + guid,
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-checkForUpdates', async (guid) => {
|
socket.on("autoUpdater-checkForUpdates", async (guid) => {
|
||||||
autoUpdater.checkForUpdates().then((updateCheckResult) => {
|
autoUpdater
|
||||||
electronSocket.emit('autoUpdater-checkForUpdates-completed' + guid, updateCheckResult);
|
.checkForUpdates()
|
||||||
}).catch((error) => {
|
.then((updateCheckResult) => {
|
||||||
electronSocket.emit('autoUpdater-checkForUpdatesError' + guid, error);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-checkForUpdates-completed" + guid,
|
||||||
});
|
updateCheckResult,
|
||||||
|
);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
electronSocket.emit("autoUpdater-checkForUpdatesError" + guid, error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-quitAndInstall', async (isSilent, isForceRunAfter) => {
|
socket.on("autoUpdater-quitAndInstall", async (isSilent, isForceRunAfter) => {
|
||||||
autoUpdater.quitAndInstall(isSilent, isForceRunAfter);
|
autoUpdater.quitAndInstall(isSilent, isForceRunAfter);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-downloadUpdate', async (guid) => {
|
socket.on("autoUpdater-downloadUpdate", async (guid) => {
|
||||||
const downloadedPath = await autoUpdater.downloadUpdate();
|
const downloadedPath = await autoUpdater.downloadUpdate();
|
||||||
electronSocket.emit('autoUpdater-downloadUpdate-completed' + guid, downloadedPath);
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-downloadUpdate-completed" + guid,
|
||||||
|
downloadedPath,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('autoUpdater-getFeedURL', async (guid) => {
|
socket.on("autoUpdater-getFeedURL", async (guid) => {
|
||||||
const feedUrl = await autoUpdater.getFeedURL();
|
const feedUrl = await autoUpdater.getFeedURL();
|
||||||
electronSocket.emit('autoUpdater-getFeedURL-completed' + guid, feedUrl || '');
|
electronSocket.emit(
|
||||||
});
|
"autoUpdater-getFeedURL-completed" + guid,
|
||||||
|
feedUrl || "",
|
||||||
|
);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,17 +2,22 @@
|
|||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
exports.browserViewMediateService = exports.browserViewApi = void 0;
|
exports.browserViewMediateService = exports.browserViewApi = void 0;
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
const browserViews = (global['browserViews'] = global['browserViews'] || []);
|
const browserViews = (global["browserViews"] =
|
||||||
let browserView, electronSocket;
|
global["browserViews"] || []);
|
||||||
const proxyToCredentialsMap = (global['proxyToCredentialsMap'] = global['proxyToCredentialsMap'] || []);
|
const proxyToCredentialsMap = (global["proxyToCredentialsMap"] = global["proxyToCredentialsMap"] || []);
|
||||||
|
let browserView;
|
||||||
|
let electronSocket;
|
||||||
const browserViewApi = (socket) => {
|
const browserViewApi = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('createBrowserView', (options) => {
|
socket.on("createBrowserView", (options) => {
|
||||||
if (!hasOwnChildreen(options, 'webPreferences', 'nodeIntegration')) {
|
if (!hasOwnChildreen(options, "webPreferences", "nodeIntegration")) {
|
||||||
options = { ...options, webPreferences: { nodeIntegration: true, contextIsolation: false } };
|
options = {
|
||||||
|
...options,
|
||||||
|
webPreferences: { nodeIntegration: true, contextIsolation: false },
|
||||||
|
};
|
||||||
}
|
}
|
||||||
browserView = new electron_1.BrowserView(options);
|
browserView = new electron_1.BrowserView(options);
|
||||||
browserView['id'] = browserViews.length + 1;
|
browserView["id"] = browserViews.length + 1;
|
||||||
if (options.proxy) {
|
if (options.proxy) {
|
||||||
browserView.webContents.session.setProxy({ proxyRules: options.proxy });
|
browserView.webContents.session.setProxy({ proxyRules: options.proxy });
|
||||||
}
|
}
|
||||||
@@ -20,19 +25,19 @@ const browserViewApi = (socket) => {
|
|||||||
proxyToCredentialsMap[options.proxy] = options.proxyCredentials;
|
proxyToCredentialsMap[options.proxy] = options.proxyCredentials;
|
||||||
}
|
}
|
||||||
browserViews.push(browserView);
|
browserViews.push(browserView);
|
||||||
electronSocket.emit('BrowserViewCreated', browserView['id']);
|
electronSocket.emit("BrowserViewCreated", browserView["id"]);
|
||||||
});
|
});
|
||||||
socket.on('browserView-bounds', (id) => {
|
socket.on("browserView-bounds", (id) => {
|
||||||
const bounds = getBrowserViewById(id).getBounds();
|
const bounds = getBrowserViewById(id).getBounds();
|
||||||
electronSocket.emit('browserView-bounds-completed', bounds);
|
electronSocket.emit("browserView-bounds-completed", bounds);
|
||||||
});
|
});
|
||||||
socket.on('browserView-bounds-set', (id, bounds) => {
|
socket.on("browserView-bounds-set", (id, bounds) => {
|
||||||
getBrowserViewById(id).setBounds(bounds);
|
getBrowserViewById(id).setBounds(bounds);
|
||||||
});
|
});
|
||||||
socket.on('browserView-setAutoResize', (id, options) => {
|
socket.on("browserView-setAutoResize", (id, options) => {
|
||||||
getBrowserViewById(id).setAutoResize(options);
|
getBrowserViewById(id).setAutoResize(options);
|
||||||
});
|
});
|
||||||
socket.on('browserView-setBackgroundColor', (id, color) => {
|
socket.on("browserView-setBackgroundColor", (id, color) => {
|
||||||
getBrowserViewById(id).setBackgroundColor(color);
|
getBrowserViewById(id).setBackgroundColor(color);
|
||||||
});
|
});
|
||||||
function hasOwnChildreen(obj, ...childNames) {
|
function hasOwnChildreen(obj, ...childNames) {
|
||||||
@@ -53,7 +58,7 @@ exports.browserViewMediateService = browserViewMediateService;
|
|||||||
function getBrowserViewById(id) {
|
function getBrowserViewById(id) {
|
||||||
for (let index = 0; index < browserViews.length; index++) {
|
for (let index = 0; index < browserViews.length; index++) {
|
||||||
const browserViewItem = browserViews[index];
|
const browserViewItem = browserViews[index];
|
||||||
if (browserViewItem['id'] === id) {
|
if (browserViewItem["id"] === id) {
|
||||||
return browserViewItem;
|
return browserViewItem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"browserView.js","sourceRoot":"","sources":["browserView.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"browserView.js","sourceRoot":"","sources":["browserView.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,74 +1,83 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { BrowserView } from 'electron';
|
import { BrowserView } from "electron";
|
||||||
const browserViews: BrowserView[] = (global['browserViews'] = global['browserViews'] || []) as BrowserView[];
|
|
||||||
let browserView: BrowserView, electronSocket;
|
const browserViews: BrowserView[] = (global["browserViews"] =
|
||||||
const proxyToCredentialsMap: { [proxy: string]: string } = (global['proxyToCredentialsMap'] = global['proxyToCredentialsMap'] || []) as { [proxy: string]: string };
|
global["browserViews"] || []) as BrowserView[];
|
||||||
|
const proxyToCredentialsMap: { [proxy: string]: string } = (global[
|
||||||
|
"proxyToCredentialsMap"
|
||||||
|
] = global["proxyToCredentialsMap"] || []) as { [proxy: string]: string };
|
||||||
|
|
||||||
|
let browserView: BrowserView;
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
const browserViewApi = (socket: Socket) => {
|
const browserViewApi = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('createBrowserView', (options) => {
|
socket.on("createBrowserView", (options) => {
|
||||||
if (!hasOwnChildreen(options, 'webPreferences', 'nodeIntegration')) {
|
if (!hasOwnChildreen(options, "webPreferences", "nodeIntegration")) {
|
||||||
options = { ...options, webPreferences: { nodeIntegration: true, contextIsolation: false } };
|
options = {
|
||||||
}
|
...options,
|
||||||
|
webPreferences: { nodeIntegration: true, contextIsolation: false },
|
||||||
browserView = new BrowserView(options);
|
};
|
||||||
browserView['id'] = browserViews.length + 1;
|
|
||||||
|
|
||||||
if (options.proxy) {
|
|
||||||
browserView.webContents.session.setProxy({proxyRules: options.proxy});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (options.proxy && options.proxyCredentials) {
|
|
||||||
proxyToCredentialsMap[options.proxy] = options.proxyCredentials;
|
|
||||||
}
|
|
||||||
|
|
||||||
browserViews.push(browserView);
|
|
||||||
|
|
||||||
electronSocket.emit('BrowserViewCreated', browserView['id']);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('browserView-bounds', (id) => {
|
|
||||||
const bounds = getBrowserViewById(id).getBounds();
|
|
||||||
|
|
||||||
electronSocket.emit('browserView-bounds-completed', bounds);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('browserView-bounds-set', (id, bounds) => {
|
|
||||||
getBrowserViewById(id).setBounds(bounds);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('browserView-setAutoResize', (id, options) => {
|
|
||||||
getBrowserViewById(id).setAutoResize(options);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('browserView-setBackgroundColor', (id, color) => {
|
|
||||||
getBrowserViewById(id).setBackgroundColor(color);
|
|
||||||
});
|
|
||||||
|
|
||||||
function hasOwnChildreen(obj, ...childNames) {
|
|
||||||
for (let i = 0; i < childNames.length; i++) {
|
|
||||||
if (!obj || !obj.hasOwnProperty(childNames[i])) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
obj = obj[childNames[i]];
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
browserView = new BrowserView(options);
|
||||||
|
browserView["id"] = browserViews.length + 1;
|
||||||
|
|
||||||
|
if (options.proxy) {
|
||||||
|
browserView.webContents.session.setProxy({ proxyRules: options.proxy });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.proxy && options.proxyCredentials) {
|
||||||
|
proxyToCredentialsMap[options.proxy] = options.proxyCredentials;
|
||||||
|
}
|
||||||
|
|
||||||
|
browserViews.push(browserView);
|
||||||
|
|
||||||
|
electronSocket.emit("BrowserViewCreated", browserView["id"]);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("browserView-bounds", (id) => {
|
||||||
|
const bounds = getBrowserViewById(id).getBounds();
|
||||||
|
|
||||||
|
electronSocket.emit("browserView-bounds-completed", bounds);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("browserView-bounds-set", (id, bounds) => {
|
||||||
|
getBrowserViewById(id).setBounds(bounds);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("browserView-setAutoResize", (id, options) => {
|
||||||
|
getBrowserViewById(id).setAutoResize(options);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("browserView-setBackgroundColor", (id, color) => {
|
||||||
|
getBrowserViewById(id).setBackgroundColor(color);
|
||||||
|
});
|
||||||
|
|
||||||
|
function hasOwnChildreen(obj, ...childNames) {
|
||||||
|
for (let i = 0; i < childNames.length; i++) {
|
||||||
|
if (!obj || !obj.hasOwnProperty(childNames[i])) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
obj = obj[childNames[i]];
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const browserViewMediateService = (browserViewId: number): BrowserView => {
|
const browserViewMediateService = (browserViewId: number): BrowserView => {
|
||||||
return getBrowserViewById(browserViewId);
|
return getBrowserViewById(browserViewId);
|
||||||
};
|
};
|
||||||
|
|
||||||
function getBrowserViewById(id: number) {
|
function getBrowserViewById(id: number) {
|
||||||
for (let index = 0; index < browserViews.length; index++) {
|
for (let index = 0; index < browserViews.length; index++) {
|
||||||
const browserViewItem = browserViews[index];
|
const browserViewItem = browserViews[index];
|
||||||
if (browserViewItem['id'] === id) {
|
if (browserViewItem["id"] === id) {
|
||||||
return browserViewItem;
|
return browserViewItem;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export { browserViewApi, browserViewMediateService };
|
export { browserViewApi, browserViewMediateService };
|
||||||
|
|||||||
@@ -1,12 +1,46 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||||
|
}
|
||||||
|
Object.defineProperty(o, k2, desc);
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || (function () {
|
||||||
|
var ownKeys = function(o) {
|
||||||
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||||
|
var ar = [];
|
||||||
|
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||||
|
return ar;
|
||||||
|
};
|
||||||
|
return ownKeys(o);
|
||||||
|
};
|
||||||
|
return function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
const path = __importStar(require("path"));
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
const browserView_1 = require("./browserView");
|
const browserView_1 = require("./browserView");
|
||||||
const path = require("path");
|
|
||||||
const windows = (global["browserWindows"] =
|
const windows = (global["browserWindows"] =
|
||||||
global["browserWindows"] || []);
|
global["browserWindows"] || []);
|
||||||
let readyToShowWindowsIds = [];
|
let readyToShowWindowsIds = [];
|
||||||
let window, lastOptions, electronSocket;
|
let window;
|
||||||
let mainWindowURL;
|
let lastOptions;
|
||||||
|
let electronSocket;
|
||||||
const proxyToCredentialsMap = (global["proxyToCredentialsMap"] = global["proxyToCredentialsMap"] || []);
|
const proxyToCredentialsMap = (global["proxyToCredentialsMap"] = global["proxyToCredentialsMap"] || []);
|
||||||
module.exports = (socket, app) => {
|
module.exports = (socket, app) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
@@ -112,6 +146,12 @@ module.exports = (socket, app) => {
|
|||||||
electronSocket.emit("browserWindow-move" + id);
|
electronSocket.emit("browserWindow-move" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
socket.on("register-browserWindow-bounds-changed", (id) => {
|
||||||
|
const window = getWindowById(id);
|
||||||
|
const cb = () => electronSocket.emit("browserWindow-bounds-changed" + id, window.getBounds());
|
||||||
|
window.on("resize", cb);
|
||||||
|
window.on("move", cb);
|
||||||
|
});
|
||||||
socket.on("register-browserWindow-moved", (id) => {
|
socket.on("register-browserWindow-moved", (id) => {
|
||||||
getWindowById(id).on("moved", () => {
|
getWindowById(id).on("moved", () => {
|
||||||
electronSocket.emit("browserWindow-moved" + id);
|
electronSocket.emit("browserWindow-moved" + id);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,12 +1,17 @@
|
|||||||
import { Socket } from "net";
|
import * as path from "path";
|
||||||
import { BrowserWindow, Menu, nativeImage } from "electron";
|
import type { Socket } from "net";
|
||||||
|
import { BrowserWindow, Menu } from "electron";
|
||||||
|
|
||||||
import { browserViewMediateService } from "./browserView";
|
import { browserViewMediateService } from "./browserView";
|
||||||
const path = require("path");
|
|
||||||
const windows: Electron.BrowserWindow[] = (global["browserWindows"] =
|
const windows: Electron.BrowserWindow[] = (global["browserWindows"] =
|
||||||
global["browserWindows"] || []) as Electron.BrowserWindow[];
|
global["browserWindows"] || []) as Electron.BrowserWindow[];
|
||||||
let readyToShowWindowsIds: number[] = [];
|
let readyToShowWindowsIds: number[] = [];
|
||||||
let window, lastOptions, electronSocket;
|
|
||||||
let mainWindowURL;
|
let window;
|
||||||
|
let lastOptions;
|
||||||
|
let electronSocket;
|
||||||
|
|
||||||
const proxyToCredentialsMap: { [proxy: string]: string } = (global[
|
const proxyToCredentialsMap: { [proxy: string]: string } = (global[
|
||||||
"proxyToCredentialsMap"
|
"proxyToCredentialsMap"
|
||||||
] = global["proxyToCredentialsMap"] || []) as { [proxy: string]: string };
|
] = global["proxyToCredentialsMap"] || []) as { [proxy: string]: string };
|
||||||
@@ -32,7 +37,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
socket.on("register-browserWindow-ready-to-show", (id) => {
|
socket.on("register-browserWindow-ready-to-show", (id) => {
|
||||||
if (readyToShowWindowsIds.includes(id)) {
|
if (readyToShowWindowsIds.includes(id)) {
|
||||||
readyToShowWindowsIds = readyToShowWindowsIds.filter(
|
readyToShowWindowsIds = readyToShowWindowsIds.filter(
|
||||||
(value) => value !== id
|
(value) => value !== id,
|
||||||
);
|
);
|
||||||
electronSocket.emit("browserWindow-ready-to-show" + id);
|
electronSocket.emit("browserWindow-ready-to-show" + id);
|
||||||
}
|
}
|
||||||
@@ -139,6 +144,17 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on("register-browserWindow-bounds-changed", (id) => {
|
||||||
|
const window = getWindowById(id);
|
||||||
|
const cb = () =>
|
||||||
|
electronSocket.emit(
|
||||||
|
"browserWindow-bounds-changed" + id,
|
||||||
|
window.getBounds(),
|
||||||
|
);
|
||||||
|
window.on("resize", cb);
|
||||||
|
window.on("move", cb);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("register-browserWindow-moved", (id) => {
|
socket.on("register-browserWindow-moved", (id) => {
|
||||||
getWindowById(id).on("moved", () => {
|
getWindowById(id).on("moved", () => {
|
||||||
electronSocket.emit("browserWindow-moved" + id);
|
electronSocket.emit("browserWindow-moved" + id);
|
||||||
@@ -224,7 +240,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
__dirname,
|
__dirname,
|
||||||
"..",
|
"..",
|
||||||
"scripts",
|
"scripts",
|
||||||
"blazor-preload.js"
|
"blazor-preload.js",
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -257,7 +273,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
window.on("ready-to-show", () => {
|
window.on("ready-to-show", () => {
|
||||||
if (readyToShowWindowsIds.includes(window.id)) {
|
if (readyToShowWindowsIds.includes(window.id)) {
|
||||||
readyToShowWindowsIds = readyToShowWindowsIds.filter(
|
readyToShowWindowsIds = readyToShowWindowsIds.filter(
|
||||||
(value) => value !== window.id
|
(value) => value !== window.id,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
readyToShowWindowsIds.push(window.id);
|
readyToShowWindowsIds.push(window.id);
|
||||||
@@ -524,7 +540,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-isFullScreenable-completed",
|
"browserWindow-isFullScreenable-completed",
|
||||||
fullscreenable
|
fullscreenable,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -609,7 +625,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
.toString(16);
|
.toString(16);
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-getNativeWindowHandle-completed",
|
"browserWindow-getNativeWindowHandle-completed",
|
||||||
nativeWindowHandle
|
nativeWindowHandle,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -622,7 +638,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(
|
console.warn(
|
||||||
"setRepresentedFilename failed (likely unsupported platform):",
|
"setRepresentedFilename failed (likely unsupported platform):",
|
||||||
e
|
e,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -637,12 +653,12 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn(
|
console.warn(
|
||||||
"getRepresentedFilename failed (likely unsupported platform):",
|
"getRepresentedFilename failed (likely unsupported platform):",
|
||||||
e
|
e,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-getRepresentedFilename-completed",
|
"browserWindow-getRepresentedFilename-completed",
|
||||||
pathname
|
pathname,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -734,7 +750,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
imagePath = path.join(
|
imagePath = path.join(
|
||||||
__dirname.replace("api", ""),
|
__dirname.replace("api", ""),
|
||||||
"bin",
|
"bin",
|
||||||
originalIconPath
|
originalIconPath,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
const { nativeImage } = require("electron");
|
const { nativeImage } = require("electron");
|
||||||
@@ -751,7 +767,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
const success = getWindowById(id).setThumbarButtons(thumbarButtons);
|
const success = getWindowById(id).setThumbarButtons(thumbarButtons);
|
||||||
electronSocket.emit("browserWindowSetThumbarButtons-completed", success);
|
electronSocket.emit("browserWindowSetThumbarButtons-completed", success);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("browserWindowSetThumbnailClip", (id, rectangle) => {
|
socket.on("browserWindowSetThumbnailClip", (id, rectangle) => {
|
||||||
@@ -779,7 +795,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-isMenuBarAutoHide-completed",
|
"browserWindow-isMenuBarAutoHide-completed",
|
||||||
isMenuBarAutoHide
|
isMenuBarAutoHide,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -792,7 +808,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-isMenuBarVisible-completed",
|
"browserWindow-isMenuBarVisible-completed",
|
||||||
isMenuBarVisible
|
isMenuBarVisible,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -806,7 +822,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-isVisibleOnAllWorkspaces-completed",
|
"browserWindow-isVisibleOnAllWorkspaces-completed",
|
||||||
isVisibleOnAllWorkspaces
|
isVisibleOnAllWorkspaces,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -838,7 +854,7 @@ export = (socket: Socket, app: Electron.App) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"browserWindow-getParentWindow-completed",
|
"browserWindow-getParentWindow-completed",
|
||||||
browserWindow.id
|
browserWindow.id,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -3,63 +3,65 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('clipboard-readText', (type) => {
|
socket.on("clipboard-readText", (type) => {
|
||||||
const text = electron_1.clipboard.readText(type);
|
const text = electron_1.clipboard.readText(type);
|
||||||
electronSocket.emit('clipboard-readText-completed', text);
|
electronSocket.emit("clipboard-readText-completed", text);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeText', (text, type) => {
|
socket.on("clipboard-writeText", (text, type) => {
|
||||||
electron_1.clipboard.writeText(text, type);
|
electron_1.clipboard.writeText(text, type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-readHTML', (type) => {
|
socket.on("clipboard-readHTML", (type) => {
|
||||||
const content = electron_1.clipboard.readHTML(type);
|
const content = electron_1.clipboard.readHTML(type);
|
||||||
electronSocket.emit('clipboard-readHTML-completed', content);
|
electronSocket.emit("clipboard-readHTML-completed", content);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeHTML', (markup, type) => {
|
socket.on("clipboard-writeHTML", (markup, type) => {
|
||||||
electron_1.clipboard.writeHTML(markup, type);
|
electron_1.clipboard.writeHTML(markup, type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-readRTF', (type) => {
|
socket.on("clipboard-readRTF", (type) => {
|
||||||
const content = electron_1.clipboard.readRTF(type);
|
const content = electron_1.clipboard.readRTF(type);
|
||||||
electronSocket.emit('clipboard-readRTF-completed', content);
|
electronSocket.emit("clipboard-readRTF-completed", content);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeRTF', (text, type) => {
|
socket.on("clipboard-writeRTF", (text, type) => {
|
||||||
electron_1.clipboard.writeHTML(text, type);
|
electron_1.clipboard.writeHTML(text, type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-readBookmark', () => {
|
socket.on("clipboard-readBookmark", () => {
|
||||||
const bookmark = electron_1.clipboard.readBookmark();
|
const bookmark = electron_1.clipboard.readBookmark();
|
||||||
electronSocket.emit('clipboard-readBookmark-completed', bookmark);
|
electronSocket.emit("clipboard-readBookmark-completed", bookmark);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeBookmark', (title, url, type) => {
|
socket.on("clipboard-writeBookmark", (title, url, type) => {
|
||||||
electron_1.clipboard.writeBookmark(title, url, type);
|
electron_1.clipboard.writeBookmark(title, url, type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-readFindText', () => {
|
socket.on("clipboard-readFindText", () => {
|
||||||
const content = electron_1.clipboard.readFindText();
|
const content = electron_1.clipboard.readFindText();
|
||||||
electronSocket.emit('clipboard-readFindText-completed', content);
|
electronSocket.emit("clipboard-readFindText-completed", content);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeFindText', (text) => {
|
socket.on("clipboard-writeFindText", (text) => {
|
||||||
electron_1.clipboard.writeFindText(text);
|
electron_1.clipboard.writeFindText(text);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-clear', (type) => {
|
socket.on("clipboard-clear", (type) => {
|
||||||
electron_1.clipboard.clear(type);
|
electron_1.clipboard.clear(type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-availableFormats', (type) => {
|
socket.on("clipboard-availableFormats", (type) => {
|
||||||
const formats = electron_1.clipboard.availableFormats(type);
|
const formats = electron_1.clipboard.availableFormats(type);
|
||||||
electronSocket.emit('clipboard-availableFormats-completed', formats);
|
electronSocket.emit("clipboard-availableFormats-completed", formats);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-write', (data, type) => {
|
socket.on("clipboard-write", (data, type) => {
|
||||||
electron_1.clipboard.write(data, type);
|
electron_1.clipboard.write(data, type);
|
||||||
});
|
});
|
||||||
socket.on('clipboard-readImage', (type) => {
|
socket.on("clipboard-readImage", (type) => {
|
||||||
const image = electron_1.clipboard.readImage(type);
|
const image = electron_1.clipboard.readImage(type);
|
||||||
electronSocket.emit('clipboard-readImage-completed', { 1: image.toPNG().toString('base64') });
|
electronSocket.emit("clipboard-readImage-completed", {
|
||||||
|
1: image.toPNG().toString("base64"),
|
||||||
|
});
|
||||||
});
|
});
|
||||||
socket.on('clipboard-writeImage', (data, type) => {
|
socket.on("clipboard-writeImage", (data, type) => {
|
||||||
const dataContent = JSON.parse(data);
|
const dataContent = JSON.parse(data);
|
||||||
const image = electron_1.nativeImage.createEmpty();
|
const image = electron_1.nativeImage.createEmpty();
|
||||||
// tslint:disable-next-line: forin
|
// tslint:disable-next-line: forin
|
||||||
for (const key in dataContent) {
|
for (const key in dataContent) {
|
||||||
const scaleFactor = key;
|
const scaleFactor = key;
|
||||||
const bytes = data[key];
|
const bytes = data[key];
|
||||||
const buffer = Buffer.from(bytes, 'base64');
|
const buffer = Buffer.from(bytes, "base64");
|
||||||
image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer });
|
image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer });
|
||||||
}
|
}
|
||||||
electron_1.clipboard.writeImage(image, type);
|
electron_1.clipboard.writeImage(image, type);
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":";AACA,uCAAkD;AAClD,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,oBAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,cAAc,CAAC,IAAI,CAAC,8BAA8B,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAC5C,oBAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,oBAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QAC9C,oBAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;QACpC,MAAM,OAAO,GAAG,oBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAC3C,oBAAS,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACrC,MAAM,QAAQ,GAAG,oBAAS,CAAC,YAAY,EAAE,CAAC;QAC1C,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACtD,oBAAS,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,oBAAS,CAAC,YAAY,EAAE,CAAC;QACzC,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,IAAI,EAAE,EAAE;QAC1C,oBAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE;QAClC,oBAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,IAAI,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,oBAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QACxC,oBAAS,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,IAAI,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,oBAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,cAAc,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,sBAAsB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,sBAAW,CAAC,WAAW,EAAE,CAAC;QAExC,kCAAkC;QAClC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC5B,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACxB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5C,KAAK,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,oBAAS,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"clipboard.js","sourceRoot":"","sources":["clipboard.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,84 +1,87 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { clipboard, nativeImage } from 'electron';
|
import { clipboard, nativeImage } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('clipboard-readText', (type) => {
|
socket.on("clipboard-readText", (type) => {
|
||||||
const text = clipboard.readText(type);
|
const text = clipboard.readText(type);
|
||||||
electronSocket.emit('clipboard-readText-completed', text);
|
electronSocket.emit("clipboard-readText-completed", text);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-writeText", (text, type) => {
|
||||||
|
clipboard.writeText(text, type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-readHTML", (type) => {
|
||||||
|
const content = clipboard.readHTML(type);
|
||||||
|
electronSocket.emit("clipboard-readHTML-completed", content);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-writeHTML", (markup, type) => {
|
||||||
|
clipboard.writeHTML(markup, type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-readRTF", (type) => {
|
||||||
|
const content = clipboard.readRTF(type);
|
||||||
|
electronSocket.emit("clipboard-readRTF-completed", content);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-writeRTF", (text, type) => {
|
||||||
|
clipboard.writeHTML(text, type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-readBookmark", () => {
|
||||||
|
const bookmark = clipboard.readBookmark();
|
||||||
|
electronSocket.emit("clipboard-readBookmark-completed", bookmark);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-writeBookmark", (title, url, type) => {
|
||||||
|
clipboard.writeBookmark(title, url, type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-readFindText", () => {
|
||||||
|
const content = clipboard.readFindText();
|
||||||
|
electronSocket.emit("clipboard-readFindText-completed", content);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-writeFindText", (text) => {
|
||||||
|
clipboard.writeFindText(text);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-clear", (type) => {
|
||||||
|
clipboard.clear(type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-availableFormats", (type) => {
|
||||||
|
const formats = clipboard.availableFormats(type);
|
||||||
|
electronSocket.emit("clipboard-availableFormats-completed", formats);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-write", (data, type) => {
|
||||||
|
clipboard.write(data, type);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("clipboard-readImage", (type) => {
|
||||||
|
const image = clipboard.readImage(type);
|
||||||
|
electronSocket.emit("clipboard-readImage-completed", {
|
||||||
|
1: image.toPNG().toString("base64"),
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('clipboard-writeText', (text, type) => {
|
socket.on("clipboard-writeImage", (data, type) => {
|
||||||
clipboard.writeText(text, type);
|
const dataContent = JSON.parse(data);
|
||||||
});
|
const image = nativeImage.createEmpty();
|
||||||
|
|
||||||
socket.on('clipboard-readHTML', (type) => {
|
// tslint:disable-next-line: forin
|
||||||
const content = clipboard.readHTML(type);
|
for (const key in dataContent) {
|
||||||
electronSocket.emit('clipboard-readHTML-completed', content);
|
const scaleFactor = key;
|
||||||
});
|
const bytes = data[key];
|
||||||
|
const buffer = Buffer.from(bytes, "base64");
|
||||||
|
image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer });
|
||||||
|
}
|
||||||
|
|
||||||
socket.on('clipboard-writeHTML', (markup, type) => {
|
clipboard.writeImage(image, type);
|
||||||
clipboard.writeHTML(markup, type);
|
});
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-readRTF', (type) => {
|
|
||||||
const content = clipboard.readRTF(type);
|
|
||||||
electronSocket.emit('clipboard-readRTF-completed', content);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-writeRTF', (text, type) => {
|
|
||||||
clipboard.writeHTML(text, type);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-readBookmark', () => {
|
|
||||||
const bookmark = clipboard.readBookmark();
|
|
||||||
electronSocket.emit('clipboard-readBookmark-completed', bookmark);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-writeBookmark', (title, url, type) => {
|
|
||||||
clipboard.writeBookmark(title, url, type);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-readFindText', () => {
|
|
||||||
const content = clipboard.readFindText();
|
|
||||||
electronSocket.emit('clipboard-readFindText-completed', content);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-writeFindText', (text) => {
|
|
||||||
clipboard.writeFindText(text);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-clear', (type) => {
|
|
||||||
clipboard.clear(type);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-availableFormats', (type) => {
|
|
||||||
const formats = clipboard.availableFormats(type);
|
|
||||||
electronSocket.emit('clipboard-availableFormats-completed', formats);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-write', (data, type) => {
|
|
||||||
clipboard.write(data, type);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-readImage', (type) => {
|
|
||||||
const image = clipboard.readImage(type);
|
|
||||||
electronSocket.emit('clipboard-readImage-completed', { 1: image.toPNG().toString('base64') });
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('clipboard-writeImage', (data, type) => {
|
|
||||||
const dataContent = JSON.parse(data);
|
|
||||||
const image = nativeImage.createEmpty();
|
|
||||||
|
|
||||||
// tslint:disable-next-line: forin
|
|
||||||
for (const key in dataContent) {
|
|
||||||
const scaleFactor = key;
|
|
||||||
const bytes = data[key];
|
|
||||||
const buffer = Buffer.from(bytes, 'base64');
|
|
||||||
image.addRepresentation({ scaleFactor: +scaleFactor, buffer: buffer });
|
|
||||||
}
|
|
||||||
|
|
||||||
clipboard.writeImage(image, type);
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket, app) => {
|
module.exports = (socket, app) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('appCommandLineAppendSwitch', (the_switch, value) => {
|
socket.on("appCommandLineAppendSwitch", (the_switch, value) => {
|
||||||
app.commandLine.appendSwitch(the_switch, value);
|
app.commandLine.appendSwitch(the_switch, value);
|
||||||
});
|
});
|
||||||
socket.on('appCommandLineAppendArgument', (value) => {
|
socket.on("appCommandLineAppendArgument", (value) => {
|
||||||
app.commandLine.appendArgument(value);
|
app.commandLine.appendArgument(value);
|
||||||
});
|
});
|
||||||
socket.on('appCommandLineHasSwitch', (value) => {
|
socket.on("appCommandLineHasSwitch", (value) => {
|
||||||
const hasSwitch = app.commandLine.hasSwitch(value);
|
const hasSwitch = app.commandLine.hasSwitch(value);
|
||||||
electronSocket.emit('appCommandLineHasSwitchCompleted', hasSwitch);
|
electronSocket.emit("appCommandLineHasSwitchCompleted", hasSwitch);
|
||||||
});
|
});
|
||||||
socket.on('appCommandLineGetSwitchValue', (the_switch) => {
|
socket.on("appCommandLineGetSwitchValue", (the_switch) => {
|
||||||
const value = app.commandLine.getSwitchValue(the_switch);
|
const value = app.commandLine.getSwitchValue(the_switch);
|
||||||
electronSocket.emit('appCommandLineGetSwitchValueCompleted', value);
|
electronSocket.emit("appCommandLineGetSwitchValueCompleted", value);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=commandLine.js.map
|
//# sourceMappingURL=commandLine.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"commandLine.js","sourceRoot":"","sources":["commandLine.ts"],"names":[],"mappings":";AACA,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,GAAiB,EAAE,EAAE;IAC3C,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;QAC1E,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,KAAa,EAAE,EAAE;QACxD,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAa,EAAE,EAAE;QACnD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,UAAkB,EAAE,EAAE;QAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACzD,cAAc,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"commandLine.js","sourceRoot":"","sources":["commandLine.ts"],"names":[],"mappings":";AAEA,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,GAAiB,EAAE,EAAE;IAC7C,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CACP,4BAA4B,EAC5B,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;QACpC,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,KAAa,EAAE,EAAE;QAC1D,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAa,EAAE,EAAE;QACrD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,UAAkB,EAAE,EAAE;QAC/D,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACzD,cAAc,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,24 +1,28 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket, app: Electron.App) => {
|
export = (socket: Socket, app: Electron.App) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('appCommandLineAppendSwitch', (the_switch: string, value: string) => {
|
socket.on(
|
||||||
app.commandLine.appendSwitch(the_switch, value);
|
"appCommandLineAppendSwitch",
|
||||||
});
|
(the_switch: string, value: string) => {
|
||||||
|
app.commandLine.appendSwitch(the_switch, value);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
socket.on('appCommandLineAppendArgument', (value: string) => {
|
socket.on("appCommandLineAppendArgument", (value: string) => {
|
||||||
app.commandLine.appendArgument(value);
|
app.commandLine.appendArgument(value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('appCommandLineHasSwitch', (value: string) => {
|
socket.on("appCommandLineHasSwitch", (value: string) => {
|
||||||
const hasSwitch = app.commandLine.hasSwitch(value);
|
const hasSwitch = app.commandLine.hasSwitch(value);
|
||||||
electronSocket.emit('appCommandLineHasSwitchCompleted', hasSwitch);
|
electronSocket.emit("appCommandLineHasSwitchCompleted", hasSwitch);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('appCommandLineGetSwitchValue', (the_switch: string) => {
|
socket.on("appCommandLineGetSwitchValue", (the_switch: string) => {
|
||||||
const value = app.commandLine.getSwitchValue(the_switch);
|
const value = app.commandLine.getSwitchValue(the_switch);
|
||||||
electronSocket.emit('appCommandLineGetSwitchValueCompleted', value);
|
electronSocket.emit("appCommandLineGetSwitchValueCompleted", value);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,35 +3,41 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('showMessageBox', async (browserWindow, options, guid) => {
|
socket.on("showMessageBox", async (browserWindow, options, guid) => {
|
||||||
if ('id' in browserWindow) {
|
if ("id" in browserWindow) {
|
||||||
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
||||||
const messageBoxReturnValue = await electron_1.dialog.showMessageBox(window, options);
|
const messageBoxReturnValue = await electron_1.dialog.showMessageBox(window, options);
|
||||||
electronSocket.emit('showMessageBoxComplete' + guid, [messageBoxReturnValue.response, messageBoxReturnValue.checkboxChecked]);
|
electronSocket.emit("showMessageBoxComplete" + guid, [
|
||||||
|
messageBoxReturnValue.response,
|
||||||
|
messageBoxReturnValue.checkboxChecked,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const id = guid || options;
|
const id = guid || options;
|
||||||
const messageBoxReturnValue = await electron_1.dialog.showMessageBox(browserWindow);
|
const messageBoxReturnValue = await electron_1.dialog.showMessageBox(browserWindow);
|
||||||
electronSocket.emit('showMessageBoxComplete' + id, [messageBoxReturnValue.response, messageBoxReturnValue.checkboxChecked]);
|
electronSocket.emit("showMessageBoxComplete" + id, [
|
||||||
|
messageBoxReturnValue.response,
|
||||||
|
messageBoxReturnValue.checkboxChecked,
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('showOpenDialog', async (browserWindow, options, guid) => {
|
socket.on("showOpenDialog", async (browserWindow, options, guid) => {
|
||||||
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
||||||
const openDialogReturnValue = await electron_1.dialog.showOpenDialog(window, options);
|
const openDialogReturnValue = await electron_1.dialog.showOpenDialog(window, options);
|
||||||
electronSocket.emit('showOpenDialogComplete' + guid, openDialogReturnValue.filePaths || []);
|
electronSocket.emit("showOpenDialogComplete" + guid, openDialogReturnValue.filePaths || []);
|
||||||
});
|
});
|
||||||
socket.on('showSaveDialog', async (browserWindow, options, guid) => {
|
socket.on("showSaveDialog", async (browserWindow, options, guid) => {
|
||||||
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
||||||
const saveDialogReturnValue = await electron_1.dialog.showSaveDialog(window, options);
|
const saveDialogReturnValue = await electron_1.dialog.showSaveDialog(window, options);
|
||||||
electronSocket.emit('showSaveDialogComplete' + guid, saveDialogReturnValue.filePath || '');
|
electronSocket.emit("showSaveDialogComplete" + guid, saveDialogReturnValue.filePath || "");
|
||||||
});
|
});
|
||||||
socket.on('showErrorBox', (title, content) => {
|
socket.on("showErrorBox", (title, content) => {
|
||||||
electron_1.dialog.showErrorBox(title, content);
|
electron_1.dialog.showErrorBox(title, content);
|
||||||
});
|
});
|
||||||
socket.on('showCertificateTrustDialog', async (browserWindow, options, guid) => {
|
socket.on("showCertificateTrustDialog", async (browserWindow, options, guid) => {
|
||||||
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
||||||
await electron_1.dialog.showCertificateTrustDialog(window, options);
|
await electron_1.dialog.showCertificateTrustDialog(window, options);
|
||||||
electronSocket.emit('showCertificateTrustDialogComplete' + guid);
|
electronSocket.emit("showCertificateTrustDialogComplete" + guid);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=dialog.js.map
|
//# sourceMappingURL=dialog.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":";AACA,uCAAiD;AACjD,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;YACxB,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;QAClI,CAAC;aAAM,CAAC;YACJ,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC;YAC3B,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEzE,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE,CAAC,qBAAqB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC;QAChI,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IAChG,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE,qBAAqB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACzC,iBAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,iBAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzD,cAAc,CAAC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"dialog.js","sourceRoot":"","sources":["dialog.ts"],"names":[],"mappings":";AACA,uCAAiD;AAEjD,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjE,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAEtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CACvD,MAAM,EACN,OAAO,CACR,CAAC;YACF,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,EAAE;gBACnD,qBAAqB,CAAC,QAAQ;gBAC9B,qBAAqB,CAAC,eAAe;aACtC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,IAAI,IAAI,OAAO,CAAC;YAC3B,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAEzE,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE;gBACjD,qBAAqB,CAAC,QAAQ;gBAC9B,qBAAqB,CAAC,eAAe;aACtC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CACjB,wBAAwB,GAAG,IAAI,EAC/B,qBAAqB,CAAC,SAAS,IAAI,EAAE,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACjE,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,qBAAqB,GAAG,MAAM,iBAAM,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,cAAc,CAAC,IAAI,CACjB,wBAAwB,GAAG,IAAI,EAC/B,qBAAqB,CAAC,QAAQ,IAAI,EAAE,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QAC3C,iBAAM,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CACP,4BAA4B,EAC5B,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,wBAAa,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACtD,MAAM,iBAAM,CAAC,0BAA0B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzD,cAAc,CAAC,IAAI,CAAC,oCAAoC,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC,CACF,CAAC;AACJ,CAAC,CAAC"}
|
||||||
@@ -1,45 +1,64 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { BrowserWindow, dialog } from 'electron';
|
import { BrowserWindow, dialog } from "electron";
|
||||||
|
|
||||||
let electronSocket: Socket;
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('showMessageBox', async (browserWindow, options, guid) => {
|
socket.on("showMessageBox", async (browserWindow, options, guid) => {
|
||||||
if ('id' in browserWindow) {
|
if ("id" in browserWindow) {
|
||||||
const window = BrowserWindow.fromId(browserWindow.id);
|
const window = BrowserWindow.fromId(browserWindow.id);
|
||||||
|
|
||||||
const messageBoxReturnValue = await dialog.showMessageBox(window, options);
|
const messageBoxReturnValue = await dialog.showMessageBox(
|
||||||
electronSocket.emit('showMessageBoxComplete' + guid, [messageBoxReturnValue.response, messageBoxReturnValue.checkboxChecked]);
|
window,
|
||||||
} else {
|
options,
|
||||||
const id = guid || options;
|
);
|
||||||
const messageBoxReturnValue = await dialog.showMessageBox(browserWindow);
|
electronSocket.emit("showMessageBoxComplete" + guid, [
|
||||||
|
messageBoxReturnValue.response,
|
||||||
|
messageBoxReturnValue.checkboxChecked,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
const id = guid || options;
|
||||||
|
const messageBoxReturnValue = await dialog.showMessageBox(browserWindow);
|
||||||
|
|
||||||
electronSocket.emit('showMessageBoxComplete' + id, [messageBoxReturnValue.response, messageBoxReturnValue.checkboxChecked]);
|
electronSocket.emit("showMessageBoxComplete" + id, [
|
||||||
}
|
messageBoxReturnValue.response,
|
||||||
});
|
messageBoxReturnValue.checkboxChecked,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('showOpenDialog', async (browserWindow, options, guid) => {
|
socket.on("showOpenDialog", async (browserWindow, options, guid) => {
|
||||||
const window = BrowserWindow.fromId(browserWindow.id);
|
const window = BrowserWindow.fromId(browserWindow.id);
|
||||||
const openDialogReturnValue = await dialog.showOpenDialog(window, options);
|
const openDialogReturnValue = await dialog.showOpenDialog(window, options);
|
||||||
|
|
||||||
electronSocket.emit('showOpenDialogComplete' + guid, openDialogReturnValue.filePaths || []);
|
electronSocket.emit(
|
||||||
});
|
"showOpenDialogComplete" + guid,
|
||||||
|
openDialogReturnValue.filePaths || [],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('showSaveDialog', async (browserWindow, options, guid) => {
|
socket.on("showSaveDialog", async (browserWindow, options, guid) => {
|
||||||
const window = BrowserWindow.fromId(browserWindow.id);
|
const window = BrowserWindow.fromId(browserWindow.id);
|
||||||
const saveDialogReturnValue = await dialog.showSaveDialog(window, options);
|
const saveDialogReturnValue = await dialog.showSaveDialog(window, options);
|
||||||
|
|
||||||
electronSocket.emit('showSaveDialogComplete' + guid, saveDialogReturnValue.filePath || '');
|
electronSocket.emit(
|
||||||
});
|
"showSaveDialogComplete" + guid,
|
||||||
|
saveDialogReturnValue.filePath || "",
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('showErrorBox', (title, content) => {
|
socket.on("showErrorBox", (title, content) => {
|
||||||
dialog.showErrorBox(title, content);
|
dialog.showErrorBox(title, content);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('showCertificateTrustDialog', async (browserWindow, options, guid) => {
|
socket.on(
|
||||||
const window = BrowserWindow.fromId(browserWindow.id);
|
"showCertificateTrustDialog",
|
||||||
await dialog.showCertificateTrustDialog(window, options);
|
async (browserWindow, options, guid) => {
|
||||||
|
const window = BrowserWindow.fromId(browserWindow.id);
|
||||||
|
await dialog.showCertificateTrustDialog(window, options);
|
||||||
|
|
||||||
electronSocket.emit('showCertificateTrustDialogComplete' + guid);
|
electronSocket.emit("showCertificateTrustDialogComplete" + guid);
|
||||||
});
|
},
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,49 +3,49 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('dock-bounce', (type) => {
|
socket.on("dock-bounce", (type) => {
|
||||||
const id = electron_1.app.dock.bounce(type);
|
const id = electron_1.app.dock.bounce(type);
|
||||||
electronSocket.emit('dock-bounce-completed', id);
|
electronSocket.emit("dock-bounce-completed", id);
|
||||||
});
|
});
|
||||||
socket.on('dock-cancelBounce', (id) => {
|
socket.on("dock-cancelBounce", (id) => {
|
||||||
electron_1.app.dock.cancelBounce(id);
|
electron_1.app.dock.cancelBounce(id);
|
||||||
});
|
});
|
||||||
socket.on('dock-downloadFinished', (filePath) => {
|
socket.on("dock-downloadFinished", (filePath) => {
|
||||||
electron_1.app.dock.downloadFinished(filePath);
|
electron_1.app.dock.downloadFinished(filePath);
|
||||||
});
|
});
|
||||||
socket.on('dock-setBadge', (text) => {
|
socket.on("dock-setBadge", (text) => {
|
||||||
electron_1.app.dock.setBadge(text);
|
electron_1.app.dock.setBadge(text);
|
||||||
});
|
});
|
||||||
socket.on('dock-getBadge', () => {
|
socket.on("dock-getBadge", () => {
|
||||||
const text = electron_1.app.dock.getBadge();
|
const text = electron_1.app.dock.getBadge();
|
||||||
electronSocket.emit('dock-getBadge-completed', text);
|
electronSocket.emit("dock-getBadge-completed", text);
|
||||||
});
|
});
|
||||||
socket.on('dock-hide', () => {
|
socket.on("dock-hide", () => {
|
||||||
electron_1.app.dock.hide();
|
electron_1.app.dock.hide();
|
||||||
});
|
});
|
||||||
socket.on('dock-show', () => {
|
socket.on("dock-show", () => {
|
||||||
electron_1.app.dock.show();
|
electron_1.app.dock.show();
|
||||||
});
|
});
|
||||||
socket.on('dock-isVisible', () => {
|
socket.on("dock-isVisible", () => {
|
||||||
const isVisible = electron_1.app.dock.isVisible();
|
const isVisible = electron_1.app.dock.isVisible();
|
||||||
electronSocket.emit('dock-isVisible-completed', isVisible);
|
electronSocket.emit("dock-isVisible-completed", isVisible);
|
||||||
});
|
});
|
||||||
socket.on('dock-setMenu', (menuItems) => {
|
socket.on("dock-setMenu", (menuItems) => {
|
||||||
let menu = null;
|
let menu = null;
|
||||||
if (menuItems) {
|
if (menuItems) {
|
||||||
menu = electron_1.Menu.buildFromTemplate(menuItems);
|
menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
electronSocket.emit('dockMenuItemClicked', id);
|
electronSocket.emit("dockMenuItemClicked", id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
electron_1.app.dock.setMenu(menu);
|
electron_1.app.dock.setMenu(menu);
|
||||||
});
|
});
|
||||||
// TODO: Menu (macOS) still to be implemented
|
// TODO: Menu (macOS) still to be implemented
|
||||||
socket.on('dock-getMenu', () => {
|
socket.on("dock-getMenu", () => {
|
||||||
const menu = electron_1.app.dock.getMenu();
|
const menu = electron_1.app.dock.getMenu();
|
||||||
electronSocket.emit('dock-getMenu-completed', menu);
|
electronSocket.emit("dock-getMenu-completed", menu);
|
||||||
});
|
});
|
||||||
socket.on('dock-setIcon', (image) => {
|
socket.on("dock-setIcon", (image) => {
|
||||||
electron_1.app.dock.setIcon(image);
|
electron_1.app.dock.setIcon(image);
|
||||||
});
|
});
|
||||||
function addMenuItemClickConnector(menuItems, callback) {
|
function addMenuItemClickConnector(menuItems, callback) {
|
||||||
@@ -53,8 +53,10 @@ module.exports = (socket) => {
|
|||||||
if (item.submenu && item.submenu.items.length > 0) {
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
}
|
}
|
||||||
if ('id' in item && item.id) {
|
if ("id" in item && item.id) {
|
||||||
item.click = () => { callback(item.id); };
|
item.click = () => {
|
||||||
|
callback(item.id);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"dock.js","sourceRoot":"","sources":["dock.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"dock.js","sourceRoot":"","sources":["dock.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,78 +1,81 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { app, Menu } from 'electron';
|
import { app, Menu } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('dock-bounce', (type) => {
|
socket.on("dock-bounce", (type) => {
|
||||||
const id = app.dock.bounce(type);
|
const id = app.dock.bounce(type);
|
||||||
electronSocket.emit('dock-bounce-completed', id);
|
electronSocket.emit("dock-bounce-completed", id);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-cancelBounce', (id) => {
|
socket.on("dock-cancelBounce", (id) => {
|
||||||
app.dock.cancelBounce(id);
|
app.dock.cancelBounce(id);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-downloadFinished', (filePath) => {
|
socket.on("dock-downloadFinished", (filePath) => {
|
||||||
app.dock.downloadFinished(filePath);
|
app.dock.downloadFinished(filePath);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-setBadge', (text) => {
|
socket.on("dock-setBadge", (text) => {
|
||||||
app.dock.setBadge(text);
|
app.dock.setBadge(text);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-getBadge', () => {
|
socket.on("dock-getBadge", () => {
|
||||||
const text = app.dock.getBadge();
|
const text = app.dock.getBadge();
|
||||||
electronSocket.emit('dock-getBadge-completed', text);
|
electronSocket.emit("dock-getBadge-completed", text);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-hide', () => {
|
socket.on("dock-hide", () => {
|
||||||
app.dock.hide();
|
app.dock.hide();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-show', () => {
|
socket.on("dock-show", () => {
|
||||||
app.dock.show();
|
app.dock.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-isVisible', () => {
|
socket.on("dock-isVisible", () => {
|
||||||
const isVisible = app.dock.isVisible();
|
const isVisible = app.dock.isVisible();
|
||||||
electronSocket.emit('dock-isVisible-completed', isVisible);
|
electronSocket.emit("dock-isVisible-completed", isVisible);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('dock-setMenu', (menuItems) => {
|
socket.on("dock-setMenu", (menuItems) => {
|
||||||
let menu = null;
|
let menu = null;
|
||||||
|
|
||||||
if (menuItems) {
|
if (menuItems) {
|
||||||
menu = Menu.buildFromTemplate(menuItems);
|
menu = Menu.buildFromTemplate(menuItems);
|
||||||
|
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
electronSocket.emit('dockMenuItemClicked', id);
|
electronSocket.emit("dockMenuItemClicked", id);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
app.dock.setMenu(menu);
|
|
||||||
});
|
|
||||||
|
|
||||||
// TODO: Menu (macOS) still to be implemented
|
|
||||||
socket.on('dock-getMenu', () => {
|
|
||||||
const menu = app.dock.getMenu();
|
|
||||||
electronSocket.emit('dock-getMenu-completed', menu);
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('dock-setIcon', (image) => {
|
|
||||||
app.dock.setIcon(image);
|
|
||||||
});
|
|
||||||
|
|
||||||
function addMenuItemClickConnector(menuItems, callback) {
|
|
||||||
menuItems.forEach((item) => {
|
|
||||||
if (item.submenu && item.submenu.items.length > 0) {
|
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('id' in item && item.id) {
|
|
||||||
item.click = () => { callback(item.id); };
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
app.dock.setMenu(menu);
|
||||||
|
});
|
||||||
|
|
||||||
|
// TODO: Menu (macOS) still to be implemented
|
||||||
|
socket.on("dock-getMenu", () => {
|
||||||
|
const menu = app.dock.getMenu();
|
||||||
|
electronSocket.emit("dock-getMenu-completed", menu);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("dock-setIcon", (image) => {
|
||||||
|
app.dock.setIcon(image);
|
||||||
|
});
|
||||||
|
|
||||||
|
function addMenuItemClickConnector(menuItems, callback) {
|
||||||
|
menuItems.forEach((item) => {
|
||||||
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("id" in item && item.id) {
|
||||||
|
item.click = () => {
|
||||||
|
callback(item.id);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,19 +3,19 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('globalShortcut-register', (accelerator) => {
|
socket.on("globalShortcut-register", (accelerator) => {
|
||||||
electron_1.globalShortcut.register(accelerator, () => {
|
electron_1.globalShortcut.register(accelerator, () => {
|
||||||
electronSocket.emit('globalShortcut-pressed', accelerator);
|
electronSocket.emit("globalShortcut-pressed", accelerator);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('globalShortcut-isRegistered', (accelerator) => {
|
socket.on("globalShortcut-isRegistered", (accelerator) => {
|
||||||
const isRegistered = electron_1.globalShortcut.isRegistered(accelerator);
|
const isRegistered = electron_1.globalShortcut.isRegistered(accelerator);
|
||||||
electronSocket.emit('globalShortcut-isRegisteredCompleted', isRegistered);
|
electronSocket.emit("globalShortcut-isRegisteredCompleted", isRegistered);
|
||||||
});
|
});
|
||||||
socket.on('globalShortcut-unregister', (accelerator) => {
|
socket.on("globalShortcut-unregister", (accelerator) => {
|
||||||
electron_1.globalShortcut.unregister(accelerator);
|
electron_1.globalShortcut.unregister(accelerator);
|
||||||
});
|
});
|
||||||
socket.on('globalShortcut-unregisterAll', () => {
|
socket.on("globalShortcut-unregisterAll", () => {
|
||||||
try {
|
try {
|
||||||
electron_1.globalShortcut.unregisterAll();
|
electron_1.globalShortcut.unregisterAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"globalShortcut.js","sourceRoot":"","sources":["globalShortcut.ts"],"names":[],"mappings":";AAAA,uCAA0C;AAE1C,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACjD,yBAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,WAAW,EAAE,EAAE;QACrD,MAAM,YAAY,GAAG,yBAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9D,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,WAAW,EAAE,EAAE;QACnD,yBAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC3C,IAAI,CAAC;YACD,yBAAc,CAAC,aAAa,EAAE,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"globalShortcut.js","sourceRoot":"","sources":["globalShortcut.ts"],"names":[],"mappings":";AACA,uCAA0C;AAE1C,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACnD,yBAAc,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;YACxC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,CAAC,WAAW,EAAE,EAAE;QACvD,MAAM,YAAY,GAAG,yBAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAE9D,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,YAAY,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,WAAW,EAAE,EAAE;QACrD,yBAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC7C,IAAI,CAAC;YACH,yBAAc,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,28 +1,29 @@
|
|||||||
import { globalShortcut } from 'electron';
|
import type { Socket } from "net";
|
||||||
import { Socket } from 'net';
|
import { globalShortcut } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('globalShortcut-register', (accelerator) => {
|
socket.on("globalShortcut-register", (accelerator) => {
|
||||||
globalShortcut.register(accelerator, () => {
|
globalShortcut.register(accelerator, () => {
|
||||||
electronSocket.emit('globalShortcut-pressed', accelerator);
|
electronSocket.emit("globalShortcut-pressed", accelerator);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('globalShortcut-isRegistered', (accelerator) => {
|
socket.on("globalShortcut-isRegistered", (accelerator) => {
|
||||||
const isRegistered = globalShortcut.isRegistered(accelerator);
|
const isRegistered = globalShortcut.isRegistered(accelerator);
|
||||||
|
|
||||||
electronSocket.emit('globalShortcut-isRegisteredCompleted', isRegistered);
|
electronSocket.emit("globalShortcut-isRegisteredCompleted", isRegistered);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('globalShortcut-unregister', (accelerator) => {
|
socket.on("globalShortcut-unregister", (accelerator) => {
|
||||||
globalShortcut.unregister(accelerator);
|
globalShortcut.unregister(accelerator);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('globalShortcut-unregisterAll', () => {
|
socket.on("globalShortcut-unregisterAll", () => {
|
||||||
try {
|
try {
|
||||||
globalShortcut.unregisterAll();
|
globalShortcut.unregisterAll();
|
||||||
} catch (error) { }
|
} catch (error) {}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,40 +3,41 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('registerIpcMainChannel', (channel) => {
|
socket.on("registerIpcMainChannel", (channel) => {
|
||||||
electron_1.ipcMain.on(channel, (event, args) => {
|
electron_1.ipcMain.on(channel, (event, args) => {
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('registerSyncIpcMainChannel', (channel) => {
|
socket.on("registerSyncIpcMainChannel", (channel) => {
|
||||||
electron_1.ipcMain.on(channel, (event, args) => {
|
electron_1.ipcMain.on(channel, (event, args) => {
|
||||||
const x = socket;
|
const x = socket;
|
||||||
x.removeAllListeners(channel + 'Sync');
|
x.removeAllListeners(channel + "Sync");
|
||||||
socket.on(channel + 'Sync', (result) => {
|
socket.on(channel + "Sync", (result) => {
|
||||||
event.returnValue = result;
|
event.returnValue = result;
|
||||||
});
|
});
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('registerOnceIpcMainChannel', (channel) => {
|
socket.on("registerOnceIpcMainChannel", (channel) => {
|
||||||
electron_1.ipcMain.once(channel, (event, args) => {
|
electron_1.ipcMain.once(channel, (event, args) => {
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('removeAllListenersIpcMainChannel', (channel) => {
|
socket.on("removeAllListenersIpcMainChannel", (channel) => {
|
||||||
electron_1.ipcMain.removeAllListeners(channel);
|
electron_1.ipcMain.removeAllListeners(channel);
|
||||||
});
|
});
|
||||||
socket.on('sendToIpcRenderer', (browserWindow, channel, data) => {
|
socket.on("sendToIpcRenderer", (browserWindow, channel, data) => {
|
||||||
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
const window = electron_1.BrowserWindow.fromId(browserWindow.id);
|
||||||
if (window) {
|
if (window) {
|
||||||
window.webContents.send(channel, ...data);
|
window.webContents.send(channel, ...data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('sendToIpcRendererBrowserView', (id, channel, data) => {
|
socket.on("sendToIpcRendererBrowserView", (id, channel, data) => {
|
||||||
const browserViews = (global['browserViews'] = global['browserViews'] || []);
|
const browserViews = (global["browserViews"] =
|
||||||
|
global["browserViews"] || []);
|
||||||
let view = null;
|
let view = null;
|
||||||
for (let i = 0; i < browserViews.length; i++) {
|
for (let i = 0; i < browserViews.length; i++) {
|
||||||
if (browserViews[i]['id'] === id) {
|
if (browserViews[i]["id"] === id) {
|
||||||
view = browserViews[i];
|
view = browserViews[i];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -45,29 +46,58 @@ module.exports = (socket) => {
|
|||||||
view.webContents.send(channel, ...data);
|
view.webContents.send(channel, ...data);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
socket.on("registerHandleIpcMainChannel", (channel) => {
|
||||||
|
electron_1.ipcMain.handle(channel, (event, args) => {
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
socket.removeAllListeners(channel + "Handle");
|
||||||
|
socket.on(channel + "Handle", (result) => {
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
socket.on("registerHandleOnceIpcMainChannel", (channel) => {
|
||||||
|
electron_1.ipcMain.handleOnce(channel, (event, args) => {
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
socket.removeAllListeners(channel + "HandleOnce");
|
||||||
|
socket.once(channel + "HandleOnce", (result) => {
|
||||||
|
resolve(result);
|
||||||
|
});
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
socket.on("removeHandlerIpcMainChannel", (channel) => {
|
||||||
|
electron_1.ipcMain.removeHandler(channel);
|
||||||
|
});
|
||||||
// Integration helpers: programmatically click menu items from renderer tests
|
// Integration helpers: programmatically click menu items from renderer tests
|
||||||
electron_1.ipcMain.on('integration-click-application-menu', (event, id) => {
|
electron_1.ipcMain.on("integration-click-application-menu", (event, id) => {
|
||||||
try {
|
try {
|
||||||
const menu = electron_1.Menu.getApplicationMenu();
|
const menu = electron_1.Menu.getApplicationMenu();
|
||||||
const mi = menu ? menu.getMenuItemById(id) : null;
|
const mi = menu ? menu.getMenuItemById(id) : null;
|
||||||
if (mi && typeof mi.click === 'function') {
|
if (mi && typeof mi.click === "function") {
|
||||||
const bw = electron_1.BrowserWindow.fromWebContents(event.sender);
|
const bw = electron_1.BrowserWindow.fromWebContents(event.sender);
|
||||||
mi.click(undefined, bw, undefined);
|
mi.click(undefined, bw, undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { /* ignore */ }
|
catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
});
|
});
|
||||||
electron_1.ipcMain.on('integration-click-context-menu', (event, windowId, id) => {
|
electron_1.ipcMain.on("integration-click-context-menu", (event, windowId, id) => {
|
||||||
try {
|
try {
|
||||||
const entries = global['contextMenuItems'] || [];
|
const entries = global["contextMenuItems"] || [];
|
||||||
const entry = entries.find((x) => x.browserWindowId === windowId);
|
const entry = entries.find((x) => x.browserWindowId === windowId);
|
||||||
const mi = entry?.menu?.items?.find((i) => i.id === id);
|
const mi = entry?.menu?.items?.find((i) => i.id === id);
|
||||||
if (mi && typeof mi.click === 'function') {
|
if (mi && typeof mi.click === "function") {
|
||||||
const bw = electron_1.BrowserWindow.fromId(windowId);
|
const bw = electron_1.BrowserWindow.fromId(windowId);
|
||||||
mi.click(undefined, bw, undefined);
|
mi.click(undefined, bw, undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch { /* ignore */ }
|
catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=ipc.js.map
|
//# sourceMappingURL=ipc.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["ipc.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"ipc.js","sourceRoot":"","sources":["ipc.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,81 +1,118 @@
|
|||||||
import { ipcMain, BrowserWindow, BrowserView, Menu } from 'electron';
|
import type { Socket } from "net";
|
||||||
import { Socket } from 'net';
|
import { ipcMain, BrowserWindow, BrowserView, Menu } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('registerIpcMainChannel', (channel) => {
|
socket.on("registerIpcMainChannel", (channel) => {
|
||||||
ipcMain.on(channel, (event, args) => {
|
ipcMain.on(channel, (event, args) => {
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("registerSyncIpcMainChannel", (channel) => {
|
||||||
|
ipcMain.on(channel, (event, args) => {
|
||||||
|
const x = <any>socket;
|
||||||
|
x.removeAllListeners(channel + "Sync");
|
||||||
|
socket.on(channel + "Sync", (result) => {
|
||||||
|
event.returnValue = result;
|
||||||
|
});
|
||||||
|
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("registerOnceIpcMainChannel", (channel) => {
|
||||||
|
ipcMain.once(channel, (event, args) => {
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("removeAllListenersIpcMainChannel", (channel) => {
|
||||||
|
ipcMain.removeAllListeners(channel);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("sendToIpcRenderer", (browserWindow, channel, data) => {
|
||||||
|
const window = BrowserWindow.fromId(browserWindow.id);
|
||||||
|
|
||||||
|
if (window) {
|
||||||
|
window.webContents.send(channel, ...data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("sendToIpcRendererBrowserView", (id, channel, data) => {
|
||||||
|
const browserViews: BrowserView[] = (global["browserViews"] =
|
||||||
|
global["browserViews"] || []) as BrowserView[];
|
||||||
|
let view: BrowserView = null;
|
||||||
|
for (let i = 0; i < browserViews.length; i++) {
|
||||||
|
if (browserViews[i]["id"] === id) {
|
||||||
|
view = browserViews[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (view) {
|
||||||
|
view.webContents.send(channel, ...data);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("registerHandleIpcMainChannel", (channel) => {
|
||||||
|
ipcMain.handle(channel, (event, args) => {
|
||||||
|
return new Promise((resolve, _reject) => {
|
||||||
|
socket.removeAllListeners(channel + "Handle");
|
||||||
|
socket.on(channel + "Handle", (result) => {
|
||||||
|
resolve(result);
|
||||||
});
|
});
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('registerSyncIpcMainChannel', (channel) => {
|
socket.on("registerHandleOnceIpcMainChannel", (channel) => {
|
||||||
ipcMain.on(channel, (event, args) => {
|
ipcMain.handleOnce(channel, (event, args) => {
|
||||||
const x = <any>socket;
|
return new Promise((resolve, _reject) => {
|
||||||
x.removeAllListeners(channel + 'Sync');
|
socket.removeAllListeners(channel + "HandleOnce");
|
||||||
socket.on(channel + 'Sync', (result) => {
|
socket.once(channel + "HandleOnce", (result) => {
|
||||||
event.returnValue = result;
|
resolve(result);
|
||||||
});
|
|
||||||
|
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
|
||||||
});
|
});
|
||||||
|
electronSocket.emit(channel, [event.preventDefault(), args]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('registerOnceIpcMainChannel', (channel) => {
|
socket.on("removeHandlerIpcMainChannel", (channel) => {
|
||||||
ipcMain.once(channel, (event, args) => {
|
ipcMain.removeHandler(channel);
|
||||||
electronSocket.emit(channel, [event.preventDefault(), args]);
|
});
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('removeAllListenersIpcMainChannel', (channel) => {
|
// Integration helpers: programmatically click menu items from renderer tests
|
||||||
ipcMain.removeAllListeners(channel);
|
ipcMain.on("integration-click-application-menu", (event, id: string) => {
|
||||||
});
|
try {
|
||||||
|
const menu = Menu.getApplicationMenu();
|
||||||
|
const mi = menu ? menu.getMenuItemById(id) : null;
|
||||||
|
if (mi && typeof (mi as any).click === "function") {
|
||||||
|
const bw = BrowserWindow.fromWebContents(event.sender);
|
||||||
|
(mi as any).click(undefined, bw, undefined);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
/* ignore */
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('sendToIpcRenderer', (browserWindow, channel, data) => {
|
ipcMain.on(
|
||||||
const window = BrowserWindow.fromId(browserWindow.id);
|
"integration-click-context-menu",
|
||||||
|
(event, windowId: number, id: string) => {
|
||||||
if (window) {
|
try {
|
||||||
window.webContents.send(channel, ...data);
|
const entries = (global as any)["contextMenuItems"] || [];
|
||||||
|
const entry = entries.find((x: any) => x.browserWindowId === windowId);
|
||||||
|
const mi = entry?.menu?.items?.find((i: any) => i.id === id);
|
||||||
|
if (mi && typeof (mi as any).click === "function") {
|
||||||
|
const bw = BrowserWindow.fromId(windowId);
|
||||||
|
(mi as any).click(undefined, bw, undefined);
|
||||||
}
|
}
|
||||||
});
|
} catch {
|
||||||
|
/* ignore */
|
||||||
socket.on('sendToIpcRendererBrowserView', (id, channel, data) => {
|
}
|
||||||
const browserViews: BrowserView[] = (global['browserViews'] = global['browserViews'] || []) as BrowserView[];
|
},
|
||||||
let view: BrowserView = null;
|
);
|
||||||
for (let i = 0; i < browserViews.length; i++) {
|
|
||||||
if (browserViews[i]['id'] === id) {
|
|
||||||
view = browserViews[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (view) {
|
|
||||||
view.webContents.send(channel, ...data);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Integration helpers: programmatically click menu items from renderer tests
|
|
||||||
ipcMain.on('integration-click-application-menu', (event, id: string) => {
|
|
||||||
try {
|
|
||||||
const menu = Menu.getApplicationMenu();
|
|
||||||
const mi = menu ? menu.getMenuItemById(id) : null;
|
|
||||||
if (mi && typeof (mi as any).click === 'function') {
|
|
||||||
const bw = BrowserWindow.fromWebContents(event.sender);
|
|
||||||
(mi as any).click(undefined, bw, undefined);
|
|
||||||
}
|
|
||||||
} catch { /* ignore */ }
|
|
||||||
});
|
|
||||||
|
|
||||||
ipcMain.on('integration-click-context-menu', (event, windowId: number, id: string) => {
|
|
||||||
try {
|
|
||||||
const entries = (global as any)['contextMenuItems'] || [];
|
|
||||||
const entry = entries.find((x: any) => x.browserWindowId === windowId);
|
|
||||||
const mi = entry?.menu?.items?.find((i: any) => i.id === id);
|
|
||||||
if (mi && typeof (mi as any).click === 'function') {
|
|
||||||
const bw = BrowserWindow.fromId(windowId);
|
|
||||||
(mi as any).click(undefined, bw, undefined);
|
|
||||||
}
|
|
||||||
} catch { /* ignore */ }
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
const contextMenuItems = (global['contextMenuItems'] = global['contextMenuItems'] || []);
|
const contextMenuItems = (global["contextMenuItems"] =
|
||||||
|
global["contextMenuItems"] || []);
|
||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('menu-setContextMenu', (browserWindowId, menuItems) => {
|
socket.on("menu-setContextMenu", (browserWindowId, menuItems) => {
|
||||||
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||||
addContextMenuItemClickConnector(menu.items, browserWindowId, (id, windowId) => {
|
addContextMenuItemClickConnector(menu.items, browserWindowId, (id, windowId) => {
|
||||||
electronSocket.emit('contextMenuItemClicked', [id, windowId]);
|
electronSocket.emit("contextMenuItemClicked", [id, windowId]);
|
||||||
});
|
});
|
||||||
const index = contextMenuItems.findIndex(contextMenu => contextMenu.browserWindowId === browserWindowId);
|
const index = contextMenuItems.findIndex((contextMenu) => contextMenu.browserWindowId === browserWindowId);
|
||||||
const contextMenuItem = {
|
const contextMenuItem = {
|
||||||
menu: menu,
|
menu: menu,
|
||||||
browserWindowId: browserWindowId
|
browserWindowId: browserWindowId,
|
||||||
};
|
};
|
||||||
if (index === -1) {
|
if (index === -1) {
|
||||||
contextMenuItems.push(contextMenuItem);
|
contextMenuItems.push(contextMenuItem);
|
||||||
@@ -26,23 +27,25 @@ module.exports = (socket) => {
|
|||||||
if (item.submenu && item.submenu.items.length > 0) {
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
addContextMenuItemClickConnector(item.submenu.items, browserWindowId, callback);
|
addContextMenuItemClickConnector(item.submenu.items, browserWindowId, callback);
|
||||||
}
|
}
|
||||||
if ('id' in item && item.id) {
|
if ("id" in item && item.id) {
|
||||||
item.click = () => { callback(item.id, browserWindowId); };
|
item.click = () => {
|
||||||
|
callback(item.id, browserWindowId);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
socket.on('menu-contextMenuPopup', (browserWindowId) => {
|
socket.on("menu-contextMenuPopup", (browserWindowId) => {
|
||||||
contextMenuItems.forEach(x => {
|
contextMenuItems.forEach((x) => {
|
||||||
if (x.browserWindowId === browserWindowId) {
|
if (x.browserWindowId === browserWindowId) {
|
||||||
const browserWindow = electron_1.BrowserWindow.fromId(browserWindowId);
|
const browserWindow = electron_1.BrowserWindow.fromId(browserWindowId);
|
||||||
x.menu.popup(browserWindow);
|
x.menu.popup(browserWindow);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('menu-setApplicationMenu', (menuItems) => {
|
socket.on("menu-setApplicationMenu", (menuItems) => {
|
||||||
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
electronSocket.emit('menuItemClicked', id);
|
electronSocket.emit("menuItemClicked", id);
|
||||||
});
|
});
|
||||||
electron_1.Menu.setApplicationMenu(menu);
|
electron_1.Menu.setApplicationMenu(menu);
|
||||||
});
|
});
|
||||||
@@ -51,8 +54,10 @@ module.exports = (socket) => {
|
|||||||
if (item.submenu && item.submenu.items.length > 0) {
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
}
|
}
|
||||||
if ('id' in item && item.id) {
|
if ("id" in item && item.id) {
|
||||||
item.click = () => { callback(item.id); };
|
item.click = () => {
|
||||||
|
callback(item.id);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"menu.js","sourceRoot":"","sources":["menu.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"menu.js","sourceRoot":"","sources":["menu.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,71 +1,92 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { Menu, BrowserWindow } from 'electron';
|
import { Menu, BrowserWindow } from "electron";
|
||||||
const contextMenuItems = (global['contextMenuItems'] = global['contextMenuItems'] || []);
|
|
||||||
let electronSocket;
|
const contextMenuItems = (global["contextMenuItems"] =
|
||||||
|
global["contextMenuItems"] || []);
|
||||||
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('menu-setContextMenu', (browserWindowId, menuItems) => {
|
socket.on("menu-setContextMenu", (browserWindowId, menuItems) => {
|
||||||
const menu = Menu.buildFromTemplate(menuItems);
|
const menu = Menu.buildFromTemplate(menuItems);
|
||||||
|
|
||||||
addContextMenuItemClickConnector(menu.items, browserWindowId, (id, windowId) => {
|
addContextMenuItemClickConnector(
|
||||||
electronSocket.emit('contextMenuItemClicked', [id, windowId]);
|
menu.items,
|
||||||
});
|
browserWindowId,
|
||||||
|
(id, windowId) => {
|
||||||
|
electronSocket.emit("contextMenuItemClicked", [id, windowId]);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
const index = contextMenuItems.findIndex(contextMenu => contextMenu.browserWindowId === browserWindowId);
|
const index = contextMenuItems.findIndex(
|
||||||
|
(contextMenu) => contextMenu.browserWindowId === browserWindowId,
|
||||||
|
);
|
||||||
|
|
||||||
const contextMenuItem = {
|
const contextMenuItem = {
|
||||||
menu: menu,
|
menu: menu,
|
||||||
browserWindowId: browserWindowId
|
browserWindowId: browserWindowId,
|
||||||
|
};
|
||||||
|
|
||||||
|
if (index === -1) {
|
||||||
|
contextMenuItems.push(contextMenuItem);
|
||||||
|
} else {
|
||||||
|
contextMenuItems[index] = contextMenuItem;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function addContextMenuItemClickConnector(
|
||||||
|
menuItems,
|
||||||
|
browserWindowId,
|
||||||
|
callback,
|
||||||
|
) {
|
||||||
|
menuItems.forEach((item) => {
|
||||||
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
|
addContextMenuItemClickConnector(
|
||||||
|
item.submenu.items,
|
||||||
|
browserWindowId,
|
||||||
|
callback,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("id" in item && item.id) {
|
||||||
|
item.click = () => {
|
||||||
|
callback(item.id, browserWindowId);
|
||||||
};
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (index === -1) {
|
socket.on("menu-contextMenuPopup", (browserWindowId) => {
|
||||||
contextMenuItems.push(contextMenuItem);
|
contextMenuItems.forEach((x) => {
|
||||||
} else {
|
if (x.browserWindowId === browserWindowId) {
|
||||||
contextMenuItems[index] = contextMenuItem;
|
const browserWindow = BrowserWindow.fromId(browserWindowId);
|
||||||
}
|
x.menu.popup(browserWindow);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("menu-setApplicationMenu", (menuItems) => {
|
||||||
|
const menu = Menu.buildFromTemplate(menuItems);
|
||||||
|
|
||||||
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
|
electronSocket.emit("menuItemClicked", id);
|
||||||
});
|
});
|
||||||
|
|
||||||
function addContextMenuItemClickConnector(menuItems, browserWindowId, callback) {
|
Menu.setApplicationMenu(menu);
|
||||||
menuItems.forEach((item) => {
|
});
|
||||||
if (item.submenu && item.submenu.items.length > 0) {
|
|
||||||
addContextMenuItemClickConnector(item.submenu.items, browserWindowId, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('id' in item && item.id) {
|
function addMenuItemClickConnector(menuItems, callback) {
|
||||||
item.click = () => { callback(item.id, browserWindowId); };
|
menuItems.forEach((item) => {
|
||||||
}
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
});
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
socket.on('menu-contextMenuPopup', (browserWindowId) => {
|
if ("id" in item && item.id) {
|
||||||
contextMenuItems.forEach(x => {
|
item.click = () => {
|
||||||
if (x.browserWindowId === browserWindowId) {
|
callback(item.id);
|
||||||
const browserWindow = BrowserWindow.fromId(browserWindowId);
|
};
|
||||||
x.menu.popup(browserWindow);
|
}
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
socket.on('menu-setApplicationMenu', (menuItems) => {
|
|
||||||
const menu = Menu.buildFromTemplate(menuItems);
|
|
||||||
|
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
|
||||||
electronSocket.emit('menuItemClicked', id);
|
|
||||||
});
|
|
||||||
|
|
||||||
Menu.setApplicationMenu(menu);
|
|
||||||
});
|
|
||||||
|
|
||||||
function addMenuItemClickConnector(menuItems, callback) {
|
|
||||||
menuItems.forEach((item) => {
|
|
||||||
if (item.submenu && item.submenu.items.length > 0) {
|
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('id' in item && item.id) {
|
|
||||||
item.click = () => { callback(item.id); };
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,28 +3,28 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('nativeTheme-shouldUseDarkColors', () => {
|
socket.on("nativeTheme-shouldUseDarkColors", () => {
|
||||||
const shouldUseDarkColors = electron_1.nativeTheme.shouldUseDarkColors;
|
const shouldUseDarkColors = electron_1.nativeTheme.shouldUseDarkColors;
|
||||||
electronSocket.emit('nativeTheme-shouldUseDarkColors-completed', shouldUseDarkColors);
|
electronSocket.emit("nativeTheme-shouldUseDarkColors-completed", shouldUseDarkColors);
|
||||||
});
|
});
|
||||||
socket.on('nativeTheme-shouldUseHighContrastColors', () => {
|
socket.on("nativeTheme-shouldUseHighContrastColors", () => {
|
||||||
const shouldUseHighContrastColors = electron_1.nativeTheme.shouldUseHighContrastColors;
|
const shouldUseHighContrastColors = electron_1.nativeTheme.shouldUseHighContrastColors;
|
||||||
electronSocket.emit('nativeTheme-shouldUseHighContrastColors-completed', shouldUseHighContrastColors);
|
electronSocket.emit("nativeTheme-shouldUseHighContrastColors-completed", shouldUseHighContrastColors);
|
||||||
});
|
});
|
||||||
socket.on('nativeTheme-shouldUseInvertedColorScheme', () => {
|
socket.on("nativeTheme-shouldUseInvertedColorScheme", () => {
|
||||||
const shouldUseInvertedColorScheme = electron_1.nativeTheme.shouldUseInvertedColorScheme;
|
const shouldUseInvertedColorScheme = electron_1.nativeTheme.shouldUseInvertedColorScheme;
|
||||||
electronSocket.emit('nativeTheme-shouldUseInvertedColorScheme-completed', shouldUseInvertedColorScheme);
|
electronSocket.emit("nativeTheme-shouldUseInvertedColorScheme-completed", shouldUseInvertedColorScheme);
|
||||||
});
|
});
|
||||||
socket.on('nativeTheme-getThemeSource', () => {
|
socket.on("nativeTheme-getThemeSource", () => {
|
||||||
const themeSource = electron_1.nativeTheme.themeSource;
|
const themeSource = electron_1.nativeTheme.themeSource;
|
||||||
electronSocket.emit('nativeTheme-getThemeSource-completed', themeSource);
|
electronSocket.emit("nativeTheme-getThemeSource-completed", themeSource);
|
||||||
});
|
});
|
||||||
socket.on('nativeTheme-themeSource', (themeSource) => {
|
socket.on("nativeTheme-themeSource", (themeSource) => {
|
||||||
electron_1.nativeTheme.themeSource = themeSource;
|
electron_1.nativeTheme.themeSource = themeSource;
|
||||||
});
|
});
|
||||||
socket.on('register-nativeTheme-updated', (id) => {
|
socket.on("register-nativeTheme-updated", (id) => {
|
||||||
electron_1.nativeTheme.on('updated', () => {
|
electron_1.nativeTheme.on("updated", () => {
|
||||||
electronSocket.emit('nativeTheme-updated' + id);
|
electronSocket.emit("nativeTheme-updated" + id);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"nativeTheme.js","sourceRoot":"","sources":["nativeTheme.ts"],"names":[],"mappings":";AACA,uCAAuC;AACvC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC9C,MAAM,mBAAmB,GAAG,sBAAW,CAAC,mBAAmB,CAAC;QAE5D,cAAc,CAAC,IAAI,CAAC,2CAA2C,EAAE,mBAAmB,CAAC,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACtD,MAAM,2BAA2B,GAAG,sBAAW,CAAC,2BAA2B,CAAC;QAE5E,cAAc,CAAC,IAAI,CAAC,mDAAmD,EAAE,2BAA2B,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACvD,MAAM,4BAA4B,GAAG,sBAAW,CAAC,4BAA4B,CAAC;QAE9E,cAAc,CAAC,IAAI,CAAC,oDAAoD,EAAE,4BAA4B,CAAC,CAAC;IAC5G,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACzC,MAAM,WAAW,GAAG,sBAAW,CAAC,WAAW,CAAC;QAE5C,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,WAAW,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACjD,sBAAW,CAAC,WAAW,GAAG,WAAW,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,EAAE;QAC7C,sBAAW,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC3B,cAAc,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"nativeTheme.js","sourceRoot":"","sources":["nativeTheme.ts"],"names":[],"mappings":";AACA,uCAAuC;AAEvC,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAChD,MAAM,mBAAmB,GAAG,sBAAW,CAAC,mBAAmB,CAAC;QAE5D,cAAc,CAAC,IAAI,CACjB,2CAA2C,EAC3C,mBAAmB,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACxD,MAAM,2BAA2B,GAAG,sBAAW,CAAC,2BAA2B,CAAC;QAE5E,cAAc,CAAC,IAAI,CACjB,mDAAmD,EACnD,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACzD,MAAM,4BAA4B,GAChC,sBAAW,CAAC,4BAA4B,CAAC;QAE3C,cAAc,CAAC,IAAI,CACjB,oDAAoD,EACpD,4BAA4B,CAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC3C,MAAM,WAAW,GAAG,sBAAW,CAAC,WAAW,CAAC;QAE5C,cAAc,CAAC,IAAI,CAAC,sCAAsC,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,WAAW,EAAE,EAAE;QACnD,sBAAW,CAAC,WAAW,GAAG,WAAW,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,CAAC,EAAE,EAAE,EAAE;QAC/C,sBAAW,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC7B,cAAc,CAAC,IAAI,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,41 +1,52 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { nativeTheme } from 'electron';
|
import { nativeTheme } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('nativeTheme-shouldUseDarkColors', () => {
|
socket.on("nativeTheme-shouldUseDarkColors", () => {
|
||||||
const shouldUseDarkColors = nativeTheme.shouldUseDarkColors;
|
const shouldUseDarkColors = nativeTheme.shouldUseDarkColors;
|
||||||
|
|
||||||
electronSocket.emit('nativeTheme-shouldUseDarkColors-completed', shouldUseDarkColors);
|
electronSocket.emit(
|
||||||
});
|
"nativeTheme-shouldUseDarkColors-completed",
|
||||||
|
shouldUseDarkColors,
|
||||||
socket.on('nativeTheme-shouldUseHighContrastColors', () => {
|
);
|
||||||
const shouldUseHighContrastColors = nativeTheme.shouldUseHighContrastColors;
|
});
|
||||||
|
|
||||||
electronSocket.emit('nativeTheme-shouldUseHighContrastColors-completed', shouldUseHighContrastColors);
|
socket.on("nativeTheme-shouldUseHighContrastColors", () => {
|
||||||
});
|
const shouldUseHighContrastColors = nativeTheme.shouldUseHighContrastColors;
|
||||||
|
|
||||||
socket.on('nativeTheme-shouldUseInvertedColorScheme', () => {
|
electronSocket.emit(
|
||||||
const shouldUseInvertedColorScheme = nativeTheme.shouldUseInvertedColorScheme;
|
"nativeTheme-shouldUseHighContrastColors-completed",
|
||||||
|
shouldUseHighContrastColors,
|
||||||
electronSocket.emit('nativeTheme-shouldUseInvertedColorScheme-completed', shouldUseInvertedColorScheme);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('nativeTheme-getThemeSource', () => {
|
socket.on("nativeTheme-shouldUseInvertedColorScheme", () => {
|
||||||
const themeSource = nativeTheme.themeSource;
|
const shouldUseInvertedColorScheme =
|
||||||
|
nativeTheme.shouldUseInvertedColorScheme;
|
||||||
electronSocket.emit('nativeTheme-getThemeSource-completed', themeSource);
|
|
||||||
});
|
electronSocket.emit(
|
||||||
|
"nativeTheme-shouldUseInvertedColorScheme-completed",
|
||||||
socket.on('nativeTheme-themeSource', (themeSource) => {
|
shouldUseInvertedColorScheme,
|
||||||
nativeTheme.themeSource = themeSource;
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('register-nativeTheme-updated', (id) => {
|
socket.on("nativeTheme-getThemeSource", () => {
|
||||||
nativeTheme.on('updated', () => {
|
const themeSource = nativeTheme.themeSource;
|
||||||
electronSocket.emit('nativeTheme-updated' + id);
|
|
||||||
});
|
electronSocket.emit("nativeTheme-getThemeSource-completed", themeSource);
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("nativeTheme-themeSource", (themeSource) => {
|
||||||
|
nativeTheme.themeSource = themeSource;
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-nativeTheme-updated", (id) => {
|
||||||
|
nativeTheme.on("updated", () => {
|
||||||
|
electronSocket.emit("nativeTheme-updated" + id);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,40 +1,44 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
const notifications = (global['notifications'] = global['notifications'] || []);
|
const notifications = (global["notifications"] =
|
||||||
|
global["notifications"] || []);
|
||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('createNotification', (options) => {
|
socket.on("createNotification", (options) => {
|
||||||
const notification = new electron_1.Notification(options);
|
const notification = new electron_1.Notification(options);
|
||||||
let haveEvent = false;
|
let haveEvent = false;
|
||||||
if (options.showID) {
|
if (options.showID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('show', () => {
|
notification.on("show", () => {
|
||||||
electronSocket.emit('NotificationEventShow', options.showID);
|
electronSocket.emit("NotificationEventShow", options.showID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (options.clickID) {
|
if (options.clickID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('click', () => {
|
notification.on("click", () => {
|
||||||
electronSocket.emit('NotificationEventClick', options.clickID);
|
electronSocket.emit("NotificationEventClick", options.clickID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (options.closeID) {
|
if (options.closeID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('close', () => {
|
notification.on("close", () => {
|
||||||
electronSocket.emit('NotificationEventClose', options.closeID);
|
electronSocket.emit("NotificationEventClose", options.closeID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (options.replyID) {
|
if (options.replyID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('reply', (event, value) => {
|
notification.on("reply", (event, value) => {
|
||||||
electronSocket.emit('NotificationEventReply', [options.replyID, value]);
|
electronSocket.emit("NotificationEventReply", [options.replyID, value]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (options.actionID) {
|
if (options.actionID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('action', (event, value) => {
|
notification.on("action", (event, value) => {
|
||||||
electronSocket.emit('NotificationEventAction', [options.actionID, value]);
|
electronSocket.emit("NotificationEventAction", [
|
||||||
|
options.actionID,
|
||||||
|
value,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (haveEvent) {
|
if (haveEvent) {
|
||||||
@@ -42,9 +46,9 @@ module.exports = (socket) => {
|
|||||||
}
|
}
|
||||||
notification.show();
|
notification.show();
|
||||||
});
|
});
|
||||||
socket.on('notificationIsSupported', () => {
|
socket.on("notificationIsSupported", () => {
|
||||||
const isSupported = electron_1.Notification.isSupported();
|
const isSupported = electron_1.Notification.isSupported();
|
||||||
electronSocket.emit('notificationIsSupportedCompleted', isSupported);
|
electronSocket.emit("notificationIsSupportedCompleted", isSupported);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=notification.js.map
|
//# sourceMappingURL=notification.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"notification.js","sourceRoot":"","sources":["notification.ts"],"names":[],"mappings":";AACA,uCAAwC;AACxC,MAAM,aAAa,GAA4B,CAAC,MAAM,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAA4B,CAAC;AACpI,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;QACxC,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBACzB,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC1B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACvC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACtC,MAAM,WAAW,GAAG,uBAAY,CAAC,WAAW,EAAE,CAAC;QAC/C,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"notification.js","sourceRoot":"","sources":["notification.ts"],"names":[],"mappings":";AACA,uCAAwC;AAExC,MAAM,aAAa,GAA4B,CAAC,MAAM,CAAC,eAAe,CAAC;IACrE,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAA4B,CAAC;AAE5D,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,IAAI,uBAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;gBAC3B,cAAc,CAAC,IAAI,CAAC,uBAAuB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC5B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBAC5B,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACxC,cAAc,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;YAC1E,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,SAAS,GAAG,IAAI,CAAC;YACjB,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACzC,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE;oBAC7C,OAAO,CAAC,QAAQ;oBAChB,KAAK;iBACN,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACxC,MAAM,WAAW,GAAG,uBAAY,CAAC,WAAW,EAAE,CAAC;QAC/C,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,WAAW,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,58 +1,64 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { Notification } from 'electron';
|
import { Notification } from "electron";
|
||||||
const notifications: Electron.Notification[] = (global['notifications'] = global['notifications'] || []) as Electron.Notification[];
|
|
||||||
let electronSocket;
|
const notifications: Electron.Notification[] = (global["notifications"] =
|
||||||
|
global["notifications"] || []) as Electron.Notification[];
|
||||||
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('createNotification', (options) => {
|
socket.on("createNotification", (options) => {
|
||||||
const notification = new Notification(options);
|
const notification = new Notification(options);
|
||||||
let haveEvent = false;
|
let haveEvent = false;
|
||||||
|
|
||||||
if (options.showID) {
|
if (options.showID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('show', () => {
|
notification.on("show", () => {
|
||||||
electronSocket.emit('NotificationEventShow', options.showID);
|
electronSocket.emit("NotificationEventShow", options.showID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.clickID) {
|
if (options.clickID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('click', () => {
|
notification.on("click", () => {
|
||||||
electronSocket.emit('NotificationEventClick', options.clickID);
|
electronSocket.emit("NotificationEventClick", options.clickID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.closeID) {
|
if (options.closeID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('close', () => {
|
notification.on("close", () => {
|
||||||
electronSocket.emit('NotificationEventClose', options.closeID);
|
electronSocket.emit("NotificationEventClose", options.closeID);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.replyID) {
|
if (options.replyID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('reply', (event, value) => {
|
notification.on("reply", (event, value) => {
|
||||||
electronSocket.emit('NotificationEventReply', [options.replyID, value]);
|
electronSocket.emit("NotificationEventReply", [options.replyID, value]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.actionID) {
|
if (options.actionID) {
|
||||||
haveEvent = true;
|
haveEvent = true;
|
||||||
notification.on('action', (event, value) => {
|
notification.on("action", (event, value) => {
|
||||||
electronSocket.emit('NotificationEventAction', [options.actionID, value]);
|
electronSocket.emit("NotificationEventAction", [
|
||||||
});
|
options.actionID,
|
||||||
}
|
value,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (haveEvent) {
|
if (haveEvent) {
|
||||||
notifications.push(notification);
|
notifications.push(notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
notification.show();
|
notification.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('notificationIsSupported', () => {
|
socket.on("notificationIsSupported", () => {
|
||||||
const isSupported = Notification.isSupported();
|
const isSupported = Notification.isSupported();
|
||||||
electronSocket.emit('notificationIsSupportedCompleted', isSupported);
|
electronSocket.emit("notificationIsSupportedCompleted", isSupported);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,39 +3,39 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-powerMonitor-lock-screen', () => {
|
socket.on("register-powerMonitor-lock-screen", () => {
|
||||||
electron_1.powerMonitor.on('lock-screen', () => {
|
electron_1.powerMonitor.on("lock-screen", () => {
|
||||||
electronSocket.emit('powerMonitor-lock-screen');
|
electronSocket.emit("powerMonitor-lock-screen");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-unlock-screen', () => {
|
socket.on("register-powerMonitor-unlock-screen", () => {
|
||||||
electron_1.powerMonitor.on('unlock-screen', () => {
|
electron_1.powerMonitor.on("unlock-screen", () => {
|
||||||
electronSocket.emit('powerMonitor-unlock-screen');
|
electronSocket.emit("powerMonitor-unlock-screen");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-suspend', () => {
|
socket.on("register-powerMonitor-suspend", () => {
|
||||||
electron_1.powerMonitor.on('suspend', () => {
|
electron_1.powerMonitor.on("suspend", () => {
|
||||||
electronSocket.emit('powerMonitor-suspend');
|
electronSocket.emit("powerMonitor-suspend");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-resume', () => {
|
socket.on("register-powerMonitor-resume", () => {
|
||||||
electron_1.powerMonitor.on('resume', () => {
|
electron_1.powerMonitor.on("resume", () => {
|
||||||
electronSocket.emit('powerMonitor-resume');
|
electronSocket.emit("powerMonitor-resume");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-ac', () => {
|
socket.on("register-powerMonitor-ac", () => {
|
||||||
electron_1.powerMonitor.on('on-ac', () => {
|
electron_1.powerMonitor.on("on-ac", () => {
|
||||||
electronSocket.emit('powerMonitor-ac');
|
electronSocket.emit("powerMonitor-ac");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-battery', () => {
|
socket.on("register-powerMonitor-battery", () => {
|
||||||
electron_1.powerMonitor.on('on-battery', () => {
|
electron_1.powerMonitor.on("on-battery", () => {
|
||||||
electronSocket.emit('powerMonitor-battery');
|
electronSocket.emit("powerMonitor-battery");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-shutdown', () => {
|
socket.on("register-powerMonitor-shutdown", () => {
|
||||||
electron_1.powerMonitor.on('shutdown', () => {
|
electron_1.powerMonitor.on("shutdown", () => {
|
||||||
electronSocket.emit('powerMonitor-shutdown');
|
electronSocket.emit("powerMonitor-shutdown");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"powerMonitor.js","sourceRoot":"","sources":["powerMonitor.ts"],"names":[],"mappings":";AACA,uCAAwC;AACxC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAChD,uBAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAChC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAClD,uBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC5C,uBAAY,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC5B,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC3C,uBAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC3B,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACvC,uBAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1B,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC5C,uBAAY,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC/B,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC7C,uBAAY,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC7B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"powerMonitor.js","sourceRoot":"","sources":["powerMonitor.ts"],"names":[],"mappings":";AACA,uCAAwC;AAExC,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAClD,uBAAY,CAAC,EAAE,CAAC,aAAa,EAAE,GAAG,EAAE;YAClC,cAAc,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QACpD,uBAAY,CAAC,EAAE,CAAC,eAAe,EAAE,GAAG,EAAE;YACpC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC9C,uBAAY,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC9B,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QAC7C,uBAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC7B,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACzC,uBAAY,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC5B,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC9C,uBAAY,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YACjC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC/C,uBAAY,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;YAC/B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,42 +1,43 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { powerMonitor } from 'electron';
|
import { powerMonitor } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-powerMonitor-lock-screen', () => {
|
socket.on("register-powerMonitor-lock-screen", () => {
|
||||||
powerMonitor.on('lock-screen', () => {
|
powerMonitor.on("lock-screen", () => {
|
||||||
electronSocket.emit('powerMonitor-lock-screen');
|
electronSocket.emit("powerMonitor-lock-screen");
|
||||||
});
|
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-unlock-screen', () => {
|
});
|
||||||
powerMonitor.on('unlock-screen', () => {
|
socket.on("register-powerMonitor-unlock-screen", () => {
|
||||||
electronSocket.emit('powerMonitor-unlock-screen');
|
powerMonitor.on("unlock-screen", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-unlock-screen");
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-suspend', () => {
|
});
|
||||||
powerMonitor.on('suspend', () => {
|
socket.on("register-powerMonitor-suspend", () => {
|
||||||
electronSocket.emit('powerMonitor-suspend');
|
powerMonitor.on("suspend", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-suspend");
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-resume', () => {
|
});
|
||||||
powerMonitor.on('resume', () => {
|
socket.on("register-powerMonitor-resume", () => {
|
||||||
electronSocket.emit('powerMonitor-resume');
|
powerMonitor.on("resume", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-resume");
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-ac', () => {
|
});
|
||||||
powerMonitor.on('on-ac', () => {
|
socket.on("register-powerMonitor-ac", () => {
|
||||||
electronSocket.emit('powerMonitor-ac');
|
powerMonitor.on("on-ac", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-ac");
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-battery', () => {
|
});
|
||||||
powerMonitor.on('on-battery', () => {
|
socket.on("register-powerMonitor-battery", () => {
|
||||||
electronSocket.emit('powerMonitor-battery');
|
powerMonitor.on("on-battery", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-battery");
|
||||||
});
|
});
|
||||||
socket.on('register-powerMonitor-shutdown', () => {
|
});
|
||||||
powerMonitor.on('shutdown', () => {
|
socket.on("register-powerMonitor-shutdown", () => {
|
||||||
electronSocket.emit('powerMonitor-shutdown');
|
powerMonitor.on("shutdown", () => {
|
||||||
});
|
electronSocket.emit("powerMonitor-shutdown");
|
||||||
});
|
});
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,61 +2,61 @@
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('process-execPath', () => {
|
socket.on("process-execPath", () => {
|
||||||
const value = process.execPath;
|
const value = process.execPath;
|
||||||
electronSocket.emit('process-execPath-completed', value);
|
electronSocket.emit("process-execPath-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-argv', () => {
|
socket.on("process-argv", () => {
|
||||||
const value = process.argv;
|
const value = process.argv;
|
||||||
electronSocket.emit('process-argv-completed', value);
|
electronSocket.emit("process-argv-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-type', () => {
|
socket.on("process-type", () => {
|
||||||
const value = process.type;
|
const value = process.type;
|
||||||
electronSocket.emit('process-type-completed', value);
|
electronSocket.emit("process-type-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-versions', () => {
|
socket.on("process-versions", () => {
|
||||||
const value = process.versions;
|
const value = process.versions;
|
||||||
electronSocket.emit('process-versions-completed', value);
|
electronSocket.emit("process-versions-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-defaultApp', () => {
|
socket.on("process-defaultApp", () => {
|
||||||
if (process.defaultApp === undefined) {
|
if (process.defaultApp === undefined) {
|
||||||
electronSocket.emit('process-defaultApp-completed', false);
|
electronSocket.emit("process-defaultApp-completed", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-defaultApp-completed', process.defaultApp);
|
electronSocket.emit("process-defaultApp-completed", process.defaultApp);
|
||||||
});
|
});
|
||||||
socket.on('process-isMainFrame', () => {
|
socket.on("process-isMainFrame", () => {
|
||||||
if (process.isMainFrame === undefined) {
|
if (process.isMainFrame === undefined) {
|
||||||
electronSocket.emit('process-isMainFrame-completed', false);
|
electronSocket.emit("process-isMainFrame-completed", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-isMainFrame-completed', process.isMainFrame);
|
electronSocket.emit("process-isMainFrame-completed", process.isMainFrame);
|
||||||
});
|
});
|
||||||
socket.on('process-resourcesPath', () => {
|
socket.on("process-resourcesPath", () => {
|
||||||
const value = process.resourcesPath;
|
const value = process.resourcesPath;
|
||||||
electronSocket.emit('process-resourcesPath-completed', value);
|
electronSocket.emit("process-resourcesPath-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-upTime', () => {
|
socket.on("process-upTime", () => {
|
||||||
let value = process.uptime();
|
let value = process.uptime();
|
||||||
if (value === undefined) {
|
if (value === undefined) {
|
||||||
value = -1;
|
value = -1;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-upTime-completed', value);
|
electronSocket.emit("process-upTime-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-pid', () => {
|
socket.on("process-pid", () => {
|
||||||
if (process.pid === undefined) {
|
if (process.pid === undefined) {
|
||||||
electronSocket.emit('process-pid-completed', -1);
|
electronSocket.emit("process-pid-completed", -1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-pid-completed', process.pid);
|
electronSocket.emit("process-pid-completed", process.pid);
|
||||||
});
|
});
|
||||||
socket.on('process-arch', () => {
|
socket.on("process-arch", () => {
|
||||||
const value = process.arch;
|
const value = process.arch;
|
||||||
electronSocket.emit('process-arch-completed', value);
|
electronSocket.emit("process-arch-completed", value);
|
||||||
});
|
});
|
||||||
socket.on('process-platform', () => {
|
socket.on("process-platform", () => {
|
||||||
const value = process.platform;
|
const value = process.platform;
|
||||||
electronSocket.emit('process-platform-completed', value);
|
electronSocket.emit("process-platform-completed", value);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=process.js.map
|
//# sourceMappingURL=process.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"process.js","sourceRoot":"","sources":["process.ts"],"names":[],"mappings":"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"}
|
||||||
@@ -1,73 +1,74 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('process-execPath', () => {
|
socket.on("process-execPath", () => {
|
||||||
const value = process.execPath;
|
const value = process.execPath;
|
||||||
electronSocket.emit('process-execPath-completed', value);
|
electronSocket.emit("process-execPath-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-argv', () => {
|
socket.on("process-argv", () => {
|
||||||
const value = process.argv;
|
const value = process.argv;
|
||||||
electronSocket.emit('process-argv-completed', value);
|
electronSocket.emit("process-argv-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-type', () => {
|
socket.on("process-type", () => {
|
||||||
const value = process.type;
|
const value = process.type;
|
||||||
electronSocket.emit('process-type-completed', value);
|
electronSocket.emit("process-type-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-versions', () => {
|
socket.on("process-versions", () => {
|
||||||
const value = process.versions;
|
const value = process.versions;
|
||||||
electronSocket.emit('process-versions-completed', value);
|
electronSocket.emit("process-versions-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-defaultApp', () => {
|
socket.on("process-defaultApp", () => {
|
||||||
if (process.defaultApp === undefined) {
|
if (process.defaultApp === undefined) {
|
||||||
electronSocket.emit('process-defaultApp-completed', false);
|
electronSocket.emit("process-defaultApp-completed", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-defaultApp-completed', process.defaultApp);
|
electronSocket.emit("process-defaultApp-completed", process.defaultApp);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-isMainFrame', () => {
|
socket.on("process-isMainFrame", () => {
|
||||||
if (process.isMainFrame === undefined) {
|
if (process.isMainFrame === undefined) {
|
||||||
electronSocket.emit('process-isMainFrame-completed', false);
|
electronSocket.emit("process-isMainFrame-completed", false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-isMainFrame-completed', process.isMainFrame);
|
electronSocket.emit("process-isMainFrame-completed", process.isMainFrame);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-resourcesPath', () => {
|
socket.on("process-resourcesPath", () => {
|
||||||
const value = process.resourcesPath;
|
const value = process.resourcesPath;
|
||||||
electronSocket.emit('process-resourcesPath-completed', value);
|
electronSocket.emit("process-resourcesPath-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-upTime', () => {
|
socket.on("process-upTime", () => {
|
||||||
let value = process.uptime();
|
let value = process.uptime();
|
||||||
if (value === undefined) {
|
if (value === undefined) {
|
||||||
value = -1;
|
value = -1;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-upTime-completed', value);
|
electronSocket.emit("process-upTime-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-pid', () => {
|
socket.on("process-pid", () => {
|
||||||
if (process.pid === undefined) {
|
if (process.pid === undefined) {
|
||||||
electronSocket.emit('process-pid-completed', -1);
|
electronSocket.emit("process-pid-completed", -1);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
electronSocket.emit('process-pid-completed', process.pid);
|
electronSocket.emit("process-pid-completed", process.pid);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-arch', () => {
|
socket.on("process-arch", () => {
|
||||||
const value = process.arch;
|
const value = process.arch;
|
||||||
electronSocket.emit('process-arch-completed', value);
|
electronSocket.emit("process-arch-completed", value);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('process-platform', () => {
|
socket.on("process-platform", () => {
|
||||||
const value = process.platform;
|
const value = process.platform;
|
||||||
electronSocket.emit('process-platform-completed', value);
|
electronSocket.emit("process-platform-completed", value);
|
||||||
})
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,44 +3,47 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-screen-display-added', (id) => {
|
socket.on("register-screen-display-added", (id) => {
|
||||||
electron_1.screen.on('display-added', (event, display) => {
|
electron_1.screen.on("display-added", (event, display) => {
|
||||||
electronSocket.emit('screen-display-added' + id, display);
|
electronSocket.emit("screen-display-added" + id, display);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-screen-display-removed', (id) => {
|
socket.on("register-screen-display-removed", (id) => {
|
||||||
electron_1.screen.on('display-removed', (event, display) => {
|
electron_1.screen.on("display-removed", (event, display) => {
|
||||||
electronSocket.emit('screen-display-removed' + id, display);
|
electronSocket.emit("screen-display-removed" + id, display);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('register-screen-display-metrics-changed', (id) => {
|
socket.on("register-screen-display-metrics-changed", (id) => {
|
||||||
electron_1.screen.on('display-metrics-changed', (event, display, changedMetrics) => {
|
electron_1.screen.on("display-metrics-changed", (event, display, changedMetrics) => {
|
||||||
electronSocket.emit('screen-display-metrics-changed' + id, [display, changedMetrics]);
|
electronSocket.emit("screen-display-metrics-changed" + id, [
|
||||||
|
display,
|
||||||
|
changedMetrics,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
socket.on('screen-getCursorScreenPoint', () => {
|
socket.on("screen-getCursorScreenPoint", () => {
|
||||||
const point = electron_1.screen.getCursorScreenPoint();
|
const point = electron_1.screen.getCursorScreenPoint();
|
||||||
electronSocket.emit('screen-getCursorScreenPoint-completed', point);
|
electronSocket.emit("screen-getCursorScreenPoint-completed", point);
|
||||||
});
|
});
|
||||||
socket.on('screen-getMenuBarWorkArea', () => {
|
socket.on("screen-getMenuBarWorkArea", () => {
|
||||||
const height = electron_1.screen.getPrimaryDisplay().workArea;
|
const height = electron_1.screen.getPrimaryDisplay().workArea;
|
||||||
electronSocket.emit('screen-getMenuBarWorkArea-completed', height);
|
electronSocket.emit("screen-getMenuBarWorkArea-completed", height);
|
||||||
});
|
});
|
||||||
socket.on('screen-getPrimaryDisplay', () => {
|
socket.on("screen-getPrimaryDisplay", () => {
|
||||||
const display = electron_1.screen.getPrimaryDisplay();
|
const display = electron_1.screen.getPrimaryDisplay();
|
||||||
electronSocket.emit('screen-getPrimaryDisplay-completed', display);
|
electronSocket.emit("screen-getPrimaryDisplay-completed", display);
|
||||||
});
|
});
|
||||||
socket.on('screen-getAllDisplays', () => {
|
socket.on("screen-getAllDisplays", () => {
|
||||||
const display = electron_1.screen.getAllDisplays();
|
const display = electron_1.screen.getAllDisplays();
|
||||||
electronSocket.emit('screen-getAllDisplays-completed', display);
|
electronSocket.emit("screen-getAllDisplays-completed", display);
|
||||||
});
|
});
|
||||||
socket.on('screen-getDisplayNearestPoint', (point) => {
|
socket.on("screen-getDisplayNearestPoint", (point) => {
|
||||||
const display = electron_1.screen.getDisplayNearestPoint(point);
|
const display = electron_1.screen.getDisplayNearestPoint(point);
|
||||||
electronSocket.emit('screen-getDisplayNearestPoint-completed', display);
|
electronSocket.emit("screen-getDisplayNearestPoint-completed", display);
|
||||||
});
|
});
|
||||||
socket.on('screen-getDisplayMatching', (rectangle) => {
|
socket.on("screen-getDisplayMatching", (rectangle) => {
|
||||||
const display = electron_1.screen.getDisplayMatching(rectangle);
|
const display = electron_1.screen.getDisplayMatching(rectangle);
|
||||||
electronSocket.emit('screen-getDisplayMatching-completed', display);
|
electronSocket.emit("screen-getDisplayMatching-completed", display);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=screen.js.map
|
//# sourceMappingURL=screen.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"screen.js","sourceRoot":"","sources":["screen.ts"],"names":[],"mappings":";AACA,uCAAkC;AAClC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,EAAE,EAAE,EAAE;QAC9C,iBAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC1C,cAAc,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,iBAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5C,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yCAAyC,EAAE,CAAC,EAAE,EAAE,EAAE;QACxD,iBAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;YACpE,cAAc,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC1C,MAAM,KAAK,GAAG,iBAAM,CAAC,oBAAoB,EAAE,CAAC;QAC5C,cAAc,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACxC,MAAM,MAAM,GAAG,iBAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACvC,MAAM,OAAO,GAAG,iBAAM,CAAC,iBAAiB,EAAE,CAAC;QAC3C,cAAc,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,iBAAM,CAAC,cAAc,EAAE,CAAC;QACxC,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,iBAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,SAAS,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,iBAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"screen.js","sourceRoot":"","sources":["screen.ts"],"names":[],"mappings":";AACA,uCAAkC;AAElC,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IAExB,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,iBAAM,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5C,cAAc,CAAC,IAAI,CAAC,sBAAsB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iCAAiC,EAAE,CAAC,EAAE,EAAE,EAAE;QAClD,iBAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9C,cAAc,CAAC,IAAI,CAAC,wBAAwB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yCAAyC,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1D,iBAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE;YACtE,cAAc,CAAC,IAAI,CAAC,gCAAgC,GAAG,EAAE,EAAE;gBACzD,OAAO;gBACP,cAAc;aACf,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAC5C,MAAM,KAAK,GAAG,iBAAM,CAAC,oBAAoB,EAAE,CAAC;QAC5C,cAAc,CAAC,IAAI,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAC1C,MAAM,MAAM,GAAG,iBAAM,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;QACnD,cAAc,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACzC,MAAM,OAAO,GAAG,iBAAM,CAAC,iBAAiB,EAAE,CAAC;QAC3C,cAAc,CAAC,IAAI,CAAC,oCAAoC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,iBAAM,CAAC,cAAc,EAAE,CAAC;QACxC,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,+BAA+B,EAAE,CAAC,KAAK,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,iBAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC,yCAAyC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,2BAA2B,EAAE,CAAC,SAAS,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,iBAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACrD,cAAc,CAAC,IAAI,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,55 +1,59 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { screen } from 'electron';
|
import { screen } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
|
|
||||||
socket.on('register-screen-display-added', (id) => {
|
socket.on("register-screen-display-added", (id) => {
|
||||||
screen.on('display-added', (event, display) => {
|
screen.on("display-added", (event, display) => {
|
||||||
electronSocket.emit('screen-display-added' + id, display);
|
electronSocket.emit("screen-display-added" + id, display);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-screen-display-removed', (id) => {
|
socket.on("register-screen-display-removed", (id) => {
|
||||||
screen.on('display-removed', (event, display) => {
|
screen.on("display-removed", (event, display) => {
|
||||||
electronSocket.emit('screen-display-removed' + id, display);
|
electronSocket.emit("screen-display-removed" + id, display);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('register-screen-display-metrics-changed', (id) => {
|
socket.on("register-screen-display-metrics-changed", (id) => {
|
||||||
screen.on('display-metrics-changed', (event, display, changedMetrics) => {
|
screen.on("display-metrics-changed", (event, display, changedMetrics) => {
|
||||||
electronSocket.emit('screen-display-metrics-changed' + id, [display, changedMetrics]);
|
electronSocket.emit("screen-display-metrics-changed" + id, [
|
||||||
});
|
display,
|
||||||
|
changedMetrics,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
socket.on('screen-getCursorScreenPoint', () => {
|
socket.on("screen-getCursorScreenPoint", () => {
|
||||||
const point = screen.getCursorScreenPoint();
|
const point = screen.getCursorScreenPoint();
|
||||||
electronSocket.emit('screen-getCursorScreenPoint-completed', point);
|
electronSocket.emit("screen-getCursorScreenPoint-completed", point);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('screen-getMenuBarWorkArea', () => {
|
socket.on("screen-getMenuBarWorkArea", () => {
|
||||||
const height = screen.getPrimaryDisplay().workArea;
|
const height = screen.getPrimaryDisplay().workArea;
|
||||||
electronSocket.emit('screen-getMenuBarWorkArea-completed', height);
|
electronSocket.emit("screen-getMenuBarWorkArea-completed", height);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('screen-getPrimaryDisplay', () => {
|
socket.on("screen-getPrimaryDisplay", () => {
|
||||||
const display = screen.getPrimaryDisplay();
|
const display = screen.getPrimaryDisplay();
|
||||||
electronSocket.emit('screen-getPrimaryDisplay-completed', display);
|
electronSocket.emit("screen-getPrimaryDisplay-completed", display);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('screen-getAllDisplays', () => {
|
socket.on("screen-getAllDisplays", () => {
|
||||||
const display = screen.getAllDisplays();
|
const display = screen.getAllDisplays();
|
||||||
electronSocket.emit('screen-getAllDisplays-completed', display);
|
electronSocket.emit("screen-getAllDisplays-completed", display);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('screen-getDisplayNearestPoint', (point) => {
|
socket.on("screen-getDisplayNearestPoint", (point) => {
|
||||||
const display = screen.getDisplayNearestPoint(point);
|
const display = screen.getDisplayNearestPoint(point);
|
||||||
electronSocket.emit('screen-getDisplayNearestPoint-completed', display);
|
electronSocket.emit("screen-getDisplayNearestPoint-completed", display);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('screen-getDisplayMatching', (rectangle) => {
|
socket.on("screen-getDisplayMatching", (rectangle) => {
|
||||||
const display = screen.getDisplayMatching(rectangle);
|
const display = screen.getDisplayMatching(rectangle);
|
||||||
electronSocket.emit('screen-getDisplayMatching-completed', display);
|
electronSocket.emit("screen-getDisplayMatching-completed", display);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ const electron_1 = require("electron");
|
|||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('shell-showItemInFolder', (fullPath) => {
|
socket.on("shell-showItemInFolder", (fullPath) => {
|
||||||
electron_1.shell.showItemInFolder(fullPath);
|
electron_1.shell.showItemInFolder(fullPath);
|
||||||
electronSocket.emit('shell-showItemInFolderCompleted');
|
electronSocket.emit("shell-showItemInFolderCompleted");
|
||||||
});
|
});
|
||||||
socket.on('shell-openPath', async (path) => {
|
socket.on("shell-openPath", async (path) => {
|
||||||
const errorMessage = await electron_1.shell.openPath(path);
|
const errorMessage = await electron_1.shell.openPath(path);
|
||||||
electronSocket.emit('shell-openPathCompleted', errorMessage);
|
electronSocket.emit("shell-openPathCompleted", errorMessage);
|
||||||
});
|
});
|
||||||
socket.on('shell-openExternal', async (url, options) => {
|
socket.on("shell-openExternal", async (url, options) => {
|
||||||
let result = '';
|
let result = "";
|
||||||
if (options) {
|
if (options) {
|
||||||
await electron_1.shell.openExternal(url, options).catch(e => {
|
await electron_1.shell.openExternal(url, options).catch((e) => {
|
||||||
result = e.message;
|
result = e.message;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -23,9 +23,9 @@ module.exports = (socket) => {
|
|||||||
result = e.message;
|
result = e.message;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
electronSocket.emit('shell-openExternalCompleted', result);
|
electronSocket.emit("shell-openExternalCompleted", result);
|
||||||
});
|
});
|
||||||
socket.on('shell-trashItem', async (fullPath, deleteOnFail) => {
|
socket.on("shell-trashItem", async (fullPath, deleteOnFail) => {
|
||||||
let success = false;
|
let success = false;
|
||||||
try {
|
try {
|
||||||
await electron_1.shell.trashItem(fullPath);
|
await electron_1.shell.trashItem(fullPath);
|
||||||
@@ -34,18 +34,18 @@ module.exports = (socket) => {
|
|||||||
catch (error) {
|
catch (error) {
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
electronSocket.emit('shell-trashItem-completed', success);
|
electronSocket.emit("shell-trashItem-completed", success);
|
||||||
});
|
});
|
||||||
socket.on('shell-beep', () => {
|
socket.on("shell-beep", () => {
|
||||||
electron_1.shell.beep();
|
electron_1.shell.beep();
|
||||||
});
|
});
|
||||||
socket.on('shell-writeShortcutLink', (shortcutPath, operation, options) => {
|
socket.on("shell-writeShortcutLink", (shortcutPath, operation, options) => {
|
||||||
const success = electron_1.shell.writeShortcutLink(shortcutPath, operation, options);
|
const success = electron_1.shell.writeShortcutLink(shortcutPath, operation, options);
|
||||||
electronSocket.emit('shell-writeShortcutLinkCompleted', success);
|
electronSocket.emit("shell-writeShortcutLinkCompleted", success);
|
||||||
});
|
});
|
||||||
socket.on('shell-readShortcutLink', (shortcutPath) => {
|
socket.on("shell-readShortcutLink", (shortcutPath) => {
|
||||||
const shortcutDetails = electron_1.shell.readShortcutLink(shortcutPath);
|
const shortcutDetails = electron_1.shell.readShortcutLink(shortcutPath);
|
||||||
electronSocket.emit('shell-readShortcutLinkCompleted', shortcutDetails);
|
electronSocket.emit("shell-readShortcutLinkCompleted", shortcutDetails);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=shell.js.map
|
//# sourceMappingURL=shell.js.map
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AACA,uCAAiC;AACjC,IAAI,cAAc,CAAC;AAEnB,iBAAS,CAAC,MAAc,EAAE,EAAE;IACxB,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC7C,gBAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjC,cAAc,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,MAAM,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACnD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,OAAO,EAAE,CAAC;YACV,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC7C,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;aAAM,CAAC;YACJ,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACvB,CAAC,CAAC,CAAC;QACP,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC1D,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACD,MAAM,gBAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,GAAG,KAAK,CAAC;QACpB,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QACzB,gBAAK,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACtE,MAAM,OAAO,GAAG,gBAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE;QACjD,MAAM,eAAe,GAAG,gBAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE7D,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACP,CAAC,CAAC"}
|
{"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AACA,uCAAiC;AAEjC,IAAI,cAAsB,CAAC;AAE3B,iBAAS,CAAC,MAAc,EAAE,EAAE;IAC1B,cAAc,GAAG,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC/C,gBAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAEjC,cAAc,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzC,MAAM,YAAY,GAAG,MAAM,gBAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEhD,cAAc,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE;QACrD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACjD,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,gBAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;gBACxC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE;QAC5D,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,gBAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,GAAG,KAAK,CAAC;QAClB,CAAC;QAED,cAAc,CAAC,IAAI,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;QAC3B,gBAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,yBAAyB,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,gBAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,cAAc,CAAC,IAAI,CAAC,kCAAkC,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,EAAE,CAAC,wBAAwB,EAAE,CAAC,YAAY,EAAE,EAAE;QACnD,MAAM,eAAe,GAAG,gBAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAE7D,cAAc,CAAC,IAAI,CAAC,iCAAiC,EAAE,eAAe,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC"}
|
||||||
@@ -1,63 +1,64 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { shell } from 'electron';
|
import { shell } from "electron";
|
||||||
let electronSocket;
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('shell-showItemInFolder', (fullPath) => {
|
socket.on("shell-showItemInFolder", (fullPath) => {
|
||||||
shell.showItemInFolder(fullPath);
|
shell.showItemInFolder(fullPath);
|
||||||
|
|
||||||
electronSocket.emit('shell-showItemInFolderCompleted');
|
electronSocket.emit("shell-showItemInFolderCompleted");
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-openPath', async (path) => {
|
socket.on("shell-openPath", async (path) => {
|
||||||
const errorMessage = await shell.openPath(path);
|
const errorMessage = await shell.openPath(path);
|
||||||
|
|
||||||
electronSocket.emit('shell-openPathCompleted', errorMessage);
|
electronSocket.emit("shell-openPathCompleted", errorMessage);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-openExternal', async (url, options) => {
|
socket.on("shell-openExternal", async (url, options) => {
|
||||||
let result = '';
|
let result = "";
|
||||||
|
|
||||||
if (options) {
|
if (options) {
|
||||||
await shell.openExternal(url, options).catch(e => {
|
await shell.openExternal(url, options).catch((e) => {
|
||||||
result = e.message;
|
result = e.message;
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
await shell.openExternal(url).catch((e) => {
|
await shell.openExternal(url).catch((e) => {
|
||||||
result = e.message;
|
result = e.message;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
electronSocket.emit('shell-openExternalCompleted', result);
|
electronSocket.emit("shell-openExternalCompleted", result);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-trashItem', async (fullPath, deleteOnFail) => {
|
socket.on("shell-trashItem", async (fullPath, deleteOnFail) => {
|
||||||
let success = false;
|
let success = false;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await shell.trashItem(fullPath);
|
await shell.trashItem(fullPath);
|
||||||
success = true;
|
success = true;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
success = false;
|
success = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
electronSocket.emit('shell-trashItem-completed', success);
|
electronSocket.emit("shell-trashItem-completed", success);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-beep', () => {
|
socket.on("shell-beep", () => {
|
||||||
shell.beep();
|
shell.beep();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-writeShortcutLink', (shortcutPath, operation, options) => {
|
socket.on("shell-writeShortcutLink", (shortcutPath, operation, options) => {
|
||||||
const success = shell.writeShortcutLink(shortcutPath, operation, options);
|
const success = shell.writeShortcutLink(shortcutPath, operation, options);
|
||||||
|
|
||||||
electronSocket.emit('shell-writeShortcutLinkCompleted', success);
|
electronSocket.emit("shell-writeShortcutLinkCompleted", success);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('shell-readShortcutLink', (shortcutPath) => {
|
socket.on("shell-readShortcutLink", (shortcutPath) => {
|
||||||
const shortcutDetails = shell.readShortcutLink(shortcutPath);
|
const shortcutDetails = shell.readShortcutLink(shortcutPath);
|
||||||
|
|
||||||
electronSocket.emit('shell-readShortcutLinkCompleted', shortcutDetails);
|
electronSocket.emit("shell-readShortcutLinkCompleted", shortcutDetails);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,100 +1,112 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
let tray = (global['$tray'] = global['tray'] || { value: null });
|
let tray = (global["$tray"] = global["tray"] || {
|
||||||
|
value: null,
|
||||||
|
});
|
||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-tray-click', (id) => {
|
socket.on("register-tray-click", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('click', (event, bounds) => {
|
tray.value.on("click", (event, bounds) => {
|
||||||
electronSocket.emit('tray-click' + id, [event.__proto__, bounds]);
|
electronSocket.emit("tray-click" + id, [
|
||||||
|
event.__proto__,
|
||||||
|
bounds,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-right-click', (id) => {
|
socket.on("register-tray-right-click", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('right-click', (event, bounds) => {
|
tray.value.on("right-click", (event, bounds) => {
|
||||||
electronSocket.emit('tray-right-click' + id, [event.__proto__, bounds]);
|
electronSocket.emit("tray-right-click" + id, [
|
||||||
|
event.__proto__,
|
||||||
|
bounds,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-double-click', (id) => {
|
socket.on("register-tray-double-click", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('double-click', (event, bounds) => {
|
tray.value.on("double-click", (event, bounds) => {
|
||||||
electronSocket.emit('tray-double-click' + id, [event.__proto__, bounds]);
|
electronSocket.emit("tray-double-click" + id, [
|
||||||
|
event.__proto__,
|
||||||
|
bounds,
|
||||||
|
]);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-balloon-show', (id) => {
|
socket.on("register-tray-balloon-show", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('balloon-show', () => {
|
tray.value.on("balloon-show", () => {
|
||||||
electronSocket.emit('tray-balloon-show' + id);
|
electronSocket.emit("tray-balloon-show" + id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-balloon-click', (id) => {
|
socket.on("register-tray-balloon-click", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('balloon-click', () => {
|
tray.value.on("balloon-click", () => {
|
||||||
electronSocket.emit('tray-balloon-click' + id);
|
electronSocket.emit("tray-balloon-click" + id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-balloon-closed', (id) => {
|
socket.on("register-tray-balloon-closed", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('balloon-closed', () => {
|
tray.value.on("balloon-closed", () => {
|
||||||
electronSocket.emit('tray-balloon-closed' + id);
|
electronSocket.emit("tray-balloon-closed" + id);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('create-tray', (image, menuItems) => {
|
socket.on("create-tray", (image, menuItems) => {
|
||||||
const trayIcon = electron_1.nativeImage.createFromPath(image);
|
const trayIcon = electron_1.nativeImage.createFromPath(image);
|
||||||
tray.value = new electron_1.Tray(trayIcon);
|
tray.value = new electron_1.Tray(trayIcon);
|
||||||
if (menuItems) {
|
if (menuItems) {
|
||||||
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
applyContextMenu(menuItems);
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
|
||||||
electronSocket.emit('trayMenuItemClicked', id);
|
|
||||||
});
|
|
||||||
tray.value.setContextMenu(menu);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-destroy', () => {
|
socket.on("tray-destroy", () => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.destroy();
|
tray.value.destroy();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-setImage', (image) => {
|
socket.on("set-contextMenu", (menuItems) => {
|
||||||
|
if (menuItems && tray.value) {
|
||||||
|
applyContextMenu(menuItems);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
socket.on("tray-setImage", (image) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.setImage(image);
|
tray.value.setImage(image);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-setPressedImage', (image) => {
|
socket.on("tray-setPressedImage", (image) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
const img = electron_1.nativeImage.createFromPath(image);
|
const img = electron_1.nativeImage.createFromPath(image);
|
||||||
tray.value.setPressedImage(img);
|
tray.value.setPressedImage(img);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-setToolTip', (toolTip) => {
|
socket.on("tray-setToolTip", (toolTip) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.setToolTip(toolTip);
|
tray.value.setToolTip(toolTip);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-setTitle', (title) => {
|
socket.on("tray-setTitle", (title) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.setTitle(title);
|
tray.value.setTitle(title);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-displayBalloon', (options) => {
|
socket.on("tray-displayBalloon", (options) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.displayBalloon(options);
|
tray.value.displayBalloon(options);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('tray-isDestroyed', () => {
|
socket.on("tray-isDestroyed", () => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
const isDestroyed = tray.value.isDestroyed();
|
const isDestroyed = tray.value.isDestroyed();
|
||||||
electronSocket.emit('tray-isDestroyedCompleted', isDestroyed);
|
electronSocket.emit("tray-isDestroyedCompleted", isDestroyed);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-on-event', (eventName, listenerName) => {
|
socket.on("register-tray-on-event", (eventName, listenerName) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on(eventName, (...args) => {
|
tray.value.on(eventName, (...args) => {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
@@ -106,7 +118,7 @@ module.exports = (socket) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
socket.on('register-tray-once-event', (eventName, listenerName) => {
|
socket.on("register-tray-once-event", (eventName, listenerName) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.once(eventName, (...args) => {
|
tray.value.once(eventName, (...args) => {
|
||||||
if (args.length > 1) {
|
if (args.length > 1) {
|
||||||
@@ -118,13 +130,22 @@ module.exports = (socket) => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
function applyContextMenu(menuItems) {
|
||||||
|
const menu = electron_1.Menu.buildFromTemplate(menuItems);
|
||||||
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
|
electronSocket.emit("trayMenuItemClicked", id);
|
||||||
|
});
|
||||||
|
tray.value.setContextMenu(menu);
|
||||||
|
}
|
||||||
function addMenuItemClickConnector(menuItems, callback) {
|
function addMenuItemClickConnector(menuItems, callback) {
|
||||||
menuItems.forEach((item) => {
|
menuItems.forEach((item) => {
|
||||||
if (item.submenu && item.submenu.items.length > 0) {
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
}
|
}
|
||||||
if ('id' in item && item.id) {
|
if ("id" in item && item.id) {
|
||||||
item.click = () => { callback(item.id); };
|
item.click = () => {
|
||||||
|
callback(item.id);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,150 +1,174 @@
|
|||||||
import { Socket } from 'net';
|
import type { Socket } from "net";
|
||||||
import { Menu, Tray, nativeImage } from 'electron';
|
import { Menu, Tray, nativeImage } from "electron";
|
||||||
let tray: { value: Electron.Tray } = (global['$tray'] = global['tray'] || { value: null });
|
|
||||||
let electronSocket;
|
let tray: { value: Electron.Tray } = (global["$tray"] = global["tray"] || {
|
||||||
|
value: null,
|
||||||
|
});
|
||||||
|
|
||||||
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
socket.on('register-tray-click', (id) => {
|
socket.on("register-tray-click", (id) => {
|
||||||
if (tray.value) {
|
if (tray.value) {
|
||||||
tray.value.on('click', (event, bounds) => {
|
tray.value.on("click", (event, bounds) => {
|
||||||
electronSocket.emit('tray-click' + id, [(<any>event).__proto__, bounds]);
|
electronSocket.emit("tray-click" + id, [
|
||||||
});
|
(<any>event).__proto__,
|
||||||
}
|
bounds,
|
||||||
});
|
]);
|
||||||
|
});
|
||||||
socket.on('register-tray-right-click', (id) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.on('right-click', (event, bounds) => {
|
|
||||||
electronSocket.emit('tray-right-click' + id, [(<any>event).__proto__, bounds]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-double-click', (id) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.on('double-click', (event, bounds) => {
|
|
||||||
electronSocket.emit('tray-double-click' + id, [(<any>event).__proto__, bounds]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-balloon-show', (id) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.on('balloon-show', () => {
|
|
||||||
electronSocket.emit('tray-balloon-show' + id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-balloon-click', (id) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.on('balloon-click', () => {
|
|
||||||
electronSocket.emit('tray-balloon-click' + id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-balloon-closed', (id) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.on('balloon-closed', () => {
|
|
||||||
electronSocket.emit('tray-balloon-closed' + id);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('create-tray', (image, menuItems) => {
|
|
||||||
const trayIcon = nativeImage.createFromPath(image);
|
|
||||||
|
|
||||||
tray.value = new Tray(trayIcon);
|
|
||||||
|
|
||||||
if (menuItems) {
|
|
||||||
const menu = Menu.buildFromTemplate(menuItems);
|
|
||||||
|
|
||||||
addMenuItemClickConnector(menu.items, (id) => {
|
|
||||||
electronSocket.emit('trayMenuItemClicked', id);
|
|
||||||
});
|
|
||||||
tray.value.setContextMenu(menu);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-destroy', () => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.destroy();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-setImage', (image) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.setImage(image);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-setPressedImage', (image) => {
|
|
||||||
if (tray.value) {
|
|
||||||
const img = nativeImage.createFromPath(image);
|
|
||||||
tray.value.setPressedImage(img);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-setToolTip', (toolTip) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.setToolTip(toolTip);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-setTitle', (title) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.setTitle(title);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-displayBalloon', (options) => {
|
|
||||||
if (tray.value) {
|
|
||||||
tray.value.displayBalloon(options);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('tray-isDestroyed', () => {
|
|
||||||
if (tray.value) {
|
|
||||||
const isDestroyed = tray.value.isDestroyed();
|
|
||||||
electronSocket.emit('tray-isDestroyedCompleted', isDestroyed);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-on-event', (eventName, listenerName) => {
|
|
||||||
if (tray.value){
|
|
||||||
tray.value.on(eventName, (...args: any[]) => {
|
|
||||||
if (args.length > 1) {
|
|
||||||
electronSocket.emit(listenerName, args[1]);
|
|
||||||
} else {
|
|
||||||
electronSocket.emit(listenerName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
socket.on('register-tray-once-event', (eventName, listenerName) => {
|
|
||||||
if (tray.value){
|
|
||||||
tray.value.once(eventName, (...args: any[]) => {
|
|
||||||
if (args.length > 1) {
|
|
||||||
electronSocket.emit(listenerName, args[1]);
|
|
||||||
} else {
|
|
||||||
electronSocket.emit(listenerName);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
function addMenuItemClickConnector(menuItems, callback) {
|
|
||||||
menuItems.forEach((item) => {
|
|
||||||
if (item.submenu && item.submenu.items.length > 0) {
|
|
||||||
addMenuItemClickConnector(item.submenu.items, callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ('id' in item && item.id) {
|
|
||||||
item.click = () => { callback(item.id); };
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-right-click", (id) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on("right-click", (event, bounds) => {
|
||||||
|
electronSocket.emit("tray-right-click" + id, [
|
||||||
|
(<any>event).__proto__,
|
||||||
|
bounds,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-double-click", (id) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on("double-click", (event, bounds) => {
|
||||||
|
electronSocket.emit("tray-double-click" + id, [
|
||||||
|
(<any>event).__proto__,
|
||||||
|
bounds,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-balloon-show", (id) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on("balloon-show", () => {
|
||||||
|
electronSocket.emit("tray-balloon-show" + id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-balloon-click", (id) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on("balloon-click", () => {
|
||||||
|
electronSocket.emit("tray-balloon-click" + id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-balloon-closed", (id) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on("balloon-closed", () => {
|
||||||
|
electronSocket.emit("tray-balloon-closed" + id);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("create-tray", (image, menuItems) => {
|
||||||
|
const trayIcon = nativeImage.createFromPath(image);
|
||||||
|
|
||||||
|
tray.value = new Tray(trayIcon);
|
||||||
|
|
||||||
|
if (menuItems) {
|
||||||
|
applyContextMenu(menuItems);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-destroy", () => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.destroy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("set-contextMenu", (menuItems) => {
|
||||||
|
if (menuItems && tray.value) {
|
||||||
|
applyContextMenu(menuItems);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-setImage", (image) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.setImage(image);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-setPressedImage", (image) => {
|
||||||
|
if (tray.value) {
|
||||||
|
const img = nativeImage.createFromPath(image);
|
||||||
|
tray.value.setPressedImage(img);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-setToolTip", (toolTip) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.setToolTip(toolTip);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-setTitle", (title) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.setTitle(title);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-displayBalloon", (options) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.displayBalloon(options);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("tray-isDestroyed", () => {
|
||||||
|
if (tray.value) {
|
||||||
|
const isDestroyed = tray.value.isDestroyed();
|
||||||
|
electronSocket.emit("tray-isDestroyedCompleted", isDestroyed);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-on-event", (eventName, listenerName) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.on(eventName, (...args: any[]) => {
|
||||||
|
if (args.length > 1) {
|
||||||
|
electronSocket.emit(listenerName, args[1]);
|
||||||
|
} else {
|
||||||
|
electronSocket.emit(listenerName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on("register-tray-once-event", (eventName, listenerName) => {
|
||||||
|
if (tray.value) {
|
||||||
|
tray.value.once(eventName, (...args: any[]) => {
|
||||||
|
if (args.length > 1) {
|
||||||
|
electronSocket.emit(listenerName, args[1]);
|
||||||
|
} else {
|
||||||
|
electronSocket.emit(listenerName);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
function applyContextMenu(menuItems) {
|
||||||
|
const menu = Menu.buildFromTemplate(menuItems);
|
||||||
|
addMenuItemClickConnector(menu.items, (id) => {
|
||||||
|
electronSocket.emit("trayMenuItemClicked", id);
|
||||||
|
});
|
||||||
|
tray.value.setContextMenu(menu);
|
||||||
|
}
|
||||||
|
|
||||||
|
function addMenuItemClickConnector(menuItems, callback) {
|
||||||
|
menuItems.forEach((item) => {
|
||||||
|
if (item.submenu && item.submenu.items.length > 0) {
|
||||||
|
addMenuItemClickConnector(item.submenu.items, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ("id" in item && item.id) {
|
||||||
|
item.click = () => {
|
||||||
|
callback(item.id);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,7 +1,40 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||||
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||||
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||||
|
}
|
||||||
|
Object.defineProperty(o, k2, desc);
|
||||||
|
}) : (function(o, m, k, k2) {
|
||||||
|
if (k2 === undefined) k2 = k;
|
||||||
|
o[k2] = m[k];
|
||||||
|
}));
|
||||||
|
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||||
|
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||||
|
}) : function(o, v) {
|
||||||
|
o["default"] = v;
|
||||||
|
});
|
||||||
|
var __importStar = (this && this.__importStar) || (function () {
|
||||||
|
var ownKeys = function(o) {
|
||||||
|
ownKeys = Object.getOwnPropertyNames || function (o) {
|
||||||
|
var ar = [];
|
||||||
|
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
||||||
|
return ar;
|
||||||
|
};
|
||||||
|
return ownKeys(o);
|
||||||
|
};
|
||||||
|
return function (mod) {
|
||||||
|
if (mod && mod.__esModule) return mod;
|
||||||
|
var result = {};
|
||||||
|
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
||||||
|
__setModuleDefault(result, mod);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
const fs = __importStar(require("fs"));
|
||||||
const electron_1 = require("electron");
|
const electron_1 = require("electron");
|
||||||
const browserView_1 = require("./browserView");
|
const browserView_1 = require("./browserView");
|
||||||
const fs = require("fs");
|
|
||||||
let electronSocket;
|
let electronSocket;
|
||||||
module.exports = (socket) => {
|
module.exports = (socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
@@ -315,28 +348,28 @@ module.exports = (socket) => {
|
|||||||
const extension = await browserWindow.webContents.session.loadExtension(path, { allowFileAccess: allowFileAccess });
|
const extension = await browserWindow.webContents.session.loadExtension(path, { allowFileAccess: allowFileAccess });
|
||||||
electronSocket.emit("webContents-session-loadExtension-completed", extension);
|
electronSocket.emit("webContents-session-loadExtension-completed", extension);
|
||||||
});
|
});
|
||||||
socket.on('webContents-getZoomFactor', (id) => {
|
socket.on("webContents-getZoomFactor", (id) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const text = browserWindow.webContents.getZoomFactor();
|
const text = browserWindow.webContents.getZoomFactor();
|
||||||
electronSocket.emit('webContents-getZoomFactor-completed', text);
|
electronSocket.emit("webContents-getZoomFactor-completed", text);
|
||||||
});
|
});
|
||||||
socket.on('webContents-setZoomFactor', (id, factor) => {
|
socket.on("webContents-setZoomFactor", (id, factor) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.setZoomFactor(factor);
|
browserWindow.webContents.setZoomFactor(factor);
|
||||||
});
|
});
|
||||||
socket.on('webContents-getZoomLevel', (id) => {
|
socket.on("webContents-getZoomLevel", (id) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const content = browserWindow.webContents.getZoomLevel();
|
const content = browserWindow.webContents.getZoomLevel();
|
||||||
electronSocket.emit('webContents-getZoomLevel-completed', content);
|
electronSocket.emit("webContents-getZoomLevel-completed", content);
|
||||||
});
|
});
|
||||||
socket.on('webContents-setZoomLevel', (id, level) => {
|
socket.on("webContents-setZoomLevel", (id, level) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.setZoomLevel(level);
|
browserWindow.webContents.setZoomLevel(level);
|
||||||
});
|
});
|
||||||
socket.on('webContents-setVisualZoomLevelLimits', async (id, minimumLevel, maximumLevel) => {
|
socket.on("webContents-setVisualZoomLevelLimits", async (id, minimumLevel, maximumLevel) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
await browserWindow.webContents.setVisualZoomLevelLimits(minimumLevel, maximumLevel);
|
await browserWindow.webContents.setVisualZoomLevelLimits(minimumLevel, maximumLevel);
|
||||||
electronSocket.emit('webContents-setVisualZoomLevelLimits-completed');
|
electronSocket.emit("webContents-setVisualZoomLevelLimits-completed");
|
||||||
});
|
});
|
||||||
socket.on("webContents-toggleDevTools", (id) => {
|
socket.on("webContents-toggleDevTools", (id) => {
|
||||||
getWindowById(id).webContents.toggleDevTools();
|
getWindowById(id).webContents.toggleDevTools();
|
||||||
@@ -346,26 +379,26 @@ module.exports = (socket) => {
|
|||||||
});
|
});
|
||||||
socket.on("webContents-isDevToolsOpened", function (id) {
|
socket.on("webContents-isDevToolsOpened", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isDevToolsOpened-completed', browserWindow.webContents.isDevToolsOpened());
|
electronSocket.emit("webContents-isDevToolsOpened-completed", browserWindow.webContents.isDevToolsOpened());
|
||||||
});
|
});
|
||||||
socket.on("webContents-isDevToolsFocused", function (id) {
|
socket.on("webContents-isDevToolsFocused", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isDevToolsFocused-completed', browserWindow.webContents.isDevToolsFocused());
|
electronSocket.emit("webContents-isDevToolsFocused-completed", browserWindow.webContents.isDevToolsFocused());
|
||||||
});
|
});
|
||||||
socket.on("webContents-setAudioMuted", (id, muted) => {
|
socket.on("webContents-setAudioMuted", (id, muted) => {
|
||||||
getWindowById(id).webContents.setAudioMuted(muted);
|
getWindowById(id).webContents.setAudioMuted(muted);
|
||||||
});
|
});
|
||||||
socket.on("webContents-isAudioMuted", function (id) {
|
socket.on("webContents-isAudioMuted", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isAudioMuted-completed', browserWindow.webContents.isAudioMuted());
|
electronSocket.emit("webContents-isAudioMuted-completed", browserWindow.webContents.isAudioMuted());
|
||||||
});
|
});
|
||||||
socket.on("webContents-isCurrentlyAudible", function (id) {
|
socket.on("webContents-isCurrentlyAudible", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isCurrentlyAudible-completed', browserWindow.webContents.isCurrentlyAudible());
|
electronSocket.emit("webContents-isCurrentlyAudible-completed", browserWindow.webContents.isCurrentlyAudible());
|
||||||
});
|
});
|
||||||
socket.on("webContents-getUserAgent", function (id) {
|
socket.on("webContents-getUserAgent", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-getUserAgent-completed', browserWindow.webContents.getUserAgent());
|
electronSocket.emit("webContents-getUserAgent-completed", browserWindow.webContents.getUserAgent());
|
||||||
});
|
});
|
||||||
socket.on("webContents-setUserAgent", (id, userAgent) => {
|
socket.on("webContents-setUserAgent", (id, userAgent) => {
|
||||||
getWindowById(id).webContents.setUserAgent(userAgent);
|
getWindowById(id).webContents.setUserAgent(userAgent);
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,8 +1,10 @@
|
|||||||
import { Socket } from "net";
|
import * as fs from "fs";
|
||||||
import {BrowserWindow, BrowserView} from "electron";
|
import type { Socket } from "net";
|
||||||
|
import { BrowserWindow, BrowserView } from "electron";
|
||||||
|
|
||||||
import { browserViewMediateService } from "./browserView";
|
import { browserViewMediateService } from "./browserView";
|
||||||
const fs = require("fs");
|
|
||||||
let electronSocket;
|
let electronSocket: Socket;
|
||||||
|
|
||||||
export = (socket: Socket) => {
|
export = (socket: Socket) => {
|
||||||
electronSocket = socket;
|
electronSocket = socket;
|
||||||
@@ -68,7 +70,7 @@ export = (socket: Socket) => {
|
|||||||
errorCode,
|
errorCode,
|
||||||
validatedUrl,
|
validatedUrl,
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -136,17 +138,17 @@ export = (socket: Socket) => {
|
|||||||
async (id, code, userGesture = false) => {
|
async (id, code, userGesture = false) => {
|
||||||
const result = await getWindowById(id).webContents.executeJavaScript(
|
const result = await getWindowById(id).webContents.executeJavaScript(
|
||||||
code,
|
code,
|
||||||
userGesture
|
userGesture,
|
||||||
);
|
);
|
||||||
electronSocket.emit("webContents-executeJavaScript-completed", result);
|
electronSocket.emit("webContents-executeJavaScript-completed", result);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("webContents-getUrl", function (id) {
|
socket.on("webContents-getUrl", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-getUrl" + id,
|
"webContents-getUrl" + id,
|
||||||
browserWindow.webContents.getURL()
|
browserWindow.webContents.getURL(),
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -155,7 +157,7 @@ export = (socket: Socket) => {
|
|||||||
(id, domains) => {
|
(id, domains) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.session.allowNTLMCredentialsForDomains(domains);
|
browserWindow.webContents.session.allowNTLMCredentialsForDomains(domains);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("webContents-session-clearAuthCache", async (...args) => {
|
socket.on("webContents-session-clearAuthCache", async (...args) => {
|
||||||
@@ -194,7 +196,7 @@ export = (socket: Socket) => {
|
|||||||
await browserWindow.webContents.session.clearHostResolverCache();
|
await browserWindow.webContents.session.clearHostResolverCache();
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-clearHostResolverCache-completed" + guid
|
"webContents-session-clearHostResolverCache-completed" + guid,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -203,7 +205,7 @@ export = (socket: Socket) => {
|
|||||||
await browserWindow.webContents.session.clearStorageData({});
|
await browserWindow.webContents.session.clearStorageData({});
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-clearStorageData-completed" + guid
|
"webContents-session-clearStorageData-completed" + guid,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -214,9 +216,9 @@ export = (socket: Socket) => {
|
|||||||
await browserWindow.webContents.session.clearStorageData(options);
|
await browserWindow.webContents.session.clearStorageData(options);
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-clearStorageData-options-completed" + guid
|
"webContents-session-clearStorageData-options-completed" + guid,
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("webContents-session-createInterruptedDownload", (id, options) => {
|
socket.on("webContents-session-createInterruptedDownload", (id, options) => {
|
||||||
@@ -241,13 +243,12 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
socket.on("webContents-session-getBlobData", async (id, identifier, guid) => {
|
socket.on("webContents-session-getBlobData", async (id, identifier, guid) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const buffer = await browserWindow.webContents.session.getBlobData(
|
const buffer =
|
||||||
identifier
|
await browserWindow.webContents.session.getBlobData(identifier);
|
||||||
);
|
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-getBlobData-completed" + guid,
|
"webContents-session-getBlobData-completed" + guid,
|
||||||
buffer.buffer
|
buffer.buffer,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -257,7 +258,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-getCacheSize-completed" + guid,
|
"webContents-session-getCacheSize-completed" + guid,
|
||||||
size
|
size,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -267,7 +268,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-getPreloads-completed" + guid,
|
"webContents-session-getPreloads-completed" + guid,
|
||||||
preloads
|
preloads,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -277,7 +278,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-getUserAgent-completed" + guid,
|
"webContents-session-getUserAgent-completed" + guid,
|
||||||
userAgent
|
userAgent,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -287,7 +288,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-resolveProxy-completed" + guid,
|
"webContents-session-resolveProxy-completed" + guid,
|
||||||
proxy
|
proxy,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -314,9 +315,9 @@ export = (socket: Socket) => {
|
|||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.session.setUserAgent(
|
browserWindow.webContents.session.setUserAgent(
|
||||||
userAgent,
|
userAgent,
|
||||||
acceptLanguages
|
acceptLanguages,
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on(
|
socket.on(
|
||||||
@@ -328,17 +329,17 @@ export = (socket: Socket) => {
|
|||||||
session.webRequest.onBeforeRequest(filter, (details, callback) => {
|
session.webRequest.onBeforeRequest(filter, (details, callback) => {
|
||||||
socket.emit(
|
socket.emit(
|
||||||
`webContents-session-webRequest-onBeforeRequest${id}`,
|
`webContents-session-webRequest-onBeforeRequest${id}`,
|
||||||
details
|
details,
|
||||||
);
|
);
|
||||||
// Listen for a response from C# to continue the request
|
// Listen for a response from C# to continue the request
|
||||||
electronSocket.once(
|
electronSocket.once(
|
||||||
`webContents-session-webRequest-onBeforeRequest-response${id}`,
|
`webContents-session-webRequest-onBeforeRequest-response${id}`,
|
||||||
(response) => {
|
(response) => {
|
||||||
callback(response);
|
callback(response);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("register-webContents-session-cookies-changed", (id) => {
|
socket.on("register-webContents-session-cookies-changed", (id) => {
|
||||||
@@ -353,7 +354,7 @@ export = (socket: Socket) => {
|
|||||||
cause,
|
cause,
|
||||||
removed,
|
removed,
|
||||||
]);
|
]);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -363,7 +364,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-cookies-get-completed" + guid,
|
"webContents-session-cookies-get-completed" + guid,
|
||||||
cookies
|
cookies,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -381,9 +382,9 @@ export = (socket: Socket) => {
|
|||||||
await browserWindow.webContents.session.cookies.remove(url, name);
|
await browserWindow.webContents.session.cookies.remove(url, name);
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-cookies-remove-completed" + guid
|
"webContents-session-cookies-remove-completed" + guid,
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on("webContents-session-cookies-flushStore", async (id, guid) => {
|
socket.on("webContents-session-cookies-flushStore", async (id, guid) => {
|
||||||
@@ -391,7 +392,7 @@ export = (socket: Socket) => {
|
|||||||
await browserWindow.webContents.session.cookies.flushStore();
|
await browserWindow.webContents.session.cookies.flushStore();
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-cookies-flushStore-completed" + guid
|
"webContents-session-cookies-flushStore-completed" + guid,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -441,7 +442,7 @@ export = (socket: Socket) => {
|
|||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-getAllExtensions-completed",
|
"webContents-session-getAllExtensions-completed",
|
||||||
chromeExtensionInfo
|
chromeExtensionInfo,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -456,87 +457,108 @@ export = (socket: Socket) => {
|
|||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const extension = await browserWindow.webContents.session.loadExtension(
|
const extension = await browserWindow.webContents.session.loadExtension(
|
||||||
path,
|
path,
|
||||||
{ allowFileAccess: allowFileAccess }
|
{ allowFileAccess: allowFileAccess },
|
||||||
);
|
);
|
||||||
|
|
||||||
electronSocket.emit(
|
electronSocket.emit(
|
||||||
"webContents-session-loadExtension-completed",
|
"webContents-session-loadExtension-completed",
|
||||||
extension
|
extension,
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
socket.on('webContents-getZoomFactor', (id) => {
|
socket.on("webContents-getZoomFactor", (id) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const text = browserWindow.webContents.getZoomFactor();
|
const text = browserWindow.webContents.getZoomFactor();
|
||||||
electronSocket.emit('webContents-getZoomFactor-completed', text);
|
electronSocket.emit("webContents-getZoomFactor-completed", text);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('webContents-setZoomFactor', (id, factor) => {
|
socket.on("webContents-setZoomFactor", (id, factor) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.setZoomFactor(factor);
|
browserWindow.webContents.setZoomFactor(factor);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('webContents-getZoomLevel', (id) => {
|
socket.on("webContents-getZoomLevel", (id) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
const content = browserWindow.webContents.getZoomLevel();
|
const content = browserWindow.webContents.getZoomLevel();
|
||||||
electronSocket.emit('webContents-getZoomLevel-completed', content);
|
electronSocket.emit("webContents-getZoomLevel-completed", content);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('webContents-setZoomLevel', (id, level) => {
|
socket.on("webContents-setZoomLevel", (id, level) => {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
browserWindow.webContents.setZoomLevel(level);
|
browserWindow.webContents.setZoomLevel(level);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('webContents-setVisualZoomLevelLimits', async (id, minimumLevel, maximumLevel) => {
|
socket.on(
|
||||||
const browserWindow = getWindowById(id);
|
"webContents-setVisualZoomLevelLimits",
|
||||||
await browserWindow.webContents.setVisualZoomLevelLimits(minimumLevel, maximumLevel);
|
async (id, minimumLevel, maximumLevel) => {
|
||||||
electronSocket.emit('webContents-setVisualZoomLevelLimits-completed');
|
const browserWindow = getWindowById(id);
|
||||||
});
|
await browserWindow.webContents.setVisualZoomLevelLimits(
|
||||||
|
minimumLevel,
|
||||||
|
maximumLevel,
|
||||||
|
);
|
||||||
|
electronSocket.emit("webContents-setVisualZoomLevelLimits-completed");
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
socket.on("webContents-toggleDevTools", (id) => {
|
socket.on("webContents-toggleDevTools", (id) => {
|
||||||
getWindowById(id).webContents.toggleDevTools();
|
getWindowById(id).webContents.toggleDevTools();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on("webContents-closeDevTools", (id) => {
|
socket.on("webContents-closeDevTools", (id) => {
|
||||||
getWindowById(id).webContents.closeDevTools();
|
getWindowById(id).webContents.closeDevTools();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on("webContents-isDevToolsOpened", function (id) {
|
socket.on("webContents-isDevToolsOpened", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isDevToolsOpened-completed', browserWindow.webContents.isDevToolsOpened());
|
electronSocket.emit(
|
||||||
});
|
"webContents-isDevToolsOpened-completed",
|
||||||
|
browserWindow.webContents.isDevToolsOpened(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("webContents-isDevToolsFocused", function (id) {
|
socket.on("webContents-isDevToolsFocused", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isDevToolsFocused-completed', browserWindow.webContents.isDevToolsFocused());
|
electronSocket.emit(
|
||||||
});
|
"webContents-isDevToolsFocused-completed",
|
||||||
|
browserWindow.webContents.isDevToolsFocused(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("webContents-setAudioMuted", (id, muted) => {
|
socket.on("webContents-setAudioMuted", (id, muted) => {
|
||||||
getWindowById(id).webContents.setAudioMuted(muted);
|
getWindowById(id).webContents.setAudioMuted(muted);
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on("webContents-isAudioMuted", function (id) {
|
socket.on("webContents-isAudioMuted", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isAudioMuted-completed', browserWindow.webContents.isAudioMuted());
|
electronSocket.emit(
|
||||||
});
|
"webContents-isAudioMuted-completed",
|
||||||
|
browserWindow.webContents.isAudioMuted(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("webContents-isCurrentlyAudible", function (id) {
|
socket.on("webContents-isCurrentlyAudible", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-isCurrentlyAudible-completed', browserWindow.webContents.isCurrentlyAudible());
|
electronSocket.emit(
|
||||||
});
|
"webContents-isCurrentlyAudible-completed",
|
||||||
|
browserWindow.webContents.isCurrentlyAudible(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("webContents-getUserAgent", function (id) {
|
socket.on("webContents-getUserAgent", function (id) {
|
||||||
const browserWindow = getWindowById(id);
|
const browserWindow = getWindowById(id);
|
||||||
electronSocket.emit('webContents-getUserAgent-completed', browserWindow.webContents.getUserAgent());
|
electronSocket.emit(
|
||||||
});
|
"webContents-getUserAgent-completed",
|
||||||
|
browserWindow.webContents.getUserAgent(),
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
socket.on("webContents-setUserAgent", (id, userAgent) => {
|
socket.on("webContents-setUserAgent", (id, userAgent) => {
|
||||||
getWindowById(id).webContents.setUserAgent(userAgent);
|
getWindowById(id).webContents.setUserAgent(userAgent);
|
||||||
});
|
});
|
||||||
|
|
||||||
function getWindowById(
|
function getWindowById(
|
||||||
id: number
|
id: number,
|
||||||
): Electron.BrowserWindow | Electron.BrowserView {
|
): Electron.BrowserWindow | Electron.BrowserView {
|
||||||
if (id >= 1000) {
|
if (id >= 1000) {
|
||||||
return browserViewMediateService(id - 1000);
|
return browserViewMediateService(id - 1000);
|
||||||
|
|||||||
@@ -5,14 +5,13 @@ const path = require('path');
|
|||||||
const cProcess = require('child_process').spawn;
|
const cProcess = require('child_process').spawn;
|
||||||
const portscanner = require('portscanner');
|
const portscanner = require('portscanner');
|
||||||
const { imageSize } = require('image-size');
|
const { imageSize } = require('image-size');
|
||||||
const { HookService } = require('electron-host-hook');
|
|
||||||
let io, server, browserWindows, ipc, apiProcess, loadURL;
|
let io, server, browserWindows, ipc, apiProcess, loadURL;
|
||||||
let appApi, menu, dialogApi, notification, tray, webContents;
|
let appApi, menu, dialogApi, notification, tray, webContents;
|
||||||
let globalShortcut, shellApi, screen, clipboard, autoUpdater;
|
let globalShortcut, shellApi, screen, clipboard, autoUpdater;
|
||||||
let commandLine, browserView;
|
let commandLine, browserView;
|
||||||
let powerMonitor;
|
let powerMonitor;
|
||||||
let processInfo;
|
let processInfo;
|
||||||
let splashScreen, hostHook;
|
let splashScreen;
|
||||||
let nativeTheme;
|
let nativeTheme;
|
||||||
let dock;
|
let dock;
|
||||||
let launchFile;
|
let launchFile;
|
||||||
@@ -94,7 +93,7 @@ app.on('will-finish-launching', () => {
|
|||||||
|
|
||||||
const manifestJsonFile = require(manifestJsonFilePath);
|
const manifestJsonFile = require(manifestJsonFilePath);
|
||||||
|
|
||||||
if (manifestJsonFile.singleInstance === "yes") {
|
if (manifestJsonFile.singleInstance) {
|
||||||
const mainInstance = app.requestSingleInstanceLock();
|
const mainInstance = app.requestSingleInstanceLock();
|
||||||
app.on('second-instance', (events, args = []) => {
|
app.on('second-instance', (events, args = []) => {
|
||||||
args.forEach((parameter) => {
|
args.forEach((parameter) => {
|
||||||
@@ -263,6 +262,7 @@ function startSocketApiBridge(port) {
|
|||||||
console.log('Electron Socket: starting...');
|
console.log('Electron Socket: starting...');
|
||||||
server = require('http').createServer();
|
server = require('http').createServer();
|
||||||
const { Server } = require('socket.io');
|
const { Server } = require('socket.io');
|
||||||
|
let hostHook;
|
||||||
io = new Server({
|
io = new Server({
|
||||||
pingTimeout: 60000, // in ms, default is 5000
|
pingTimeout: 60000, // in ms, default is 5000
|
||||||
pingInterval: 10000, // in ms, default is 25000
|
pingInterval: 10000, // in ms, default is 25000
|
||||||
@@ -359,6 +359,8 @@ function startSocketApiBridge(port) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
const { HookService } = require('electron-host-hook');
|
||||||
|
|
||||||
if (hostHook === undefined) {
|
if (hostHook === undefined) {
|
||||||
hostHook = new HookService(socket, app);
|
hostHook = new HookService(socket, app);
|
||||||
hostHook.onHostReady();
|
hostHook.onHostReady();
|
||||||
@@ -366,6 +368,7 @@ function startSocketApiBridge(port) {
|
|||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error.message);
|
console.error(error.message);
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Electron Socket: startup complete.');
|
console.log('Electron Socket: startup complete.');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -373,7 +376,7 @@ function startSocketApiBridge(port) {
|
|||||||
function startAspCoreBackend(electronPort) {
|
function startAspCoreBackend(electronPort) {
|
||||||
startBackend();
|
startBackend();
|
||||||
|
|
||||||
function startBackend() {
|
function startBackend() {
|
||||||
loadURL = `about:blank`;
|
loadURL = `about:blank`;
|
||||||
const envParam = getEnvironmentParameter();
|
const envParam = getEnvironmentParameter();
|
||||||
const parameters = [
|
const parameters = [
|
||||||
|
|||||||
205
src/ElectronNET.Host/package-lock.json
generated
205
src/ElectronNET.Host/package-lock.json
generated
@@ -57,9 +57,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint-community/eslint-utils": {
|
"node_modules/@eslint-community/eslint-utils": {
|
||||||
"version": "4.9.0",
|
"version": "4.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
|
||||||
"integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
|
"integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -140,9 +140,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/eslintrc": {
|
"node_modules/@eslint/eslintrc": {
|
||||||
"version": "3.3.1",
|
"version": "3.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz",
|
||||||
"integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
|
"integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
"globals": "^14.0.0",
|
"globals": "^14.0.0",
|
||||||
"ignore": "^5.2.0",
|
"ignore": "^5.2.0",
|
||||||
"import-fresh": "^3.2.1",
|
"import-fresh": "^3.2.1",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.1",
|
||||||
"minimatch": "^3.1.2",
|
"minimatch": "^3.1.2",
|
||||||
"strip-json-comments": "^3.1.1"
|
"strip-json-comments": "^3.1.1"
|
||||||
},
|
},
|
||||||
@@ -164,9 +164,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.39.1",
|
"version": "9.39.2",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.1.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz",
|
||||||
"integrity": "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==",
|
"integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -314,9 +314,9 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@types/http-cache-semantics": {
|
"node_modules/@types/http-cache-semantics": {
|
||||||
"version": "4.0.4",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
|
||||||
"integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
|
"integrity": "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
@@ -338,9 +338,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "22.19.1",
|
"version": "22.19.8",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.8.tgz",
|
||||||
"integrity": "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==",
|
"integrity": "sha512-ebO/Yl+EAvVe8DnMfi+iaAyIqYdK0q/q0y0rw82INWEKJOBe6b/P3YWE8NW7oOlF/nXFNrHwhARrN/hdgDkraA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"undici-types": "~6.21.0"
|
"undici-types": "~6.21.0"
|
||||||
@@ -498,9 +498,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/builder-util-runtime": {
|
"node_modules/builder-util-runtime": {
|
||||||
"version": "9.3.1",
|
"version": "9.5.1",
|
||||||
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.5.1.tgz",
|
||||||
"integrity": "sha512-2/egrNDDnRaxVwK3A+cJq6UOlqOdedGA7JPqCeJjN2Zjk1/QB/6QUi3b714ScIGS7HafFXTyzJEOr5b44I3kvQ==",
|
"integrity": "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "^4.3.4",
|
"debug": "^4.3.4",
|
||||||
@@ -616,9 +616,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cors": {
|
"node_modules/cors": {
|
||||||
"version": "2.8.5",
|
"version": "2.8.6",
|
||||||
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz",
|
"resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz",
|
||||||
"integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
|
"integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"object-assign": "^4",
|
"object-assign": "^4",
|
||||||
@@ -626,6 +626,10 @@
|
|||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 0.10"
|
"node": ">= 0.10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/cross-spawn": {
|
"node_modules/cross-spawn": {
|
||||||
@@ -782,18 +786,18 @@
|
|||||||
"link": true
|
"link": true
|
||||||
},
|
},
|
||||||
"node_modules/electron-updater": {
|
"node_modules/electron-updater": {
|
||||||
"version": "6.6.2",
|
"version": "6.7.3",
|
||||||
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.7.3.tgz",
|
||||||
"integrity": "sha512-Cr4GDOkbAUqRHP5/oeOmH/L2Bn6+FQPxVLZtPbcmKZC63a1F3uu5EefYOssgZXG3u/zBlubbJ5PJdITdMVggbw==",
|
"integrity": "sha512-EgkT8Z9noqXKbwc3u5FkJA+r48jwZ5DTUiOkJMOTEEH//n5Am6wfQGz7nvSFEA2oIAMv9jRzn5JKTyWeSKOPgg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"builder-util-runtime": "9.3.1",
|
"builder-util-runtime": "9.5.1",
|
||||||
"fs-extra": "^10.1.0",
|
"fs-extra": "^10.1.0",
|
||||||
"js-yaml": "^4.1.0",
|
"js-yaml": "^4.1.0",
|
||||||
"lazy-val": "^1.0.5",
|
"lazy-val": "^1.0.5",
|
||||||
"lodash.escaperegexp": "^4.1.2",
|
"lodash.escaperegexp": "^4.1.2",
|
||||||
"lodash.isequal": "^4.5.0",
|
"lodash.isequal": "^4.5.0",
|
||||||
"semver": "^7.6.3",
|
"semver": "~7.7.3",
|
||||||
"tiny-typed-emitter": "^2.1.0"
|
"tiny-typed-emitter": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -845,9 +849,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/electron/node_modules/@types/node": {
|
"node_modules/electron/node_modules/@types/node": {
|
||||||
"version": "20.19.25",
|
"version": "20.19.31",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.25.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.31.tgz",
|
||||||
"integrity": "sha512-ZsJzA5thDQMSQO788d7IocwwQbI8B5OPzmqNvpf3NY/+MHDAS759Wo0gd2WQeXYt5AAAQjzcrTVC6SKCuYgoCQ==",
|
"integrity": "sha512-5jsi0wpncvTD33Sh1UCgacK37FFwDn+EG7wCmEvs62fCvBL+n8/76cAYDok21NF6+jaVWIqKwCZyX7Vbu8eB3A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -865,9 +869,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/engine.io": {
|
"node_modules/engine.io": {
|
||||||
"version": "6.6.4",
|
"version": "6.6.5",
|
||||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz",
|
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.5.tgz",
|
||||||
"integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==",
|
"integrity": "sha512-2RZdgEbXmp5+dVbRm0P7HQUImZpICccJy7rN7Tv+SFa55pH+lxnuw6/K1ZxxBfHoYpSkHLAO92oa8O4SwFXA2A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@types/cors": "^2.8.12",
|
"@types/cors": "^2.8.12",
|
||||||
@@ -876,9 +880,9 @@
|
|||||||
"base64id": "2.0.0",
|
"base64id": "2.0.0",
|
||||||
"cookie": "~0.7.2",
|
"cookie": "~0.7.2",
|
||||||
"cors": "~2.8.5",
|
"cors": "~2.8.5",
|
||||||
"debug": "~4.3.1",
|
"debug": "~4.4.1",
|
||||||
"engine.io-parser": "~5.2.1",
|
"engine.io-parser": "~5.2.1",
|
||||||
"ws": "~8.17.1"
|
"ws": "~8.18.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.2.0"
|
"node": ">=10.2.0"
|
||||||
@@ -893,23 +897,6 @@
|
|||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/engine.io/node_modules/debug": {
|
|
||||||
"version": "4.3.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
|
||||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "^2.1.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/env-paths": {
|
"node_modules/env-paths": {
|
||||||
"version": "2.2.1",
|
"version": "2.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
|
||||||
@@ -964,9 +951,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/eslint": {
|
"node_modules/eslint": {
|
||||||
"version": "9.39.1",
|
"version": "9.39.2",
|
||||||
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.1.tgz",
|
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
|
||||||
"integrity": "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g==",
|
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -976,7 +963,7 @@
|
|||||||
"@eslint/config-helpers": "^0.4.2",
|
"@eslint/config-helpers": "^0.4.2",
|
||||||
"@eslint/core": "^0.17.0",
|
"@eslint/core": "^0.17.0",
|
||||||
"@eslint/eslintrc": "^3.3.1",
|
"@eslint/eslintrc": "^3.3.1",
|
||||||
"@eslint/js": "9.39.1",
|
"@eslint/js": "9.39.2",
|
||||||
"@eslint/plugin-kit": "^0.4.1",
|
"@eslint/plugin-kit": "^0.4.1",
|
||||||
"@humanfs/node": "^0.16.6",
|
"@humanfs/node": "^0.16.6",
|
||||||
"@humanwhocodes/module-importer": "^1.0.1",
|
"@humanwhocodes/module-importer": "^1.0.1",
|
||||||
@@ -1072,9 +1059,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/esquery": {
|
"node_modules/esquery": {
|
||||||
"version": "1.6.0",
|
"version": "1.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
|
||||||
"integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
|
"integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "BSD-3-Clause",
|
"license": "BSD-3-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -1614,9 +1601,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/lodash": {
|
"node_modules/lodash": {
|
||||||
"version": "4.17.21",
|
"version": "4.17.23",
|
||||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
|
||||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/lodash.escaperegexp": {
|
"node_modules/lodash.escaperegexp": {
|
||||||
@@ -2005,10 +1992,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sax": {
|
"node_modules/sax": {
|
||||||
"version": "1.4.3",
|
"version": "1.4.4",
|
||||||
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz",
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz",
|
||||||
"integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==",
|
"integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==",
|
||||||
"license": "BlueOak-1.0.0"
|
"license": "BlueOak-1.0.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=11.0.0"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "6.3.1",
|
"version": "6.3.1",
|
||||||
@@ -2069,15 +2059,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/socket.io": {
|
"node_modules/socket.io": {
|
||||||
"version": "4.8.1",
|
"version": "4.8.3",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz",
|
||||||
"integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==",
|
"integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"accepts": "~1.3.4",
|
"accepts": "~1.3.4",
|
||||||
"base64id": "~2.0.0",
|
"base64id": "~2.0.0",
|
||||||
"cors": "~2.8.5",
|
"cors": "~2.8.5",
|
||||||
"debug": "~4.3.2",
|
"debug": "~4.4.1",
|
||||||
"engine.io": "~6.6.0",
|
"engine.io": "~6.6.0",
|
||||||
"socket.io-adapter": "~2.5.2",
|
"socket.io-adapter": "~2.5.2",
|
||||||
"socket.io-parser": "~4.2.4"
|
"socket.io-parser": "~4.2.4"
|
||||||
@@ -2087,79 +2077,28 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/socket.io-adapter": {
|
"node_modules/socket.io-adapter": {
|
||||||
"version": "2.5.5",
|
"version": "2.5.6",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.6.tgz",
|
||||||
"integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==",
|
"integrity": "sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"debug": "~4.3.4",
|
"debug": "~4.4.1",
|
||||||
"ws": "~8.17.1"
|
"ws": "~8.18.3"
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/socket.io-adapter/node_modules/debug": {
|
|
||||||
"version": "4.3.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
|
||||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "^2.1.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/socket.io-parser": {
|
"node_modules/socket.io-parser": {
|
||||||
"version": "4.2.4",
|
"version": "4.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.5.tgz",
|
||||||
"integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==",
|
"integrity": "sha512-bPMmpy/5WWKHea5Y/jYAP6k74A+hvmRCQaJuJB6I/ML5JZq/KfNieUVo/3Mh7SAqn7TyFdIo6wqYHInG1MU1bQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@socket.io/component-emitter": "~3.1.0",
|
"@socket.io/component-emitter": "~3.1.0",
|
||||||
"debug": "~4.3.1"
|
"debug": "~4.4.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/socket.io-parser/node_modules/debug": {
|
|
||||||
"version": "4.3.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
|
||||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "^2.1.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/socket.io/node_modules/debug": {
|
|
||||||
"version": "4.3.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
|
|
||||||
"integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"ms": "^2.1.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6.0"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"supports-color": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/sprintf-js": {
|
"node_modules/sprintf-js": {
|
||||||
"version": "1.1.3",
|
"version": "1.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
|
||||||
@@ -2323,9 +2262,9 @@
|
|||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/ws": {
|
"node_modules/ws": {
|
||||||
"version": "8.17.1",
|
"version": "8.18.3",
|
||||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz",
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz",
|
||||||
"integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==",
|
"integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
|
|||||||
@@ -0,0 +1,101 @@
|
|||||||
|
namespace ElectronNET.IntegrationTests.Common
|
||||||
|
{
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using Xunit.Sdk;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Custom fact attribute with a default timeout of 20 seconds, allowing tests to be skipped on specific environments.
|
||||||
|
/// </summary>
|
||||||
|
/// <seealso cref="Xunit.FactAttribute" />
|
||||||
|
[AttributeUsage(AttributeTargets.Method)]
|
||||||
|
[XunitTestCaseDiscoverer("Xunit.Sdk.SkippableFactDiscoverer", "Xunit.SkippableFact")]
|
||||||
|
internal sealed class IntegrationFactAttribute : FactAttribute
|
||||||
|
{
|
||||||
|
private static readonly bool IsOnWsl;
|
||||||
|
|
||||||
|
private static readonly bool IsOnCI;
|
||||||
|
|
||||||
|
static IntegrationFactAttribute()
|
||||||
|
{
|
||||||
|
IsOnWsl = DetectWsl();
|
||||||
|
IsOnCI = DetectCI();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initializes a new instance of the <see cref="IntegrationFactAttribute" /> class.
|
||||||
|
/// </summary>
|
||||||
|
public IntegrationFactAttribute()
|
||||||
|
{
|
||||||
|
this.Timeout = 20_000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool SkipOnWsl { get; set; }
|
||||||
|
|
||||||
|
public bool SkipOnCI { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Marks the test so that it will not be run, and gets or sets the skip reason
|
||||||
|
/// </summary>
|
||||||
|
public override string Skip {
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (IsOnWsl && this.SkipOnWsl)
|
||||||
|
{
|
||||||
|
return "Skipping test on WSL environment.";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsOnCI && this.SkipOnCI)
|
||||||
|
{
|
||||||
|
return "Skipping test on CI environment.";
|
||||||
|
}
|
||||||
|
|
||||||
|
return base.Skip;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
base.Skip = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool DetectWsl()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WSL_DISTRO_NAME")) ||
|
||||||
|
!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WSL_INTEROP")))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static bool DetectCI()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TF_BUILD")) ||
|
||||||
|
!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("GITHUB_ACTIONS")))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
namespace ElectronNET.IntegrationTests.Common
|
||||||
|
{
|
||||||
|
using ElectronNET.API;
|
||||||
|
using ElectronNET.API.Entities;
|
||||||
|
|
||||||
|
// Base class for integration tests providing shared access to MainWindow and OS platform constants
|
||||||
|
public abstract class IntegrationTestBase
|
||||||
|
{
|
||||||
|
protected IntegrationTestBase(ElectronFixture fixture)
|
||||||
|
{
|
||||||
|
Fixture = fixture;
|
||||||
|
MainWindow = fixture.MainWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected ElectronFixture Fixture { get; }
|
||||||
|
protected BrowserWindow MainWindow { get; }
|
||||||
|
|
||||||
|
// Constants for SupportedOSPlatform attributes
|
||||||
|
public const string Windows = "Windows";
|
||||||
|
public const string MacOS = "macOS";
|
||||||
|
public const string Linux = "Linux";
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
namespace ElectronNET.IntegrationTests.Common
|
|
||||||
{
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
|
|
||||||
[AttributeUsage(AttributeTargets.Method)]
|
|
||||||
internal sealed class SkipOnWslFactAttribute : FactAttribute
|
|
||||||
{
|
|
||||||
private static readonly bool IsOnWsl;
|
|
||||||
|
|
||||||
static SkipOnWslFactAttribute()
|
|
||||||
{
|
|
||||||
IsOnWsl = DetectWsl();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Initializes a new instance of the <see cref="SkipOnWslFactAttribute" /> class.
|
|
||||||
/// </summary>
|
|
||||||
public SkipOnWslFactAttribute()
|
|
||||||
{
|
|
||||||
if (IsOnWsl)
|
|
||||||
{
|
|
||||||
this.Skip = "Skipping test on WSL environment.";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool DetectWsl()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (!RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WSL_DISTRO_NAME")) ||
|
|
||||||
!string.IsNullOrEmpty(Environment.GetEnvironmentVariable("WSL_INTEROP")))
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user