@lynker-desktop/electron-sdk 0.0.4-alpha.29 → 0.0.4-alpha.30
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/esm/main/index.d.ts +4 -0
- package/esm/main/index.d.ts.map +1 -1
- package/esm/main/index.js +35 -2
- package/esm/main/index.js.map +1 -1
- package/esm/preload/index.js +2 -1
- package/esm/preload/index.js.map +1 -1
- package/esm/renderer/index.d.ts +18 -1
- package/esm/renderer/index.d.ts.map +1 -1
- package/esm/renderer/index.js +40 -1
- package/esm/renderer/index.js.map +1 -1
- package/main/index.d.ts +4 -0
- package/main/index.d.ts.map +1 -1
- package/main/index.js +34 -0
- package/main/index.js.map +1 -1
- package/package.json +9 -8
- package/preload/index.js +1 -0
- package/preload/index.js.map +1 -1
- package/renderer/index.d.ts +18 -1
- package/renderer/index.d.ts.map +1 -1
- package/renderer/index.js +40 -1
- package/renderer/index.js.map +1 -1
package/esm/main/index.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export interface SDK_TYPE {
|
|
|
16
16
|
export declare const initialize: (preload: string, loadingViewUrl?: string) => SDK_TYPE;
|
|
17
17
|
/** 后续再优化 */
|
|
18
18
|
export declare const getSDK: () => SDK_TYPE;
|
|
19
|
+
/**
|
|
20
|
+
* 注册唤起
|
|
21
|
+
*/
|
|
22
|
+
export declare const registerProtocol: () => (protocol: string) => void;
|
|
19
23
|
/**
|
|
20
24
|
* 注册协议
|
|
21
25
|
* @param options
|
package/esm/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAS3C,OAAO,KAAK,GAAG,MAAM,mCAAmC,CAAA;AAGxD,OAAO,KAAK,aAAa,MAAM,8CAA8C,CAAA;AAQ7E,eAAO,IAAI,aAAa,SAAQ,CAAC;AAGjC,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC;IAC5C,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,YAAa,MAAM,mBAAmB,MAAM,KAAG,QAoBrE,CAAA;AAED,YAAY;AACZ,eAAO,MAAM,MAAM,QAAO,QAOzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,mBAGT,MAAM,SAwBxB,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,YAAa,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,qBA0ErH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,gBAAiB,WAAW,SAA+B,CAAC;AAE/E,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAwB,GAAG,MAAM,CAiBnE"}
|
package/esm/main/index.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { promisify } from 'node:util';
|
|
4
|
-
import electron from 'electron';
|
|
4
|
+
import electron, { app } from 'electron';
|
|
5
5
|
import md5 from 'md5';
|
|
6
6
|
import { v5 } from 'uuid';
|
|
7
|
+
import lodash from 'lodash';
|
|
7
8
|
import * as remote from '@electron/remote/main';
|
|
8
9
|
import * as ipc from '@lynker-desktop/electron-ipc/main';
|
|
9
10
|
import * as logs from '@lynker-desktop/electron-logs/main';
|
|
@@ -52,6 +53,38 @@ const getSDK = () => {
|
|
|
52
53
|
// @ts-ignore
|
|
53
54
|
return global['__GLBOAL_ELECTRON_SDK__'];
|
|
54
55
|
};
|
|
56
|
+
/**
|
|
57
|
+
* 注册唤起
|
|
58
|
+
*/
|
|
59
|
+
const registerProtocol = (() => {
|
|
60
|
+
let isRegister = false;
|
|
61
|
+
let launchOptions = ``;
|
|
62
|
+
return (protocol) => {
|
|
63
|
+
if (isRegister) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
isRegister = true;
|
|
67
|
+
if (process.defaultApp) {
|
|
68
|
+
if (process.argv.length >= 2) {
|
|
69
|
+
app.setAsDefaultProtocolClient(protocol, process.execPath, [path.resolve(lodash.get(process, `argv[1]`, ''))]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
app.setAsDefaultProtocolClient(protocol);
|
|
74
|
+
}
|
|
75
|
+
app.on("open-url", (_event, url) => {
|
|
76
|
+
launchOptions = `${url}`;
|
|
77
|
+
ipc.mainIPC.invokeAllRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', launchOptions);
|
|
78
|
+
});
|
|
79
|
+
ipc.mainIPC.handleRenderer('__GLOBAL_GET_LAUNCH_OPTIONS__', async () => {
|
|
80
|
+
return launchOptions;
|
|
81
|
+
});
|
|
82
|
+
ipc.mainIPC.handleRenderer('__GLOBAL_DEL_LAUNCH_OPTIONS__', async () => {
|
|
83
|
+
launchOptions = ``;
|
|
84
|
+
return launchOptions;
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
});
|
|
55
88
|
/**
|
|
56
89
|
* 注册协议
|
|
57
90
|
* @param options
|
|
@@ -154,5 +187,5 @@ function getRandomUUID(key = `${Date.now()}`) {
|
|
|
154
187
|
return uuid;
|
|
155
188
|
}
|
|
156
189
|
|
|
157
|
-
export { enable, getRandomUUID, getSDK, initialize, isInitialized, serve };
|
|
190
|
+
export { enable, getRandomUUID, getSDK, initialize, isInitialized, registerProtocol, serve };
|
|
158
191
|
//# sourceMappingURL=index.js.map
|
package/esm/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/main/index.ts"],"sourcesContent":["import type { WebContents } from 'electron'\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport {promisify} from 'node:util';\nimport electron from 'electron';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport * as remote from '@electron/remote/main'\nimport * as ipc from '@lynker-desktop/electron-ipc/main'\nimport * as logs from '@lynker-desktop/electron-logs/main'\nimport * as tabsBrowser from '@lynker-desktop/electron-tabs-browser/main'\nimport * as windowManager from '@lynker-desktop/electron-window-manager/main'\nimport * as windowModal from '@lynker-desktop/electron-window-modal/main'\nimport * as windowTooltip from '@lynker-desktop/electron-window-tooltip/main'\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport let isInitialized = false;\n\n\nexport interface SDK_TYPE {\n ipc: typeof ipc.mainIPC;\n windowManager: windowManager.WindowsManager,\n getPreload: () => string;\n}\n\n/**\n * 初始化\n * @param preload 预加载js 必须传\n * @param loadingViewUrl 窗口管理默认loading页面\n * @returns\n */\nexport const initialize = (preload: string, loadingViewUrl?: string): SDK_TYPE => {\n if (isInitialized) {\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n }\n isInitialized = true;\n ipc.initialize();\n logs.initialize();\n tabsBrowser.initialize(preload);\n const wm = windowManager.initialize(preload, loadingViewUrl);\n windowModal.initialize(preload);\n windowTooltip.initialize(preload);\n class SDK {\n static ipc = ipc.mainIPC;\n static windowManager = wm;\n static getPreload = () => preload;\n }\n // @ts-ignore\n global['__GLBOAL_ELECTRON_SDK__'] = SDK;\n return SDK;\n}\n\n/** 后续再优化 */\nexport const getSDK = (): SDK_TYPE => {\n // @ts-ignore\n if (!global['__GLBOAL_ELECTRON_SDK__']) {\n throw '请在ready前先调用initialize'\n }\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n}\n\n/**\n * 注册协议\n * @param options\n * @returns\n */\nexport const serve = (options: Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>) => {\n if (!options.length) {\n\t\tthrow new Error('请传入配置');\n\t}\n const stat = promisify(fs.stat);\n\n // See https://cs.chromium.org/chromium/src/net/base/net_error_list.h\n const FILE_NOT_FOUND = -6;\n\n const getPath: any = async (path_: string) => {\n try {\n const result = await stat(path_);\n\n if (result.isFile()) {\n return path_;\n }\n\n if (result.isDirectory()) {\n return getPath(path.join(path_, 'index.html'));\n }\n } catch (_) {}\n };\n\n const createHandler = (item: any) => {\n return async (request: any, callback: any) => {\n const indexPath = path.join(item.directory, 'index.html');\n const filePath = path.join(item.directory, decodeURIComponent(new URL(request.url).pathname));\n const resolvedPath = await getPath(filePath);\n const fileExtension = path.extname(filePath);\n\n if (resolvedPath || !fileExtension || fileExtension === '.html' || fileExtension === '.asar') {\n callback({\n path: resolvedPath || indexPath\n });\n } else {\n callback({error: FILE_NOT_FOUND});\n }\n }\n };\n\toptions = options.map((item) => {\n\t\treturn {\n\t\t\t...item,\n\t\t\tisCorsEnabled: item.isCorsEnabled || false,\n\t\t\tscheme: item.scheme || 'app',\n\t\t\tdirectory: path.resolve(electron.app.getAppPath(), item.directory),\n\t\t}\n\t})\n\telectron.protocol.registerSchemesAsPrivileged(options.map((item) => {\n\t\treturn {\n\t\t\tscheme: item.scheme,\n\t\t\tprivileges: {\n\t\t\t\tbypassCSP: true,\n\t\t\t\tstandard: true,\n\t\t\t\tsecure: true,\n\t\t\t\tallowServiceWorkers: true,\n\t\t\t\tsupportFetchAPI: true,\n\t\t\t\tcorsEnabled: item.isCorsEnabled || false,\n\t\t\t}\n\t\t}\n\t}));\n\treturn new Promise((resolve, reject) => {\n\t\ttry {\n\t\t\telectron.app.on('ready', () => {\n\t\t\t\toptions.forEach((item) => {\n\t\t\t\t\tconst handler = createHandler(item);\n\t\t\t\t\tconst session = item.partition ? electron.session.fromPartition(item.partition) : electron.session.defaultSession;\n\t\t\t\t\tsession.protocol.registerFileProtocol(item.scheme, handler);\n\t\t\t\t})\n\t\t\t\tresolve(true)\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error)\n\t\t}\n\t})\n}\n\n/**\n * @electron/remote/main enable方法\n * @param webContents\n * @returns\n */\nexport const enable = (webContents: WebContents) => remote.enable(webContents);\n\nexport function getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n}\n"],"names":["uuidv5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/main/index.ts"],"sourcesContent":["import type { WebContents } from 'electron'\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport {promisify} from 'node:util';\nimport electron, { app } from 'electron';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport lodash from 'lodash';\nimport * as remote from '@electron/remote/main'\nimport * as ipc from '@lynker-desktop/electron-ipc/main'\nimport * as logs from '@lynker-desktop/electron-logs/main'\nimport * as tabsBrowser from '@lynker-desktop/electron-tabs-browser/main'\nimport * as windowManager from '@lynker-desktop/electron-window-manager/main'\nimport * as windowModal from '@lynker-desktop/electron-window-modal/main'\nimport * as windowTooltip from '@lynker-desktop/electron-window-tooltip/main'\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport let isInitialized = false;\n\n\nexport interface SDK_TYPE {\n ipc: typeof ipc.mainIPC;\n windowManager: windowManager.WindowsManager,\n getPreload: () => string;\n}\n\n/**\n * 初始化\n * @param preload 预加载js 必须传\n * @param loadingViewUrl 窗口管理默认loading页面\n * @returns\n */\nexport const initialize = (preload: string, loadingViewUrl?: string): SDK_TYPE => {\n if (isInitialized) {\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n }\n isInitialized = true;\n ipc.initialize();\n logs.initialize();\n tabsBrowser.initialize(preload);\n const wm = windowManager.initialize(preload, loadingViewUrl);\n windowModal.initialize(preload);\n windowTooltip.initialize(preload);\n class SDK {\n static ipc = ipc.mainIPC;\n static windowManager = wm;\n static getPreload = () => preload;\n }\n // @ts-ignore\n global['__GLBOAL_ELECTRON_SDK__'] = SDK;\n return SDK;\n}\n\n/** 后续再优化 */\nexport const getSDK = (): SDK_TYPE => {\n // @ts-ignore\n if (!global['__GLBOAL_ELECTRON_SDK__']) {\n throw '请在ready前先调用initialize'\n }\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n}\n\n/**\n * 注册唤起\n */\nexport const registerProtocol = (() => {\n let isRegister = false;\n let launchOptions = ``;\n return (protocol: string) => {\n if (isRegister) {\n return;\n }\n isRegister = true;\n if (process.defaultApp) {\n if (process.argv.length >= 2) {\n app.setAsDefaultProtocolClient(protocol, process.execPath, [path.resolve(lodash.get(process, `argv[1]`, ''))]);\n }\n } else {\n app.setAsDefaultProtocolClient(protocol);\n }\n app.on(\"open-url\", (_event, url) => {\n launchOptions = `${url}`;\n ipc.mainIPC.invokeAllRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', launchOptions)\n });\n ipc.mainIPC.handleRenderer('__GLOBAL_GET_LAUNCH_OPTIONS__', async () => {\n return launchOptions;\n })\n ipc.mainIPC.handleRenderer('__GLOBAL_DEL_LAUNCH_OPTIONS__', async () => {\n launchOptions = ``;\n return launchOptions;\n })\n }\n})\n\n/**\n * 注册协议\n * @param options\n * @returns\n */\nexport const serve = (options: Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>) => {\n if (!options.length) {\n\t\tthrow new Error('请传入配置');\n\t}\n const stat = promisify(fs.stat);\n\n // See https://cs.chromium.org/chromium/src/net/base/net_error_list.h\n const FILE_NOT_FOUND = -6;\n\n const getPath: any = async (path_: string) => {\n try {\n const result = await stat(path_);\n\n if (result.isFile()) {\n return path_;\n }\n\n if (result.isDirectory()) {\n return getPath(path.join(path_, 'index.html'));\n }\n } catch (_) {}\n };\n\n const createHandler = (item: any) => {\n return async (request: any, callback: any) => {\n const indexPath = path.join(item.directory, 'index.html');\n const filePath = path.join(item.directory, decodeURIComponent(new URL(request.url).pathname));\n const resolvedPath = await getPath(filePath);\n const fileExtension = path.extname(filePath);\n\n if (resolvedPath || !fileExtension || fileExtension === '.html' || fileExtension === '.asar') {\n callback({\n path: resolvedPath || indexPath\n });\n } else {\n callback({error: FILE_NOT_FOUND});\n }\n }\n };\n\toptions = options.map((item) => {\n\t\treturn {\n\t\t\t...item,\n\t\t\tisCorsEnabled: item.isCorsEnabled || false,\n\t\t\tscheme: item.scheme || 'app',\n\t\t\tdirectory: path.resolve(electron.app.getAppPath(), item.directory),\n\t\t}\n\t})\n\telectron.protocol.registerSchemesAsPrivileged(options.map((item) => {\n\t\treturn {\n\t\t\tscheme: item.scheme,\n\t\t\tprivileges: {\n\t\t\t\tbypassCSP: true,\n\t\t\t\tstandard: true,\n\t\t\t\tsecure: true,\n\t\t\t\tallowServiceWorkers: true,\n\t\t\t\tsupportFetchAPI: true,\n\t\t\t\tcorsEnabled: item.isCorsEnabled || false,\n\t\t\t}\n\t\t}\n\t}));\n\treturn new Promise((resolve, reject) => {\n\t\ttry {\n\t\t\telectron.app.on('ready', () => {\n\t\t\t\toptions.forEach((item) => {\n\t\t\t\t\tconst handler = createHandler(item);\n\t\t\t\t\tconst session = item.partition ? electron.session.fromPartition(item.partition) : electron.session.defaultSession;\n\t\t\t\t\tsession.protocol.registerFileProtocol(item.scheme, handler);\n\t\t\t\t})\n\t\t\t\tresolve(true)\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error)\n\t\t}\n\t})\n}\n\n/**\n * @electron/remote/main enable方法\n * @param webContents\n * @returns\n */\nexport const enable = (webContents: WebContents) => remote.enable(webContents);\n\nexport function getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n}\n"],"names":["uuidv5"],"mappings":"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"}
|
package/esm/preload/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { contextBridge } from 'electron';
|
|
1
|
+
import { ipcRenderer, contextBridge } from 'electron';
|
|
2
2
|
import remote from '@electron/remote/renderer';
|
|
3
3
|
import '@lynker-desktop/electron-ipc/preload';
|
|
4
4
|
import '@lynker-desktop/electron-logs/preload';
|
|
@@ -15,6 +15,7 @@ if (window.__ELECTRON_SDK__) {
|
|
|
15
15
|
else {
|
|
16
16
|
try {
|
|
17
17
|
const preload = {
|
|
18
|
+
ipcRenderer: ipcRenderer,
|
|
18
19
|
remote: remote,
|
|
19
20
|
};
|
|
20
21
|
// @ts-ignore
|
package/esm/preload/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/src/preload/index.ts"],"sourcesContent":["import { contextBridge } from 'electron';\nimport remote from '@electron/remote/renderer';\nimport '@lynker-desktop/electron-ipc/preload';\nimport '@lynker-desktop/electron-logs/preload';\nimport '@lynker-desktop/electron-tabs-browser/preload';\nimport '@lynker-desktop/electron-window-manager/preload';\nimport '@lynker-desktop/electron-window-modal/preload';\nimport '@lynker-desktop/electron-window-tooltip/preload';\n\n// @ts-ignore\nif (window.__ELECTRON_SDK__) {\n // eslint-disable-next-line no-console\n console.log('electron-sdk Electron preload has already been run');\n} else {\n try {\n const preload = {\n remote: remote,\n }\n // @ts-ignore\n window.__ELECTRON_SDK__ = preload;\n if (contextBridge) {\n try {\n // This will fail if contextIsolation is not enabled\n contextBridge.exposeInMainWorld('__ELECTRON_SDK__', preload);\n } catch (error) {\n // console.error(error)\n }\n\n }\n }\n catch (e) {\n console.error(e)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AASA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE;;AAE3B,IAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;KAAM;AACL,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,MAAM;SACf,CAAA;;AAED,QAAA,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI;;AAEF,gBAAA,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;;aAEf;SAEF;KACF;IACD,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACjB;AACH"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/src/preload/index.ts"],"sourcesContent":["import { contextBridge, ipcRenderer } from 'electron';\nimport remote from '@electron/remote/renderer';\nimport '@lynker-desktop/electron-ipc/preload';\nimport '@lynker-desktop/electron-logs/preload';\nimport '@lynker-desktop/electron-tabs-browser/preload';\nimport '@lynker-desktop/electron-window-manager/preload';\nimport '@lynker-desktop/electron-window-modal/preload';\nimport '@lynker-desktop/electron-window-tooltip/preload';\n\n// @ts-ignore\nif (window.__ELECTRON_SDK__) {\n // eslint-disable-next-line no-console\n console.log('electron-sdk Electron preload has already been run');\n} else {\n try {\n const preload = {\n ipcRenderer: ipcRenderer,\n remote: remote,\n }\n // @ts-ignore\n window.__ELECTRON_SDK__ = preload;\n if (contextBridge) {\n try {\n // This will fail if contextIsolation is not enabled\n contextBridge.exposeInMainWorld('__ELECTRON_SDK__', preload);\n } catch (error) {\n // console.error(error)\n }\n\n }\n }\n catch (e) {\n console.error(e)\n }\n}\n"],"names":[],"mappings":";;;;;;;;;AASA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE;;AAE3B,IAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;KAAM;AACL,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,MAAM,EAAE,MAAM;SACf,CAAA;;AAED,QAAA,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI;;AAEF,gBAAA,aAAa,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;;aAEf;SAEF;KACF;IACD,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACjB;AACH"}
|
package/esm/renderer/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type RemoteType from '@electron/remote';
|
|
2
|
+
import EventEmitter from 'events';
|
|
2
3
|
import ipc from '@lynker-desktop/electron-ipc/renderer';
|
|
3
4
|
import tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer';
|
|
4
5
|
import windowManager from '@lynker-desktop/electron-window-manager/renderer';
|
|
5
6
|
import windowModal from '@lynker-desktop/electron-window-modal/renderer';
|
|
6
7
|
import windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer';
|
|
7
|
-
declare class SDK {
|
|
8
|
+
declare class SDK extends EventEmitter {
|
|
8
9
|
remote: typeof RemoteType;
|
|
9
10
|
ipc: typeof ipc.RendererIPC;
|
|
10
11
|
log: (level: import("@lynker-desktop/electron-logs/common").Level, ...logs: any[]) => void;
|
|
@@ -13,6 +14,22 @@ declare class SDK {
|
|
|
13
14
|
windowModal: typeof windowModal;
|
|
14
15
|
windowTooltip: typeof windowTooltip;
|
|
15
16
|
tabsBrowser: typeof tabsBrowser;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* 获取启动/唤起参数
|
|
20
|
+
*/
|
|
21
|
+
getLaunchOptions: () => Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* 清除启动/唤起参数
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
delLaunchOptions: () => Promise<any>;
|
|
27
|
+
/**
|
|
28
|
+
* 监听桌面端唤起
|
|
29
|
+
* @param callback
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
onLaunchOptions: (callback: (options: string) => void) => Promise<() => this>;
|
|
16
33
|
/**
|
|
17
34
|
* 生成随机uuid
|
|
18
35
|
* @param key
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,OAAO,GAAG,MAAM,uCAAuC,CAAA;AAEvD,OAAO,WAAW,MAAM,gDAAgD,CAAA;AACxE,OAAO,aAAa,MAAM,kDAAkD,CAAA;AAC5E,OAAO,WAAW,MAAM,gDAAgD,CAAA;AACxE,OAAO,aAAa,MAAM,kDAAkD,CAAA;AAY5E,cAAM,GAAI,SAAQ,YAAY;IAC5B,MAAM,EAAkB,OAAO,UAAU,CAAC;IAC1C,GAAG,yBAAmB;IACtB,GAAG,wFAAY;IACf,UAAU,wBAAmB;IAC7B,aAAa,uBAAiB;IAC9B,WAAW,qBAAe;IAC1B,aAAa,uBAAiB;IAC9B,WAAW,qBAAe;;IAe1B;;OAEG;IACH,gBAAgB,qBAGf;IAED;;;OAGG;IACH,gBAAgB,qBAGf;IAED;;;;OAIG;IACH,eAAe,aAAoB,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,yBAM3D;IAED;;;;OAIG;IACH,aAAa,CAAC,GAAG,GAAE,MAAwB,GAAG,MAAM;CAkBrD;AACD,2BAA2B;AAE3B,QAAA,MAAM,IAAI,KAA8C,CAAC;AACzD,eAAe,IAAI,CAAC"}
|
package/esm/renderer/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import EventEmitter from 'events';
|
|
1
2
|
import md5 from 'md5';
|
|
2
3
|
import { v5 } from 'uuid';
|
|
3
4
|
import ipc from '@lynker-desktop/electron-ipc/renderer';
|
|
@@ -17,8 +18,9 @@ function getRemote() {
|
|
|
17
18
|
return {};
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
class SDK {
|
|
21
|
+
class SDK extends EventEmitter {
|
|
21
22
|
constructor() {
|
|
23
|
+
super();
|
|
22
24
|
this.remote = getRemote();
|
|
23
25
|
this.ipc = ipc.RendererIPC;
|
|
24
26
|
this.log = logs.log;
|
|
@@ -27,6 +29,43 @@ class SDK {
|
|
|
27
29
|
this.windowModal = windowModal;
|
|
28
30
|
this.windowTooltip = windowTooltip;
|
|
29
31
|
this.tabsBrowser = tabsBrowser;
|
|
32
|
+
/**
|
|
33
|
+
* 获取启动/唤起参数
|
|
34
|
+
*/
|
|
35
|
+
this.getLaunchOptions = async () => {
|
|
36
|
+
const options = await this.ipc.invokeMain(`__GLOBAL_GET_LAUNCH_OPTIONS__`);
|
|
37
|
+
return options;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* 清除启动/唤起参数
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
this.delLaunchOptions = async () => {
|
|
44
|
+
const options = await this.ipc.invokeMain(`__GLOBAL_DEL_LAUNCH_OPTIONS__`);
|
|
45
|
+
return options;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 监听桌面端唤起
|
|
49
|
+
* @param callback
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
this.onLaunchOptions = async (callback) => {
|
|
53
|
+
const onCallback = (data) => {
|
|
54
|
+
callback(data);
|
|
55
|
+
};
|
|
56
|
+
this.on('launch-options-change', onCallback);
|
|
57
|
+
return () => this.off('launch-options-change', onCallback);
|
|
58
|
+
};
|
|
59
|
+
try {
|
|
60
|
+
/** 监听桌面端唤起 */
|
|
61
|
+
this.ipc.handleRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', async (data) => {
|
|
62
|
+
this.emit('launch-options-change', `${data}`);
|
|
63
|
+
return 'OK';
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('当前非桌面端环境, 请在桌面端中调用');
|
|
68
|
+
}
|
|
30
69
|
}
|
|
31
70
|
/**
|
|
32
71
|
* 生成随机uuid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/renderer/index.ts"],"sourcesContent":["import type RemoteType from '@electron/remote'\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport ipc from '@lynker-desktop/electron-ipc/renderer'\nimport logs from '@lynker-desktop/electron-logs/renderer'\nimport tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer'\nimport windowManager from '@lynker-desktop/electron-window-manager/renderer'\nimport windowModal from '@lynker-desktop/electron-window-modal/renderer'\nimport windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer'\n\nfunction getRemote() {\n try {\n // @ts-ignore\n return window?.__ELECTRON_SDK__?.remote || window?.require('@electron/remote')\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as typeof RemoteType;\n }\n}\n\nclass SDK {\n remote = getRemote() as typeof RemoteType;\n ipc = ipc.RendererIPC;\n log = logs.log;\n getLogPath = logs.getLogPath;\n windowManager = windowManager;\n windowModal = windowModal;\n windowTooltip = windowTooltip;\n tabsBrowser = tabsBrowser;\n /**\n * 生成随机uuid\n * @param key\n * @returns\n */\n getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n }\n}\n/** 临时写法,后期用rollup生成umd包 */\n// @ts-ignore\nconst core = window['__ELECTRON_SDK_CORE__'] = new SDK();\nexport default core;\n"],"names":["uuidv5"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/renderer/index.ts"],"sourcesContent":["import type RemoteType from '@electron/remote'\nimport EventEmitter from 'events';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport ipc from '@lynker-desktop/electron-ipc/renderer'\nimport logs from '@lynker-desktop/electron-logs/renderer'\nimport tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer'\nimport windowManager from '@lynker-desktop/electron-window-manager/renderer'\nimport windowModal from '@lynker-desktop/electron-window-modal/renderer'\nimport windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer'\n\nfunction getRemote() {\n try {\n // @ts-ignore\n return window?.__ELECTRON_SDK__?.remote || window?.require('@electron/remote')\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as typeof RemoteType;\n }\n}\n\nclass SDK extends EventEmitter {\n remote = getRemote() as typeof RemoteType;\n ipc = ipc.RendererIPC;\n log = logs.log;\n getLogPath = logs.getLogPath;\n windowManager = windowManager;\n windowModal = windowModal;\n windowTooltip = windowTooltip;\n tabsBrowser = tabsBrowser;\n\n constructor() {\n super();\n try {\n /** 监听桌面端唤起 */\n this.ipc.handleRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', async (data) => {\n this.emit('launch-options-change', `${data}`);\n return 'OK';\n });\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n }\n }\n\n /**\n * 获取启动/唤起参数\n */\n getLaunchOptions = async () => {\n const options = await this.ipc.invokeMain(`__GLOBAL_GET_LAUNCH_OPTIONS__`);\n return options;\n }\n\n /**\n * 清除启动/唤起参数\n * @returns\n */\n delLaunchOptions = async () => {\n const options = await this.ipc.invokeMain(`__GLOBAL_DEL_LAUNCH_OPTIONS__`);\n return options;\n }\n\n /**\n * 监听桌面端唤起\n * @param callback\n * @returns\n */\n onLaunchOptions = async (callback: (options: string) => void) => {\n const onCallback = (data: string) => {\n callback(data);\n }\n this.on('launch-options-change', onCallback);\n return () => this.off('launch-options-change', onCallback);\n }\n\n /**\n * 生成随机uuid\n * @param key\n * @returns\n */\n getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n }\n}\n/** 临时写法,后期用rollup生成umd包 */\n// @ts-ignore\nconst core = window['__ELECTRON_SDK_CORE__'] = new SDK();\nexport default core;\n"],"names":["uuidv5"],"mappings":";;;;;;;;;;AAWA,SAAS,SAAS,GAAA;AAChB,IAAA,IAAI;;AAEF,QAAA,OAAO,MAAM,EAAE,gBAAgB,EAAE,MAAM,IAAI,MAAM,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;KAC/E;IAAC,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACpC,QAAA,OAAO,EAAwB,CAAC;KACjC;AACH,CAAC;AAED,MAAM,GAAI,SAAQ,YAAY,CAAA;AAU5B,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QAVV,IAAM,CAAA,MAAA,GAAG,SAAS,EAAuB,CAAC;AAC1C,QAAA,IAAA,CAAA,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;AACtB,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;AACf,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;QAC1B,IAAa,CAAA,aAAA,GAAG,aAAa,CAAC;QAC9B,IAAW,CAAA,WAAA,GAAG,WAAW,CAAC;AAe1B;;AAEG;QACH,IAAgB,CAAA,gBAAA,GAAG,YAAW;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAA+B,6BAAA,CAAA,CAAC,CAAC;AAC3E,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAA;AAED;;;AAGG;QACH,IAAgB,CAAA,gBAAA,GAAG,YAAW;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAA+B,6BAAA,CAAA,CAAC,CAAC;AAC3E,YAAA,OAAO,OAAO,CAAC;AACjB,SAAC,CAAA;AAED;;;;AAIG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,QAAmC,KAAK;AAC/D,YAAA,MAAM,UAAU,GAAG,CAAC,IAAY,KAAI;gBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACjB,aAAC,CAAA;AACD,YAAA,IAAI,CAAC,EAAE,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;YAC7C,OAAO,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;AAC7D,SAAC,CAAA;AAvCC,QAAA,IAAI;;YAEF,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,kCAAkC,EAAE,OAAO,IAAI,KAAI;gBACzE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAG,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;AAC9C,gBAAA,OAAO,IAAI,CAAC;AACd,aAAC,CAAC,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACrC;KACF;AAgCD;;;;AAIG;AACH,IAAA,aAAa,CAAC,GAAc,GAAA,CAAA,EAAG,IAAI,CAAC,GAAG,EAAE,CAAE,CAAA,EAAA;AACzC,QAAA,IAAI,SAAkB,CAAC;AACvB,QAAA,IAAI,WAAW,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChE,QAAA,IAAI;YACF,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,EAAE,MAAM,EAAE;AAC5C,gBAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;aAC3B;SACF;QAAC,OAAO,KAAK,EAAE;SAAa;AAC7B,QAAA,IAAI;AACF,YAAA,MAAM,EAAE,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;YACzD,WAAW,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA,CAAE,IAAI,WAAW,CAAC;SAC3C;AAAC,QAAA,OAAO,KAAK,EAAE,GAAE;QAClB,MAAM,IAAI,GAAGA,EAAM,CACjB,CAAA,EAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE,EACrDA,EAAM,CAAC,GAAG,CACX,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AACF,CAAA;AACD;AACA;AACM,MAAA,IAAI,GAAG,MAAM,CAAC,uBAAuB,CAAC,GAAG,IAAI,GAAG;;;;"}
|
package/main/index.d.ts
CHANGED
|
@@ -16,6 +16,10 @@ export interface SDK_TYPE {
|
|
|
16
16
|
export declare const initialize: (preload: string, loadingViewUrl?: string) => SDK_TYPE;
|
|
17
17
|
/** 后续再优化 */
|
|
18
18
|
export declare const getSDK: () => SDK_TYPE;
|
|
19
|
+
/**
|
|
20
|
+
* 注册唤起
|
|
21
|
+
*/
|
|
22
|
+
export declare const registerProtocol: () => (protocol: string) => void;
|
|
19
23
|
/**
|
|
20
24
|
* 注册协议
|
|
21
25
|
* @param options
|
package/main/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/main/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAS3C,OAAO,KAAK,GAAG,MAAM,mCAAmC,CAAA;AAGxD,OAAO,KAAK,aAAa,MAAM,8CAA8C,CAAA;AAQ7E,eAAO,IAAI,aAAa,SAAQ,CAAC;AAGjC,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC,cAAc,CAAC;IAC5C,UAAU,EAAE,MAAM,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,YAAa,MAAM,mBAAmB,MAAM,KAAG,QAoBrE,CAAA;AAED,YAAY;AACZ,eAAO,MAAM,MAAM,QAAO,QAOzB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,mBAGT,MAAM,SAwBxB,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,YAAa,KAAK,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAC,CAAC,qBA0ErH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,MAAM,gBAAiB,WAAW,SAA+B,CAAC;AAE/E,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAwB,GAAG,MAAM,CAiBnE"}
|
package/main/index.js
CHANGED
|
@@ -4,6 +4,7 @@ const node_util = require('node:util');
|
|
|
4
4
|
const electron = require('electron');
|
|
5
5
|
const md5 = require('md5');
|
|
6
6
|
const uuid = require('uuid');
|
|
7
|
+
const lodash = require('lodash');
|
|
7
8
|
const remote = require('@electron/remote/main');
|
|
8
9
|
const ipc = require('@lynker-desktop/electron-ipc/main');
|
|
9
10
|
const logs = require('@lynker-desktop/electron-logs/main');
|
|
@@ -71,6 +72,38 @@ const getSDK = () => {
|
|
|
71
72
|
// @ts-ignore
|
|
72
73
|
return global['__GLBOAL_ELECTRON_SDK__'];
|
|
73
74
|
};
|
|
75
|
+
/**
|
|
76
|
+
* 注册唤起
|
|
77
|
+
*/
|
|
78
|
+
const registerProtocol = (() => {
|
|
79
|
+
let isRegister = false;
|
|
80
|
+
let launchOptions = ``;
|
|
81
|
+
return (protocol) => {
|
|
82
|
+
if (isRegister) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
isRegister = true;
|
|
86
|
+
if (process.defaultApp) {
|
|
87
|
+
if (process.argv.length >= 2) {
|
|
88
|
+
electron.app.setAsDefaultProtocolClient(protocol, process.execPath, [path.resolve(lodash.get(process, `argv[1]`, ''))]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
electron.app.setAsDefaultProtocolClient(protocol);
|
|
93
|
+
}
|
|
94
|
+
electron.app.on("open-url", (_event, url) => {
|
|
95
|
+
launchOptions = `${url}`;
|
|
96
|
+
ipc__namespace.mainIPC.invokeAllRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', launchOptions);
|
|
97
|
+
});
|
|
98
|
+
ipc__namespace.mainIPC.handleRenderer('__GLOBAL_GET_LAUNCH_OPTIONS__', async () => {
|
|
99
|
+
return launchOptions;
|
|
100
|
+
});
|
|
101
|
+
ipc__namespace.mainIPC.handleRenderer('__GLOBAL_DEL_LAUNCH_OPTIONS__', async () => {
|
|
102
|
+
launchOptions = ``;
|
|
103
|
+
return launchOptions;
|
|
104
|
+
});
|
|
105
|
+
};
|
|
106
|
+
});
|
|
74
107
|
/**
|
|
75
108
|
* 注册协议
|
|
76
109
|
* @param options
|
|
@@ -177,5 +210,6 @@ exports.enable = enable;
|
|
|
177
210
|
exports.getRandomUUID = getRandomUUID;
|
|
178
211
|
exports.getSDK = getSDK;
|
|
179
212
|
exports.initialize = initialize;
|
|
213
|
+
exports.registerProtocol = registerProtocol;
|
|
180
214
|
exports.serve = serve;
|
|
181
215
|
//# sourceMappingURL=index.js.map
|
package/main/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/main/index.ts"],"sourcesContent":["import type { WebContents } from 'electron'\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport {promisify} from 'node:util';\nimport electron from 'electron';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport * as remote from '@electron/remote/main'\nimport * as ipc from '@lynker-desktop/electron-ipc/main'\nimport * as logs from '@lynker-desktop/electron-logs/main'\nimport * as tabsBrowser from '@lynker-desktop/electron-tabs-browser/main'\nimport * as windowManager from '@lynker-desktop/electron-window-manager/main'\nimport * as windowModal from '@lynker-desktop/electron-window-modal/main'\nimport * as windowTooltip from '@lynker-desktop/electron-window-tooltip/main'\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport let isInitialized = false;\n\n\nexport interface SDK_TYPE {\n ipc: typeof ipc.mainIPC;\n windowManager: windowManager.WindowsManager,\n getPreload: () => string;\n}\n\n/**\n * 初始化\n * @param preload 预加载js 必须传\n * @param loadingViewUrl 窗口管理默认loading页面\n * @returns\n */\nexport const initialize = (preload: string, loadingViewUrl?: string): SDK_TYPE => {\n if (isInitialized) {\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n }\n isInitialized = true;\n ipc.initialize();\n logs.initialize();\n tabsBrowser.initialize(preload);\n const wm = windowManager.initialize(preload, loadingViewUrl);\n windowModal.initialize(preload);\n windowTooltip.initialize(preload);\n class SDK {\n static ipc = ipc.mainIPC;\n static windowManager = wm;\n static getPreload = () => preload;\n }\n // @ts-ignore\n global['__GLBOAL_ELECTRON_SDK__'] = SDK;\n return SDK;\n}\n\n/** 后续再优化 */\nexport const getSDK = (): SDK_TYPE => {\n // @ts-ignore\n if (!global['__GLBOAL_ELECTRON_SDK__']) {\n throw '请在ready前先调用initialize'\n }\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n}\n\n/**\n * 注册协议\n * @param options\n * @returns\n */\nexport const serve = (options: Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>) => {\n if (!options.length) {\n\t\tthrow new Error('请传入配置');\n\t}\n const stat = promisify(fs.stat);\n\n // See https://cs.chromium.org/chromium/src/net/base/net_error_list.h\n const FILE_NOT_FOUND = -6;\n\n const getPath: any = async (path_: string) => {\n try {\n const result = await stat(path_);\n\n if (result.isFile()) {\n return path_;\n }\n\n if (result.isDirectory()) {\n return getPath(path.join(path_, 'index.html'));\n }\n } catch (_) {}\n };\n\n const createHandler = (item: any) => {\n return async (request: any, callback: any) => {\n const indexPath = path.join(item.directory, 'index.html');\n const filePath = path.join(item.directory, decodeURIComponent(new URL(request.url).pathname));\n const resolvedPath = await getPath(filePath);\n const fileExtension = path.extname(filePath);\n\n if (resolvedPath || !fileExtension || fileExtension === '.html' || fileExtension === '.asar') {\n callback({\n path: resolvedPath || indexPath\n });\n } else {\n callback({error: FILE_NOT_FOUND});\n }\n }\n };\n\toptions = options.map((item) => {\n\t\treturn {\n\t\t\t...item,\n\t\t\tisCorsEnabled: item.isCorsEnabled || false,\n\t\t\tscheme: item.scheme || 'app',\n\t\t\tdirectory: path.resolve(electron.app.getAppPath(), item.directory),\n\t\t}\n\t})\n\telectron.protocol.registerSchemesAsPrivileged(options.map((item) => {\n\t\treturn {\n\t\t\tscheme: item.scheme,\n\t\t\tprivileges: {\n\t\t\t\tbypassCSP: true,\n\t\t\t\tstandard: true,\n\t\t\t\tsecure: true,\n\t\t\t\tallowServiceWorkers: true,\n\t\t\t\tsupportFetchAPI: true,\n\t\t\t\tcorsEnabled: item.isCorsEnabled || false,\n\t\t\t}\n\t\t}\n\t}));\n\treturn new Promise((resolve, reject) => {\n\t\ttry {\n\t\t\telectron.app.on('ready', () => {\n\t\t\t\toptions.forEach((item) => {\n\t\t\t\t\tconst handler = createHandler(item);\n\t\t\t\t\tconst session = item.partition ? electron.session.fromPartition(item.partition) : electron.session.defaultSession;\n\t\t\t\t\tsession.protocol.registerFileProtocol(item.scheme, handler);\n\t\t\t\t})\n\t\t\t\tresolve(true)\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error)\n\t\t}\n\t})\n}\n\n/**\n * @electron/remote/main enable方法\n * @param webContents\n * @returns\n */\nexport const enable = (webContents: WebContents) => remote.enable(webContents);\n\nexport function getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n}\n"],"names":["remote","isInitialized","ipc","logs","tabsBrowser","windowManager","windowModal","windowTooltip","promisify","uuid","uuidv5"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/main/index.ts"],"sourcesContent":["import type { WebContents } from 'electron'\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport {promisify} from 'node:util';\nimport electron, { app } from 'electron';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport lodash from 'lodash';\nimport * as remote from '@electron/remote/main'\nimport * as ipc from '@lynker-desktop/electron-ipc/main'\nimport * as logs from '@lynker-desktop/electron-logs/main'\nimport * as tabsBrowser from '@lynker-desktop/electron-tabs-browser/main'\nimport * as windowManager from '@lynker-desktop/electron-window-manager/main'\nimport * as windowModal from '@lynker-desktop/electron-window-modal/main'\nimport * as windowTooltip from '@lynker-desktop/electron-window-tooltip/main'\n\nif (!remote.isInitialized()) {\n remote.initialize();\n}\n\nexport let isInitialized = false;\n\n\nexport interface SDK_TYPE {\n ipc: typeof ipc.mainIPC;\n windowManager: windowManager.WindowsManager,\n getPreload: () => string;\n}\n\n/**\n * 初始化\n * @param preload 预加载js 必须传\n * @param loadingViewUrl 窗口管理默认loading页面\n * @returns\n */\nexport const initialize = (preload: string, loadingViewUrl?: string): SDK_TYPE => {\n if (isInitialized) {\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n }\n isInitialized = true;\n ipc.initialize();\n logs.initialize();\n tabsBrowser.initialize(preload);\n const wm = windowManager.initialize(preload, loadingViewUrl);\n windowModal.initialize(preload);\n windowTooltip.initialize(preload);\n class SDK {\n static ipc = ipc.mainIPC;\n static windowManager = wm;\n static getPreload = () => preload;\n }\n // @ts-ignore\n global['__GLBOAL_ELECTRON_SDK__'] = SDK;\n return SDK;\n}\n\n/** 后续再优化 */\nexport const getSDK = (): SDK_TYPE => {\n // @ts-ignore\n if (!global['__GLBOAL_ELECTRON_SDK__']) {\n throw '请在ready前先调用initialize'\n }\n // @ts-ignore\n return global['__GLBOAL_ELECTRON_SDK__'];\n}\n\n/**\n * 注册唤起\n */\nexport const registerProtocol = (() => {\n let isRegister = false;\n let launchOptions = ``;\n return (protocol: string) => {\n if (isRegister) {\n return;\n }\n isRegister = true;\n if (process.defaultApp) {\n if (process.argv.length >= 2) {\n app.setAsDefaultProtocolClient(protocol, process.execPath, [path.resolve(lodash.get(process, `argv[1]`, ''))]);\n }\n } else {\n app.setAsDefaultProtocolClient(protocol);\n }\n app.on(\"open-url\", (_event, url) => {\n launchOptions = `${url}`;\n ipc.mainIPC.invokeAllRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', launchOptions)\n });\n ipc.mainIPC.handleRenderer('__GLOBAL_GET_LAUNCH_OPTIONS__', async () => {\n return launchOptions;\n })\n ipc.mainIPC.handleRenderer('__GLOBAL_DEL_LAUNCH_OPTIONS__', async () => {\n launchOptions = ``;\n return launchOptions;\n })\n }\n})\n\n/**\n * 注册协议\n * @param options\n * @returns\n */\nexport const serve = (options: Array<{directory: string, scheme: string, isCorsEnabled?: boolean, partition?: string}>) => {\n if (!options.length) {\n\t\tthrow new Error('请传入配置');\n\t}\n const stat = promisify(fs.stat);\n\n // See https://cs.chromium.org/chromium/src/net/base/net_error_list.h\n const FILE_NOT_FOUND = -6;\n\n const getPath: any = async (path_: string) => {\n try {\n const result = await stat(path_);\n\n if (result.isFile()) {\n return path_;\n }\n\n if (result.isDirectory()) {\n return getPath(path.join(path_, 'index.html'));\n }\n } catch (_) {}\n };\n\n const createHandler = (item: any) => {\n return async (request: any, callback: any) => {\n const indexPath = path.join(item.directory, 'index.html');\n const filePath = path.join(item.directory, decodeURIComponent(new URL(request.url).pathname));\n const resolvedPath = await getPath(filePath);\n const fileExtension = path.extname(filePath);\n\n if (resolvedPath || !fileExtension || fileExtension === '.html' || fileExtension === '.asar') {\n callback({\n path: resolvedPath || indexPath\n });\n } else {\n callback({error: FILE_NOT_FOUND});\n }\n }\n };\n\toptions = options.map((item) => {\n\t\treturn {\n\t\t\t...item,\n\t\t\tisCorsEnabled: item.isCorsEnabled || false,\n\t\t\tscheme: item.scheme || 'app',\n\t\t\tdirectory: path.resolve(electron.app.getAppPath(), item.directory),\n\t\t}\n\t})\n\telectron.protocol.registerSchemesAsPrivileged(options.map((item) => {\n\t\treturn {\n\t\t\tscheme: item.scheme,\n\t\t\tprivileges: {\n\t\t\t\tbypassCSP: true,\n\t\t\t\tstandard: true,\n\t\t\t\tsecure: true,\n\t\t\t\tallowServiceWorkers: true,\n\t\t\t\tsupportFetchAPI: true,\n\t\t\t\tcorsEnabled: item.isCorsEnabled || false,\n\t\t\t}\n\t\t}\n\t}));\n\treturn new Promise((resolve, reject) => {\n\t\ttry {\n\t\t\telectron.app.on('ready', () => {\n\t\t\t\toptions.forEach((item) => {\n\t\t\t\t\tconst handler = createHandler(item);\n\t\t\t\t\tconst session = item.partition ? electron.session.fromPartition(item.partition) : electron.session.defaultSession;\n\t\t\t\t\tsession.protocol.registerFileProtocol(item.scheme, handler);\n\t\t\t\t})\n\t\t\t\tresolve(true)\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treject(error)\n\t\t}\n\t})\n}\n\n/**\n * @electron/remote/main enable方法\n * @param webContents\n * @returns\n */\nexport const enable = (webContents: WebContents) => remote.enable(webContents);\n\nexport function getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n}\n"],"names":["remote","isInitialized","ipc","logs","tabsBrowser","windowManager","windowModal","windowTooltip","app","promisify","uuid","uuidv5"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lynker-desktop/electron-sdk",
|
|
3
|
-
"version": "0.0.4-alpha.
|
|
3
|
+
"version": "0.0.4-alpha.30",
|
|
4
4
|
"description": "electron-sdk",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"electron",
|
|
@@ -56,12 +56,13 @@
|
|
|
56
56
|
"packageManager": "pnpm@9.6.0",
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@electron/remote": "^2.1.2",
|
|
59
|
-
"@lynker-desktop/electron-ipc": "0.0.4-alpha.
|
|
60
|
-
"@lynker-desktop/electron-logs": "0.0.4-alpha.
|
|
61
|
-
"@lynker-desktop/electron-tabs-browser": "0.0.4-alpha.
|
|
62
|
-
"@lynker-desktop/electron-window-manager": "0.0.4-alpha.
|
|
63
|
-
"@lynker-desktop/electron-window-modal": "0.0.4-alpha.
|
|
64
|
-
"@lynker-desktop/electron-window-tooltip": "0.0.4-alpha.
|
|
59
|
+
"@lynker-desktop/electron-ipc": "0.0.4-alpha.30",
|
|
60
|
+
"@lynker-desktop/electron-logs": "0.0.4-alpha.30",
|
|
61
|
+
"@lynker-desktop/electron-tabs-browser": "0.0.4-alpha.30",
|
|
62
|
+
"@lynker-desktop/electron-window-manager": "0.0.4-alpha.30",
|
|
63
|
+
"@lynker-desktop/electron-window-modal": "0.0.4-alpha.30",
|
|
64
|
+
"@lynker-desktop/electron-window-tooltip": "0.0.4-alpha.30",
|
|
65
|
+
"events": "^3.3.0",
|
|
65
66
|
"lodash": "^4.17.21",
|
|
66
67
|
"md5": "^2.3.0",
|
|
67
68
|
"uuid": "^10.0.0"
|
|
@@ -93,5 +94,5 @@
|
|
|
93
94
|
"tslib": "^2.6.3",
|
|
94
95
|
"typescript": "^5.5.3"
|
|
95
96
|
},
|
|
96
|
-
"gitHead": "
|
|
97
|
+
"gitHead": "62c28357d74a83700fc8457d8a0e546f5acd09db"
|
|
97
98
|
}
|
package/preload/index.js
CHANGED
package/preload/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/preload/index.ts"],"sourcesContent":["import { contextBridge } from 'electron';\nimport remote from '@electron/remote/renderer';\nimport '@lynker-desktop/electron-ipc/preload';\nimport '@lynker-desktop/electron-logs/preload';\nimport '@lynker-desktop/electron-tabs-browser/preload';\nimport '@lynker-desktop/electron-window-manager/preload';\nimport '@lynker-desktop/electron-window-modal/preload';\nimport '@lynker-desktop/electron-window-tooltip/preload';\n\n// @ts-ignore\nif (window.__ELECTRON_SDK__) {\n // eslint-disable-next-line no-console\n console.log('electron-sdk Electron preload has already been run');\n} else {\n try {\n const preload = {\n remote: remote,\n }\n // @ts-ignore\n window.__ELECTRON_SDK__ = preload;\n if (contextBridge) {\n try {\n // This will fail if contextIsolation is not enabled\n contextBridge.exposeInMainWorld('__ELECTRON_SDK__', preload);\n } catch (error) {\n // console.error(error)\n }\n\n }\n }\n catch (e) {\n console.error(e)\n }\n}\n"],"names":["contextBridge"],"mappings":";;;;;;;;;AASA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE;;AAE3B,IAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;KAAM;AACL,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,MAAM,EAAE,MAAM;SACf,CAAA;;AAED,QAAA,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/preload/index.ts"],"sourcesContent":["import { contextBridge, ipcRenderer } from 'electron';\nimport remote from '@electron/remote/renderer';\nimport '@lynker-desktop/electron-ipc/preload';\nimport '@lynker-desktop/electron-logs/preload';\nimport '@lynker-desktop/electron-tabs-browser/preload';\nimport '@lynker-desktop/electron-window-manager/preload';\nimport '@lynker-desktop/electron-window-modal/preload';\nimport '@lynker-desktop/electron-window-tooltip/preload';\n\n// @ts-ignore\nif (window.__ELECTRON_SDK__) {\n // eslint-disable-next-line no-console\n console.log('electron-sdk Electron preload has already been run');\n} else {\n try {\n const preload = {\n ipcRenderer: ipcRenderer,\n remote: remote,\n }\n // @ts-ignore\n window.__ELECTRON_SDK__ = preload;\n if (contextBridge) {\n try {\n // This will fail if contextIsolation is not enabled\n contextBridge.exposeInMainWorld('__ELECTRON_SDK__', preload);\n } catch (error) {\n // console.error(error)\n }\n\n }\n }\n catch (e) {\n console.error(e)\n }\n}\n"],"names":["ipcRenderer","contextBridge"],"mappings":";;;;;;;;;AASA;AACA,IAAI,MAAM,CAAC,gBAAgB,EAAE;;AAE3B,IAAA,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;AACpE,CAAC;KAAM;AACL,IAAA,IAAI;AACF,QAAA,MAAM,OAAO,GAAG;AACd,YAAA,WAAW,EAAEA,oBAAW;AACxB,YAAA,MAAM,EAAE,MAAM;SACf,CAAA;;AAED,QAAA,MAAM,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAClC,IAAIC,sBAAa,EAAE;AACjB,YAAA,IAAI;;AAEF,gBAAAA,sBAAa,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;;aAEf;SAEF;KACF;IACD,OAAO,CAAC,EAAE;AACR,QAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;KACjB;AACH;;"}
|
package/renderer/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type RemoteType from '@electron/remote';
|
|
2
|
+
import EventEmitter from 'events';
|
|
2
3
|
import ipc from '@lynker-desktop/electron-ipc/renderer';
|
|
3
4
|
import tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer';
|
|
4
5
|
import windowManager from '@lynker-desktop/electron-window-manager/renderer';
|
|
5
6
|
import windowModal from '@lynker-desktop/electron-window-modal/renderer';
|
|
6
7
|
import windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer';
|
|
7
|
-
declare class SDK {
|
|
8
|
+
declare class SDK extends EventEmitter {
|
|
8
9
|
remote: typeof RemoteType;
|
|
9
10
|
ipc: typeof ipc.RendererIPC;
|
|
10
11
|
log: (level: import("@lynker-desktop/electron-logs/common").Level, ...logs: any[]) => void;
|
|
@@ -13,6 +14,22 @@ declare class SDK {
|
|
|
13
14
|
windowModal: typeof windowModal;
|
|
14
15
|
windowTooltip: typeof windowTooltip;
|
|
15
16
|
tabsBrowser: typeof tabsBrowser;
|
|
17
|
+
constructor();
|
|
18
|
+
/**
|
|
19
|
+
* 获取启动/唤起参数
|
|
20
|
+
*/
|
|
21
|
+
getLaunchOptions: () => Promise<any>;
|
|
22
|
+
/**
|
|
23
|
+
* 清除启动/唤起参数
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
delLaunchOptions: () => Promise<any>;
|
|
27
|
+
/**
|
|
28
|
+
* 监听桌面端唤起
|
|
29
|
+
* @param callback
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
onLaunchOptions: (callback: (options: string) => void) => Promise<() => this>;
|
|
16
33
|
/**
|
|
17
34
|
* 生成随机uuid
|
|
18
35
|
* @param key
|
package/renderer/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/renderer/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAA;AAC9C,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,OAAO,GAAG,MAAM,uCAAuC,CAAA;AAEvD,OAAO,WAAW,MAAM,gDAAgD,CAAA;AACxE,OAAO,aAAa,MAAM,kDAAkD,CAAA;AAC5E,OAAO,WAAW,MAAM,gDAAgD,CAAA;AACxE,OAAO,aAAa,MAAM,kDAAkD,CAAA;AAY5E,cAAM,GAAI,SAAQ,YAAY;IAC5B,MAAM,EAAkB,OAAO,UAAU,CAAC;IAC1C,GAAG,yBAAmB;IACtB,GAAG,wFAAY;IACf,UAAU,wBAAmB;IAC7B,aAAa,uBAAiB;IAC9B,WAAW,qBAAe;IAC1B,aAAa,uBAAiB;IAC9B,WAAW,qBAAe;;IAe1B;;OAEG;IACH,gBAAgB,qBAGf;IAED;;;OAGG;IACH,gBAAgB,qBAGf;IAED;;;;OAIG;IACH,eAAe,aAAoB,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,yBAM3D;IAED;;;;OAIG;IACH,aAAa,CAAC,GAAG,GAAE,MAAwB,GAAG,MAAM;CAkBrD;AACD,2BAA2B;AAE3B,QAAA,MAAM,IAAI,KAA8C,CAAC;AACzD,eAAe,IAAI,CAAC"}
|
package/renderer/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
const EventEmitter = require('events');
|
|
1
2
|
const md5 = require('md5');
|
|
2
3
|
const uuid = require('uuid');
|
|
3
4
|
const ipc = require('@lynker-desktop/electron-ipc/renderer');
|
|
@@ -17,8 +18,9 @@ function getRemote() {
|
|
|
17
18
|
return {};
|
|
18
19
|
}
|
|
19
20
|
}
|
|
20
|
-
class SDK {
|
|
21
|
+
class SDK extends EventEmitter {
|
|
21
22
|
constructor() {
|
|
23
|
+
super();
|
|
22
24
|
this.remote = getRemote();
|
|
23
25
|
this.ipc = ipc.RendererIPC;
|
|
24
26
|
this.log = logs.log;
|
|
@@ -27,6 +29,43 @@ class SDK {
|
|
|
27
29
|
this.windowModal = windowModal;
|
|
28
30
|
this.windowTooltip = windowTooltip;
|
|
29
31
|
this.tabsBrowser = tabsBrowser;
|
|
32
|
+
/**
|
|
33
|
+
* 获取启动/唤起参数
|
|
34
|
+
*/
|
|
35
|
+
this.getLaunchOptions = async () => {
|
|
36
|
+
const options = await this.ipc.invokeMain(`__GLOBAL_GET_LAUNCH_OPTIONS__`);
|
|
37
|
+
return options;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* 清除启动/唤起参数
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
this.delLaunchOptions = async () => {
|
|
44
|
+
const options = await this.ipc.invokeMain(`__GLOBAL_DEL_LAUNCH_OPTIONS__`);
|
|
45
|
+
return options;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 监听桌面端唤起
|
|
49
|
+
* @param callback
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
this.onLaunchOptions = async (callback) => {
|
|
53
|
+
const onCallback = (data) => {
|
|
54
|
+
callback(data);
|
|
55
|
+
};
|
|
56
|
+
this.on('launch-options-change', onCallback);
|
|
57
|
+
return () => this.off('launch-options-change', onCallback);
|
|
58
|
+
};
|
|
59
|
+
try {
|
|
60
|
+
/** 监听桌面端唤起 */
|
|
61
|
+
this.ipc.handleRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', async (data) => {
|
|
62
|
+
this.emit('launch-options-change', `${data}`);
|
|
63
|
+
return 'OK';
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
console.error('当前非桌面端环境, 请在桌面端中调用');
|
|
68
|
+
}
|
|
30
69
|
}
|
|
31
70
|
/**
|
|
32
71
|
* 生成随机uuid
|
package/renderer/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/src/renderer/index.ts"],"sourcesContent":["import type RemoteType from '@electron/remote'\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport ipc from '@lynker-desktop/electron-ipc/renderer'\nimport logs from '@lynker-desktop/electron-logs/renderer'\nimport tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer'\nimport windowManager from '@lynker-desktop/electron-window-manager/renderer'\nimport windowModal from '@lynker-desktop/electron-window-modal/renderer'\nimport windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer'\n\nfunction getRemote() {\n try {\n // @ts-ignore\n return window?.__ELECTRON_SDK__?.remote || window?.require('@electron/remote')\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as typeof RemoteType;\n }\n}\n\nclass SDK {\n remote = getRemote() as typeof RemoteType;\n ipc = ipc.RendererIPC;\n log = logs.log;\n getLogPath = logs.getLogPath;\n windowManager = windowManager;\n windowModal = windowModal;\n windowTooltip = windowTooltip;\n tabsBrowser = tabsBrowser;\n /**\n * 生成随机uuid\n * @param key\n * @returns\n */\n getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n }\n}\n/** 临时写法,后期用rollup生成umd包 */\n// @ts-ignore\nconst core = window['__ELECTRON_SDK_CORE__'] = new SDK();\nexport default core;\n"],"names":["uuid","uuidv5"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/src/renderer/index.ts"],"sourcesContent":["import type RemoteType from '@electron/remote'\nimport EventEmitter from 'events';\nimport md5 from 'md5';\nimport { v5 as uuidv5 } from 'uuid';\nimport ipc from '@lynker-desktop/electron-ipc/renderer'\nimport logs from '@lynker-desktop/electron-logs/renderer'\nimport tabsBrowser from '@lynker-desktop/electron-tabs-browser/renderer'\nimport windowManager from '@lynker-desktop/electron-window-manager/renderer'\nimport windowModal from '@lynker-desktop/electron-window-modal/renderer'\nimport windowTooltip from '@lynker-desktop/electron-window-tooltip/renderer'\n\nfunction getRemote() {\n try {\n // @ts-ignore\n return window?.__ELECTRON_SDK__?.remote || window?.require('@electron/remote')\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n return {} as typeof RemoteType;\n }\n}\n\nclass SDK extends EventEmitter {\n remote = getRemote() as typeof RemoteType;\n ipc = ipc.RendererIPC;\n log = logs.log;\n getLogPath = logs.getLogPath;\n windowManager = windowManager;\n windowModal = windowModal;\n windowTooltip = windowTooltip;\n tabsBrowser = tabsBrowser;\n\n constructor() {\n super();\n try {\n /** 监听桌面端唤起 */\n this.ipc.handleRenderer('__GLOBAL_CHANGE_LAUNCH_OPTIONS__', async (data) => {\n this.emit('launch-options-change', `${data}`);\n return 'OK';\n });\n } catch (error) {\n console.error('当前非桌面端环境, 请在桌面端中调用');\n }\n }\n\n /**\n * 获取启动/唤起参数\n */\n getLaunchOptions = async () => {\n const options = await this.ipc.invokeMain(`__GLOBAL_GET_LAUNCH_OPTIONS__`);\n return options;\n }\n\n /**\n * 清除启动/唤起参数\n * @returns\n */\n delLaunchOptions = async () => {\n const options = await this.ipc.invokeMain(`__GLOBAL_DEL_LAUNCH_OPTIONS__`);\n return options;\n }\n\n /**\n * 监听桌面端唤起\n * @param callback\n * @returns\n */\n onLaunchOptions = async (callback: (options: string) => void) => {\n const onCallback = (data: string) => {\n callback(data);\n }\n this.on('launch-options-change', onCallback);\n return () => this.off('launch-options-change', onCallback);\n }\n\n /**\n * 生成随机uuid\n * @param key\n * @returns\n */\n getRandomUUID(key: string = `${Date.now()}`): string {\n let webcrypto!: Crypto;\n let randomValue = Math?.random()?.toString()?.replace('0.', '');\n try {\n if (!webcrypto && !!window && window?.crypto) {\n webcrypto = window.crypto;\n }\n } catch (error) {console.log}\n try {\n const ar = webcrypto.getRandomValues(new Uint8Array(12));\n randomValue = `${md5(ar)}` || randomValue;\n } catch (error) {}\n const uuid = uuidv5(\n `${JSON.stringify(key)}_${Date.now()}_${randomValue}`,\n uuidv5.URL,\n );\n return uuid;\n }\n}\n/** 临时写法,后期用rollup生成umd包 */\n// @ts-ignore\nconst core = window['__ELECTRON_SDK_CORE__'] = new SDK();\nexport default core;\n"],"names":["uuid","uuidv5"],"mappings":"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"}
|