├── .github └── FUNDING.yml ├── .gitignore ├── .idea ├── modules.xml ├── src.iml └── vcs.xml ├── LICENSE ├── README.md ├── app.js ├── default.css ├── index.html ├── main.js ├── package-lock.json ├── package.json ├── preload.js ├── renderer.js └── src ├── .idea └── .idea.QuickStart │ └── .idea │ ├── .name │ ├── indexLayout.xml │ ├── projectSettingsUpdater.xml │ └── vcs.xml ├── ExternalLibrary ├── ExternalLibrary.csproj └── Libarary.cs ├── QuickStart.Core └── QuickStart.Core.csproj ├── QuickStart.Standard └── QuickStart.Standard.csproj ├── QuickStart.sln └── shared ├── ExternalLibarary.cs └── LocalMethods.cs /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [agracio] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry 12 | polar: # Replace with a single Polar username 13 | buy_me_a_coffee: # Replace with a single Buy Me a Coffee username 14 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 15 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/workspace.xml 2 | node_modules/ 3 | .vs/ 4 | bin/ 5 | obj/ 6 | /src/.idea/.idea.QuickStart/.idea/workspace.xml 7 | /src/.idea/.idea.QuickStart/.idea/contentModel.xml 8 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/src.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Quick start for [electron-edge-js](https://github.com/agracio/electron-edge-js) 2 | 3 | ## electron-edge-js-quick-start 4 | 5 | 1. Install dependencies `npm install` 6 | 2. Build dotnet project `dotnet build src/QuickStart.sln` 7 | 3. To run the app using .NET Core use `npm start` 8 | 4. To run the app using .NET Standard use `npm run start:standard` 9 | -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | const { ipcMain} = require("electron"); 2 | const path = require('path'); 3 | var net = process.argv[1].replace('--', ''); 4 | var framework = net.charAt(0).toUpperCase() + net.substr(1); 5 | var namespace = 'QuickStart.' + framework; 6 | if(net === 'core') net = ''; 7 | var version = net === 'standard' ? '2.0' : '8.0' 8 | 9 | const baseNetAppPath = path.join(__dirname, '/src/'+ namespace +'/bin/Debug/net' + net + version); 10 | //const baseNetAppPath = path.join(__dirname, '/src/QuickStart.Core/bin/Release/net8.0/win-x64/publish'); 11 | 12 | process.env.EDGE_USE_CORECLR = 1; 13 | if(net !== 'standard') 14 | { 15 | process.env.EDGE_APP_ROOT = baseNetAppPath; 16 | } 17 | 18 | var edge = require('electron-edge-js'); 19 | 20 | var baseDll = path.join(baseNetAppPath, namespace + '.dll'); 21 | 22 | var localTypeName = 'QuickStart.LocalMethods'; 23 | var externalTypeName = 'QuickStart.ExternalMethods'; 24 | 25 | var getAppDomainDirectory = edge.func({ 26 | assemblyFile: baseDll, 27 | typeName: localTypeName, 28 | methodName: 'GetAppDomainDirectory' 29 | }); 30 | 31 | var getCurrentTime = edge.func({ 32 | assemblyFile: baseDll, 33 | typeName: localTypeName, 34 | methodName: 'GetCurrentTime' 35 | }); 36 | 37 | var useDynamicInput = edge.func({ 38 | assemblyFile: baseDll, 39 | typeName: localTypeName, 40 | methodName: 'UseDynamicInput' 41 | }); 42 | 43 | var getPerson = edge.func({ 44 | assemblyFile: baseDll, 45 | typeName: externalTypeName, 46 | methodName: 'GetPersonInfo' 47 | }); 48 | 49 | var handleException = edge.func({ 50 | assemblyFile: baseDll, 51 | typeName: localTypeName, 52 | methodName: 'ThrowException' 53 | }); 54 | 55 | if(net !== 'standard'){ 56 | var getInlinePerson = edge.func({ 57 | source: function () {/* 58 | using System.Threading.Tasks; 59 | using System; 60 | 61 | public class Person 62 | { 63 | public Person(string name, string email, int age) 64 | { 65 | Id = Guid.NewGuid(); 66 | Name = name; 67 | Email = email; 68 | Age = age; 69 | } 70 | public Guid Id {get;} 71 | public string Name {get;set;} 72 | public string Email {get;set;} 73 | public int Age {get;set;} 74 | } 75 | 76 | public class Startup 77 | { 78 | public async Task Invoke(dynamic input) 79 | { 80 | return new Person(input.name, input.email, input.age); 81 | } 82 | } 83 | */} 84 | }); 85 | } 86 | 87 | exports.run = function (window) { 88 | 89 | if(net !== 'standard'){ 90 | getInlinePerson({name: 'Peter Smith', email: 'peter.smith@electron-edge-js-quick-start.com', age: 30}, function(error, result) { 91 | if (error) throw error; 92 | window.webContents.send("fromMain", 'getItem', JSON.stringify( result, null, 2 )); 93 | }); 94 | } 95 | else{ 96 | window.webContents.send("fromMain", 'getItem', 'Excluded from .NET STandard run'); 97 | } 98 | 99 | getAppDomainDirectory('', function(error, result) { 100 | if (error) throw error; 101 | window.webContents.send("fromMain", 'getAppDomainDirectory', result); 102 | }); 103 | getCurrentTime('', function(error, result) { 104 | if (error) throw error; 105 | window.webContents.send("fromMain", 'getCurrentTime', result); 106 | }); 107 | 108 | useDynamicInput({framework: framework, node: 'Node.Js'}, function(error, result) { 109 | if (error) throw error; 110 | window.webContents.send("fromMain", 'useDynamicInput', result); 111 | }); 112 | 113 | if(net !== 'standard'){ 114 | try{ 115 | handleException('', function(error, result) { }); 116 | 117 | }catch(e){ 118 | window.webContents.send("fromMain", 'handleException', e.Message); 119 | } 120 | } 121 | else{ 122 | window.webContents.send("fromMain", 'handleException', 'Excluded from .NET STandard run'); 123 | } 124 | 125 | getPerson({name: 'John Smith', email: 'john.smith@electron-edge-js-quick-start.com', age: 35}, function(error, result) { 126 | if (error) throw error; 127 | window.webContents.send("fromMain", 'getPerson', JSON.stringify( result, null, 2 )); 128 | }); 129 | } 130 | -------------------------------------------------------------------------------- /default.css: -------------------------------------------------------------------------------- 1 | body{ 2 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 3 | font-size: 14px; 4 | color: #646464; 5 | background-color: #fff; 6 | } 7 | 8 | div{ 9 | display: block; 10 | } 11 | 12 | table{ 13 | /*margin-top: 4px;*/ 14 | width: 100%; 15 | } 16 | 17 | th{ 18 | border-left: 1px solid #EBEBED; 19 | border-bottom: 1px solid #EBEBED; 20 | border-top: 1px solid #EBEBED; 21 | color: #3E3E49; 22 | background: #F6F6F6; 23 | height: 2em; 24 | vertical-align: middle; 25 | text-align: left; 26 | padding: 0 4px 0 4px; 27 | font-weight: 500; 28 | font-size:13px; 29 | } 30 | 31 | thead>tr{ 32 | border-right: 1px solid rgb(235, 235, 237); 33 | } 34 | 35 | tr{ 36 | border-bottom: 1px dotted #EBEBED; 37 | border-left: 1px dotted #EBEBED; 38 | } 39 | 40 | td { 41 | padding: 0 4px 0 4px; 42 | overflow: hidden; 43 | text-overflow: ellipsis; 44 | white-space: nowrap; 45 | color: #000000; 46 | border-right: 1px dotted #EBEBED; 47 | /*vertical-align: top;*/ 48 | height: 20px; 49 | font-size: 0.9em; 50 | min-width: 160px; 51 | } 52 | 53 | td.method{ 54 | max-width: 160px; 55 | width: 160px; 56 | } 57 | 58 | th.method{ 59 | max-width: 160px; 60 | width: 160px; 61 | } 62 | 63 | tbody>tr:hover{ 64 | background-color: #F2F6F9; 65 | } -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | electron-edge-js Quick Start 13 | 14 | 15 | 16 | 17 |

18 | Quick start for electron-edge-js module using .NET 19 | 22 | and Electron 23 | 26 |

27 | 28 | 29 | 30 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 |
31 | 32 | Calling inline c# code 33 | 34 |
MethodResult
GetPersonInfo
45 |
46 | 47 | 48 | 49 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 |
50 | 51 | Calling local methods from 52 | 55 | 56 |
MethodResult
GetAppDomainDirectory
GetCurrentTime
Handle .NET Exception
UseDynamicInput
79 |
80 | 81 | 82 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 |
83 | 84 | Calling external library methods using 85 | 88 | wrapper 89 | 90 |
MethodResult
GetPersonInfo
101 | 102 | 103 | -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | process.env['ELECTRON_DISABLE_SECURITY_WARNINGS']=true 2 | const {app, BrowserWindow, ipcMain} = require("electron"); 3 | const runner = require('./app.js') 4 | 5 | var version = process.argv[1].replace('--', ''); 6 | 7 | // Keep a global reference of the window object, if you don't, the window will 8 | // be closed automatically when the JavaScript object is garbage collected. 9 | let mainWindow; 10 | 11 | function createWindow () { 12 | // Create the browser window. 13 | mainWindow = new BrowserWindow({ 14 | width: 1024, 15 | height: 750, 16 | webPreferences:{ 17 | nodeIntegration: false, 18 | nodeIntegrationInWorker: false, 19 | contextIsolation: true, 20 | preload: `${__dirname}/preload.js`, 21 | } 22 | }); 23 | 24 | // and load the index.html of the app. 25 | mainWindow.loadURL(`file://${__dirname}/index.html?version=${version}&electron=${process.versions.electron}`); 26 | 27 | // Open the DevTools. 28 | // mainWindow.webContents.openDevTools() 29 | 30 | // Emitted when the window is closed. 31 | mainWindow.on('closed', function () { 32 | // Dereference the window object, usually you would store windows 33 | // in an array if your app supports multi windows, this is the time 34 | // when you should delete the corresponding element. 35 | mainWindow = null 36 | }) 37 | } 38 | 39 | // This method will be called when Electron has finished 40 | // initialization and is ready to create browser windows. 41 | // Some APIs can only be used after this event occurs. 42 | app.on('ready', createWindow); 43 | 44 | // Quit when all windows are closed. 45 | app.on('window-all-closed', function () { 46 | // On OS X it is common for applications and their menu bar 47 | // to stay active until the user quits explicitly with Cmd + Q 48 | //if (process.platform !== 'darwin') { 49 | app.quit() 50 | //} 51 | }); 52 | 53 | app.on('activate', function () { 54 | // On OS X it's common to re-create a window in the app when the 55 | // dock icon is clicked and there are no other windows open. 56 | if (mainWindow === null) { 57 | createWindow(); 58 | } 59 | }); 60 | 61 | ipcMain.on("run", (event, args) => { 62 | runner.run(mainWindow); 63 | }); 64 | 65 | // In this file you can include the rest of your app's specific main process 66 | // code. You can also put them in separate files and require them here. 67 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-edge-js-quick-start", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "electron-edge-js-quick-start", 9 | "version": "1.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "electron": "^36.2.0", 13 | "electron-edge-js": "^36.0.0" 14 | } 15 | }, 16 | "node_modules/@electron/get": { 17 | "version": "2.0.2", 18 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", 19 | "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", 20 | "dependencies": { 21 | "debug": "^4.1.1", 22 | "env-paths": "^2.2.0", 23 | "fs-extra": "^8.1.0", 24 | "got": "^11.8.5", 25 | "progress": "^2.0.3", 26 | "semver": "^6.2.0", 27 | "sumchecker": "^3.0.1" 28 | }, 29 | "engines": { 30 | "node": ">=12" 31 | }, 32 | "optionalDependencies": { 33 | "global-agent": "^3.0.0" 34 | } 35 | }, 36 | "node_modules/@sindresorhus/is": { 37 | "version": "4.6.0", 38 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", 39 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", 40 | "engines": { 41 | "node": ">=10" 42 | }, 43 | "funding": { 44 | "url": "https://github.com/sindresorhus/is?sponsor=1" 45 | } 46 | }, 47 | "node_modules/@szmarczak/http-timer": { 48 | "version": "4.0.6", 49 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", 50 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", 51 | "dependencies": { 52 | "defer-to-connect": "^2.0.0" 53 | }, 54 | "engines": { 55 | "node": ">=10" 56 | } 57 | }, 58 | "node_modules/@types/cacheable-request": { 59 | "version": "6.0.3", 60 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", 61 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", 62 | "dependencies": { 63 | "@types/http-cache-semantics": "*", 64 | "@types/keyv": "^3.1.4", 65 | "@types/node": "*", 66 | "@types/responselike": "^1.0.0" 67 | } 68 | }, 69 | "node_modules/@types/http-cache-semantics": { 70 | "version": "4.0.1", 71 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", 72 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" 73 | }, 74 | "node_modules/@types/keyv": { 75 | "version": "3.1.4", 76 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", 77 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", 78 | "dependencies": { 79 | "@types/node": "*" 80 | } 81 | }, 82 | "node_modules/@types/node": { 83 | "version": "22.14.1", 84 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", 85 | "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", 86 | "license": "MIT", 87 | "dependencies": { 88 | "undici-types": "~6.21.0" 89 | } 90 | }, 91 | "node_modules/@types/responselike": { 92 | "version": "1.0.0", 93 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 94 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 95 | "dependencies": { 96 | "@types/node": "*" 97 | } 98 | }, 99 | "node_modules/@types/yauzl": { 100 | "version": "2.10.0", 101 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 102 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 103 | "optional": true, 104 | "dependencies": { 105 | "@types/node": "*" 106 | } 107 | }, 108 | "node_modules/boolean": { 109 | "version": "3.2.0", 110 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", 111 | "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", 112 | "optional": true 113 | }, 114 | "node_modules/buffer-crc32": { 115 | "version": "0.2.13", 116 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 117 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", 118 | "engines": { 119 | "node": "*" 120 | } 121 | }, 122 | "node_modules/cacheable-lookup": { 123 | "version": "5.0.4", 124 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 125 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", 126 | "engines": { 127 | "node": ">=10.6.0" 128 | } 129 | }, 130 | "node_modules/cacheable-request": { 131 | "version": "7.0.2", 132 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 133 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 134 | "dependencies": { 135 | "clone-response": "^1.0.2", 136 | "get-stream": "^5.1.0", 137 | "http-cache-semantics": "^4.0.0", 138 | "keyv": "^4.0.0", 139 | "lowercase-keys": "^2.0.0", 140 | "normalize-url": "^6.0.1", 141 | "responselike": "^2.0.0" 142 | }, 143 | "engines": { 144 | "node": ">=8" 145 | } 146 | }, 147 | "node_modules/clone-response": { 148 | "version": "1.0.3", 149 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 150 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 151 | "dependencies": { 152 | "mimic-response": "^1.0.0" 153 | }, 154 | "funding": { 155 | "url": "https://github.com/sponsors/sindresorhus" 156 | } 157 | }, 158 | "node_modules/debug": { 159 | "version": "4.3.4", 160 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 161 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 162 | "dependencies": { 163 | "ms": "2.1.2" 164 | }, 165 | "engines": { 166 | "node": ">=6.0" 167 | }, 168 | "peerDependenciesMeta": { 169 | "supports-color": { 170 | "optional": true 171 | } 172 | } 173 | }, 174 | "node_modules/decompress-response": { 175 | "version": "6.0.0", 176 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 177 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 178 | "dependencies": { 179 | "mimic-response": "^3.1.0" 180 | }, 181 | "engines": { 182 | "node": ">=10" 183 | }, 184 | "funding": { 185 | "url": "https://github.com/sponsors/sindresorhus" 186 | } 187 | }, 188 | "node_modules/decompress-response/node_modules/mimic-response": { 189 | "version": "3.1.0", 190 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 191 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", 192 | "engines": { 193 | "node": ">=10" 194 | }, 195 | "funding": { 196 | "url": "https://github.com/sponsors/sindresorhus" 197 | } 198 | }, 199 | "node_modules/defer-to-connect": { 200 | "version": "2.0.1", 201 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 202 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", 203 | "engines": { 204 | "node": ">=10" 205 | } 206 | }, 207 | "node_modules/define-properties": { 208 | "version": "1.1.4", 209 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 210 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 211 | "optional": true, 212 | "dependencies": { 213 | "has-property-descriptors": "^1.0.0", 214 | "object-keys": "^1.1.1" 215 | }, 216 | "engines": { 217 | "node": ">= 0.4" 218 | }, 219 | "funding": { 220 | "url": "https://github.com/sponsors/ljharb" 221 | } 222 | }, 223 | "node_modules/detect-node": { 224 | "version": "2.1.0", 225 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", 226 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", 227 | "optional": true 228 | }, 229 | "node_modules/edge-cs": { 230 | "name": "@agracio/edge-cs", 231 | "version": "1.3.7", 232 | "resolved": "https://registry.npmjs.org/@agracio/edge-cs/-/edge-cs-1.3.7.tgz", 233 | "integrity": "sha512-sFwGCGmoa9JdODegeDFJL4IH6N8IgDobxbS31BiXaiOdf8bC7EyHigFp0WYRKhIgK72E9nLnNwiRJRMO/AYGdg==", 234 | "license": "MIT", 235 | "engines": { 236 | "node": ">= 0.8" 237 | } 238 | }, 239 | "node_modules/electron": { 240 | "version": "36.2.0", 241 | "resolved": "https://registry.npmjs.org/electron/-/electron-36.2.0.tgz", 242 | "integrity": "sha512-5yldoRjBKxPQfI0QMX+qq750o3Nl8N1SZnJqOPMq0gZ6rIJ+7y4ZLp808GrFwjfTm05TYgq3GSD8FGuKQZqwEw==", 243 | "hasInstallScript": true, 244 | "license": "MIT", 245 | "dependencies": { 246 | "@electron/get": "^2.0.0", 247 | "@types/node": "^22.7.7", 248 | "extract-zip": "^2.0.1" 249 | }, 250 | "bin": { 251 | "electron": "cli.js" 252 | }, 253 | "engines": { 254 | "node": ">= 12.20.55" 255 | } 256 | }, 257 | "node_modules/electron-edge-js": { 258 | "version": "36.0.0", 259 | "resolved": "https://registry.npmjs.org/electron-edge-js/-/electron-edge-js-36.0.0.tgz", 260 | "integrity": "sha512-/N2ynFSt+uWYgrHFhqICz4+lRCQxyVjt9XynMT/femq7jxFXJb/LB96effseioPwCYANfOssKCPUZBnLGkSBKQ==", 261 | "hasInstallScript": true, 262 | "license": "MIT", 263 | "dependencies": { 264 | "edge-cs": "npm:@agracio/edge-cs@^1.3.7", 265 | "nan": "^2.22.2" 266 | }, 267 | "engines": { 268 | "node": ">=16.0.0", 269 | "npm": ">=8.0.0" 270 | } 271 | }, 272 | "node_modules/end-of-stream": { 273 | "version": "1.4.4", 274 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 275 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 276 | "dependencies": { 277 | "once": "^1.4.0" 278 | } 279 | }, 280 | "node_modules/env-paths": { 281 | "version": "2.2.1", 282 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 283 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 284 | "engines": { 285 | "node": ">=6" 286 | } 287 | }, 288 | "node_modules/es6-error": { 289 | "version": "4.1.1", 290 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 291 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 292 | "optional": true 293 | }, 294 | "node_modules/escape-string-regexp": { 295 | "version": "4.0.0", 296 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 297 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 298 | "optional": true, 299 | "engines": { 300 | "node": ">=10" 301 | }, 302 | "funding": { 303 | "url": "https://github.com/sponsors/sindresorhus" 304 | } 305 | }, 306 | "node_modules/extract-zip": { 307 | "version": "2.0.1", 308 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 309 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 310 | "dependencies": { 311 | "debug": "^4.1.1", 312 | "get-stream": "^5.1.0", 313 | "yauzl": "^2.10.0" 314 | }, 315 | "bin": { 316 | "extract-zip": "cli.js" 317 | }, 318 | "engines": { 319 | "node": ">= 10.17.0" 320 | }, 321 | "optionalDependencies": { 322 | "@types/yauzl": "^2.9.1" 323 | } 324 | }, 325 | "node_modules/fd-slicer": { 326 | "version": "1.1.0", 327 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 328 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 329 | "dependencies": { 330 | "pend": "~1.2.0" 331 | } 332 | }, 333 | "node_modules/fs-extra": { 334 | "version": "8.1.0", 335 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 336 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 337 | "dependencies": { 338 | "graceful-fs": "^4.2.0", 339 | "jsonfile": "^4.0.0", 340 | "universalify": "^0.1.0" 341 | }, 342 | "engines": { 343 | "node": ">=6 <7 || >=8" 344 | } 345 | }, 346 | "node_modules/function-bind": { 347 | "version": "1.1.1", 348 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 349 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 350 | "optional": true 351 | }, 352 | "node_modules/get-intrinsic": { 353 | "version": "1.1.3", 354 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 355 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 356 | "optional": true, 357 | "dependencies": { 358 | "function-bind": "^1.1.1", 359 | "has": "^1.0.3", 360 | "has-symbols": "^1.0.3" 361 | }, 362 | "funding": { 363 | "url": "https://github.com/sponsors/ljharb" 364 | } 365 | }, 366 | "node_modules/get-stream": { 367 | "version": "5.2.0", 368 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 369 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 370 | "dependencies": { 371 | "pump": "^3.0.0" 372 | }, 373 | "engines": { 374 | "node": ">=8" 375 | }, 376 | "funding": { 377 | "url": "https://github.com/sponsors/sindresorhus" 378 | } 379 | }, 380 | "node_modules/global-agent": { 381 | "version": "3.0.0", 382 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", 383 | "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", 384 | "optional": true, 385 | "dependencies": { 386 | "boolean": "^3.0.1", 387 | "es6-error": "^4.1.1", 388 | "matcher": "^3.0.0", 389 | "roarr": "^2.15.3", 390 | "semver": "^7.3.2", 391 | "serialize-error": "^7.0.1" 392 | }, 393 | "engines": { 394 | "node": ">=10.0" 395 | } 396 | }, 397 | "node_modules/global-agent/node_modules/semver": { 398 | "version": "7.6.1", 399 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", 400 | "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", 401 | "optional": true, 402 | "bin": { 403 | "semver": "bin/semver.js" 404 | }, 405 | "engines": { 406 | "node": ">=10" 407 | } 408 | }, 409 | "node_modules/globalthis": { 410 | "version": "1.0.3", 411 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 412 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 413 | "optional": true, 414 | "dependencies": { 415 | "define-properties": "^1.1.3" 416 | }, 417 | "engines": { 418 | "node": ">= 0.4" 419 | }, 420 | "funding": { 421 | "url": "https://github.com/sponsors/ljharb" 422 | } 423 | }, 424 | "node_modules/got": { 425 | "version": "11.8.6", 426 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", 427 | "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", 428 | "dependencies": { 429 | "@sindresorhus/is": "^4.0.0", 430 | "@szmarczak/http-timer": "^4.0.5", 431 | "@types/cacheable-request": "^6.0.1", 432 | "@types/responselike": "^1.0.0", 433 | "cacheable-lookup": "^5.0.3", 434 | "cacheable-request": "^7.0.2", 435 | "decompress-response": "^6.0.0", 436 | "http2-wrapper": "^1.0.0-beta.5.2", 437 | "lowercase-keys": "^2.0.0", 438 | "p-cancelable": "^2.0.0", 439 | "responselike": "^2.0.0" 440 | }, 441 | "engines": { 442 | "node": ">=10.19.0" 443 | }, 444 | "funding": { 445 | "url": "https://github.com/sindresorhus/got?sponsor=1" 446 | } 447 | }, 448 | "node_modules/graceful-fs": { 449 | "version": "4.2.10", 450 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 451 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 452 | }, 453 | "node_modules/has": { 454 | "version": "1.0.3", 455 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 456 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 457 | "optional": true, 458 | "dependencies": { 459 | "function-bind": "^1.1.1" 460 | }, 461 | "engines": { 462 | "node": ">= 0.4.0" 463 | } 464 | }, 465 | "node_modules/has-property-descriptors": { 466 | "version": "1.0.0", 467 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 468 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 469 | "optional": true, 470 | "dependencies": { 471 | "get-intrinsic": "^1.1.1" 472 | }, 473 | "funding": { 474 | "url": "https://github.com/sponsors/ljharb" 475 | } 476 | }, 477 | "node_modules/has-symbols": { 478 | "version": "1.0.3", 479 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 480 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 481 | "optional": true, 482 | "engines": { 483 | "node": ">= 0.4" 484 | }, 485 | "funding": { 486 | "url": "https://github.com/sponsors/ljharb" 487 | } 488 | }, 489 | "node_modules/http-cache-semantics": { 490 | "version": "4.1.1", 491 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 492 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 493 | }, 494 | "node_modules/http2-wrapper": { 495 | "version": "1.0.3", 496 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 497 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 498 | "dependencies": { 499 | "quick-lru": "^5.1.1", 500 | "resolve-alpn": "^1.0.0" 501 | }, 502 | "engines": { 503 | "node": ">=10.19.0" 504 | } 505 | }, 506 | "node_modules/json-buffer": { 507 | "version": "3.0.1", 508 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 509 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 510 | }, 511 | "node_modules/json-stringify-safe": { 512 | "version": "5.0.1", 513 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 514 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 515 | "optional": true 516 | }, 517 | "node_modules/jsonfile": { 518 | "version": "4.0.0", 519 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 520 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 521 | "optionalDependencies": { 522 | "graceful-fs": "^4.1.6" 523 | } 524 | }, 525 | "node_modules/keyv": { 526 | "version": "4.5.2", 527 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", 528 | "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", 529 | "dependencies": { 530 | "json-buffer": "3.0.1" 531 | } 532 | }, 533 | "node_modules/lowercase-keys": { 534 | "version": "2.0.0", 535 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 536 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", 537 | "engines": { 538 | "node": ">=8" 539 | } 540 | }, 541 | "node_modules/matcher": { 542 | "version": "3.0.0", 543 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", 544 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", 545 | "optional": true, 546 | "dependencies": { 547 | "escape-string-regexp": "^4.0.0" 548 | }, 549 | "engines": { 550 | "node": ">=10" 551 | } 552 | }, 553 | "node_modules/mimic-response": { 554 | "version": "1.0.1", 555 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 556 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", 557 | "engines": { 558 | "node": ">=4" 559 | } 560 | }, 561 | "node_modules/ms": { 562 | "version": "2.1.2", 563 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 564 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 565 | }, 566 | "node_modules/nan": { 567 | "version": "2.22.2", 568 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", 569 | "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", 570 | "license": "MIT" 571 | }, 572 | "node_modules/normalize-url": { 573 | "version": "6.1.0", 574 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 575 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", 576 | "engines": { 577 | "node": ">=10" 578 | }, 579 | "funding": { 580 | "url": "https://github.com/sponsors/sindresorhus" 581 | } 582 | }, 583 | "node_modules/object-keys": { 584 | "version": "1.1.1", 585 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 586 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 587 | "optional": true, 588 | "engines": { 589 | "node": ">= 0.4" 590 | } 591 | }, 592 | "node_modules/once": { 593 | "version": "1.4.0", 594 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 595 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 596 | "dependencies": { 597 | "wrappy": "1" 598 | } 599 | }, 600 | "node_modules/p-cancelable": { 601 | "version": "2.1.1", 602 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 603 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", 604 | "engines": { 605 | "node": ">=8" 606 | } 607 | }, 608 | "node_modules/pend": { 609 | "version": "1.2.0", 610 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 611 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 612 | }, 613 | "node_modules/progress": { 614 | "version": "2.0.3", 615 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 616 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", 617 | "engines": { 618 | "node": ">=0.4.0" 619 | } 620 | }, 621 | "node_modules/pump": { 622 | "version": "3.0.0", 623 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 624 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 625 | "dependencies": { 626 | "end-of-stream": "^1.1.0", 627 | "once": "^1.3.1" 628 | } 629 | }, 630 | "node_modules/quick-lru": { 631 | "version": "5.1.1", 632 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 633 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", 634 | "engines": { 635 | "node": ">=10" 636 | }, 637 | "funding": { 638 | "url": "https://github.com/sponsors/sindresorhus" 639 | } 640 | }, 641 | "node_modules/resolve-alpn": { 642 | "version": "1.2.1", 643 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 644 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 645 | }, 646 | "node_modules/responselike": { 647 | "version": "2.0.1", 648 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", 649 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", 650 | "dependencies": { 651 | "lowercase-keys": "^2.0.0" 652 | }, 653 | "funding": { 654 | "url": "https://github.com/sponsors/sindresorhus" 655 | } 656 | }, 657 | "node_modules/roarr": { 658 | "version": "2.15.4", 659 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", 660 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", 661 | "optional": true, 662 | "dependencies": { 663 | "boolean": "^3.0.1", 664 | "detect-node": "^2.0.4", 665 | "globalthis": "^1.0.1", 666 | "json-stringify-safe": "^5.0.1", 667 | "semver-compare": "^1.0.0", 668 | "sprintf-js": "^1.1.2" 669 | }, 670 | "engines": { 671 | "node": ">=8.0" 672 | } 673 | }, 674 | "node_modules/semver": { 675 | "version": "6.3.1", 676 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 677 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 678 | "bin": { 679 | "semver": "bin/semver.js" 680 | } 681 | }, 682 | "node_modules/semver-compare": { 683 | "version": "1.0.0", 684 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 685 | "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", 686 | "optional": true 687 | }, 688 | "node_modules/serialize-error": { 689 | "version": "7.0.1", 690 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", 691 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", 692 | "optional": true, 693 | "dependencies": { 694 | "type-fest": "^0.13.1" 695 | }, 696 | "engines": { 697 | "node": ">=10" 698 | }, 699 | "funding": { 700 | "url": "https://github.com/sponsors/sindresorhus" 701 | } 702 | }, 703 | "node_modules/sprintf-js": { 704 | "version": "1.1.2", 705 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 706 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 707 | "optional": true 708 | }, 709 | "node_modules/sumchecker": { 710 | "version": "3.0.1", 711 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", 712 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", 713 | "dependencies": { 714 | "debug": "^4.1.0" 715 | }, 716 | "engines": { 717 | "node": ">= 8.0" 718 | } 719 | }, 720 | "node_modules/type-fest": { 721 | "version": "0.13.1", 722 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", 723 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", 724 | "optional": true, 725 | "engines": { 726 | "node": ">=10" 727 | }, 728 | "funding": { 729 | "url": "https://github.com/sponsors/sindresorhus" 730 | } 731 | }, 732 | "node_modules/undici-types": { 733 | "version": "6.21.0", 734 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 735 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 736 | "license": "MIT" 737 | }, 738 | "node_modules/universalify": { 739 | "version": "0.1.2", 740 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 741 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", 742 | "engines": { 743 | "node": ">= 4.0.0" 744 | } 745 | }, 746 | "node_modules/wrappy": { 747 | "version": "1.0.2", 748 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 749 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 750 | }, 751 | "node_modules/yauzl": { 752 | "version": "2.10.0", 753 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 754 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 755 | "dependencies": { 756 | "buffer-crc32": "~0.2.3", 757 | "fd-slicer": "~1.1.0" 758 | } 759 | } 760 | }, 761 | "dependencies": { 762 | "@electron/get": { 763 | "version": "2.0.2", 764 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.2.tgz", 765 | "integrity": "sha512-eFZVFoRXb3GFGd7Ak7W4+6jBl9wBtiZ4AaYOse97ej6mKj5tkyO0dUnUChs1IhJZtx1BENo4/p4WUTXpi6vT+g==", 766 | "requires": { 767 | "debug": "^4.1.1", 768 | "env-paths": "^2.2.0", 769 | "fs-extra": "^8.1.0", 770 | "global-agent": "^3.0.0", 771 | "got": "^11.8.5", 772 | "progress": "^2.0.3", 773 | "semver": "^6.2.0", 774 | "sumchecker": "^3.0.1" 775 | } 776 | }, 777 | "@sindresorhus/is": { 778 | "version": "4.6.0", 779 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", 780 | "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" 781 | }, 782 | "@szmarczak/http-timer": { 783 | "version": "4.0.6", 784 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", 785 | "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", 786 | "requires": { 787 | "defer-to-connect": "^2.0.0" 788 | } 789 | }, 790 | "@types/cacheable-request": { 791 | "version": "6.0.3", 792 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", 793 | "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", 794 | "requires": { 795 | "@types/http-cache-semantics": "*", 796 | "@types/keyv": "^3.1.4", 797 | "@types/node": "*", 798 | "@types/responselike": "^1.0.0" 799 | } 800 | }, 801 | "@types/http-cache-semantics": { 802 | "version": "4.0.1", 803 | "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", 804 | "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" 805 | }, 806 | "@types/keyv": { 807 | "version": "3.1.4", 808 | "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", 809 | "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", 810 | "requires": { 811 | "@types/node": "*" 812 | } 813 | }, 814 | "@types/node": { 815 | "version": "22.14.1", 816 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", 817 | "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", 818 | "requires": { 819 | "undici-types": "~6.21.0" 820 | } 821 | }, 822 | "@types/responselike": { 823 | "version": "1.0.0", 824 | "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", 825 | "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", 826 | "requires": { 827 | "@types/node": "*" 828 | } 829 | }, 830 | "@types/yauzl": { 831 | "version": "2.10.0", 832 | "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", 833 | "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", 834 | "optional": true, 835 | "requires": { 836 | "@types/node": "*" 837 | } 838 | }, 839 | "boolean": { 840 | "version": "3.2.0", 841 | "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", 842 | "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", 843 | "optional": true 844 | }, 845 | "buffer-crc32": { 846 | "version": "0.2.13", 847 | "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", 848 | "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==" 849 | }, 850 | "cacheable-lookup": { 851 | "version": "5.0.4", 852 | "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", 853 | "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" 854 | }, 855 | "cacheable-request": { 856 | "version": "7.0.2", 857 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", 858 | "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", 859 | "requires": { 860 | "clone-response": "^1.0.2", 861 | "get-stream": "^5.1.0", 862 | "http-cache-semantics": "^4.0.0", 863 | "keyv": "^4.0.0", 864 | "lowercase-keys": "^2.0.0", 865 | "normalize-url": "^6.0.1", 866 | "responselike": "^2.0.0" 867 | } 868 | }, 869 | "clone-response": { 870 | "version": "1.0.3", 871 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", 872 | "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", 873 | "requires": { 874 | "mimic-response": "^1.0.0" 875 | } 876 | }, 877 | "debug": { 878 | "version": "4.3.4", 879 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 880 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 881 | "requires": { 882 | "ms": "2.1.2" 883 | } 884 | }, 885 | "decompress-response": { 886 | "version": "6.0.0", 887 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", 888 | "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", 889 | "requires": { 890 | "mimic-response": "^3.1.0" 891 | }, 892 | "dependencies": { 893 | "mimic-response": { 894 | "version": "3.1.0", 895 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", 896 | "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" 897 | } 898 | } 899 | }, 900 | "defer-to-connect": { 901 | "version": "2.0.1", 902 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", 903 | "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" 904 | }, 905 | "define-properties": { 906 | "version": "1.1.4", 907 | "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", 908 | "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", 909 | "optional": true, 910 | "requires": { 911 | "has-property-descriptors": "^1.0.0", 912 | "object-keys": "^1.1.1" 913 | } 914 | }, 915 | "detect-node": { 916 | "version": "2.1.0", 917 | "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", 918 | "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", 919 | "optional": true 920 | }, 921 | "edge-cs": { 922 | "version": "npm:@agracio/edge-cs@1.3.7", 923 | "resolved": "https://registry.npmjs.org/@agracio/edge-cs/-/edge-cs-1.3.7.tgz", 924 | "integrity": "sha512-sFwGCGmoa9JdODegeDFJL4IH6N8IgDobxbS31BiXaiOdf8bC7EyHigFp0WYRKhIgK72E9nLnNwiRJRMO/AYGdg==" 925 | }, 926 | "electron": { 927 | "version": "36.2.0", 928 | "resolved": "https://registry.npmjs.org/electron/-/electron-36.2.0.tgz", 929 | "integrity": "sha512-5yldoRjBKxPQfI0QMX+qq750o3Nl8N1SZnJqOPMq0gZ6rIJ+7y4ZLp808GrFwjfTm05TYgq3GSD8FGuKQZqwEw==", 930 | "requires": { 931 | "@electron/get": "^2.0.0", 932 | "@types/node": "^22.7.7", 933 | "extract-zip": "^2.0.1" 934 | } 935 | }, 936 | "electron-edge-js": { 937 | "version": "36.0.0", 938 | "resolved": "https://registry.npmjs.org/electron-edge-js/-/electron-edge-js-36.0.0.tgz", 939 | "integrity": "sha512-/N2ynFSt+uWYgrHFhqICz4+lRCQxyVjt9XynMT/femq7jxFXJb/LB96effseioPwCYANfOssKCPUZBnLGkSBKQ==", 940 | "requires": { 941 | "edge-cs": "npm:@agracio/edge-cs@^1.3.7", 942 | "nan": "^2.22.2" 943 | } 944 | }, 945 | "end-of-stream": { 946 | "version": "1.4.4", 947 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 948 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 949 | "requires": { 950 | "once": "^1.4.0" 951 | } 952 | }, 953 | "env-paths": { 954 | "version": "2.2.1", 955 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 956 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" 957 | }, 958 | "es6-error": { 959 | "version": "4.1.1", 960 | "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", 961 | "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", 962 | "optional": true 963 | }, 964 | "escape-string-regexp": { 965 | "version": "4.0.0", 966 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 967 | "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 968 | "optional": true 969 | }, 970 | "extract-zip": { 971 | "version": "2.0.1", 972 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", 973 | "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", 974 | "requires": { 975 | "@types/yauzl": "^2.9.1", 976 | "debug": "^4.1.1", 977 | "get-stream": "^5.1.0", 978 | "yauzl": "^2.10.0" 979 | } 980 | }, 981 | "fd-slicer": { 982 | "version": "1.1.0", 983 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", 984 | "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", 985 | "requires": { 986 | "pend": "~1.2.0" 987 | } 988 | }, 989 | "fs-extra": { 990 | "version": "8.1.0", 991 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", 992 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", 993 | "requires": { 994 | "graceful-fs": "^4.2.0", 995 | "jsonfile": "^4.0.0", 996 | "universalify": "^0.1.0" 997 | } 998 | }, 999 | "function-bind": { 1000 | "version": "1.1.1", 1001 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1002 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1003 | "optional": true 1004 | }, 1005 | "get-intrinsic": { 1006 | "version": "1.1.3", 1007 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1008 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1009 | "optional": true, 1010 | "requires": { 1011 | "function-bind": "^1.1.1", 1012 | "has": "^1.0.3", 1013 | "has-symbols": "^1.0.3" 1014 | } 1015 | }, 1016 | "get-stream": { 1017 | "version": "5.2.0", 1018 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", 1019 | "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", 1020 | "requires": { 1021 | "pump": "^3.0.0" 1022 | } 1023 | }, 1024 | "global-agent": { 1025 | "version": "3.0.0", 1026 | "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", 1027 | "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", 1028 | "optional": true, 1029 | "requires": { 1030 | "boolean": "^3.0.1", 1031 | "es6-error": "^4.1.1", 1032 | "matcher": "^3.0.0", 1033 | "roarr": "^2.15.3", 1034 | "semver": "^7.3.2", 1035 | "serialize-error": "^7.0.1" 1036 | }, 1037 | "dependencies": { 1038 | "semver": { 1039 | "version": "7.6.1", 1040 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.1.tgz", 1041 | "integrity": "sha512-f/vbBsu+fOiYt+lmwZV0rVwJScl46HppnOA1ZvIuBWKOTlllpyJ3bfVax76/OrhCH38dyxoDIA8K7uB963IYgA==", 1042 | "optional": true 1043 | } 1044 | } 1045 | }, 1046 | "globalthis": { 1047 | "version": "1.0.3", 1048 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", 1049 | "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", 1050 | "optional": true, 1051 | "requires": { 1052 | "define-properties": "^1.1.3" 1053 | } 1054 | }, 1055 | "got": { 1056 | "version": "11.8.6", 1057 | "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", 1058 | "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", 1059 | "requires": { 1060 | "@sindresorhus/is": "^4.0.0", 1061 | "@szmarczak/http-timer": "^4.0.5", 1062 | "@types/cacheable-request": "^6.0.1", 1063 | "@types/responselike": "^1.0.0", 1064 | "cacheable-lookup": "^5.0.3", 1065 | "cacheable-request": "^7.0.2", 1066 | "decompress-response": "^6.0.0", 1067 | "http2-wrapper": "^1.0.0-beta.5.2", 1068 | "lowercase-keys": "^2.0.0", 1069 | "p-cancelable": "^2.0.0", 1070 | "responselike": "^2.0.0" 1071 | } 1072 | }, 1073 | "graceful-fs": { 1074 | "version": "4.2.10", 1075 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", 1076 | "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" 1077 | }, 1078 | "has": { 1079 | "version": "1.0.3", 1080 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1081 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1082 | "optional": true, 1083 | "requires": { 1084 | "function-bind": "^1.1.1" 1085 | } 1086 | }, 1087 | "has-property-descriptors": { 1088 | "version": "1.0.0", 1089 | "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", 1090 | "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", 1091 | "optional": true, 1092 | "requires": { 1093 | "get-intrinsic": "^1.1.1" 1094 | } 1095 | }, 1096 | "has-symbols": { 1097 | "version": "1.0.3", 1098 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1099 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1100 | "optional": true 1101 | }, 1102 | "http-cache-semantics": { 1103 | "version": "4.1.1", 1104 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 1105 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" 1106 | }, 1107 | "http2-wrapper": { 1108 | "version": "1.0.3", 1109 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", 1110 | "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", 1111 | "requires": { 1112 | "quick-lru": "^5.1.1", 1113 | "resolve-alpn": "^1.0.0" 1114 | } 1115 | }, 1116 | "json-buffer": { 1117 | "version": "3.0.1", 1118 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", 1119 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" 1120 | }, 1121 | "json-stringify-safe": { 1122 | "version": "5.0.1", 1123 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", 1124 | "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", 1125 | "optional": true 1126 | }, 1127 | "jsonfile": { 1128 | "version": "4.0.0", 1129 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", 1130 | "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", 1131 | "requires": { 1132 | "graceful-fs": "^4.1.6" 1133 | } 1134 | }, 1135 | "keyv": { 1136 | "version": "4.5.2", 1137 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", 1138 | "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", 1139 | "requires": { 1140 | "json-buffer": "3.0.1" 1141 | } 1142 | }, 1143 | "lowercase-keys": { 1144 | "version": "2.0.0", 1145 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", 1146 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" 1147 | }, 1148 | "matcher": { 1149 | "version": "3.0.0", 1150 | "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", 1151 | "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", 1152 | "optional": true, 1153 | "requires": { 1154 | "escape-string-regexp": "^4.0.0" 1155 | } 1156 | }, 1157 | "mimic-response": { 1158 | "version": "1.0.1", 1159 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", 1160 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" 1161 | }, 1162 | "ms": { 1163 | "version": "2.1.2", 1164 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1165 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1166 | }, 1167 | "nan": { 1168 | "version": "2.22.2", 1169 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", 1170 | "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==" 1171 | }, 1172 | "normalize-url": { 1173 | "version": "6.1.0", 1174 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", 1175 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" 1176 | }, 1177 | "object-keys": { 1178 | "version": "1.1.1", 1179 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", 1180 | "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", 1181 | "optional": true 1182 | }, 1183 | "once": { 1184 | "version": "1.4.0", 1185 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1186 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1187 | "requires": { 1188 | "wrappy": "1" 1189 | } 1190 | }, 1191 | "p-cancelable": { 1192 | "version": "2.1.1", 1193 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", 1194 | "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" 1195 | }, 1196 | "pend": { 1197 | "version": "1.2.0", 1198 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", 1199 | "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" 1200 | }, 1201 | "progress": { 1202 | "version": "2.0.3", 1203 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 1204 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 1205 | }, 1206 | "pump": { 1207 | "version": "3.0.0", 1208 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 1209 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 1210 | "requires": { 1211 | "end-of-stream": "^1.1.0", 1212 | "once": "^1.3.1" 1213 | } 1214 | }, 1215 | "quick-lru": { 1216 | "version": "5.1.1", 1217 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1218 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 1219 | }, 1220 | "resolve-alpn": { 1221 | "version": "1.2.1", 1222 | "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", 1223 | "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" 1224 | }, 1225 | "responselike": { 1226 | "version": "2.0.1", 1227 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", 1228 | "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", 1229 | "requires": { 1230 | "lowercase-keys": "^2.0.0" 1231 | } 1232 | }, 1233 | "roarr": { 1234 | "version": "2.15.4", 1235 | "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", 1236 | "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", 1237 | "optional": true, 1238 | "requires": { 1239 | "boolean": "^3.0.1", 1240 | "detect-node": "^2.0.4", 1241 | "globalthis": "^1.0.1", 1242 | "json-stringify-safe": "^5.0.1", 1243 | "semver-compare": "^1.0.0", 1244 | "sprintf-js": "^1.1.2" 1245 | } 1246 | }, 1247 | "semver": { 1248 | "version": "6.3.1", 1249 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 1250 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" 1251 | }, 1252 | "semver-compare": { 1253 | "version": "1.0.0", 1254 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", 1255 | "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", 1256 | "optional": true 1257 | }, 1258 | "serialize-error": { 1259 | "version": "7.0.1", 1260 | "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", 1261 | "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", 1262 | "optional": true, 1263 | "requires": { 1264 | "type-fest": "^0.13.1" 1265 | } 1266 | }, 1267 | "sprintf-js": { 1268 | "version": "1.1.2", 1269 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", 1270 | "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", 1271 | "optional": true 1272 | }, 1273 | "sumchecker": { 1274 | "version": "3.0.1", 1275 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", 1276 | "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", 1277 | "requires": { 1278 | "debug": "^4.1.0" 1279 | } 1280 | }, 1281 | "type-fest": { 1282 | "version": "0.13.1", 1283 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", 1284 | "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", 1285 | "optional": true 1286 | }, 1287 | "undici-types": { 1288 | "version": "6.21.0", 1289 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 1290 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" 1291 | }, 1292 | "universalify": { 1293 | "version": "0.1.2", 1294 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", 1295 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" 1296 | }, 1297 | "wrappy": { 1298 | "version": "1.0.2", 1299 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1300 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1301 | }, 1302 | "yauzl": { 1303 | "version": "2.10.0", 1304 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", 1305 | "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", 1306 | "requires": { 1307 | "buffer-crc32": "~0.2.3", 1308 | "fd-slicer": "~1.1.0" 1309 | } 1310 | } 1311 | } 1312 | } 1313 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "electron-edge-js-quick-start", 3 | "version": "1.0.0", 4 | "description": "Minimal Electron application using `electron-edge-js` with .NET", 5 | "main": "main.js", 6 | "scripts": { 7 | "start": "electron --core .", 8 | "start:standard": "electron --standard ." 9 | }, 10 | "repository": "https://github.com/agracio/electron-edge-js-quick-start", 11 | "keywords": [ 12 | "Electron", 13 | "quick", 14 | "start", 15 | "tutorial", 16 | "demo", 17 | "Edge", 18 | "Edge.js" 19 | ], 20 | "license": "MIT", 21 | "dependencies": { 22 | "electron": "^36.2.0", 23 | "electron-edge-js": "^36.0.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /preload.js: -------------------------------------------------------------------------------- 1 | /*jshint esversion: 6 */ 2 | const { 3 | contextBridge, 4 | ipcRenderer 5 | } = require("electron"); 6 | 7 | 8 | contextBridge.exposeInMainWorld( 9 | "api", { 10 | send: (channel, data) => { 11 | ipcRenderer.send(channel, data); 12 | }, 13 | receive: (channel, func) => { 14 | ipcRenderer.on(channel, (event, ...args) => func(...args)); 15 | }, 16 | } 17 | ); -------------------------------------------------------------------------------- /renderer.js: -------------------------------------------------------------------------------- 1 | 2 | window.api.send("run"); 3 | window.api.receive("fromMain", (documentId, data) => { 4 | document.getElementById(documentId).innerHTML = data; 5 | }); 6 | -------------------------------------------------------------------------------- /src/.idea/.idea.QuickStart/.idea/.name: -------------------------------------------------------------------------------- 1 | QuickStart -------------------------------------------------------------------------------- /src/.idea/.idea.QuickStart/.idea/indexLayout.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | shared 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/.idea/.idea.QuickStart/.idea/projectSettingsUpdater.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | -------------------------------------------------------------------------------- /src/.idea/.idea.QuickStart/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/ExternalLibrary/ExternalLibrary.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | netstandard2.0 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/ExternalLibrary/Libarary.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace ExternalLibrary 4 | { 5 | public class Person 6 | { 7 | public Person(string name, string email, int age) 8 | { 9 | Id = Guid.NewGuid(); 10 | Name = name; 11 | Email = email; 12 | Age = age; 13 | } 14 | public Guid Id {get;} 15 | public string Name {get;} 16 | public string Email {get;} 17 | public int Age {get;} 18 | } 19 | } -------------------------------------------------------------------------------- /src/QuickStart.Core/QuickStart.Core.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net8.0 4 | true 5 | true 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | ExternalLibarary.cs 21 | 22 | 23 | LocalMethods.cs 24 | 25 | 26 | 27 | 28 | ..\..\node_modules\electron-edge-js\lib\bootstrap\bin\Release\EdgeJs.dll 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/QuickStart.Standard/QuickStart.Standard.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | netstandard2.0 4 | true 5 | true 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | ExternalLibarary.cs 20 | 21 | 22 | LocalMethods.cs 23 | 24 | 25 | 26 | 27 | ..\..\node_modules\electron-edge-js\lib\bootstrap\bin\Release\EdgeJs.dll 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/QuickStart.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.27130.2003 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "QuickStart.Core", "QuickStart.Core\QuickStart.Core.csproj", "{667B1DD5-7337-462D-B1B5-1EA46ED0C4D0}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExternalLibrary", "ExternalLibrary\ExternalLibrary.csproj", "{63532A05-1F28-470C-906F-2FA21BCA5040}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuickStart.Standard", "QuickStart.Standard\QuickStart.Standard.csproj", "{BF7F7CC3-D4A5-40F1-B264-232D0FB6F740}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {667B1DD5-7337-462D-B1B5-1EA46ED0C4D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {667B1DD5-7337-462D-B1B5-1EA46ED0C4D0}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {667B1DD5-7337-462D-B1B5-1EA46ED0C4D0}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {667B1DD5-7337-462D-B1B5-1EA46ED0C4D0}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {63532A05-1F28-470C-906F-2FA21BCA5040}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 23 | {63532A05-1F28-470C-906F-2FA21BCA5040}.Debug|Any CPU.Build.0 = Debug|Any CPU 24 | {63532A05-1F28-470C-906F-2FA21BCA5040}.Release|Any CPU.ActiveCfg = Release|Any CPU 25 | {63532A05-1F28-470C-906F-2FA21BCA5040}.Release|Any CPU.Build.0 = Release|Any CPU 26 | {BF7F7CC3-D4A5-40F1-B264-232D0FB6F740}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 27 | {BF7F7CC3-D4A5-40F1-B264-232D0FB6F740}.Debug|Any CPU.Build.0 = Debug|Any CPU 28 | {BF7F7CC3-D4A5-40F1-B264-232D0FB6F740}.Release|Any CPU.ActiveCfg = Release|Any CPU 29 | {BF7F7CC3-D4A5-40F1-B264-232D0FB6F740}.Release|Any CPU.Build.0 = Release|Any CPU 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {8A1C8310-B88E-4A25-AC2B-78DE81D42F87} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /src/shared/ExternalLibarary.cs: -------------------------------------------------------------------------------- 1 | using System.Threading.Tasks; 2 | using ExternalLibrary; 3 | 4 | namespace QuickStart 5 | { 6 | class ExternalMethods 7 | { 8 | public async Task GetPersonInfo(dynamic input) 9 | { 10 | return await Task.Run(() => new Person(input.name, input.email, input.age)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/shared/LocalMethods.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Security.Cryptography.X509Certificates; 4 | using System.Threading.Tasks; 5 | 6 | namespace QuickStart 7 | { 8 | public class LocalMethods 9 | { 10 | public async Task GetAppDomainDirectory(dynamic input) 11 | { 12 | return AppDomain.CurrentDomain.BaseDirectory; 13 | } 14 | 15 | public async Task GetCurrentTime(dynamic input) 16 | { 17 | return DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); 18 | } 19 | 20 | public async Task UseDynamicInput(dynamic input) 21 | { 22 | return $".NET {input.framework} welcomes {input.node}"; 23 | } 24 | public async Task ThrowException(dynamic input) 25 | { 26 | throw new Exception("Sample Exception"); 27 | } 28 | 29 | public async Task ListCertificates(dynamic input) 30 | { 31 | X509Store store = new X509Store((string)input.storeName, (StoreLocation)Enum.Parse(typeof(StoreLocation), (string)input.storeLocation)); 32 | store.Open(OpenFlags.ReadOnly); 33 | try 34 | { 35 | List result = new List(); 36 | foreach (X509Certificate2 certificate in store.Certificates) 37 | { 38 | result.Add(certificate.Subject); 39 | } 40 | 41 | return result; 42 | } 43 | finally 44 | { 45 | store.Close(); 46 | } 47 | } 48 | } 49 | } 50 | --------------------------------------------------------------------------------