u2a 1.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/commands/create.js +70 -7
- package/src/commands/remove.js +1 -1
- package/src/utils/favicon.js +1 -1
- package/src/utils/url.js +10 -3
package/package.json
CHANGED
package/src/commands/create.js
CHANGED
|
@@ -6,7 +6,6 @@ const { getFavicon } = require('../utils/favicon');
|
|
|
6
6
|
const { APPS_DIR, readDB, writeDB } = require('../utils/config');
|
|
7
7
|
const Logger = require('../utils/logger');
|
|
8
8
|
const os = require('os');
|
|
9
|
-
const { isContext } = require('vm');
|
|
10
9
|
|
|
11
10
|
const logger = new Logger('create');
|
|
12
11
|
|
|
@@ -194,24 +193,75 @@ function generateMainJs(domain, url, iconPath) {
|
|
|
194
193
|
return `
|
|
195
194
|
const { app, BrowserWindow, Menu, shell } = require('electron');
|
|
196
195
|
const path = require('path');
|
|
196
|
+
const fs = require('fs');
|
|
197
|
+
|
|
198
|
+
const APP_DOMAIN = "${domain}";
|
|
199
|
+
const APP_URL = "${url}";
|
|
200
|
+
const APP_ICON_PATH = "${iconPath.replace(/\\/g, '\\\\')}";
|
|
197
201
|
|
|
198
202
|
let mainWindow;
|
|
199
203
|
|
|
204
|
+
function logAppInfo() {
|
|
205
|
+
const packageJsonPath = path.join(__dirname, 'package.json');
|
|
206
|
+
let packageInfo = {};
|
|
207
|
+
|
|
208
|
+
try {
|
|
209
|
+
const packageJsonContent = fs.readFileSync(packageJsonPath, 'utf-8');
|
|
210
|
+
packageInfo = JSON.parse(packageJsonContent);
|
|
211
|
+
} catch (error) {
|
|
212
|
+
console.error('Error reading package.json:', error.message);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
console.log('\\n--------------------------------');
|
|
216
|
+
console.log(' APPLICATION INFORMATION');
|
|
217
|
+
console.log('--------------------------------');
|
|
218
|
+
console.log(\`Application: \${APP_DOMAIN}\`);
|
|
219
|
+
console.log(\`URL: \${APP_URL}\`);
|
|
220
|
+
console.log(\`Started at: \${new Date().toLocaleString()}\`);
|
|
221
|
+
console.log(\`App directory: \${__dirname}\`);
|
|
222
|
+
console.log(\`Icon path: \${APP_ICON_PATH}\`);
|
|
223
|
+
|
|
224
|
+
console.log('\\n PACKAGE INFO:');
|
|
225
|
+
console.log(\` - Name: \${packageInfo.name || 'N/A'}\`);
|
|
226
|
+
console.log(\` - Version: \${packageInfo.version || 'N/A'}\`);
|
|
227
|
+
console.log(\` - Description: \${packageInfo.description || 'N/A'}\`);
|
|
228
|
+
console.log(\` - Electron version: \${packageInfo.dependencies?.electron || 'N/A'}\`);
|
|
229
|
+
|
|
230
|
+
if (packageInfo.build) {
|
|
231
|
+
console.log('\\n BUILD CONFIG:');
|
|
232
|
+
console.log(\` - App ID: \${packageInfo.build.appId || 'N/A'}\`);
|
|
233
|
+
console.log(\` - Product Name: \${packageInfo.build.productName || 'N/A'}\`);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
console.log('--------------------------------\\n');
|
|
237
|
+
}
|
|
238
|
+
|
|
200
239
|
function createWindow() {
|
|
201
|
-
|
|
240
|
+
logAppInfo();
|
|
241
|
+
|
|
242
|
+
app.setAppUserModelId(APP_DOMAIN);
|
|
202
243
|
|
|
203
244
|
mainWindow = new BrowserWindow({
|
|
204
245
|
width: 1200,
|
|
205
246
|
height: 800,
|
|
206
|
-
title:
|
|
207
|
-
icon:
|
|
247
|
+
title: APP_DOMAIN,
|
|
248
|
+
icon: APP_ICON_PATH,
|
|
208
249
|
webPreferences: {
|
|
209
250
|
nodeIntegration: false,
|
|
210
251
|
contextIsolation: true
|
|
211
252
|
}
|
|
212
253
|
});
|
|
213
254
|
|
|
214
|
-
mainWindow.loadURL(
|
|
255
|
+
mainWindow.loadURL(APP_URL);
|
|
256
|
+
|
|
257
|
+
mainWindow.webContents.on('context-menu', (e, params) => {
|
|
258
|
+
e.preventDefault();
|
|
259
|
+
mainWindow.webContents.executeJavaScript(\`
|
|
260
|
+
window.addEventListener('contextmenu', (e) => {
|
|
261
|
+
e.stopPropagation();
|
|
262
|
+
}, true);
|
|
263
|
+
\`);
|
|
264
|
+
});
|
|
215
265
|
|
|
216
266
|
mainWindow.webContents.on('new-window', (event, url) => {
|
|
217
267
|
event.preventDefault();
|
|
@@ -243,10 +293,23 @@ app.on('activate', () => {
|
|
|
243
293
|
});
|
|
244
294
|
`;
|
|
245
295
|
}
|
|
296
|
+
|
|
297
|
+
|
|
246
298
|
function generatePackageJson(domain, iconPath) {
|
|
299
|
+
const u2aPackagePath = path.resolve(__dirname, '../../package.json');
|
|
300
|
+
|
|
301
|
+
let u2aVersion = '1.0.0';
|
|
302
|
+
try {
|
|
303
|
+
const u2aPackageContent = fs.readFileSync(u2aPackagePath, 'utf8');
|
|
304
|
+
const u2aPackage = JSON.parse(u2aPackageContent);
|
|
305
|
+
u2aVersion = u2aPackage.version || u2aVersion;
|
|
306
|
+
} catch (error) {
|
|
307
|
+
logger.error('Error while fetching u2a package.json', error)
|
|
308
|
+
}
|
|
309
|
+
|
|
247
310
|
return {
|
|
248
311
|
name: `u2a-${domain}`,
|
|
249
|
-
version:
|
|
312
|
+
version: u2aVersion,
|
|
250
313
|
description: `Web app for ${domain}`,
|
|
251
314
|
main: 'main.js',
|
|
252
315
|
scripts: {
|
|
@@ -267,7 +330,7 @@ async function createApp(url) {
|
|
|
267
330
|
logger.info(`Creating application for ${url}`);
|
|
268
331
|
|
|
269
332
|
try {
|
|
270
|
-
url = normalizeUrl(url);
|
|
333
|
+
url = await normalizeUrl(url);
|
|
271
334
|
const domain = getDomainName(url);
|
|
272
335
|
|
|
273
336
|
const db = readDB();
|
package/src/commands/remove.js
CHANGED
package/src/utils/favicon.js
CHANGED
|
@@ -13,7 +13,7 @@ async function getFavicon(url) {
|
|
|
13
13
|
|
|
14
14
|
try {
|
|
15
15
|
const domain = getDomainName(url);
|
|
16
|
-
const normalizedUrl = normalizeUrl(url);
|
|
16
|
+
const normalizedUrl = await normalizeUrl(url);
|
|
17
17
|
|
|
18
18
|
const faviconUrl = `${normalizedUrl}/favicon.ico`;
|
|
19
19
|
const iconResponse = await axios.get(faviconUrl, { responseType: 'arraybuffer' });
|
package/src/utils/url.js
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
const axios = require('axios');
|
|
2
|
+
|
|
3
|
+
async function normalizeUrl(url) {
|
|
2
4
|
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
3
|
-
|
|
5
|
+
try {
|
|
6
|
+
await axios.get('https://' + url);
|
|
7
|
+
url = 'https://' + url;
|
|
8
|
+
} catch (error) {
|
|
9
|
+
url = 'http://' + url;
|
|
10
|
+
}
|
|
4
11
|
}
|
|
5
12
|
return url;
|
|
6
13
|
}
|
|
@@ -17,4 +24,4 @@ function getDomainName(url) {
|
|
|
17
24
|
module.exports = {
|
|
18
25
|
normalizeUrl,
|
|
19
26
|
getDomainName
|
|
20
|
-
};
|
|
27
|
+
};
|