electron-screenshots 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -80,11 +80,17 @@ module.exports = {
80
80
 
81
81
  ## Methods
82
82
 
83
+ - `Lang`类型产考`react-screenshots`中的`Lang`类型
83
84
  - `Lang`类型产考`react-screenshots`中的`Lang`类型
84
85
 
85
86
  ```ts
86
- interface ScreenshotsOpts {
87
- lang: Partial<Lang>
87
+ export type LoggerFn = (...args: unknown[]) => void
88
+ export type Logger = Debugger | LoggerFn
89
+ export interface ScreenshotsOpts {
90
+ lang?: Partial<Lang>
91
+ // 调用日志,默认值为 debug('electron-screenshots')
92
+ // debug https://www.npmjs.com/package/debug
93
+ logger?: Logger
88
94
  }
89
95
  ```
90
96
 
package/lib/index.js CHANGED
@@ -10,6 +10,13 @@ electron_1.app.whenReady().then(function () {
10
10
  var screenshots = new screenshots_1.default({
11
11
  lang: {
12
12
  operation_rectangle_title: '矩形2323'
13
+ },
14
+ logger: function () {
15
+ var args = [];
16
+ for (var _i = 0; _i < arguments.length; _i++) {
17
+ args[_i] = arguments[_i];
18
+ }
19
+ return console.log(args);
13
20
  }
14
21
  });
15
22
  electron_1.globalShortcut.register('ctrl+shift+a', function () {
@@ -1,14 +1,19 @@
1
1
  /// <reference types="node" />
2
+ import { Debugger } from 'debug';
2
3
  import { BrowserWindow, BrowserView } from 'electron';
3
4
  import Events from 'events';
4
5
  import { Bounds, Lang } from 'react-screenshots';
6
+ export declare type LoggerFn = (...args: unknown[]) => void;
7
+ export declare type Logger = Debugger | LoggerFn;
5
8
  export interface ScreenshotsOpts {
6
- lang: Partial<Lang>;
9
+ lang?: Partial<Lang>;
10
+ logger?: Logger;
7
11
  }
8
12
  export { Bounds, Lang };
9
13
  export default class Screenshots extends Events {
10
14
  $win: BrowserWindow | null;
11
15
  $view: BrowserView;
16
+ private logger;
12
17
  private isReady;
13
18
  constructor(opts?: ScreenshotsOpts);
14
19
  /**
@@ -14,6 +14,25 @@ var __extends = (this && this.__extends) || (function () {
14
14
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
15
  };
16
16
  })();
17
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
+ if (k2 === undefined) k2 = k;
19
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
17
36
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
18
37
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19
38
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -54,13 +73,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
54
73
  return (mod && mod.__esModule) ? mod : { "default": mod };
55
74
  };
56
75
  Object.defineProperty(exports, "__esModule", { value: true });
76
+ var debug_1 = __importDefault(require("debug"));
57
77
  var electron_1 = require("electron");
58
78
  var promises_1 = __importDefault(require("fs/promises"));
59
79
  var event_1 = __importDefault(require("./event"));
60
80
  var events_1 = __importDefault(require("events"));
61
81
  var padStart_1 = __importDefault(require("./padStart"));
62
82
  var getBoundAndDisplay_1 = __importDefault(require("./getBoundAndDisplay"));
63
- var logger_1 = __importDefault(require("./logger"));
64
83
  var Screenshots = /** @class */ (function (_super) {
65
84
  __extends(Screenshots, _super);
66
85
  function Screenshots(opts) {
@@ -77,10 +96,11 @@ var Screenshots = /** @class */ (function (_super) {
77
96
  });
78
97
  _this.isReady = new Promise(function (resolve) {
79
98
  electron_1.ipcMain.once('SCREENSHOTS:ready', function () {
80
- (0, logger_1.default)('SCREENSHOTS:ready');
99
+ _this.logger('SCREENSHOTS:ready');
81
100
  resolve();
82
101
  });
83
102
  });
103
+ _this.logger = (opts === null || opts === void 0 ? void 0 : opts.logger) || (0, debug_1.default)('electron-screenshots');
84
104
  _this.listenIpc();
85
105
  _this.$view.webContents.loadURL("file://".concat(require.resolve('react-screenshots/electron/electron.html')));
86
106
  if (opts === null || opts === void 0 ? void 0 : opts.lang) {
@@ -93,7 +113,7 @@ var Screenshots = /** @class */ (function (_super) {
93
113
  */
94
114
  Screenshots.prototype.startCapture = function () {
95
115
  var _this = this;
96
- (0, logger_1.default)('startCapture');
116
+ this.logger('startCapture');
97
117
  this.isReady.then(function () {
98
118
  if (_this.$win && !_this.$win.isDestroyed()) {
99
119
  _this.$win.close();
@@ -116,7 +136,7 @@ var Screenshots = /** @class */ (function (_super) {
116
136
  * 结束截图
117
137
  */
118
138
  Screenshots.prototype.endCapture = function () {
119
- (0, logger_1.default)('endCapture');
139
+ this.logger('endCapture');
120
140
  if (!this.$win)
121
141
  return;
122
142
  this.$win.setSimpleFullScreen(false);
@@ -129,7 +149,7 @@ var Screenshots = /** @class */ (function (_super) {
129
149
  Screenshots.prototype.setLang = function (lang) {
130
150
  var _this = this;
131
151
  this.isReady.then(function () {
132
- (0, logger_1.default)('setLang', lang);
152
+ _this.logger('setLang', lang);
133
153
  _this.$view.webContents.send('SCREENSHOTS:setLang', lang);
134
154
  });
135
155
  };
@@ -177,11 +197,30 @@ var Screenshots = /** @class */ (function (_super) {
177
197
  Screenshots.prototype.capture = function (_a) {
178
198
  var display = _a.display;
179
199
  return __awaiter(this, void 0, void 0, function () {
180
- var sources, source;
200
+ var NodeScreenshots, capturer, image, err_1, sources, source;
181
201
  return __generator(this, function (_b) {
182
202
  switch (_b.label) {
183
203
  case 0:
184
- (0, logger_1.default)('SCREENSHOTS:capture');
204
+ this.logger('SCREENSHOTS:capture');
205
+ _b.label = 1;
206
+ case 1:
207
+ _b.trys.push([1, 4, , 6]);
208
+ return [4 /*yield*/, Promise.resolve().then(function () { return __importStar(require('node-screenshots')); })];
209
+ case 2:
210
+ NodeScreenshots = (_b.sent()).Screenshots;
211
+ capturer = NodeScreenshots.fromDisplay(display.id);
212
+ this.logger('SCREENSHOTS:NodeScreenshots.fromDisplay(%d) %o', display.id, capturer);
213
+ if (!capturer) {
214
+ throw new Error("NodeScreenshots.fromDisplay(".concat(display.id, ") get null"));
215
+ }
216
+ return [4 /*yield*/, capturer.capture()];
217
+ case 3:
218
+ image = _b.sent();
219
+ this.$view.webContents.send('SCREENSHOTS:capture', display, "data:image/png;base64,".concat(image.toString('base64')));
220
+ return [3 /*break*/, 6];
221
+ case 4:
222
+ err_1 = _b.sent();
223
+ this.logger('SCREENSHOTS:capturer.capture() error %o', err_1);
185
224
  return [4 /*yield*/, electron_1.desktopCapturer.getSources({
186
225
  types: ['screen'],
187
226
  thumbnailSize: {
@@ -189,8 +228,9 @@ var Screenshots = /** @class */ (function (_super) {
189
228
  height: display.height
190
229
  }
191
230
  })];
192
- case 1:
231
+ case 5:
193
232
  sources = _b.sent();
233
+ source = void 0;
194
234
  // Linux系统上,screen.getDisplayNearestPoint 返回的 Display 对象的 id 和 这儿 source 对象上的 display_id(Linux上,这个值是空字符串) 或 id 的中间部分,都不一致
195
235
  // 但是,如果只有一个显示器的话,其实不用判断,直接返回就行
196
236
  if (sources.length === 1) {
@@ -208,7 +248,8 @@ var Screenshots = /** @class */ (function (_super) {
208
248
  return [2 /*return*/];
209
249
  }
210
250
  this.$view.webContents.send('SCREENSHOTS:capture', display, source.thumbnail.toDataURL());
211
- return [2 /*return*/];
251
+ return [3 /*break*/, 6];
252
+ case 6: return [2 /*return*/];
212
253
  }
213
254
  });
214
255
  });
@@ -222,7 +263,7 @@ var Screenshots = /** @class */ (function (_super) {
222
263
  * OK事件
223
264
  */
224
265
  electron_1.ipcMain.on('SCREENSHOTS:ok', function (e, buffer, bounds) {
225
- (0, logger_1.default)('SCREENSHOTS:ok', buffer, bounds);
266
+ _this.logger('SCREENSHOTS:ok', buffer, bounds);
226
267
  var event = new event_1.default();
227
268
  _this.emit('ok', event, buffer, bounds);
228
269
  if (event.defaultPrevented) {
@@ -235,7 +276,7 @@ var Screenshots = /** @class */ (function (_super) {
235
276
  * CANCEL事件
236
277
  */
237
278
  electron_1.ipcMain.on('SCREENSHOTS:cancel', function () {
238
- (0, logger_1.default)('SCREENSHOTS:cancel');
279
+ _this.logger('SCREENSHOTS:cancel');
239
280
  var event = new event_1.default();
240
281
  _this.emit('cancel', event);
241
282
  if (event.defaultPrevented) {
@@ -251,7 +292,7 @@ var Screenshots = /** @class */ (function (_super) {
251
292
  return __generator(this, function (_b) {
252
293
  switch (_b.label) {
253
294
  case 0:
254
- (0, logger_1.default)('SCREENSHOTS:save', buffer, bounds);
295
+ this.logger('SCREENSHOTS:save', buffer, bounds);
255
296
  event = new event_1.default();
256
297
  this.emit('save', event, buffer, bounds);
257
298
  if (event.defaultPrevented || !this.$win) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "electron-screenshots",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "electron 截图插件",
5
5
  "types": "lib/screenshots.d.ts",
6
6
  "main": "lib/screenshots.js",
@@ -9,7 +9,7 @@
9
9
  ],
10
10
  "scripts": {
11
11
  "prepublishOnly": "npm run build",
12
- "start": "DEBUG=screenshots electron lib/index.js",
12
+ "start": "cross-env DEBUG=electron-screenshots electron lib/index.js",
13
13
  "dev": "tsc --sourceMap --watch",
14
14
  "build": "npm run lint && npm run clean && tsc",
15
15
  "lint": "eslint . --ext .js,.ts --fix",
@@ -36,7 +36,8 @@
36
36
  },
37
37
  "dependencies": {
38
38
  "debug": "^4.3.3",
39
- "react-screenshots": "^0.3.0"
39
+ "node-screenshots": "^0.0.2",
40
+ "react-screenshots": "^0.4.0"
40
41
  },
41
42
  "peerDependencies": {
42
43
  "electron": ">=11"
@@ -45,6 +46,7 @@
45
46
  "@types/debug": "^4.1.7",
46
47
  "@typescript-eslint/eslint-plugin": "^5.10.0",
47
48
  "@typescript-eslint/parser": "^5.10.0",
49
+ "cross-env": "^7.0.3",
48
50
  "electron": "^16.0.7",
49
51
  "electron-debug": "^3.2.0",
50
52
  "eslint": "^8.7.0",
@@ -55,5 +57,5 @@
55
57
  "rimraf": "^3.0.2",
56
58
  "typescript": "^4.5.5"
57
59
  },
58
- "gitHead": "d9d3774ba9cf7d713d3895f1b01731ca05736406"
60
+ "gitHead": "7f08cb538a014a14ca26111065f61953059be570"
59
61
  }
package/lib/logger.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import debug from 'debug';
2
- declare const _default: debug.Debugger;
3
- export default _default;
package/lib/logger.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- var debug_1 = __importDefault(require("debug"));
7
- exports.default = (0, debug_1.default)('screenshots');