From f095c9db3529e42a5987938b939b17490d980e51 Mon Sep 17 00:00:00 2001 From: Shalitha Suranga Date: Fri, 27 May 2022 11:30:57 +0530 Subject: [PATCH] #905: Display error messagebox for server initialization failures --- bin/neutralino.config.json | 2 +- bin/resources/js/neutralino.js | 2 +- bin/resources/js/neutralino.js.map | 2 +- main.cpp | 13 ++++++++++++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/bin/neutralino.config.json b/bin/neutralino.config.json index 9b30e5ac..9f101b7d 100644 --- a/bin/neutralino.config.json +++ b/bin/neutralino.config.json @@ -41,7 +41,7 @@ "hidden": false, "resizable": true, "exitProcessOnClose": false, - "port": 0 + "port": 80 }, "browser": { "globalVariables": { diff --git a/bin/resources/js/neutralino.js b/bin/resources/js/neutralino.js index 48d139d3..63d1af85 100644 --- a/bin/resources/js/neutralino.js +++ b/bin/resources/js/neutralino.js @@ -752,7 +752,7 @@ var Neutralino = (function (exports) { })); } window.NL_CVERSION = version; - window.NL_CCOMMIT = '6d93ed508a4c01de1a00e66f7bbb20c5756c1b21'; // only the build server will update this + window.NL_CCOMMIT = '4f36ae73290a69c509bc562e32b69100b6e5b4eb'; // only the build server will update this initialized = true; } diff --git a/bin/resources/js/neutralino.js.map b/bin/resources/js/neutralino.js.map index 6b008907..19330e0a 100644 --- a/bin/resources/js/neutralino.js.map +++ b/bin/resources/js/neutralino.js.map @@ -1 +1 @@ -{"version":3,"file":"neutralino.js","sources":["node_modules/tslib/tslib.es6.js","src/browser/events.ts","src/ws/websocket.ts","src/api/filesystem.ts","src/api/os.ts","src/api/computer.ts","src/api/storage.ts","src/api/debug.ts","src/api/app.ts","src/api/window.ts","src/api/events.ts","src/api/extensions.ts","src/api/updater.ts","src/api/clipboard.ts","src/api/init.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export interface Response {\n success: boolean;\n message: string;\n}\n\nexport type Builtin =\n 'ready' |\n 'trayMenuItemClicked' |\n 'windowClose' |\n 'serverOffline' |\n 'clientConnect' |\n 'clientDisconnect' |\n 'appClientConnect' |\n 'appClientDisconnect' |\n 'extClientConnect' |\n 'extClientDisconnect' |\n 'extensionReady' |\n 'neuDev_reloadApp'\n\nexport function on(event: string, handler: (ev: CustomEvent) => void): Promise {\n window.addEventListener(event, handler);\n return Promise.resolve({\n success: true,\n message: 'Event listener added'\n });\n};\n\nexport function off(event: string, handler: (ev: CustomEvent) => void): Promise {\n window.removeEventListener(event, handler);\n return Promise.resolve({\n success: true,\n message: 'Event listener removed'\n });\n};\n\nexport function dispatch(event: string, data?: any): Promise {\n let customEvent = new CustomEvent(event, {detail: data});\n window.dispatchEvent(customEvent);\n return Promise.resolve({\n success: true,\n message: 'Message dispatched'\n });\n};\n","import * as events from '../browser/events';\n\nlet ws;\nlet nativeCalls = {};\nlet offlineMessageQueue = [];\nlet extensionMessageQueue = {}\n\nexport function init() {\n initAuth();\n ws = new WebSocket(`ws://${window.location.hostname}:${window.NL_PORT}`);\n registerLibraryEvents();\n registerSocketEvents();\n}\n\nexport function sendMessage(method: string, data?: any): Promise {\n return new Promise((resolve: any, reject: any) => {\n\n if(ws?.readyState != WebSocket.OPEN) {\n sendWhenReady({method, data, resolve, reject});\n return;\n }\n\n const id: string = uuidv4();\n const accessToken: string = getAuthToken();\n\n nativeCalls[id] = {resolve, reject};\n\n ws.send(JSON.stringify({\n id,\n method,\n data,\n accessToken\n }));\n\n });\n}\n\nexport function sendWhenReady(message: any) {\n offlineMessageQueue.push(message);\n}\n\nexport function sendWhenExtReady(extensionId: string, message: any) {\n if(extensionId in extensionMessageQueue) {\n extensionMessageQueue[extensionId].push(message);\n }\n else {\n extensionMessageQueue[extensionId] = [message];\n }\n}\n\nfunction registerLibraryEvents() {\n Neutralino.events.on('ready', async () => {\n await processQueue(offlineMessageQueue);\n\n if(!window.NL_EXTENABLED) {\n return;\n }\n\n let stats = await Neutralino.extensions.getStats();\n for(let extension of stats.connected) {\n events.dispatch('extensionReady', extension);\n }\n });\n\n Neutralino.events.on('extClientConnect', (evt) => {\n events.dispatch('extensionReady', evt.detail);\n });\n\n if(!window.NL_EXTENABLED) {\n return;\n }\n\n Neutralino.events.on('extensionReady', async (evt) => {\n if(evt.detail in extensionMessageQueue) {\n await processQueue(extensionMessageQueue[evt.detail]);\n delete extensionMessageQueue[evt.detail];\n }\n });\n}\n\nfunction registerSocketEvents() {\n ws.addEventListener('message', (event) => {\n const message = JSON.parse(event.data);\n\n if(message.id && message.id in nativeCalls) {\n // Native call response\n if(message.data?.error) {\n nativeCalls[message.id].reject(message.data.error);\n if(message.data.error.code == 'NE_RT_INVTOKN') {\n // critical auth error\n // Perhaps, someone tried to open app from anoher client,\n // with 'one-time' token mode\n handleAuthError();\n }\n }\n else if(message.data?.success) {\n nativeCalls[message.id]\n .resolve(message.data.hasOwnProperty('returnValue') ? message.data.returnValue\n : message.data);\n }\n delete nativeCalls[message.id];\n }\n else if(message.event) {\n // Event from process\n events.dispatch(message.event, message.data);\n }\n });\n\n ws.addEventListener('open', async (event) => {\n events.dispatch('ready');\n });\n\n ws.addEventListener('close', async (event) => {\n let error = {\n code: 'NE_CL_NSEROFF',\n message: 'Neutralino server is offline. Try restarting the application'\n };\n events.dispatch('serverOffline', error);\n });\n}\n\nasync function processQueue(messageQueue: any[]) {\n while(messageQueue.length > 0) {\n let message = messageQueue.shift();\n try {\n let response = await sendMessage(message.method, message.data);\n message.resolve(response);\n }\n catch(err: any) {\n message.reject(err);\n }\n }\n}\n\nfunction handleAuthError() {\n ws.close();\n document.body.innerText = '';\n document.write('NE_RT_INVTOKN: Neutralinojs application configuration' +\n ' prevents accepting native calls from this client.');\n}\n\nfunction initAuth() {\n if (window.NL_TOKEN) {\n sessionStorage.setItem('NL_TOKEN', window.NL_TOKEN);\n }\n}\nfunction getAuthToken() {\n return window.NL_TOKEN || sessionStorage.getItem('NL_TOKEN') || '';\n}\n\n// From: https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid\nfunction uuidv4(): string {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) =>\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { sendMessage } from '../ws/websocket';\n\nexport interface DirectoryEntry {\n entry: string;\n type: string;\n}\n\nexport interface Stats {\n size: number;\n isFile: boolean;\n isDirectory: boolean;\n createdAt: number;\n modifiedAt: number;\n}\n\nexport function createDirectory(path: string): Promise {\n return sendMessage('filesystem.createDirectory', { path });\n};\n\nexport function removeDirectory(path: string): Promise {\n return sendMessage('filesystem.removeDirectory', { path });\n};\n\nexport function writeFile(path: string, data: string): Promise {\n return sendMessage('filesystem.writeFile', { path, data });\n};\n\nexport function appendFile(path: string, data: string): Promise {\n return sendMessage('filesystem.appendFile', { path, data });\n};\n\nexport function writeBinaryFile(path: string, data: ArrayBuffer): Promise {\n return sendMessage('filesystem.writeBinaryFile', {\n path,\n data: arrayBufferToBase64(data)\n });\n};\n\nexport function appendBinaryFile(path: string, data: ArrayBuffer): Promise {\n return sendMessage('filesystem.appendBinaryFile', {\n path,\n data: arrayBufferToBase64(data)\n });\n};\n\nexport function readFile(path: string): Promise {\n return sendMessage('filesystem.readFile', { path });\n};\n\nexport function readBinaryFile(path: string): Promise {\n return new Promise((resolve: any, reject: any) => {\n sendMessage('filesystem.readBinaryFile', { path })\n .then((base64Data: string) => {\n let binaryData: string = window.atob(base64Data);\n let len: number = binaryData.length;\n let bytes: Uint8Array = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryData.charCodeAt(i);\n }\n resolve(bytes.buffer);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n\nexport function removeFile(path: string): Promise {\n return sendMessage('filesystem.removeFile', { path });\n};\n\nexport function readDirectory(path: string): Promise {\n return sendMessage('filesystem.readDirectory', { path });\n};\n\nexport function copyFile(source: string, destination: string): Promise {\n return sendMessage('filesystem.copyFile', { source, destination } );\n};\n\nexport function moveFile(source: string, destination: string): Promise {\n return sendMessage('filesystem.moveFile', { source, destination });\n};\n\nexport function getStats(path: string): Promise {\n return sendMessage('filesystem.getStats', { path });\n};\n\nfunction arrayBufferToBase64(data: ArrayBuffer): string {\n let bytes: Uint8Array = new Uint8Array(data);\n let asciiStr: string = '';\n\n for(let byte of bytes) {\n asciiStr += String.fromCharCode(byte);\n }\n\n return window.btoa(asciiStr);\n};\n\n\n","import { sendMessage } from '../ws/websocket';\n\nexport interface ExecCommandOptions {\n stdIn?: string;\n background?: boolean;\n}\n\nexport interface ExecCommandResult {\n pid: number;\n stdOut: string;\n stdErr: string;\n exitCode: number;\n}\n\nexport interface SpawnedProcess {\n id: number;\n pid: number;\n}\n\nexport interface OpenDialogOptions {\n multiSelections?: boolean;\n filters?: Filter[];\n}\n\nexport interface SaveDialogOptions {\n forceOverwrite?: boolean;\n filters?: Filter[];\n}\n\nexport interface Filter {\n name: string;\n extensions: string[];\n}\n\nexport interface TrayOptions {\n icon?: string;\n menu?: TrayMenuItem[];\n}\n\nexport interface TrayMenuItem {\n id?: string;\n text: string;\n isDisabled?: boolean;\n isChecked?: boolean;\n}\n\nexport enum Icon {\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFO = 'INFO',\n QUESTION = 'QUESTION'\n};\n\nexport enum MessageBoxChoice {\n OK = 'OK',\n OK_CANCEL = 'OK_CANCEL',\n YES_NO = 'YES_NO',\n YES_NO_CANCEL = 'YES_NO_CANCEL',\n RETRY_CANCEL = 'RETRY_CANCEL',\n ABORT_RETRY_IGNORE = 'ABORT_RETRY_IGNORE'\n};\n\nexport type KnownPath =\n 'config' |\n 'data' |\n 'cache' |\n 'documents' |\n 'pictures' |\n 'music' |\n 'video' |\n 'downloads' |\n 'savedGames1' |\n 'savedGames2'\n\nexport function execCommand(command: string, options?: ExecCommandOptions): Promise {\n return sendMessage('os.execCommand', { command, ...options });\n};\n\nexport function spawnProcess(command: string): Promise {\n return sendMessage('os.spawnProcess', { command });\n};\n\nexport function updateSpawnedProcess(id: number, event: string, data?:any): Promise {\n return sendMessage('os.updateSpawnedProcess', { id, event, data });\n};\n\nexport function getSpawnedProcesses(): Promise {\n return sendMessage('os.getSpawnedProcesses');\n};\n\nexport function getEnv(key: string): Promise {\n return sendMessage('os.getEnv', { key });\n};\n\nexport function showOpenDialog(title?: string, options?: OpenDialogOptions): Promise {\n return sendMessage('os.showOpenDialog', { title, ...options });\n};\n\nexport function showFolderDialog(title?: string): Promise {\n return sendMessage('os.showFolderDialog', { title });\n};\n\nexport function showSaveDialog(title?: string, options?: SaveDialogOptions): Promise {\n return sendMessage('os.showSaveDialog', { title, ...options });\n};\n\nexport function showNotification(title: string, content: string, icon?: Icon): Promise {\n return sendMessage('os.showNotification', { title, content, icon });\n};\n\nexport function showMessageBox(title: string, content: string,\n choice?: MessageBoxChoice, icon?: Icon): Promise {\n return sendMessage('os.showMessageBox', { title, content, choice, icon });\n};\n\nexport function setTray(options: TrayOptions): Promise {\n return sendMessage('os.setTray', options);\n};\n\nexport function open(url: string): Promise {\n return sendMessage('os.open', { url });\n};\n\nexport function getPath(name: KnownPath): Promise {\n return sendMessage('os.getPath', { name });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport interface MemoryInfo {\n total: number;\n available: number;\n}\n\nexport function getMemoryInfo(): Promise {\n return sendMessage('computer.getMemoryInfo');\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport function setData(key: string, data: string): Promise {\n return sendMessage('storage.setData', { key, data });\n\n};\n\nexport function getData(key: string): Promise {\n return sendMessage('storage.getData', { key });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport enum LoggerType {\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFO = 'INFO'\n};\n\nexport function log(message: string, type?: LoggerType): Promise {\n return sendMessage('debug.log', { message, type });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport interface OpenActionOptions {\n url: string;\n}\n\nexport interface RestartOptions {\n args: string;\n}\n\nexport function exit(code?: number): Promise {\n return sendMessage('app.exit', { code });\n};\n\nexport function killProcess(): Promise {\n return sendMessage('app.killProcess');\n};\n\nexport function restartProcess(options?: RestartOptions): Promise {\n return new Promise(async (resolve: () => void) => {\n let command = window.NL_ARGS.reduce((acc: string, arg: string) => {\n acc += ' ' + arg;\n return acc;\n }, '');\n\n if(options?.args) {\n command += ' ' + options.args;\n }\n\n await Neutralino.os.execCommand(command, {background: true});\n Neutralino.app.exit();\n resolve();\n });\n};\n\nexport function getConfig(): Promise {\n return sendMessage('app.getConfig');\n};\n\nexport function broadcast(event: string, data?: any): Promise {\n return sendMessage('app.broadcast', {event, data});\n};\n","import { sendMessage } from '../ws/websocket';\n\nconst draggableRegions: WeakMap = new WeakMap();\n\nexport interface WindowOptions extends WindowSizeOptions {\n title?: string;\n icon?: string;\n fullScreen?: boolean;\n alwaysOnTop?: boolean;\n enableInspector?: boolean;\n borderless?: boolean;\n maximize?: boolean;\n hidden?: boolean;\n maximizable?: boolean;\n processArgs?: string;\n}\n\nexport interface WindowSizeOptions {\n width?: number;\n height?: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n resizable?: boolean;\n}\n\nexport interface WindowPosOptions {\n x: number;\n y: number;\n}\n\nexport function setTitle(title: string): Promise {\n return sendMessage('window.setTitle', { title });\n};\n\nexport function getTitle(): Promise {\n return sendMessage('window.getTitle');\n};\n\nexport function maximize(): Promise {\n return sendMessage('window.maximize');\n};\n\nexport function unmaximize(): Promise {\n return sendMessage('window.unmaximize');\n};\n\nexport function isMaximized(): Promise {\n return sendMessage('window.isMaximized');\n};\n\nexport function minimize(): Promise {\n return sendMessage('window.minimize');\n};\n\nexport function setFullScreen(): Promise {\n return sendMessage('window.setFullScreen');\n};\n\nexport function exitFullScreen(): Promise {\n return sendMessage('window.exitFullScreen');\n};\n\nexport function isFullScreen(): Promise {\n return sendMessage('window.isFullScreen');\n};\n\nexport function show(): Promise {\n return sendMessage('window.show');\n};\n\nexport function hide(): Promise {\n return sendMessage('window.hide');\n};\n\nexport function isVisible(): Promise {\n return sendMessage('window.isVisible');\n};\n\nexport function focus(): Promise {\n return sendMessage('window.focus');\n};\n\nexport function setIcon(icon: string): Promise {\n return sendMessage('window.setIcon', { icon });\n};\n\nexport function move(x: number, y: number): Promise {\n return sendMessage('window.move', { x, y });\n};\n\nexport function setDraggableRegion(domElementOrId: string | HTMLElement): Promise {\n return new Promise((resolve: any, reject: any) => {\n const draggableRegion: HTMLElement = domElementOrId instanceof Element ?\n domElementOrId : document.getElementById(domElementOrId);\n let initialClientX: number = 0;\n let initialClientY: number = 0;\n\n if (!draggableRegion) {\n return reject({\n code: 'NE_WD_DOMNOTF',\n message: 'Unable to find DOM element'\n });\n }\n\n if (draggableRegions.has(draggableRegion)) {\n return reject({\n code: 'NE_WD_ALRDREL',\n message: 'This DOM element is already an active draggable region'\n });\n }\n\n draggableRegion.addEventListener('pointerdown', startPointerCapturing);\n draggableRegion.addEventListener('pointerup', endPointerCapturing);\n\n draggableRegions.set(draggableRegion, { pointerdown: startPointerCapturing, pointerup: endPointerCapturing });\n\n async function onPointerMove(evt: PointerEvent) {\n await Neutralino.window.move(\n evt.screenX - initialClientX,\n evt.screenY - initialClientY\n );\n }\n\n function startPointerCapturing(evt: PointerEvent) {\n if (evt.button !== 0) return;\n initialClientX = evt.clientX;\n initialClientY = evt.clientY;\n draggableRegion.addEventListener('pointermove', onPointerMove);\n draggableRegion.setPointerCapture(evt.pointerId);\n }\n\n function endPointerCapturing(evt: PointerEvent) {\n draggableRegion.removeEventListener('pointermove', onPointerMove);\n draggableRegion.releasePointerCapture(evt.pointerId);\n }\n\n resolve({\n success: true,\n message: 'Draggable region was activated'\n });\n });\n};\n\nexport function unsetDraggableRegion(domElementOrId: string | HTMLElement): Promise {\n return new Promise((resolve: any, reject: any) => {\n const draggableRegion: HTMLElement = domElementOrId instanceof Element ?\n domElementOrId : document.getElementById(domElementOrId);\n\n if (!draggableRegion) {\n return reject({\n code: 'NE_WD_DOMNOTF',\n message: 'Unable to find DOM element'\n });\n }\n if (!draggableRegions.has(draggableRegion)) {\n return reject({\n code: 'NE_WD_NOTDRRE',\n message: 'DOM element is not an active draggable region'\n });\n }\n\n const { pointerdown, pointerup } = draggableRegions.get(draggableRegion);\n draggableRegion.removeEventListener('pointerdown', pointerdown);\n draggableRegion.removeEventListener('pointerup', pointerup);\n draggableRegions.delete(draggableRegion);\n\n resolve({\n success: true,\n message: 'Draggable region was deactivated'\n });\n });\n}\n\nexport function setSize(options: WindowSizeOptions): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n let sizeOptions = await Neutralino.window.getSize();\n\n options = {...sizeOptions, ...options}; // merge prioritizing options arg\n\n sendMessage('window.setSize', options)\n .then((response: any) => {\n resolve(response);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n\nexport function getSize(): Promise {\n return sendMessage('window.getSize');\n};\n\nexport function getPosition(): Promise {\n return sendMessage('window.getPosition');\n};\n\nexport function setAlwaysOnTop(onTop: boolean): Promise {\n return sendMessage('window.setAlwaysOnTop', { onTop });\n};\n\nexport function create(url: string, options?: WindowOptions): Promise {\n return new Promise((resolve: any, reject: any) => {\n\n function normalize(arg: any) {\n if(typeof arg != \"string\")\n return arg;\n arg = arg.trim();\n if(arg.includes(\" \")) {\n arg = `\"${arg}\"`;\n }\n return arg;\n }\n\n let command = window.NL_ARGS.reduce((acc: string, arg: string, index: number) => {\n if(arg.includes(\"--path=\") || arg.includes(\"--debug-mode\") ||\n arg.includes(\"--load-dir-res\") || index == 0) {\n acc += \" \" + normalize(arg);\n }\n return acc;\n }, \"\");\n\n command += \" --url=\" + normalize(url);\n\n for(let key in options) {\n if(key == \"processArgs\")\n continue;\n\n let cliKey: string = key.replace(/[A-Z]|^[a-z]/g, (token: string) => (\n \"-\" + token.toLowerCase()\n ));\n command += ` --window${cliKey}=${normalize(options[key])}`\n }\n if(options && options.processArgs)\n command += \" \" + options.processArgs;\n\n Neutralino.os.execCommand(command, { background: true })\n .then((processInfo: any) => {\n resolve(processInfo);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport * from '../browser/events';\n\nexport function broadcast(event: string, data?: any): Promise {\n return sendMessage('events.broadcast', {event, data});\n};\n","import * as websocket from '../ws/websocket';\n\nexport interface ExtensionStats {\n loaded: string[];\n connected: string[];\n}\n\nexport function dispatch(extensionId: string, event: string, data?: any): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n let stats = await Neutralino.extensions.getStats();\n if(!stats.loaded.includes(extensionId)) {\n reject({\n code: 'NE_EX_EXTNOTL',\n message: `${extensionId} is not loaded`\n });\n }\n else if(stats.connected.includes(extensionId)) {\n try {\n let result = await websocket.sendMessage('extensions.dispatch', {extensionId, event, data});\n resolve(result);\n }\n catch(err: any) {\n reject(err);\n }\n }\n else {\n // loaded but not connected yet.\n websocket.sendWhenExtReady(extensionId, {\n method: 'extensions.dispatch',\n data: {extensionId, event, data}, resolve, reject\n });\n }\n });\n};\n\nexport function broadcast(event: string, data?: any): Promise {\n return websocket.sendMessage('extensions.broadcast', {event, data});\n};\n\nexport function getStats(): Promise {\n return websocket.sendMessage('extensions.getStats');\n};\n","import { Error } from './protocol';\n\nexport interface Manifest {\n applicationId: string;\n version: string;\n resourcesURL: string;\n}\n\nlet manifest: Manifest = null;\n\nexport function checkForUpdates(url: string): Promise {\n function isValidManifest(manifest: any): manifest is Manifest {\n if(manifest.applicationId && manifest.applicationId == window.NL_APPID\n && manifest.version && manifest.resourcesURL) {\n return true;\n }\n return false;\n }\n\n return new Promise(async (resolve: (m: Manifest) => void, reject: (e: Error) => void) => {\n if(!url) {\n return reject({\n code: 'NE_RT_NATRTER',\n message: 'Missing require parameter: url'\n });\n }\n try {\n let response = await fetch(url);\n manifest = JSON.parse(await response.text());\n\n if(isValidManifest(manifest)) {\n resolve(manifest);\n }\n else {\n reject({\n code: 'NE_UP_CUPDMER',\n message: 'Invalid update manifest or mismatching applicationId'\n });\n }\n }\n catch(err) {\n reject({\n code: 'NE_UP_CUPDERR',\n message: 'Unable to fetch update manifest'\n });\n }\n\n });\n};\n\nexport function install(): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n if(!manifest) {\n return reject({\n code: 'NE_UP_UPDNOUF',\n message: 'No update manifest loaded'\n });\n }\n try {\n let response = await fetch(manifest.resourcesURL);\n let resourcesBuffer = await response.arrayBuffer();\n await Neutralino.filesystem.writeBinaryFile(window.NL_PATH + \"/resources.neu\", resourcesBuffer);\n\n resolve({\n success: true,\n message: 'Update installed. Restart the process to see updates'\n });\n }\n catch(err) {\n reject({\n code: 'NE_UP_UPDINER',\n message: 'Update installation error'\n });\n }\n\n });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport function readText(key: string, data: string): Promise {\n return sendMessage('clipboard.readText', { key, data });\n\n};\n\nexport function writeText(data: string): Promise {\n return sendMessage('clipboard.writeText', { data });\n};\n","import * as websocket from '../ws/websocket';\nimport { version } from '../../package.json';\n\nlet initialized = false;\n\nexport function init(): void {\n if(initialized) {\n return;\n }\n\n websocket.init();\n\n if(window.NL_ARGS.find((arg) => arg == '--neu-dev-auto-reload')) {\n Neutralino.events.on('neuDev_reloadApp', async () => {\n await Neutralino.debug.log('Reloading the application...');\n location.reload();\n });\n }\n\n window.NL_CVERSION = version;\n window.NL_CCOMMIT = '6d93ed508a4c01de1a00e66f7bbb20c5756c1b21'; // only the build server will update this\n initialized = true;\n}\n"],"names":["dispatch","init","events.dispatch","getStats","broadcast","websocket.sendMessage","websocket.sendWhenExtReady","websocket.init"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"neutralino.js","sources":["node_modules/tslib/tslib.es6.js","src/browser/events.ts","src/ws/websocket.ts","src/api/filesystem.ts","src/api/os.ts","src/api/computer.ts","src/api/storage.ts","src/api/debug.ts","src/api/app.ts","src/api/window.ts","src/api/events.ts","src/api/extensions.ts","src/api/updater.ts","src/api/clipboard.ts","src/api/init.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","export interface Response {\n success: boolean;\n message: string;\n}\n\nexport type Builtin =\n 'ready' |\n 'trayMenuItemClicked' |\n 'windowClose' |\n 'serverOffline' |\n 'clientConnect' |\n 'clientDisconnect' |\n 'appClientConnect' |\n 'appClientDisconnect' |\n 'extClientConnect' |\n 'extClientDisconnect' |\n 'extensionReady' |\n 'neuDev_reloadApp'\n\nexport function on(event: string, handler: (ev: CustomEvent) => void): Promise {\n window.addEventListener(event, handler);\n return Promise.resolve({\n success: true,\n message: 'Event listener added'\n });\n};\n\nexport function off(event: string, handler: (ev: CustomEvent) => void): Promise {\n window.removeEventListener(event, handler);\n return Promise.resolve({\n success: true,\n message: 'Event listener removed'\n });\n};\n\nexport function dispatch(event: string, data?: any): Promise {\n let customEvent = new CustomEvent(event, {detail: data});\n window.dispatchEvent(customEvent);\n return Promise.resolve({\n success: true,\n message: 'Message dispatched'\n });\n};\n","import * as events from '../browser/events';\n\nlet ws;\nlet nativeCalls = {};\nlet offlineMessageQueue = [];\nlet extensionMessageQueue = {}\n\nexport function init() {\n initAuth();\n ws = new WebSocket(`ws://${window.location.hostname}:${window.NL_PORT}`);\n registerLibraryEvents();\n registerSocketEvents();\n}\n\nexport function sendMessage(method: string, data?: any): Promise {\n return new Promise((resolve: any, reject: any) => {\n\n if(ws?.readyState != WebSocket.OPEN) {\n sendWhenReady({method, data, resolve, reject});\n return;\n }\n\n const id: string = uuidv4();\n const accessToken: string = getAuthToken();\n\n nativeCalls[id] = {resolve, reject};\n\n ws.send(JSON.stringify({\n id,\n method,\n data,\n accessToken\n }));\n\n });\n}\n\nexport function sendWhenReady(message: any) {\n offlineMessageQueue.push(message);\n}\n\nexport function sendWhenExtReady(extensionId: string, message: any) {\n if(extensionId in extensionMessageQueue) {\n extensionMessageQueue[extensionId].push(message);\n }\n else {\n extensionMessageQueue[extensionId] = [message];\n }\n}\n\nfunction registerLibraryEvents() {\n Neutralino.events.on('ready', async () => {\n await processQueue(offlineMessageQueue);\n\n if(!window.NL_EXTENABLED) {\n return;\n }\n\n let stats = await Neutralino.extensions.getStats();\n for(let extension of stats.connected) {\n events.dispatch('extensionReady', extension);\n }\n });\n\n Neutralino.events.on('extClientConnect', (evt) => {\n events.dispatch('extensionReady', evt.detail);\n });\n\n if(!window.NL_EXTENABLED) {\n return;\n }\n\n Neutralino.events.on('extensionReady', async (evt) => {\n if(evt.detail in extensionMessageQueue) {\n await processQueue(extensionMessageQueue[evt.detail]);\n delete extensionMessageQueue[evt.detail];\n }\n });\n}\n\nfunction registerSocketEvents() {\n ws.addEventListener('message', (event) => {\n const message = JSON.parse(event.data);\n\n if(message.id && message.id in nativeCalls) {\n // Native call response\n if(message.data?.error) {\n nativeCalls[message.id].reject(message.data.error);\n if(message.data.error.code == 'NE_RT_INVTOKN') {\n // critical auth error\n // Perhaps, someone tried to open app from anoher client,\n // with 'one-time' token mode\n handleAuthError();\n }\n }\n else if(message.data?.success) {\n nativeCalls[message.id]\n .resolve(message.data.hasOwnProperty('returnValue') ? message.data.returnValue\n : message.data);\n }\n delete nativeCalls[message.id];\n }\n else if(message.event) {\n // Event from process\n events.dispatch(message.event, message.data);\n }\n });\n\n ws.addEventListener('open', async (event) => {\n events.dispatch('ready');\n });\n\n ws.addEventListener('close', async (event) => {\n let error = {\n code: 'NE_CL_NSEROFF',\n message: 'Neutralino server is offline. Try restarting the application'\n };\n events.dispatch('serverOffline', error);\n });\n}\n\nasync function processQueue(messageQueue: any[]) {\n while(messageQueue.length > 0) {\n let message = messageQueue.shift();\n try {\n let response = await sendMessage(message.method, message.data);\n message.resolve(response);\n }\n catch(err: any) {\n message.reject(err);\n }\n }\n}\n\nfunction handleAuthError() {\n ws.close();\n document.body.innerText = '';\n document.write('NE_RT_INVTOKN: Neutralinojs application configuration' +\n ' prevents accepting native calls from this client.');\n}\n\nfunction initAuth() {\n if (window.NL_TOKEN) {\n sessionStorage.setItem('NL_TOKEN', window.NL_TOKEN);\n }\n}\nfunction getAuthToken() {\n return window.NL_TOKEN || sessionStorage.getItem('NL_TOKEN') || '';\n}\n\n// From: https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid\nfunction uuidv4(): string {\n return \"10000000-1000-4000-8000-100000000000\".replace(/[018]/g, (c: any) =>\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n}\n","import { sendMessage } from '../ws/websocket';\n\nexport interface DirectoryEntry {\n entry: string;\n type: string;\n}\n\nexport interface Stats {\n size: number;\n isFile: boolean;\n isDirectory: boolean;\n createdAt: number;\n modifiedAt: number;\n}\n\nexport function createDirectory(path: string): Promise {\n return sendMessage('filesystem.createDirectory', { path });\n};\n\nexport function removeDirectory(path: string): Promise {\n return sendMessage('filesystem.removeDirectory', { path });\n};\n\nexport function writeFile(path: string, data: string): Promise {\n return sendMessage('filesystem.writeFile', { path, data });\n};\n\nexport function appendFile(path: string, data: string): Promise {\n return sendMessage('filesystem.appendFile', { path, data });\n};\n\nexport function writeBinaryFile(path: string, data: ArrayBuffer): Promise {\n return sendMessage('filesystem.writeBinaryFile', {\n path,\n data: arrayBufferToBase64(data)\n });\n};\n\nexport function appendBinaryFile(path: string, data: ArrayBuffer): Promise {\n return sendMessage('filesystem.appendBinaryFile', {\n path,\n data: arrayBufferToBase64(data)\n });\n};\n\nexport function readFile(path: string): Promise {\n return sendMessage('filesystem.readFile', { path });\n};\n\nexport function readBinaryFile(path: string): Promise {\n return new Promise((resolve: any, reject: any) => {\n sendMessage('filesystem.readBinaryFile', { path })\n .then((base64Data: string) => {\n let binaryData: string = window.atob(base64Data);\n let len: number = binaryData.length;\n let bytes: Uint8Array = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryData.charCodeAt(i);\n }\n resolve(bytes.buffer);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n\nexport function removeFile(path: string): Promise {\n return sendMessage('filesystem.removeFile', { path });\n};\n\nexport function readDirectory(path: string): Promise {\n return sendMessage('filesystem.readDirectory', { path });\n};\n\nexport function copyFile(source: string, destination: string): Promise {\n return sendMessage('filesystem.copyFile', { source, destination } );\n};\n\nexport function moveFile(source: string, destination: string): Promise {\n return sendMessage('filesystem.moveFile', { source, destination });\n};\n\nexport function getStats(path: string): Promise {\n return sendMessage('filesystem.getStats', { path });\n};\n\nfunction arrayBufferToBase64(data: ArrayBuffer): string {\n let bytes: Uint8Array = new Uint8Array(data);\n let asciiStr: string = '';\n\n for(let byte of bytes) {\n asciiStr += String.fromCharCode(byte);\n }\n\n return window.btoa(asciiStr);\n};\n\n\n","import { sendMessage } from '../ws/websocket';\n\nexport interface ExecCommandOptions {\n stdIn?: string;\n background?: boolean;\n}\n\nexport interface ExecCommandResult {\n pid: number;\n stdOut: string;\n stdErr: string;\n exitCode: number;\n}\n\nexport interface SpawnedProcess {\n id: number;\n pid: number;\n}\n\nexport interface OpenDialogOptions {\n multiSelections?: boolean;\n filters?: Filter[];\n}\n\nexport interface SaveDialogOptions {\n forceOverwrite?: boolean;\n filters?: Filter[];\n}\n\nexport interface Filter {\n name: string;\n extensions: string[];\n}\n\nexport interface TrayOptions {\n icon?: string;\n menu?: TrayMenuItem[];\n}\n\nexport interface TrayMenuItem {\n id?: string;\n text: string;\n isDisabled?: boolean;\n isChecked?: boolean;\n}\n\nexport enum Icon {\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFO = 'INFO',\n QUESTION = 'QUESTION'\n};\n\nexport enum MessageBoxChoice {\n OK = 'OK',\n OK_CANCEL = 'OK_CANCEL',\n YES_NO = 'YES_NO',\n YES_NO_CANCEL = 'YES_NO_CANCEL',\n RETRY_CANCEL = 'RETRY_CANCEL',\n ABORT_RETRY_IGNORE = 'ABORT_RETRY_IGNORE'\n};\n\nexport type KnownPath =\n 'config' |\n 'data' |\n 'cache' |\n 'documents' |\n 'pictures' |\n 'music' |\n 'video' |\n 'downloads' |\n 'savedGames1' |\n 'savedGames2'\n\nexport function execCommand(command: string, options?: ExecCommandOptions): Promise {\n return sendMessage('os.execCommand', { command, ...options });\n};\n\nexport function spawnProcess(command: string): Promise {\n return sendMessage('os.spawnProcess', { command });\n};\n\nexport function updateSpawnedProcess(id: number, event: string, data?:any): Promise {\n return sendMessage('os.updateSpawnedProcess', { id, event, data });\n};\n\nexport function getSpawnedProcesses(): Promise {\n return sendMessage('os.getSpawnedProcesses');\n};\n\nexport function getEnv(key: string): Promise {\n return sendMessage('os.getEnv', { key });\n};\n\nexport function showOpenDialog(title?: string, options?: OpenDialogOptions): Promise {\n return sendMessage('os.showOpenDialog', { title, ...options });\n};\n\nexport function showFolderDialog(title?: string): Promise {\n return sendMessage('os.showFolderDialog', { title });\n};\n\nexport function showSaveDialog(title?: string, options?: SaveDialogOptions): Promise {\n return sendMessage('os.showSaveDialog', { title, ...options });\n};\n\nexport function showNotification(title: string, content: string, icon?: Icon): Promise {\n return sendMessage('os.showNotification', { title, content, icon });\n};\n\nexport function showMessageBox(title: string, content: string,\n choice?: MessageBoxChoice, icon?: Icon): Promise {\n return sendMessage('os.showMessageBox', { title, content, choice, icon });\n};\n\nexport function setTray(options: TrayOptions): Promise {\n return sendMessage('os.setTray', options);\n};\n\nexport function open(url: string): Promise {\n return sendMessage('os.open', { url });\n};\n\nexport function getPath(name: KnownPath): Promise {\n return sendMessage('os.getPath', { name });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport interface MemoryInfo {\n total: number;\n available: number;\n}\n\nexport function getMemoryInfo(): Promise {\n return sendMessage('computer.getMemoryInfo');\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport function setData(key: string, data: string): Promise {\n return sendMessage('storage.setData', { key, data });\n\n};\n\nexport function getData(key: string): Promise {\n return sendMessage('storage.getData', { key });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport enum LoggerType {\n WARNING = 'WARNING',\n ERROR = 'ERROR',\n INFO = 'INFO'\n};\n\nexport function log(message: string, type?: LoggerType): Promise {\n return sendMessage('debug.log', { message, type });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport interface OpenActionOptions {\n url: string;\n}\n\nexport interface RestartOptions {\n args: string;\n}\n\nexport function exit(code?: number): Promise {\n return sendMessage('app.exit', { code });\n};\n\nexport function killProcess(): Promise {\n return sendMessage('app.killProcess');\n};\n\nexport function restartProcess(options?: RestartOptions): Promise {\n return new Promise(async (resolve: () => void) => {\n let command = window.NL_ARGS.reduce((acc: string, arg: string) => {\n acc += ' ' + arg;\n return acc;\n }, '');\n\n if(options?.args) {\n command += ' ' + options.args;\n }\n\n await Neutralino.os.execCommand(command, {background: true});\n Neutralino.app.exit();\n resolve();\n });\n};\n\nexport function getConfig(): Promise {\n return sendMessage('app.getConfig');\n};\n\nexport function broadcast(event: string, data?: any): Promise {\n return sendMessage('app.broadcast', {event, data});\n};\n","import { sendMessage } from '../ws/websocket';\n\nconst draggableRegions: WeakMap = new WeakMap();\n\nexport interface WindowOptions extends WindowSizeOptions {\n title?: string;\n icon?: string;\n fullScreen?: boolean;\n alwaysOnTop?: boolean;\n enableInspector?: boolean;\n borderless?: boolean;\n maximize?: boolean;\n hidden?: boolean;\n maximizable?: boolean;\n processArgs?: string;\n}\n\nexport interface WindowSizeOptions {\n width?: number;\n height?: number;\n minWidth?: number;\n minHeight?: number;\n maxWidth?: number;\n maxHeight?: number;\n resizable?: boolean;\n}\n\nexport interface WindowPosOptions {\n x: number;\n y: number;\n}\n\nexport function setTitle(title: string): Promise {\n return sendMessage('window.setTitle', { title });\n};\n\nexport function getTitle(): Promise {\n return sendMessage('window.getTitle');\n};\n\nexport function maximize(): Promise {\n return sendMessage('window.maximize');\n};\n\nexport function unmaximize(): Promise {\n return sendMessage('window.unmaximize');\n};\n\nexport function isMaximized(): Promise {\n return sendMessage('window.isMaximized');\n};\n\nexport function minimize(): Promise {\n return sendMessage('window.minimize');\n};\n\nexport function setFullScreen(): Promise {\n return sendMessage('window.setFullScreen');\n};\n\nexport function exitFullScreen(): Promise {\n return sendMessage('window.exitFullScreen');\n};\n\nexport function isFullScreen(): Promise {\n return sendMessage('window.isFullScreen');\n};\n\nexport function show(): Promise {\n return sendMessage('window.show');\n};\n\nexport function hide(): Promise {\n return sendMessage('window.hide');\n};\n\nexport function isVisible(): Promise {\n return sendMessage('window.isVisible');\n};\n\nexport function focus(): Promise {\n return sendMessage('window.focus');\n};\n\nexport function setIcon(icon: string): Promise {\n return sendMessage('window.setIcon', { icon });\n};\n\nexport function move(x: number, y: number): Promise {\n return sendMessage('window.move', { x, y });\n};\n\nexport function setDraggableRegion(domElementOrId: string | HTMLElement): Promise {\n return new Promise((resolve: any, reject: any) => {\n const draggableRegion: HTMLElement = domElementOrId instanceof Element ?\n domElementOrId : document.getElementById(domElementOrId);\n let initialClientX: number = 0;\n let initialClientY: number = 0;\n\n if (!draggableRegion) {\n return reject({\n code: 'NE_WD_DOMNOTF',\n message: 'Unable to find DOM element'\n });\n }\n\n if (draggableRegions.has(draggableRegion)) {\n return reject({\n code: 'NE_WD_ALRDREL',\n message: 'This DOM element is already an active draggable region'\n });\n }\n\n draggableRegion.addEventListener('pointerdown', startPointerCapturing);\n draggableRegion.addEventListener('pointerup', endPointerCapturing);\n\n draggableRegions.set(draggableRegion, { pointerdown: startPointerCapturing, pointerup: endPointerCapturing });\n\n async function onPointerMove(evt: PointerEvent) {\n await Neutralino.window.move(\n evt.screenX - initialClientX,\n evt.screenY - initialClientY\n );\n }\n\n function startPointerCapturing(evt: PointerEvent) {\n if (evt.button !== 0) return;\n initialClientX = evt.clientX;\n initialClientY = evt.clientY;\n draggableRegion.addEventListener('pointermove', onPointerMove);\n draggableRegion.setPointerCapture(evt.pointerId);\n }\n\n function endPointerCapturing(evt: PointerEvent) {\n draggableRegion.removeEventListener('pointermove', onPointerMove);\n draggableRegion.releasePointerCapture(evt.pointerId);\n }\n\n resolve({\n success: true,\n message: 'Draggable region was activated'\n });\n });\n};\n\nexport function unsetDraggableRegion(domElementOrId: string | HTMLElement): Promise {\n return new Promise((resolve: any, reject: any) => {\n const draggableRegion: HTMLElement = domElementOrId instanceof Element ?\n domElementOrId : document.getElementById(domElementOrId);\n\n if (!draggableRegion) {\n return reject({\n code: 'NE_WD_DOMNOTF',\n message: 'Unable to find DOM element'\n });\n }\n if (!draggableRegions.has(draggableRegion)) {\n return reject({\n code: 'NE_WD_NOTDRRE',\n message: 'DOM element is not an active draggable region'\n });\n }\n\n const { pointerdown, pointerup } = draggableRegions.get(draggableRegion);\n draggableRegion.removeEventListener('pointerdown', pointerdown);\n draggableRegion.removeEventListener('pointerup', pointerup);\n draggableRegions.delete(draggableRegion);\n\n resolve({\n success: true,\n message: 'Draggable region was deactivated'\n });\n });\n}\n\nexport function setSize(options: WindowSizeOptions): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n let sizeOptions = await Neutralino.window.getSize();\n\n options = {...sizeOptions, ...options}; // merge prioritizing options arg\n\n sendMessage('window.setSize', options)\n .then((response: any) => {\n resolve(response);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n\nexport function getSize(): Promise {\n return sendMessage('window.getSize');\n};\n\nexport function getPosition(): Promise {\n return sendMessage('window.getPosition');\n};\n\nexport function setAlwaysOnTop(onTop: boolean): Promise {\n return sendMessage('window.setAlwaysOnTop', { onTop });\n};\n\nexport function create(url: string, options?: WindowOptions): Promise {\n return new Promise((resolve: any, reject: any) => {\n\n function normalize(arg: any) {\n if(typeof arg != \"string\")\n return arg;\n arg = arg.trim();\n if(arg.includes(\" \")) {\n arg = `\"${arg}\"`;\n }\n return arg;\n }\n\n let command = window.NL_ARGS.reduce((acc: string, arg: string, index: number) => {\n if(arg.includes(\"--path=\") || arg.includes(\"--debug-mode\") ||\n arg.includes(\"--load-dir-res\") || index == 0) {\n acc += \" \" + normalize(arg);\n }\n return acc;\n }, \"\");\n\n command += \" --url=\" + normalize(url);\n\n for(let key in options) {\n if(key == \"processArgs\")\n continue;\n\n let cliKey: string = key.replace(/[A-Z]|^[a-z]/g, (token: string) => (\n \"-\" + token.toLowerCase()\n ));\n command += ` --window${cliKey}=${normalize(options[key])}`\n }\n if(options && options.processArgs)\n command += \" \" + options.processArgs;\n\n Neutralino.os.execCommand(command, { background: true })\n .then((processInfo: any) => {\n resolve(processInfo);\n })\n .catch((error: any) => {\n reject(error);\n });\n });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport * from '../browser/events';\n\nexport function broadcast(event: string, data?: any): Promise {\n return sendMessage('events.broadcast', {event, data});\n};\n","import * as websocket from '../ws/websocket';\n\nexport interface ExtensionStats {\n loaded: string[];\n connected: string[];\n}\n\nexport function dispatch(extensionId: string, event: string, data?: any): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n let stats = await Neutralino.extensions.getStats();\n if(!stats.loaded.includes(extensionId)) {\n reject({\n code: 'NE_EX_EXTNOTL',\n message: `${extensionId} is not loaded`\n });\n }\n else if(stats.connected.includes(extensionId)) {\n try {\n let result = await websocket.sendMessage('extensions.dispatch', {extensionId, event, data});\n resolve(result);\n }\n catch(err: any) {\n reject(err);\n }\n }\n else {\n // loaded but not connected yet.\n websocket.sendWhenExtReady(extensionId, {\n method: 'extensions.dispatch',\n data: {extensionId, event, data}, resolve, reject\n });\n }\n });\n};\n\nexport function broadcast(event: string, data?: any): Promise {\n return websocket.sendMessage('extensions.broadcast', {event, data});\n};\n\nexport function getStats(): Promise {\n return websocket.sendMessage('extensions.getStats');\n};\n","import { Error } from './protocol';\n\nexport interface Manifest {\n applicationId: string;\n version: string;\n resourcesURL: string;\n}\n\nlet manifest: Manifest = null;\n\nexport function checkForUpdates(url: string): Promise {\n function isValidManifest(manifest: any): manifest is Manifest {\n if(manifest.applicationId && manifest.applicationId == window.NL_APPID\n && manifest.version && manifest.resourcesURL) {\n return true;\n }\n return false;\n }\n\n return new Promise(async (resolve: (m: Manifest) => void, reject: (e: Error) => void) => {\n if(!url) {\n return reject({\n code: 'NE_RT_NATRTER',\n message: 'Missing require parameter: url'\n });\n }\n try {\n let response = await fetch(url);\n manifest = JSON.parse(await response.text());\n\n if(isValidManifest(manifest)) {\n resolve(manifest);\n }\n else {\n reject({\n code: 'NE_UP_CUPDMER',\n message: 'Invalid update manifest or mismatching applicationId'\n });\n }\n }\n catch(err) {\n reject({\n code: 'NE_UP_CUPDERR',\n message: 'Unable to fetch update manifest'\n });\n }\n\n });\n};\n\nexport function install(): Promise {\n return new Promise(async (resolve: any, reject: any) => {\n if(!manifest) {\n return reject({\n code: 'NE_UP_UPDNOUF',\n message: 'No update manifest loaded'\n });\n }\n try {\n let response = await fetch(manifest.resourcesURL);\n let resourcesBuffer = await response.arrayBuffer();\n await Neutralino.filesystem.writeBinaryFile(window.NL_PATH + \"/resources.neu\", resourcesBuffer);\n\n resolve({\n success: true,\n message: 'Update installed. Restart the process to see updates'\n });\n }\n catch(err) {\n reject({\n code: 'NE_UP_UPDINER',\n message: 'Update installation error'\n });\n }\n\n });\n};\n","import { sendMessage } from '../ws/websocket';\n\nexport function readText(key: string, data: string): Promise {\n return sendMessage('clipboard.readText', { key, data });\n\n};\n\nexport function writeText(data: string): Promise {\n return sendMessage('clipboard.writeText', { data });\n};\n","import * as websocket from '../ws/websocket';\nimport { version } from '../../package.json';\n\nlet initialized = false;\n\nexport function init(): void {\n if(initialized) {\n return;\n }\n\n websocket.init();\n\n if(window.NL_ARGS.find((arg) => arg == '--neu-dev-auto-reload')) {\n Neutralino.events.on('neuDev_reloadApp', async () => {\n await Neutralino.debug.log('Reloading the application...');\n location.reload();\n });\n }\n\n window.NL_CVERSION = version;\n window.NL_CCOMMIT = '4f36ae73290a69c509bc562e32b69100b6e5b4eb'; // only the build server will update this\n initialized = true;\n}\n"],"names":["dispatch","init","events.dispatch","getStats","broadcast","websocket.sendMessage","websocket.sendWhenExtReady","websocket.init"],"mappings":"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"} \ No newline at end of file diff --git a/main.cpp b/main.cpp index 20b4de08..4280e7f6 100644 --- a/main.cpp +++ b/main.cpp @@ -3,6 +3,7 @@ #include #if defined(_WIN32) #include +#include #endif #include "lib/json/json.hpp" @@ -98,7 +99,17 @@ void __startServerAsync() { json jEnableServer = settings::getOptionForCurrentMode("enableServer"); if(!jEnableServer.is_null() && jEnableServer.get()) { - navigationUrl = neuserver::init(); + try { + navigationUrl = neuserver::init(); + } + catch(websocketpp::exception &e) { + int port = settings::getOptionForCurrentMode("port"); + pfd::message("Unable to start server", + "Neutralinojs can't initialize the application server on port: " + to_string(port), + pfd::choice::ok, + pfd::icon::error); + std::exit(1); + } neuserver::startAsync(); } }