mirror of
https://github.com/mileswolfallen2/gelectron.git
synced 2026-09-08 04:43:14 +00:00
fix: add autoUpdater, session stubs, npm publishing support
- Add auto-updater.js EventEmitter stub for electron-updater MacUpdater - Add session.fromPartition() stub for electron HTTP executor - Fix app.js getAppPath/getName methods - Update CLI to find napi .node files - Fix package.json napi config (binaryName/targets) - Add npm/darwin-arm64 platform package - Add .npmignore for clean publish
This commit is contained in:
+11
@@ -0,0 +1,11 @@
|
||||
target/
|
||||
crates/*/src/
|
||||
crates/*/Cargo.toml
|
||||
crates/*/build.rs
|
||||
Cargo.toml
|
||||
Cargo.lock
|
||||
.git/
|
||||
.github/
|
||||
*.rs
|
||||
*.lock
|
||||
*.md
|
||||
+11
-4
@@ -76,11 +76,18 @@ if (!fs.existsSync(mainScript)) {
|
||||
}
|
||||
|
||||
const nativeDir = path.join(__dirname, '..', 'crates', 'gelectron-core');
|
||||
const platformSuffix = process.platform === 'win32' ? 'win32' : process.platform === 'darwin' ? 'darwin' : 'linux';
|
||||
const archSuffix = process.arch === 'arm64' ? 'arm64' : 'x64';
|
||||
const ext = process.platform === 'win32' ? 'dll' : process.platform === 'darwin' ? 'dylib' : 'so';
|
||||
const napiPlatform = process.platform === 'win32' ? `${platformSuffix}-${archSuffix}-msvc` : process.platform === 'darwin' ? `${platformSuffix}-${archSuffix}` : `${platformSuffix}-${archSuffix}-gnu`;
|
||||
const candidates = [
|
||||
path.join(nativeDir, 'release', `gelectron_core.${process.platform === 'win32' ? 'dll' : process.platform === 'darwin' ? 'dylib' : 'so'}`),
|
||||
path.join(nativeDir, 'debug', `gelectron_core.${process.platform === 'win32' ? 'dll' : process.platform === 'darwin' ? 'dylib' : 'so'}`),
|
||||
path.join(__dirname, '..', `gelectron_core.${process.platform === 'win32' ? 'dll' : process.platform === 'darwin' ? 'dylib' : 'so'}`),
|
||||
path.join(__dirname, '..', 'napi-dist', process.platform, process.arch, `gelectron_core.${process.platform === 'win32' ? 'dll' : process.platform === 'darwin' ? 'dylib' : 'so'}`),
|
||||
path.join(nativeDir, `gelectron_core.${napiPlatform}.node`),
|
||||
path.join(__dirname, '..', `gelectron_core.${napiPlatform}.node`),
|
||||
path.join(__dirname, '..', 'npm', napiPlatform, `gelectron_core.${napiPlatform}.node`),
|
||||
path.join(nativeDir, 'release', `gelectron_core.${ext}`),
|
||||
path.join(nativeDir, 'debug', `gelectron_core.${ext}`),
|
||||
path.join(__dirname, '..', `gelectron_core.${ext}`),
|
||||
path.join(__dirname, '..', 'napi-dist', process.platform, process.arch, `gelectron_core.${ext}`),
|
||||
];
|
||||
|
||||
let nativeAddonPath = null;
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "gelectron-darwin-arm64",
|
||||
"version": "0.1.0",
|
||||
"description": "Gelectron native binary for macOS ARM64",
|
||||
"main": "gelectron_core.darwin-arm64.node",
|
||||
"files": [
|
||||
"gelectron_core.darwin-arm64.node"
|
||||
],
|
||||
"os": ["darwin"],
|
||||
"cpu": ["arm64"],
|
||||
"license": "MIT"
|
||||
}
|
||||
Generated
+1934
File diff suppressed because it is too large
Load Diff
+28
-17
@@ -7,25 +7,22 @@
|
||||
"gelectron": "./cli/gelectron.js"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "napi build --platform --release",
|
||||
"build:debug": "napi build --platform",
|
||||
"build": "napi build --platform --release --package gelectron-core",
|
||||
"build:debug": "napi build --platform --package gelectron-core",
|
||||
"artifacts": "napi artifacts",
|
||||
"prepublishOnly": "napi prepublish -t npm",
|
||||
"prepublishOnly": "napi prepublish -t npm --package gelectron-core",
|
||||
"universal": "napi universal"
|
||||
},
|
||||
"napi": {
|
||||
"name": "gelectron_core",
|
||||
"triples": {
|
||||
"defaults": true,
|
||||
"additional": [
|
||||
"aarch64-apple-darwin",
|
||||
"x86_64-apple-darwin",
|
||||
"x86_64-pc-windows-msvc",
|
||||
"aarch64-pc-windows-msvc",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"aarch64-unknown-linux-gnu"
|
||||
]
|
||||
}
|
||||
"binaryName": "gelectron_core",
|
||||
"targets": [
|
||||
"x86_64-apple-darwin",
|
||||
"aarch64-apple-darwin",
|
||||
"x86_64-pc-windows-msvc",
|
||||
"aarch64-pc-windows-msvc",
|
||||
"x86_64-unknown-linux-gnu",
|
||||
"aarch64-unknown-linux-gnu"
|
||||
]
|
||||
},
|
||||
"files": [
|
||||
"cli/",
|
||||
@@ -36,10 +33,21 @@
|
||||
"electron",
|
||||
"servo",
|
||||
"gecko",
|
||||
"firefox",
|
||||
"browser",
|
||||
"desktop",
|
||||
"webview"
|
||||
"webview",
|
||||
"chromium",
|
||||
"alternative"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/mileswolfallen2/gelectron.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/mileswolfallen2/gelectron/issues"
|
||||
},
|
||||
"homepage": "https://github.com/mileswolfallen2/gelectron#readme",
|
||||
"author": "mileswa1q22",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
@@ -47,5 +55,8 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"gelectron-darwin-arm64": "0.1.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -90,6 +90,14 @@ class App extends EventEmitter {
|
||||
return process.env.GELECTRON_VERSION || '0.1.0';
|
||||
}
|
||||
|
||||
getAppPath() {
|
||||
return process.env.GELECTRON_APP_PATH || process.cwd();
|
||||
}
|
||||
|
||||
relaunch(options = {}) {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
getPath(name) {
|
||||
return this._paths[name] || this._paths.userData;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Gelectron - autoUpdater module (Electron compatible)
|
||||
* Stub implementation for electron-updater compatibility.
|
||||
* electron-updater uses require("electron").autoUpdater as its native backend.
|
||||
*/
|
||||
|
||||
const { EventEmitter } = require('events');
|
||||
|
||||
class AutoUpdater extends EventEmitter {
|
||||
constructor() {
|
||||
super();
|
||||
this._isUpdateAvailable = false;
|
||||
this._updateInfo = null;
|
||||
this.autoDownload = true;
|
||||
this.autoInstallOnAppQuit = false;
|
||||
this.autoRunAppAfterInstall = true;
|
||||
this._logger = console;
|
||||
}
|
||||
|
||||
getFeedURL() {
|
||||
return null;
|
||||
}
|
||||
|
||||
setFeedURL() {}
|
||||
|
||||
async checkForUpdates() {
|
||||
return {
|
||||
updateInfo: null,
|
||||
isUpdateAvailable: false,
|
||||
};
|
||||
}
|
||||
|
||||
async checkForAndNotifyIfAvailable() {
|
||||
return this.checkForUpdates();
|
||||
}
|
||||
|
||||
async downloadUpdate() {}
|
||||
|
||||
quitAndInstall(isSilent = false, isForceRunAfter = false) {
|
||||
this.emit('before-quit-for-update');
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
quitAndInstallAgain(isSilent = false, isForceRunAfter = false) {
|
||||
this.quitAndInstall(isSilent, isForceRunAfter);
|
||||
}
|
||||
|
||||
async updateDownloaded() {
|
||||
return false;
|
||||
}
|
||||
|
||||
get isUpdateActive() {
|
||||
return false;
|
||||
}
|
||||
|
||||
get updateInfo() {
|
||||
return this._updateInfo;
|
||||
}
|
||||
|
||||
get logger() {
|
||||
return this._logger;
|
||||
}
|
||||
|
||||
set logger(val) {
|
||||
this._logger = val;
|
||||
}
|
||||
}
|
||||
|
||||
const autoUpdater = new AutoUpdater();
|
||||
|
||||
module.exports = { autoUpdater, AutoUpdater };
|
||||
+55
-25
@@ -17,6 +17,57 @@ const nativeImage = require('./native-image');
|
||||
const safeStorage = require('./safe-storage');
|
||||
const contextBridge = require('./context-bridge');
|
||||
const webContents = require('./web-contents');
|
||||
const { autoUpdater, AutoUpdater } = require('./auto-updater');
|
||||
|
||||
// Session stub (electron-updater calls session.fromPartition)
|
||||
const sessionStub = {
|
||||
defaultSession: {
|
||||
cookies: {
|
||||
get: async () => [],
|
||||
set: async () => {},
|
||||
remove: async () => {},
|
||||
getSession: () => null,
|
||||
},
|
||||
protocol: {
|
||||
registerFileProtocol: () => {},
|
||||
registerHttpProtocol: () => {},
|
||||
unregisterProtocol: () => {},
|
||||
isProtocolRegistered: () => false,
|
||||
},
|
||||
setPermissionRequestHandler: () => {},
|
||||
setPermissionCheckHandler: () => {},
|
||||
webRequest: {
|
||||
onBeforeRequest: () => {},
|
||||
onHeadersReceived: () => {},
|
||||
},
|
||||
setUserAgent: () => {},
|
||||
getUserAgent: () => '',
|
||||
},
|
||||
fromPartition: (partition, options) => ({
|
||||
cookies: {
|
||||
get: async () => [],
|
||||
set: async () => {},
|
||||
remove: async () => {},
|
||||
},
|
||||
protocol: {
|
||||
registerFileProtocol: () => {},
|
||||
registerHttpProtocol: () => {},
|
||||
unregisterProtocol: () => {},
|
||||
isProtocolRegistered: () => false,
|
||||
},
|
||||
webRequest: {
|
||||
onBeforeRequest: () => {},
|
||||
onHeadersReceived: () => {},
|
||||
resolveProxy: async () => '',
|
||||
},
|
||||
setUserAgent: () => {},
|
||||
getUserAgent: () => '',
|
||||
clearCache: async () => {},
|
||||
clearStorageData: async () => {},
|
||||
setProxy: async () => {},
|
||||
getProxy: async () => ({ mode: 'direct' }),
|
||||
}),
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
app,
|
||||
@@ -32,6 +83,9 @@ module.exports = {
|
||||
safeStorage,
|
||||
contextBridge,
|
||||
webContents,
|
||||
autoUpdater,
|
||||
AutoUpdater,
|
||||
session: sessionStub,
|
||||
|
||||
// Aliases for common imports
|
||||
clipboard: {
|
||||
@@ -83,32 +137,8 @@ module.exports = {
|
||||
unregisterAll: () => {},
|
||||
isRegistered: () => false,
|
||||
},
|
||||
session: {
|
||||
defaultSession: {
|
||||
cookies: {
|
||||
get: async () => [],
|
||||
set: async () => {},
|
||||
remove: async () => {},
|
||||
getSession: () => null,
|
||||
},
|
||||
protocol: {
|
||||
registerFileProtocol: () => {},
|
||||
registerHttpProtocol: () => {},
|
||||
unregisterProtocol: () => {},
|
||||
isProtocolRegistered: () => false,
|
||||
},
|
||||
setPermissionRequestHandler: () => {},
|
||||
setPermissionCheckHandler: () => {},
|
||||
webRequest: {
|
||||
onBeforeRequest: () => {},
|
||||
onHeadersReceived: () => {},
|
||||
},
|
||||
setUserAgent: () => {},
|
||||
getUserAgent: () => '',
|
||||
},
|
||||
},
|
||||
net: {
|
||||
fetch: globalThis.fetch || require('node-fetch'),
|
||||
fetch: globalThis.fetch || (() => Promise.reject(new Error('fetch not available'))),
|
||||
},
|
||||
|
||||
// Constants
|
||||
|
||||
Reference in New Issue
Block a user