├── .gitignore
├── README.md
├── electron-app
├── README.md
├── index.html
├── main.js
├── package-lock.json
├── package.json
├── renderer.js
├── style.css
└── yarn.lock
├── native-increment
├── README.md
├── addon.cpp
├── binding.gyp
├── index.js
├── package-lock.json
├── package.json
├── test.js
└── yarn.lock
└── screenshot.png
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules/
2 | build/
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Native Module Electron
2 |
3 |
4 |
5 |
6 |
7 | This example is used in our article on [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly) and contains two npm packages:
8 |
9 | 1. [`native-increment`], a native addon, which will expose a function that increases a number by one.
10 | 2. [`electron-app`], an [Electron](https://electronjs.org/) application that will use the native addon to increment numbers.
11 |
12 | ## Prerequisites
13 |
14 | * [Node.js](http://nodejs.org/) (with npm or Yarn)
15 |
16 | ## Getting Started
17 |
18 | Please check out [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly) for an in-depth explanation.
19 |
20 | ### Contributing
21 |
22 | Please ensure
23 | [you have signed our CLA](https://pspdfkit.com/guides/web/current/miscellaneous/contributing/) so that we can
24 | accept your contributions.
25 |
26 | [`native-increment`]: https://github.com/PSPDFKit-labs/native-module-electron/tree/master/native-increment
27 | [`electron-app`]: https://github.com/PSPDFKit-labs/native-module-electron/tree/master/electron-app
28 |
--------------------------------------------------------------------------------
/electron-app/README.md:
--------------------------------------------------------------------------------
1 | # Electron App
2 |
3 | The Electron example app that will use a native module.
4 |
5 | This example is used in our article on [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly).
6 |
7 | ## Prerequisites
8 |
9 | * [Node.js](http://nodejs.org/) (with npm or Yarn)
10 | * Make sure you followed the steps in [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly) to compile `native-increment` for your Electron version.
11 |
12 | ## Getting Started
13 |
14 | ```
15 | git clone native-module-electron
16 | cd native-module-electron/electron-app
17 | yarn
18 | yarn start
19 | ```
20 |
--------------------------------------------------------------------------------
/electron-app/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Native Module Electron
7 |
8 |
9 |
10 |
11 |
12 |
13 | This Electron app uses a native module to increment the number below.
14 |
15 |
16 |
17 | Increment
18 |
19 |
20 |
21 | We are using Node.js
22 | , Chromium
23 | , and Electron
24 | .
25 |
26 |
27 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/electron-app/main.js:
--------------------------------------------------------------------------------
1 | const electron = require("electron");
2 | // Module to control application life.
3 | const app = electron.app;
4 | // Module to create native browser window.
5 | const BrowserWindow = electron.BrowserWindow;
6 |
7 | const path = require("path");
8 | const url = require("url");
9 |
10 | // Keep a global reference of the window object, if you don't, the window will
11 | // be closed automatically when the JavaScript object is garbage collected.
12 | let mainWindow;
13 |
14 | function createWindow() {
15 | // Create the browser window.
16 | mainWindow = new BrowserWindow({
17 | width: 400,
18 | height: 320,
19 | titleBarStyle: "hidden"
20 | });
21 |
22 | // and load the index.html of the app.
23 | mainWindow.loadURL(
24 | url.format({
25 | pathname: path.join(__dirname, "index.html"),
26 | protocol: "file:",
27 | slashes: true
28 | })
29 | );
30 |
31 | // Open the DevTools.
32 | // mainWindow.webContents.openDevTools()
33 |
34 | // Emitted when the window is closed.
35 | mainWindow.on("closed", function() {
36 | // Dereference the window object, usually you would store windows
37 | // in an array if your app supports multi windows, this is the time
38 | // when you should delete the corresponding element.
39 | mainWindow = null;
40 | });
41 | }
42 |
43 | // This method will be called when Electron has finished
44 | // initialization and is ready to create browser windows.
45 | // Some APIs can only be used after this event occurs.
46 | app.on("ready", createWindow);
47 |
48 | // Quit when all windows are closed.
49 | app.on("window-all-closed", function() {
50 | // On OS X it is common for applications and their menu bar
51 | // to stay active until the user quits explicitly with Cmd + Q
52 | if (process.platform !== "darwin") {
53 | app.quit();
54 | }
55 | });
56 |
57 | app.on("activate", function() {
58 | // On OS X it's common to re-create a window in the app when the
59 | // dock icon is clicked and there are no other windows open.
60 | if (mainWindow === null) {
61 | createWindow();
62 | }
63 | });
64 |
65 | // In this file you can include the rest of your app's specific main process
66 | // code. You can also put them in separate files and require them here.
67 |
--------------------------------------------------------------------------------
/electron-app/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-quick-start",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@types/node": {
8 | "version": "8.10.29",
9 | "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz",
10 | "integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ==",
11 | "dev": true
12 | },
13 | "ajv": {
14 | "version": "5.5.2",
15 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
16 | "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
17 | "dev": true,
18 | "requires": {
19 | "co": "4.6.0",
20 | "fast-deep-equal": "1.1.0",
21 | "fast-json-stable-stringify": "2.0.0",
22 | "json-schema-traverse": "0.3.1"
23 | }
24 | },
25 | "ansi-regex": {
26 | "version": "2.1.1",
27 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
28 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
29 | "dev": true
30 | },
31 | "array-find-index": {
32 | "version": "1.0.2",
33 | "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
34 | "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=",
35 | "dev": true
36 | },
37 | "asn1": {
38 | "version": "0.2.4",
39 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
40 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
41 | "dev": true,
42 | "requires": {
43 | "safer-buffer": "2.1.2"
44 | }
45 | },
46 | "assert-plus": {
47 | "version": "1.0.0",
48 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
49 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
50 | "dev": true
51 | },
52 | "asynckit": {
53 | "version": "0.4.0",
54 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
55 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
56 | "dev": true
57 | },
58 | "aws-sign2": {
59 | "version": "0.7.0",
60 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
61 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
62 | "dev": true
63 | },
64 | "aws4": {
65 | "version": "1.8.0",
66 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
67 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
68 | "dev": true
69 | },
70 | "bcrypt-pbkdf": {
71 | "version": "1.0.2",
72 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
73 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
74 | "dev": true,
75 | "optional": true,
76 | "requires": {
77 | "tweetnacl": "0.14.5"
78 | }
79 | },
80 | "buffer-from": {
81 | "version": "1.1.1",
82 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
83 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
84 | "dev": true
85 | },
86 | "builtin-modules": {
87 | "version": "1.1.1",
88 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz",
89 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=",
90 | "dev": true
91 | },
92 | "camelcase": {
93 | "version": "2.1.1",
94 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
95 | "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=",
96 | "dev": true
97 | },
98 | "camelcase-keys": {
99 | "version": "2.1.0",
100 | "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
101 | "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=",
102 | "dev": true,
103 | "requires": {
104 | "camelcase": "2.1.1",
105 | "map-obj": "1.0.1"
106 | }
107 | },
108 | "caseless": {
109 | "version": "0.12.0",
110 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
111 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
112 | "dev": true
113 | },
114 | "co": {
115 | "version": "4.6.0",
116 | "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
117 | "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
118 | "dev": true
119 | },
120 | "code-point-at": {
121 | "version": "1.1.0",
122 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
123 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
124 | "dev": true
125 | },
126 | "combined-stream": {
127 | "version": "1.0.7",
128 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz",
129 | "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==",
130 | "dev": true,
131 | "requires": {
132 | "delayed-stream": "1.0.0"
133 | }
134 | },
135 | "concat-stream": {
136 | "version": "1.6.2",
137 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
138 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
139 | "dev": true,
140 | "requires": {
141 | "buffer-from": "1.1.1",
142 | "inherits": "2.0.3",
143 | "readable-stream": "2.3.6",
144 | "typedarray": "0.0.6"
145 | },
146 | "dependencies": {
147 | "isarray": {
148 | "version": "1.0.0",
149 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
150 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
151 | "dev": true
152 | },
153 | "readable-stream": {
154 | "version": "2.3.6",
155 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
156 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
157 | "dev": true,
158 | "requires": {
159 | "core-util-is": "1.0.2",
160 | "inherits": "2.0.3",
161 | "isarray": "1.0.0",
162 | "process-nextick-args": "2.0.0",
163 | "safe-buffer": "5.1.2",
164 | "string_decoder": "1.1.1",
165 | "util-deprecate": "1.0.2"
166 | }
167 | },
168 | "string_decoder": {
169 | "version": "1.1.1",
170 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
171 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
172 | "dev": true,
173 | "requires": {
174 | "safe-buffer": "5.1.2"
175 | }
176 | }
177 | }
178 | },
179 | "core-util-is": {
180 | "version": "1.0.2",
181 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
182 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
183 | "dev": true
184 | },
185 | "currently-unhandled": {
186 | "version": "0.4.1",
187 | "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
188 | "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=",
189 | "dev": true,
190 | "requires": {
191 | "array-find-index": "1.0.2"
192 | }
193 | },
194 | "dashdash": {
195 | "version": "1.14.1",
196 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
197 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
198 | "dev": true,
199 | "requires": {
200 | "assert-plus": "1.0.0"
201 | }
202 | },
203 | "debug": {
204 | "version": "3.2.5",
205 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz",
206 | "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==",
207 | "dev": true,
208 | "requires": {
209 | "ms": "2.1.1"
210 | }
211 | },
212 | "decamelize": {
213 | "version": "1.2.0",
214 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
215 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
216 | "dev": true
217 | },
218 | "deep-extend": {
219 | "version": "0.6.0",
220 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
221 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
222 | "dev": true
223 | },
224 | "delayed-stream": {
225 | "version": "1.0.0",
226 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
227 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
228 | "dev": true
229 | },
230 | "ecc-jsbn": {
231 | "version": "0.1.2",
232 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
233 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
234 | "dev": true,
235 | "optional": true,
236 | "requires": {
237 | "jsbn": "0.1.1",
238 | "safer-buffer": "2.1.2"
239 | }
240 | },
241 | "electron": {
242 | "version": "3.0.0",
243 | "resolved": "https://registry.npmjs.org/electron/-/electron-3.0.0.tgz",
244 | "integrity": "sha512-QN9X5vYa4kzJKniwhXlJwioX9qw2fDehdqxN/00KCLz/qnOz/IHLAHGikFjRwfEF2xnkmHxf61F8wn2LePPXXQ==",
245 | "dev": true,
246 | "requires": {
247 | "@types/node": "8.10.29",
248 | "electron-download": "4.1.1",
249 | "extract-zip": "1.6.7"
250 | }
251 | },
252 | "electron-download": {
253 | "version": "4.1.1",
254 | "resolved": "https://registry.npmjs.org/electron-download/-/electron-download-4.1.1.tgz",
255 | "integrity": "sha512-FjEWG9Jb/ppK/2zToP+U5dds114fM1ZOJqMAR4aXXL5CvyPE9fiqBK/9YcwC9poIFQTEJk/EM/zyRwziziRZrg==",
256 | "dev": true,
257 | "requires": {
258 | "debug": "3.2.5",
259 | "env-paths": "1.0.0",
260 | "fs-extra": "4.0.3",
261 | "minimist": "1.2.0",
262 | "nugget": "2.0.1",
263 | "path-exists": "3.0.0",
264 | "rc": "1.2.8",
265 | "semver": "5.5.1",
266 | "sumchecker": "2.0.2"
267 | }
268 | },
269 | "env-paths": {
270 | "version": "1.0.0",
271 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-1.0.0.tgz",
272 | "integrity": "sha1-QWgTO0K7BcOKNbGuQ5fIKYqzaeA=",
273 | "dev": true
274 | },
275 | "error-ex": {
276 | "version": "1.3.2",
277 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
278 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
279 | "dev": true,
280 | "requires": {
281 | "is-arrayish": "0.2.1"
282 | }
283 | },
284 | "extend": {
285 | "version": "3.0.2",
286 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
287 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
288 | "dev": true
289 | },
290 | "extract-zip": {
291 | "version": "1.6.7",
292 | "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.7.tgz",
293 | "integrity": "sha1-qEC0uK9kAyZMjbV/Txp0Mz74H+k=",
294 | "dev": true,
295 | "requires": {
296 | "concat-stream": "1.6.2",
297 | "debug": "2.6.9",
298 | "mkdirp": "0.5.1",
299 | "yauzl": "2.4.1"
300 | },
301 | "dependencies": {
302 | "debug": {
303 | "version": "2.6.9",
304 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
305 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
306 | "dev": true,
307 | "requires": {
308 | "ms": "2.0.0"
309 | }
310 | },
311 | "ms": {
312 | "version": "2.0.0",
313 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
314 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
315 | "dev": true
316 | }
317 | }
318 | },
319 | "extsprintf": {
320 | "version": "1.3.0",
321 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
322 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
323 | "dev": true
324 | },
325 | "fast-deep-equal": {
326 | "version": "1.1.0",
327 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz",
328 | "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
329 | "dev": true
330 | },
331 | "fast-json-stable-stringify": {
332 | "version": "2.0.0",
333 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
334 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
335 | "dev": true
336 | },
337 | "fd-slicer": {
338 | "version": "1.0.1",
339 | "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
340 | "integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
341 | "dev": true,
342 | "requires": {
343 | "pend": "1.2.0"
344 | }
345 | },
346 | "find-up": {
347 | "version": "1.1.2",
348 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
349 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=",
350 | "dev": true,
351 | "requires": {
352 | "path-exists": "2.1.0",
353 | "pinkie-promise": "2.0.1"
354 | },
355 | "dependencies": {
356 | "path-exists": {
357 | "version": "2.1.0",
358 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
359 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
360 | "dev": true,
361 | "requires": {
362 | "pinkie-promise": "2.0.1"
363 | }
364 | }
365 | }
366 | },
367 | "forever-agent": {
368 | "version": "0.6.1",
369 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
370 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
371 | "dev": true
372 | },
373 | "form-data": {
374 | "version": "2.3.2",
375 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
376 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
377 | "dev": true,
378 | "requires": {
379 | "asynckit": "0.4.0",
380 | "combined-stream": "1.0.6",
381 | "mime-types": "2.1.20"
382 | },
383 | "dependencies": {
384 | "combined-stream": {
385 | "version": "1.0.6",
386 | "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
387 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
388 | "dev": true,
389 | "requires": {
390 | "delayed-stream": "1.0.0"
391 | }
392 | }
393 | }
394 | },
395 | "fs-extra": {
396 | "version": "4.0.3",
397 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz",
398 | "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==",
399 | "dev": true,
400 | "requires": {
401 | "graceful-fs": "4.1.11",
402 | "jsonfile": "4.0.0",
403 | "universalify": "0.1.2"
404 | }
405 | },
406 | "get-stdin": {
407 | "version": "4.0.1",
408 | "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
409 | "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
410 | "dev": true
411 | },
412 | "getpass": {
413 | "version": "0.1.7",
414 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
415 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
416 | "dev": true,
417 | "requires": {
418 | "assert-plus": "1.0.0"
419 | }
420 | },
421 | "graceful-fs": {
422 | "version": "4.1.11",
423 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz",
424 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
425 | "dev": true
426 | },
427 | "har-schema": {
428 | "version": "2.0.0",
429 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
430 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
431 | "dev": true
432 | },
433 | "har-validator": {
434 | "version": "5.1.0",
435 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz",
436 | "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==",
437 | "dev": true,
438 | "requires": {
439 | "ajv": "5.5.2",
440 | "har-schema": "2.0.0"
441 | }
442 | },
443 | "hosted-git-info": {
444 | "version": "2.7.1",
445 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
446 | "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
447 | "dev": true
448 | },
449 | "http-signature": {
450 | "version": "1.2.0",
451 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
452 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
453 | "dev": true,
454 | "requires": {
455 | "assert-plus": "1.0.0",
456 | "jsprim": "1.4.1",
457 | "sshpk": "1.14.2"
458 | }
459 | },
460 | "indent-string": {
461 | "version": "2.1.0",
462 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
463 | "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
464 | "dev": true,
465 | "requires": {
466 | "repeating": "2.0.1"
467 | }
468 | },
469 | "inherits": {
470 | "version": "2.0.3",
471 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
472 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
473 | "dev": true
474 | },
475 | "ini": {
476 | "version": "1.3.5",
477 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
478 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
479 | "dev": true
480 | },
481 | "is-arrayish": {
482 | "version": "0.2.1",
483 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
484 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
485 | "dev": true
486 | },
487 | "is-builtin-module": {
488 | "version": "1.0.0",
489 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
490 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
491 | "dev": true,
492 | "requires": {
493 | "builtin-modules": "1.1.1"
494 | }
495 | },
496 | "is-finite": {
497 | "version": "1.0.2",
498 | "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
499 | "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
500 | "dev": true,
501 | "requires": {
502 | "number-is-nan": "1.0.1"
503 | }
504 | },
505 | "is-fullwidth-code-point": {
506 | "version": "1.0.0",
507 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
508 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
509 | "dev": true,
510 | "requires": {
511 | "number-is-nan": "1.0.1"
512 | }
513 | },
514 | "is-typedarray": {
515 | "version": "1.0.0",
516 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
517 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
518 | "dev": true
519 | },
520 | "is-utf8": {
521 | "version": "0.2.1",
522 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
523 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=",
524 | "dev": true
525 | },
526 | "isarray": {
527 | "version": "0.0.1",
528 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
529 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
530 | "dev": true
531 | },
532 | "isstream": {
533 | "version": "0.1.2",
534 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
535 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
536 | "dev": true
537 | },
538 | "jsbn": {
539 | "version": "0.1.1",
540 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
541 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
542 | "dev": true,
543 | "optional": true
544 | },
545 | "json-schema": {
546 | "version": "0.2.3",
547 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
548 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
549 | "dev": true
550 | },
551 | "json-schema-traverse": {
552 | "version": "0.3.1",
553 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
554 | "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
555 | "dev": true
556 | },
557 | "json-stringify-safe": {
558 | "version": "5.0.1",
559 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
560 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
561 | "dev": true
562 | },
563 | "jsonfile": {
564 | "version": "4.0.0",
565 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
566 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
567 | "dev": true,
568 | "requires": {
569 | "graceful-fs": "4.1.11"
570 | }
571 | },
572 | "jsprim": {
573 | "version": "1.4.1",
574 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
575 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
576 | "dev": true,
577 | "requires": {
578 | "assert-plus": "1.0.0",
579 | "extsprintf": "1.3.0",
580 | "json-schema": "0.2.3",
581 | "verror": "1.10.0"
582 | }
583 | },
584 | "load-json-file": {
585 | "version": "1.1.0",
586 | "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
587 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=",
588 | "dev": true,
589 | "requires": {
590 | "graceful-fs": "4.1.11",
591 | "parse-json": "2.2.0",
592 | "pify": "2.3.0",
593 | "pinkie-promise": "2.0.1",
594 | "strip-bom": "2.0.0"
595 | }
596 | },
597 | "loud-rejection": {
598 | "version": "1.6.0",
599 | "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
600 | "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=",
601 | "dev": true,
602 | "requires": {
603 | "currently-unhandled": "0.4.1",
604 | "signal-exit": "3.0.2"
605 | }
606 | },
607 | "map-obj": {
608 | "version": "1.0.1",
609 | "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
610 | "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
611 | "dev": true
612 | },
613 | "meow": {
614 | "version": "3.7.0",
615 | "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
616 | "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=",
617 | "dev": true,
618 | "requires": {
619 | "camelcase-keys": "2.1.0",
620 | "decamelize": "1.2.0",
621 | "loud-rejection": "1.6.0",
622 | "map-obj": "1.0.1",
623 | "minimist": "1.2.0",
624 | "normalize-package-data": "2.4.0",
625 | "object-assign": "4.1.1",
626 | "read-pkg-up": "1.0.1",
627 | "redent": "1.0.0",
628 | "trim-newlines": "1.0.0"
629 | }
630 | },
631 | "mime-db": {
632 | "version": "1.36.0",
633 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
634 | "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
635 | "dev": true
636 | },
637 | "mime-types": {
638 | "version": "2.1.20",
639 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
640 | "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
641 | "dev": true,
642 | "requires": {
643 | "mime-db": "1.36.0"
644 | }
645 | },
646 | "minimist": {
647 | "version": "1.2.0",
648 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
649 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
650 | "dev": true
651 | },
652 | "mkdirp": {
653 | "version": "0.5.1",
654 | "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
655 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
656 | "dev": true,
657 | "requires": {
658 | "minimist": "0.0.8"
659 | },
660 | "dependencies": {
661 | "minimist": {
662 | "version": "0.0.8",
663 | "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
664 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
665 | "dev": true
666 | }
667 | }
668 | },
669 | "ms": {
670 | "version": "2.1.1",
671 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
672 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
673 | "dev": true
674 | },
675 | "normalize-package-data": {
676 | "version": "2.4.0",
677 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
678 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
679 | "dev": true,
680 | "requires": {
681 | "hosted-git-info": "2.7.1",
682 | "is-builtin-module": "1.0.0",
683 | "semver": "5.5.1",
684 | "validate-npm-package-license": "3.0.4"
685 | }
686 | },
687 | "nugget": {
688 | "version": "2.0.1",
689 | "resolved": "https://registry.npmjs.org/nugget/-/nugget-2.0.1.tgz",
690 | "integrity": "sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA=",
691 | "dev": true,
692 | "requires": {
693 | "debug": "2.6.9",
694 | "minimist": "1.2.0",
695 | "pretty-bytes": "1.0.4",
696 | "progress-stream": "1.2.0",
697 | "request": "2.88.0",
698 | "single-line-log": "1.1.2",
699 | "throttleit": "0.0.2"
700 | },
701 | "dependencies": {
702 | "debug": {
703 | "version": "2.6.9",
704 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
705 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
706 | "dev": true,
707 | "requires": {
708 | "ms": "2.0.0"
709 | }
710 | },
711 | "ms": {
712 | "version": "2.0.0",
713 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
714 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
715 | "dev": true
716 | }
717 | }
718 | },
719 | "number-is-nan": {
720 | "version": "1.0.1",
721 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
722 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=",
723 | "dev": true
724 | },
725 | "oauth-sign": {
726 | "version": "0.9.0",
727 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
728 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
729 | "dev": true
730 | },
731 | "object-assign": {
732 | "version": "4.1.1",
733 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
734 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
735 | "dev": true
736 | },
737 | "object-keys": {
738 | "version": "0.4.0",
739 | "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz",
740 | "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
741 | "dev": true
742 | },
743 | "parse-json": {
744 | "version": "2.2.0",
745 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
746 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
747 | "dev": true,
748 | "requires": {
749 | "error-ex": "1.3.2"
750 | }
751 | },
752 | "path-exists": {
753 | "version": "3.0.0",
754 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
755 | "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
756 | "dev": true
757 | },
758 | "path-type": {
759 | "version": "1.1.0",
760 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
761 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=",
762 | "dev": true,
763 | "requires": {
764 | "graceful-fs": "4.1.11",
765 | "pify": "2.3.0",
766 | "pinkie-promise": "2.0.1"
767 | }
768 | },
769 | "pend": {
770 | "version": "1.2.0",
771 | "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
772 | "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=",
773 | "dev": true
774 | },
775 | "performance-now": {
776 | "version": "2.1.0",
777 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
778 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
779 | "dev": true
780 | },
781 | "pify": {
782 | "version": "2.3.0",
783 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
784 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
785 | "dev": true
786 | },
787 | "pinkie": {
788 | "version": "2.0.4",
789 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
790 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
791 | "dev": true
792 | },
793 | "pinkie-promise": {
794 | "version": "2.0.1",
795 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
796 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
797 | "dev": true,
798 | "requires": {
799 | "pinkie": "2.0.4"
800 | }
801 | },
802 | "pretty-bytes": {
803 | "version": "1.0.4",
804 | "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.4.tgz",
805 | "integrity": "sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ=",
806 | "dev": true,
807 | "requires": {
808 | "get-stdin": "4.0.1",
809 | "meow": "3.7.0"
810 | }
811 | },
812 | "process-nextick-args": {
813 | "version": "2.0.0",
814 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
815 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
816 | "dev": true
817 | },
818 | "progress-stream": {
819 | "version": "1.2.0",
820 | "resolved": "https://registry.npmjs.org/progress-stream/-/progress-stream-1.2.0.tgz",
821 | "integrity": "sha1-LNPP6jO6OonJwSHsM0er6asSX3c=",
822 | "dev": true,
823 | "requires": {
824 | "speedometer": "0.1.4",
825 | "through2": "0.2.3"
826 | }
827 | },
828 | "psl": {
829 | "version": "1.1.29",
830 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz",
831 | "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==",
832 | "dev": true
833 | },
834 | "punycode": {
835 | "version": "1.4.1",
836 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
837 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
838 | "dev": true
839 | },
840 | "qs": {
841 | "version": "6.5.2",
842 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
843 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
844 | "dev": true
845 | },
846 | "rc": {
847 | "version": "1.2.8",
848 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
849 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
850 | "dev": true,
851 | "requires": {
852 | "deep-extend": "0.6.0",
853 | "ini": "1.3.5",
854 | "minimist": "1.2.0",
855 | "strip-json-comments": "2.0.1"
856 | }
857 | },
858 | "read-pkg": {
859 | "version": "1.1.0",
860 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
861 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=",
862 | "dev": true,
863 | "requires": {
864 | "load-json-file": "1.1.0",
865 | "normalize-package-data": "2.4.0",
866 | "path-type": "1.1.0"
867 | }
868 | },
869 | "read-pkg-up": {
870 | "version": "1.0.1",
871 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
872 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=",
873 | "dev": true,
874 | "requires": {
875 | "find-up": "1.1.2",
876 | "read-pkg": "1.1.0"
877 | }
878 | },
879 | "readable-stream": {
880 | "version": "1.1.14",
881 | "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz",
882 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
883 | "dev": true,
884 | "requires": {
885 | "core-util-is": "1.0.2",
886 | "inherits": "2.0.3",
887 | "isarray": "0.0.1",
888 | "string_decoder": "0.10.31"
889 | }
890 | },
891 | "redent": {
892 | "version": "1.0.0",
893 | "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
894 | "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
895 | "dev": true,
896 | "requires": {
897 | "indent-string": "2.1.0",
898 | "strip-indent": "1.0.1"
899 | }
900 | },
901 | "repeating": {
902 | "version": "2.0.1",
903 | "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
904 | "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
905 | "dev": true,
906 | "requires": {
907 | "is-finite": "1.0.2"
908 | }
909 | },
910 | "request": {
911 | "version": "2.88.0",
912 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
913 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
914 | "dev": true,
915 | "requires": {
916 | "aws-sign2": "0.7.0",
917 | "aws4": "1.8.0",
918 | "caseless": "0.12.0",
919 | "combined-stream": "1.0.7",
920 | "extend": "3.0.2",
921 | "forever-agent": "0.6.1",
922 | "form-data": "2.3.2",
923 | "har-validator": "5.1.0",
924 | "http-signature": "1.2.0",
925 | "is-typedarray": "1.0.0",
926 | "isstream": "0.1.2",
927 | "json-stringify-safe": "5.0.1",
928 | "mime-types": "2.1.20",
929 | "oauth-sign": "0.9.0",
930 | "performance-now": "2.1.0",
931 | "qs": "6.5.2",
932 | "safe-buffer": "5.1.2",
933 | "tough-cookie": "2.4.3",
934 | "tunnel-agent": "0.6.0",
935 | "uuid": "3.3.2"
936 | }
937 | },
938 | "safe-buffer": {
939 | "version": "5.1.2",
940 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
941 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
942 | "dev": true
943 | },
944 | "safer-buffer": {
945 | "version": "2.1.2",
946 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
947 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
948 | "dev": true
949 | },
950 | "semver": {
951 | "version": "5.5.1",
952 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz",
953 | "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==",
954 | "dev": true
955 | },
956 | "signal-exit": {
957 | "version": "3.0.2",
958 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
959 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
960 | "dev": true
961 | },
962 | "single-line-log": {
963 | "version": "1.1.2",
964 | "resolved": "https://registry.npmjs.org/single-line-log/-/single-line-log-1.1.2.tgz",
965 | "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
966 | "dev": true,
967 | "requires": {
968 | "string-width": "1.0.2"
969 | }
970 | },
971 | "spdx-correct": {
972 | "version": "3.0.0",
973 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz",
974 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==",
975 | "dev": true,
976 | "requires": {
977 | "spdx-expression-parse": "3.0.0",
978 | "spdx-license-ids": "3.0.1"
979 | }
980 | },
981 | "spdx-exceptions": {
982 | "version": "2.1.0",
983 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz",
984 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==",
985 | "dev": true
986 | },
987 | "spdx-expression-parse": {
988 | "version": "3.0.0",
989 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
990 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
991 | "dev": true,
992 | "requires": {
993 | "spdx-exceptions": "2.1.0",
994 | "spdx-license-ids": "3.0.1"
995 | }
996 | },
997 | "spdx-license-ids": {
998 | "version": "3.0.1",
999 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz",
1000 | "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==",
1001 | "dev": true
1002 | },
1003 | "speedometer": {
1004 | "version": "0.1.4",
1005 | "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-0.1.4.tgz",
1006 | "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
1007 | "dev": true
1008 | },
1009 | "sshpk": {
1010 | "version": "1.14.2",
1011 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
1012 | "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
1013 | "dev": true,
1014 | "requires": {
1015 | "asn1": "0.2.4",
1016 | "assert-plus": "1.0.0",
1017 | "bcrypt-pbkdf": "1.0.2",
1018 | "dashdash": "1.14.1",
1019 | "ecc-jsbn": "0.1.2",
1020 | "getpass": "0.1.7",
1021 | "jsbn": "0.1.1",
1022 | "safer-buffer": "2.1.2",
1023 | "tweetnacl": "0.14.5"
1024 | }
1025 | },
1026 | "string_decoder": {
1027 | "version": "0.10.31",
1028 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
1029 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
1030 | "dev": true
1031 | },
1032 | "string-width": {
1033 | "version": "1.0.2",
1034 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
1035 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
1036 | "dev": true,
1037 | "requires": {
1038 | "code-point-at": "1.1.0",
1039 | "is-fullwidth-code-point": "1.0.0",
1040 | "strip-ansi": "3.0.1"
1041 | }
1042 | },
1043 | "strip-ansi": {
1044 | "version": "3.0.1",
1045 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
1046 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
1047 | "dev": true,
1048 | "requires": {
1049 | "ansi-regex": "2.1.1"
1050 | }
1051 | },
1052 | "strip-bom": {
1053 | "version": "2.0.0",
1054 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
1055 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=",
1056 | "dev": true,
1057 | "requires": {
1058 | "is-utf8": "0.2.1"
1059 | }
1060 | },
1061 | "strip-indent": {
1062 | "version": "1.0.1",
1063 | "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
1064 | "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=",
1065 | "dev": true,
1066 | "requires": {
1067 | "get-stdin": "4.0.1"
1068 | }
1069 | },
1070 | "strip-json-comments": {
1071 | "version": "2.0.1",
1072 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
1073 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
1074 | "dev": true
1075 | },
1076 | "sumchecker": {
1077 | "version": "2.0.2",
1078 | "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-2.0.2.tgz",
1079 | "integrity": "sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4=",
1080 | "dev": true,
1081 | "requires": {
1082 | "debug": "2.6.9"
1083 | },
1084 | "dependencies": {
1085 | "debug": {
1086 | "version": "2.6.9",
1087 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
1088 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
1089 | "dev": true,
1090 | "requires": {
1091 | "ms": "2.0.0"
1092 | }
1093 | },
1094 | "ms": {
1095 | "version": "2.0.0",
1096 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
1097 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
1098 | "dev": true
1099 | }
1100 | }
1101 | },
1102 | "throttleit": {
1103 | "version": "0.0.2",
1104 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-0.0.2.tgz",
1105 | "integrity": "sha1-z+34jmDADdlpe2H90qg0OptoDq8=",
1106 | "dev": true
1107 | },
1108 | "through2": {
1109 | "version": "0.2.3",
1110 | "resolved": "https://registry.npmjs.org/through2/-/through2-0.2.3.tgz",
1111 | "integrity": "sha1-6zKE2k6jEbbMis42U3SKUqvyWj8=",
1112 | "dev": true,
1113 | "requires": {
1114 | "readable-stream": "1.1.14",
1115 | "xtend": "2.1.2"
1116 | }
1117 | },
1118 | "tough-cookie": {
1119 | "version": "2.4.3",
1120 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
1121 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
1122 | "dev": true,
1123 | "requires": {
1124 | "psl": "1.1.29",
1125 | "punycode": "1.4.1"
1126 | }
1127 | },
1128 | "trim-newlines": {
1129 | "version": "1.0.0",
1130 | "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
1131 | "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=",
1132 | "dev": true
1133 | },
1134 | "tunnel-agent": {
1135 | "version": "0.6.0",
1136 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
1137 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
1138 | "dev": true,
1139 | "requires": {
1140 | "safe-buffer": "5.1.2"
1141 | }
1142 | },
1143 | "tweetnacl": {
1144 | "version": "0.14.5",
1145 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
1146 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
1147 | "dev": true,
1148 | "optional": true
1149 | },
1150 | "typedarray": {
1151 | "version": "0.0.6",
1152 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
1153 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
1154 | "dev": true
1155 | },
1156 | "universalify": {
1157 | "version": "0.1.2",
1158 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
1159 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
1160 | "dev": true
1161 | },
1162 | "util-deprecate": {
1163 | "version": "1.0.2",
1164 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1165 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
1166 | "dev": true
1167 | },
1168 | "uuid": {
1169 | "version": "3.3.2",
1170 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
1171 | "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
1172 | "dev": true
1173 | },
1174 | "validate-npm-package-license": {
1175 | "version": "3.0.4",
1176 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
1177 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
1178 | "dev": true,
1179 | "requires": {
1180 | "spdx-correct": "3.0.0",
1181 | "spdx-expression-parse": "3.0.0"
1182 | }
1183 | },
1184 | "verror": {
1185 | "version": "1.10.0",
1186 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
1187 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
1188 | "dev": true,
1189 | "requires": {
1190 | "assert-plus": "1.0.0",
1191 | "core-util-is": "1.0.2",
1192 | "extsprintf": "1.3.0"
1193 | }
1194 | },
1195 | "xtend": {
1196 | "version": "2.1.2",
1197 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz",
1198 | "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=",
1199 | "dev": true,
1200 | "requires": {
1201 | "object-keys": "0.4.0"
1202 | }
1203 | },
1204 | "yauzl": {
1205 | "version": "2.4.1",
1206 | "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
1207 | "integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
1208 | "dev": true,
1209 | "requires": {
1210 | "fd-slicer": "1.0.1"
1211 | }
1212 | }
1213 | }
1214 | }
1215 |
--------------------------------------------------------------------------------
/electron-app/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-quick-start",
3 | "version": "1.0.0",
4 | "description": "A minimal Electron application",
5 | "main": "main.js",
6 | "scripts": {
7 | "start": "electron ."
8 | },
9 | "repository": "https://github.com/electron/electron-quick-start",
10 | "keywords": [
11 | "Electron",
12 | "quick",
13 | "start",
14 | "tutorial",
15 | "demo"
16 | ],
17 | "author": "GitHub",
18 | "license": "CC0-1.0",
19 | "devDependencies": {
20 | "electron": "^3.0.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/electron-app/renderer.js:
--------------------------------------------------------------------------------
1 | // This file is required by the index.html file and will
2 | // be executed in the renderer process for that window.
3 | // All of the Node.js APIs are available in this process.
4 |
5 | const { increment } = require("../native-increment");
6 |
7 | const $number = document.querySelector("#number");
8 | const $incrementButton = document.querySelector("#increment");
9 |
10 | let number = 0;
11 |
12 | function renderResult() {
13 | $number.innerHTML = number;
14 | }
15 |
16 | $incrementButton.addEventListener("click", () => {
17 | number = increment(number);
18 | renderResult();
19 | });
20 |
21 | renderResult();
22 |
--------------------------------------------------------------------------------
/electron-app/style.css:
--------------------------------------------------------------------------------
1 | html,
2 | body {
3 | margin: 0;
4 | padding: 0;
5 | background: #222427;
6 | color: white;
7 | text-align: center;
8 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
9 | Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
10 | }
11 |
12 | header {
13 | display: none;
14 | }
15 |
16 | /**
17 | * Offset the frame less window alternative on macOS.
18 | * https://electronjs.org/docs/api/frameless-window#alternatives-on-macos
19 | */
20 |
21 | body.platform-darwin header {
22 | -webkit-app-region: drag;
23 | display: block;
24 | height: 22px;
25 | background-color: #222427;
26 | }
27 |
28 | body.platform-darwin #root {
29 | height: calc(100vh - 22px);
30 | }
31 |
32 | .intro {
33 | margin: 20px;
34 | font-size: 15px;
35 | }
36 |
37 | #number {
38 | font-size: 25px;
39 | margin: 40px;
40 | }
41 |
42 | #increment {
43 | background: rgb(71, 147, 90);
44 | border-radius: 4px;
45 | font-size: 15px;
46 | display: block;
47 | border: none;
48 | color: white;
49 | margin: 20px auto;
50 | margin-top: 0;
51 | padding: 5px 15px;
52 | }
53 |
54 | .versions {
55 | font-size: 10px;
56 | margin: 40px 60px;
57 | color: grey;
58 | }
59 |
--------------------------------------------------------------------------------
/electron-app/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@types/node@^8.0.24":
6 | version "8.10.29"
7 | resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.29.tgz#b3a13b58dd7b0682bf1b42022bef4a5a9718f687"
8 |
9 | ajv@^5.3.0:
10 | version "5.5.2"
11 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965"
12 | dependencies:
13 | co "^4.6.0"
14 | fast-deep-equal "^1.0.0"
15 | fast-json-stable-stringify "^2.0.0"
16 | json-schema-traverse "^0.3.0"
17 |
18 | ansi-regex@^2.0.0:
19 | version "2.1.1"
20 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
21 |
22 | array-find-index@^1.0.1:
23 | version "1.0.2"
24 | resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
25 |
26 | asn1@~0.2.3:
27 | version "0.2.4"
28 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
29 | dependencies:
30 | safer-buffer "~2.1.0"
31 |
32 | assert-plus@1.0.0, assert-plus@^1.0.0:
33 | version "1.0.0"
34 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
35 |
36 | asynckit@^0.4.0:
37 | version "0.4.0"
38 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
39 |
40 | aws-sign2@~0.7.0:
41 | version "0.7.0"
42 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
43 |
44 | aws4@^1.8.0:
45 | version "1.8.0"
46 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f"
47 |
48 | bcrypt-pbkdf@^1.0.0:
49 | version "1.0.2"
50 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
51 | dependencies:
52 | tweetnacl "^0.14.3"
53 |
54 | buffer-from@^1.0.0:
55 | version "1.1.1"
56 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
57 |
58 | builtin-modules@^1.0.0:
59 | version "1.1.1"
60 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
61 |
62 | camelcase-keys@^2.0.0:
63 | version "2.1.0"
64 | resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
65 | dependencies:
66 | camelcase "^2.0.0"
67 | map-obj "^1.0.0"
68 |
69 | camelcase@^2.0.0:
70 | version "2.1.1"
71 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
72 |
73 | caseless@~0.12.0:
74 | version "0.12.0"
75 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
76 |
77 | co@^4.6.0:
78 | version "4.6.0"
79 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
80 |
81 | code-point-at@^1.0.0:
82 | version "1.1.0"
83 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77"
84 |
85 | combined-stream@1.0.6:
86 | version "1.0.6"
87 | resolved "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818"
88 | dependencies:
89 | delayed-stream "~1.0.0"
90 |
91 | combined-stream@~1.0.6:
92 | version "1.0.7"
93 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828"
94 | dependencies:
95 | delayed-stream "~1.0.0"
96 |
97 | concat-stream@1.6.2:
98 | version "1.6.2"
99 | resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
100 | dependencies:
101 | buffer-from "^1.0.0"
102 | inherits "^2.0.3"
103 | readable-stream "^2.2.2"
104 | typedarray "^0.0.6"
105 |
106 | core-util-is@1.0.2, core-util-is@~1.0.0:
107 | version "1.0.2"
108 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
109 |
110 | currently-unhandled@^0.4.1:
111 | version "0.4.1"
112 | resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
113 | dependencies:
114 | array-find-index "^1.0.1"
115 |
116 | dashdash@^1.12.0:
117 | version "1.14.1"
118 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
119 | dependencies:
120 | assert-plus "^1.0.0"
121 |
122 | debug@2.6.9, debug@^2.1.3, debug@^2.2.0:
123 | version "2.6.9"
124 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
125 | dependencies:
126 | ms "2.0.0"
127 |
128 | debug@^3.0.0:
129 | version "3.2.5"
130 | resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.5.tgz#c2418fbfd7a29f4d4f70ff4cea604d4b64c46407"
131 | dependencies:
132 | ms "^2.1.1"
133 |
134 | decamelize@^1.1.2:
135 | version "1.2.0"
136 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
137 |
138 | deep-extend@^0.6.0:
139 | version "0.6.0"
140 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
141 |
142 | delayed-stream@~1.0.0:
143 | version "1.0.0"
144 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
145 |
146 | ecc-jsbn@~0.1.1:
147 | version "0.1.2"
148 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
149 | dependencies:
150 | jsbn "~0.1.0"
151 | safer-buffer "^2.1.0"
152 |
153 | electron-download@^4.1.0:
154 | version "4.1.1"
155 | resolved "https://registry.yarnpkg.com/electron-download/-/electron-download-4.1.1.tgz#02e69556705cc456e520f9e035556ed5a015ebe8"
156 | dependencies:
157 | debug "^3.0.0"
158 | env-paths "^1.0.0"
159 | fs-extra "^4.0.1"
160 | minimist "^1.2.0"
161 | nugget "^2.0.1"
162 | path-exists "^3.0.0"
163 | rc "^1.2.1"
164 | semver "^5.4.1"
165 | sumchecker "^2.0.2"
166 |
167 | electron@^3.0.0:
168 | version "3.0.0"
169 | resolved "https://registry.yarnpkg.com/electron/-/electron-3.0.0.tgz#d41e671b1057aee12021c63a5db242075d6dc685"
170 | dependencies:
171 | "@types/node" "^8.0.24"
172 | electron-download "^4.1.0"
173 | extract-zip "^1.0.3"
174 |
175 | env-paths@^1.0.0:
176 | version "1.0.0"
177 | resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-1.0.0.tgz#4168133b42bb05c38a35b1ae4397c8298ab369e0"
178 |
179 | error-ex@^1.2.0:
180 | version "1.3.2"
181 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
182 | dependencies:
183 | is-arrayish "^0.2.1"
184 |
185 | extend@~3.0.2:
186 | version "3.0.2"
187 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
188 |
189 | extract-zip@^1.0.3:
190 | version "1.6.7"
191 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-1.6.7.tgz#a840b4b8af6403264c8db57f4f1a74333ef81fe9"
192 | dependencies:
193 | concat-stream "1.6.2"
194 | debug "2.6.9"
195 | mkdirp "0.5.1"
196 | yauzl "2.4.1"
197 |
198 | extsprintf@1.3.0:
199 | version "1.3.0"
200 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
201 |
202 | extsprintf@^1.2.0:
203 | version "1.4.0"
204 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
205 |
206 | fast-deep-equal@^1.0.0:
207 | version "1.1.0"
208 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
209 |
210 | fast-json-stable-stringify@^2.0.0:
211 | version "2.0.0"
212 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2"
213 |
214 | fd-slicer@~1.0.1:
215 | version "1.0.1"
216 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65"
217 | dependencies:
218 | pend "~1.2.0"
219 |
220 | find-up@^1.0.0:
221 | version "1.1.2"
222 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
223 | dependencies:
224 | path-exists "^2.0.0"
225 | pinkie-promise "^2.0.0"
226 |
227 | forever-agent@~0.6.1:
228 | version "0.6.1"
229 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
230 |
231 | form-data@~2.3.2:
232 | version "2.3.2"
233 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099"
234 | dependencies:
235 | asynckit "^0.4.0"
236 | combined-stream "1.0.6"
237 | mime-types "^2.1.12"
238 |
239 | fs-extra@^4.0.1:
240 | version "4.0.3"
241 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
242 | dependencies:
243 | graceful-fs "^4.1.2"
244 | jsonfile "^4.0.0"
245 | universalify "^0.1.0"
246 |
247 | get-stdin@^4.0.1:
248 | version "4.0.1"
249 | resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
250 |
251 | getpass@^0.1.1:
252 | version "0.1.7"
253 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
254 | dependencies:
255 | assert-plus "^1.0.0"
256 |
257 | graceful-fs@^4.1.2, graceful-fs@^4.1.6:
258 | version "4.1.11"
259 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
260 |
261 | har-schema@^2.0.0:
262 | version "2.0.0"
263 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
264 |
265 | har-validator@~5.1.0:
266 | version "5.1.0"
267 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.0.tgz#44657f5688a22cfd4b72486e81b3a3fb11742c29"
268 | dependencies:
269 | ajv "^5.3.0"
270 | har-schema "^2.0.0"
271 |
272 | hosted-git-info@^2.1.4:
273 | version "2.7.1"
274 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"
275 |
276 | http-signature@~1.2.0:
277 | version "1.2.0"
278 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
279 | dependencies:
280 | assert-plus "^1.0.0"
281 | jsprim "^1.2.2"
282 | sshpk "^1.7.0"
283 |
284 | indent-string@^2.1.0:
285 | version "2.1.0"
286 | resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
287 | dependencies:
288 | repeating "^2.0.0"
289 |
290 | inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3:
291 | version "2.0.3"
292 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
293 |
294 | ini@~1.3.0:
295 | version "1.3.5"
296 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
297 |
298 | is-arrayish@^0.2.1:
299 | version "0.2.1"
300 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
301 |
302 | is-builtin-module@^1.0.0:
303 | version "1.0.0"
304 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
305 | dependencies:
306 | builtin-modules "^1.0.0"
307 |
308 | is-finite@^1.0.0:
309 | version "1.0.2"
310 | resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
311 | dependencies:
312 | number-is-nan "^1.0.0"
313 |
314 | is-fullwidth-code-point@^1.0.0:
315 | version "1.0.0"
316 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
317 | dependencies:
318 | number-is-nan "^1.0.0"
319 |
320 | is-typedarray@~1.0.0:
321 | version "1.0.0"
322 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
323 |
324 | is-utf8@^0.2.0:
325 | version "0.2.1"
326 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
327 |
328 | isarray@0.0.1:
329 | version "0.0.1"
330 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
331 |
332 | isarray@~1.0.0:
333 | version "1.0.0"
334 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
335 |
336 | isstream@~0.1.2:
337 | version "0.1.2"
338 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
339 |
340 | jsbn@~0.1.0:
341 | version "0.1.1"
342 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
343 |
344 | json-schema-traverse@^0.3.0:
345 | version "0.3.1"
346 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz#349a6d44c53a51de89b40805c5d5e59b417d3340"
347 |
348 | json-schema@0.2.3:
349 | version "0.2.3"
350 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
351 |
352 | json-stringify-safe@~5.0.1:
353 | version "5.0.1"
354 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
355 |
356 | jsonfile@^4.0.0:
357 | version "4.0.0"
358 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
359 | optionalDependencies:
360 | graceful-fs "^4.1.6"
361 |
362 | jsprim@^1.2.2:
363 | version "1.4.1"
364 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
365 | dependencies:
366 | assert-plus "1.0.0"
367 | extsprintf "1.3.0"
368 | json-schema "0.2.3"
369 | verror "1.10.0"
370 |
371 | load-json-file@^1.0.0:
372 | version "1.1.0"
373 | resolved "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
374 | dependencies:
375 | graceful-fs "^4.1.2"
376 | parse-json "^2.2.0"
377 | pify "^2.0.0"
378 | pinkie-promise "^2.0.0"
379 | strip-bom "^2.0.0"
380 |
381 | loud-rejection@^1.0.0:
382 | version "1.6.0"
383 | resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
384 | dependencies:
385 | currently-unhandled "^0.4.1"
386 | signal-exit "^3.0.0"
387 |
388 | map-obj@^1.0.0, map-obj@^1.0.1:
389 | version "1.0.1"
390 | resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
391 |
392 | meow@^3.1.0:
393 | version "3.7.0"
394 | resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
395 | dependencies:
396 | camelcase-keys "^2.0.0"
397 | decamelize "^1.1.2"
398 | loud-rejection "^1.0.0"
399 | map-obj "^1.0.1"
400 | minimist "^1.1.3"
401 | normalize-package-data "^2.3.4"
402 | object-assign "^4.0.1"
403 | read-pkg-up "^1.0.1"
404 | redent "^1.0.0"
405 | trim-newlines "^1.0.0"
406 |
407 | mime-db@~1.36.0:
408 | version "1.36.0"
409 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397"
410 |
411 | mime-types@^2.1.12, mime-types@~2.1.19:
412 | version "2.1.20"
413 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.20.tgz#930cb719d571e903738520f8470911548ca2cc19"
414 | dependencies:
415 | mime-db "~1.36.0"
416 |
417 | minimist@0.0.8:
418 | version "0.0.8"
419 | resolved "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
420 |
421 | minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
422 | version "1.2.0"
423 | resolved "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
424 |
425 | mkdirp@0.5.1:
426 | version "0.5.1"
427 | resolved "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
428 | dependencies:
429 | minimist "0.0.8"
430 |
431 | ms@2.0.0:
432 | version "2.0.0"
433 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
434 |
435 | ms@^2.1.1:
436 | version "2.1.1"
437 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
438 |
439 | normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
440 | version "2.4.0"
441 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.4.0.tgz#12f95a307d58352075a04907b84ac8be98ac012f"
442 | dependencies:
443 | hosted-git-info "^2.1.4"
444 | is-builtin-module "^1.0.0"
445 | semver "2 || 3 || 4 || 5"
446 | validate-npm-package-license "^3.0.1"
447 |
448 | nugget@^2.0.1:
449 | version "2.0.1"
450 | resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0"
451 | dependencies:
452 | debug "^2.1.3"
453 | minimist "^1.1.0"
454 | pretty-bytes "^1.0.2"
455 | progress-stream "^1.1.0"
456 | request "^2.45.0"
457 | single-line-log "^1.1.2"
458 | throttleit "0.0.2"
459 |
460 | number-is-nan@^1.0.0:
461 | version "1.0.1"
462 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
463 |
464 | oauth-sign@~0.9.0:
465 | version "0.9.0"
466 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
467 |
468 | object-assign@^4.0.1:
469 | version "4.1.1"
470 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
471 |
472 | object-keys@~0.4.0:
473 | version "0.4.0"
474 | resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336"
475 |
476 | parse-json@^2.2.0:
477 | version "2.2.0"
478 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
479 | dependencies:
480 | error-ex "^1.2.0"
481 |
482 | path-exists@^2.0.0:
483 | version "2.1.0"
484 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
485 | dependencies:
486 | pinkie-promise "^2.0.0"
487 |
488 | path-exists@^3.0.0:
489 | version "3.0.0"
490 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
491 |
492 | path-type@^1.0.0:
493 | version "1.1.0"
494 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
495 | dependencies:
496 | graceful-fs "^4.1.2"
497 | pify "^2.0.0"
498 | pinkie-promise "^2.0.0"
499 |
500 | pend@~1.2.0:
501 | version "1.2.0"
502 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
503 |
504 | performance-now@^2.1.0:
505 | version "2.1.0"
506 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
507 |
508 | pify@^2.0.0:
509 | version "2.3.0"
510 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
511 |
512 | pinkie-promise@^2.0.0:
513 | version "2.0.1"
514 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
515 | dependencies:
516 | pinkie "^2.0.0"
517 |
518 | pinkie@^2.0.0:
519 | version "2.0.4"
520 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
521 |
522 | pretty-bytes@^1.0.2:
523 | version "1.0.4"
524 | resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84"
525 | dependencies:
526 | get-stdin "^4.0.1"
527 | meow "^3.1.0"
528 |
529 | process-nextick-args@~2.0.0:
530 | version "2.0.0"
531 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa"
532 |
533 | progress-stream@^1.1.0:
534 | version "1.2.0"
535 | resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77"
536 | dependencies:
537 | speedometer "~0.1.2"
538 | through2 "~0.2.3"
539 |
540 | psl@^1.1.24:
541 | version "1.1.29"
542 | resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.29.tgz#60f580d360170bb722a797cc704411e6da850c67"
543 |
544 | punycode@^1.4.1:
545 | version "1.4.1"
546 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
547 |
548 | qs@~6.5.2:
549 | version "6.5.2"
550 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
551 |
552 | rc@^1.2.1:
553 | version "1.2.8"
554 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed"
555 | dependencies:
556 | deep-extend "^0.6.0"
557 | ini "~1.3.0"
558 | minimist "^1.2.0"
559 | strip-json-comments "~2.0.1"
560 |
561 | read-pkg-up@^1.0.1:
562 | version "1.0.1"
563 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
564 | dependencies:
565 | find-up "^1.0.0"
566 | read-pkg "^1.0.0"
567 |
568 | read-pkg@^1.0.0:
569 | version "1.1.0"
570 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
571 | dependencies:
572 | load-json-file "^1.0.0"
573 | normalize-package-data "^2.3.2"
574 | path-type "^1.0.0"
575 |
576 | readable-stream@^2.2.2:
577 | version "2.3.6"
578 | resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf"
579 | dependencies:
580 | core-util-is "~1.0.0"
581 | inherits "~2.0.3"
582 | isarray "~1.0.0"
583 | process-nextick-args "~2.0.0"
584 | safe-buffer "~5.1.1"
585 | string_decoder "~1.1.1"
586 | util-deprecate "~1.0.1"
587 |
588 | readable-stream@~1.1.9:
589 | version "1.1.14"
590 | resolved "http://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
591 | dependencies:
592 | core-util-is "~1.0.0"
593 | inherits "~2.0.1"
594 | isarray "0.0.1"
595 | string_decoder "~0.10.x"
596 |
597 | redent@^1.0.0:
598 | version "1.0.0"
599 | resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
600 | dependencies:
601 | indent-string "^2.1.0"
602 | strip-indent "^1.0.1"
603 |
604 | repeating@^2.0.0:
605 | version "2.0.1"
606 | resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
607 | dependencies:
608 | is-finite "^1.0.0"
609 |
610 | request@^2.45.0:
611 | version "2.88.0"
612 | resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef"
613 | dependencies:
614 | aws-sign2 "~0.7.0"
615 | aws4 "^1.8.0"
616 | caseless "~0.12.0"
617 | combined-stream "~1.0.6"
618 | extend "~3.0.2"
619 | forever-agent "~0.6.1"
620 | form-data "~2.3.2"
621 | har-validator "~5.1.0"
622 | http-signature "~1.2.0"
623 | is-typedarray "~1.0.0"
624 | isstream "~0.1.2"
625 | json-stringify-safe "~5.0.1"
626 | mime-types "~2.1.19"
627 | oauth-sign "~0.9.0"
628 | performance-now "^2.1.0"
629 | qs "~6.5.2"
630 | safe-buffer "^5.1.2"
631 | tough-cookie "~2.4.3"
632 | tunnel-agent "^0.6.0"
633 | uuid "^3.3.2"
634 |
635 | safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
636 | version "5.1.2"
637 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
638 |
639 | safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
640 | version "2.1.2"
641 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
642 |
643 | "semver@2 || 3 || 4 || 5", semver@^5.4.1:
644 | version "5.5.1"
645 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.1.tgz#7dfdd8814bdb7cabc7be0fb1d734cfb66c940477"
646 |
647 | signal-exit@^3.0.0:
648 | version "3.0.2"
649 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
650 |
651 | single-line-log@^1.1.2:
652 | version "1.1.2"
653 | resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364"
654 | dependencies:
655 | string-width "^1.0.1"
656 |
657 | spdx-correct@^3.0.0:
658 | version "3.0.0"
659 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.0.0.tgz#05a5b4d7153a195bc92c3c425b69f3b2a9524c82"
660 | dependencies:
661 | spdx-expression-parse "^3.0.0"
662 | spdx-license-ids "^3.0.0"
663 |
664 | spdx-exceptions@^2.1.0:
665 | version "2.1.0"
666 | resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz#2c7ae61056c714a5b9b9b2b2af7d311ef5c78fe9"
667 |
668 | spdx-expression-parse@^3.0.0:
669 | version "3.0.0"
670 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0"
671 | dependencies:
672 | spdx-exceptions "^2.1.0"
673 | spdx-license-ids "^3.0.0"
674 |
675 | spdx-license-ids@^3.0.0:
676 | version "3.0.1"
677 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz#e2a303236cac54b04031fa7a5a79c7e701df852f"
678 |
679 | speedometer@~0.1.2:
680 | version "0.1.4"
681 | resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d"
682 |
683 | sshpk@^1.7.0:
684 | version "1.14.2"
685 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.14.2.tgz#c6fc61648a3d9c4e764fd3fcdf4ea105e492ba98"
686 | dependencies:
687 | asn1 "~0.2.3"
688 | assert-plus "^1.0.0"
689 | dashdash "^1.12.0"
690 | getpass "^0.1.1"
691 | safer-buffer "^2.0.2"
692 | optionalDependencies:
693 | bcrypt-pbkdf "^1.0.0"
694 | ecc-jsbn "~0.1.1"
695 | jsbn "~0.1.0"
696 | tweetnacl "~0.14.0"
697 |
698 | string-width@^1.0.1:
699 | version "1.0.2"
700 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
701 | dependencies:
702 | code-point-at "^1.0.0"
703 | is-fullwidth-code-point "^1.0.0"
704 | strip-ansi "^3.0.0"
705 |
706 | string_decoder@~0.10.x:
707 | version "0.10.31"
708 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
709 |
710 | string_decoder@~1.1.1:
711 | version "1.1.1"
712 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
713 | dependencies:
714 | safe-buffer "~5.1.0"
715 |
716 | strip-ansi@^3.0.0:
717 | version "3.0.1"
718 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
719 | dependencies:
720 | ansi-regex "^2.0.0"
721 |
722 | strip-bom@^2.0.0:
723 | version "2.0.0"
724 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
725 | dependencies:
726 | is-utf8 "^0.2.0"
727 |
728 | strip-indent@^1.0.1:
729 | version "1.0.1"
730 | resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
731 | dependencies:
732 | get-stdin "^4.0.1"
733 |
734 | strip-json-comments@~2.0.1:
735 | version "2.0.1"
736 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
737 |
738 | sumchecker@^2.0.2:
739 | version "2.0.2"
740 | resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e"
741 | dependencies:
742 | debug "^2.2.0"
743 |
744 | throttleit@0.0.2:
745 | version "0.0.2"
746 | resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf"
747 |
748 | through2@~0.2.3:
749 | version "0.2.3"
750 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f"
751 | dependencies:
752 | readable-stream "~1.1.9"
753 | xtend "~2.1.1"
754 |
755 | tough-cookie@~2.4.3:
756 | version "2.4.3"
757 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781"
758 | dependencies:
759 | psl "^1.1.24"
760 | punycode "^1.4.1"
761 |
762 | trim-newlines@^1.0.0:
763 | version "1.0.0"
764 | resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
765 |
766 | tunnel-agent@^0.6.0:
767 | version "0.6.0"
768 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
769 | dependencies:
770 | safe-buffer "^5.0.1"
771 |
772 | tweetnacl@^0.14.3, tweetnacl@~0.14.0:
773 | version "0.14.5"
774 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
775 |
776 | typedarray@^0.0.6:
777 | version "0.0.6"
778 | resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
779 |
780 | universalify@^0.1.0:
781 | version "0.1.2"
782 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
783 |
784 | util-deprecate@~1.0.1:
785 | version "1.0.2"
786 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
787 |
788 | uuid@^3.3.2:
789 | version "3.3.2"
790 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131"
791 |
792 | validate-npm-package-license@^3.0.1:
793 | version "3.0.4"
794 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a"
795 | dependencies:
796 | spdx-correct "^3.0.0"
797 | spdx-expression-parse "^3.0.0"
798 |
799 | verror@1.10.0:
800 | version "1.10.0"
801 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
802 | dependencies:
803 | assert-plus "^1.0.0"
804 | core-util-is "1.0.2"
805 | extsprintf "^1.2.0"
806 |
807 | xtend@~2.1.1:
808 | version "2.1.2"
809 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b"
810 | dependencies:
811 | object-keys "~0.4.0"
812 |
813 | yauzl@2.4.1:
814 | version "2.4.1"
815 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.4.1.tgz#9528f442dab1b2284e58b4379bb194e22e0c4005"
816 | dependencies:
817 | fd-slicer "~1.0.1"
818 |
--------------------------------------------------------------------------------
/native-increment/README.md:
--------------------------------------------------------------------------------
1 | # Native Increment
2 |
3 | A native npm example addon that will increment a `number` by one.
4 |
5 | This example is used in our article on [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly).
6 |
7 | ## Prerequisites
8 |
9 | * [Node.js](http://nodejs.org/) (with npm or Yarn)
10 |
11 | ## Getting Started
12 |
13 | ```
14 | git clone native-module-electron
15 | cd native-module-electron
16 | yarn
17 | ```
18 |
19 | ## Compiling (for Node.js)
20 |
21 | ```
22 | yarn global add node-gyp
23 | node-gyp configure
24 | node-gyp build
25 | ```
26 |
27 | Please refer to [Running Native Code in Electron](https://pspdfkit.com/blog/2018/running-native-code-in-electron-and-the-case-for-webassembly) for instructions on how to compile this package for an Electron application.
28 |
29 | ## Test
30 |
31 | ```
32 | node test.js
33 | ```
34 |
--------------------------------------------------------------------------------
/native-increment/addon.cpp:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | void Increment(const Nan::FunctionCallbackInfo& info) {
4 | if (info.Length() < 1) {
5 | Nan::ThrowTypeError("Arity mismatch");
6 | return;
7 | }
8 |
9 | if (!info[0]->IsNumber()) {
10 | Nan::ThrowTypeError("Argument must be a number");
11 | return;
12 | }
13 |
14 | double arg = info[0]->NumberValue();
15 |
16 | v8::Local num = Nan::New(arg + 1);
17 |
18 | info.GetReturnValue().Set(num);
19 | }
20 |
21 | void Init(v8::Local exports) {
22 | exports->Set(Nan::New("increment").ToLocalChecked(),
23 | Nan::New(Increment)->GetFunction());
24 | }
25 |
26 | NODE_MODULE(addon, Init)
27 |
--------------------------------------------------------------------------------
/native-increment/binding.gyp:
--------------------------------------------------------------------------------
1 | {
2 | "targets": [{
3 | "target_name": "addon",
4 | "sources": [ "addon.cpp" ],
5 | "include_dirs": [
6 | "