11console . log ( 'preload' )
22const { contextBridge, ipcRenderer } = require ( 'electron' )
33const path = require ( 'path' )
4+ const Serial = require ( './backend/serial.js' )
45
5- const MicroPython = require ( 'micropython.js' )
6- const { emit, platform } = require ( 'process' )
7- // const { platform } = requireprocess.platform
8- const board = new MicroPython ( )
9- board . chunk_size = 192
10- board . chunk_sleep = 200
11-
12- const Serial = {
13- loadPorts : async ( ) => {
14- let ports = await board . list_ports ( )
15- return ports . filter ( p => p . vendorId && p . productId )
16- } ,
17- connect : async ( path ) => {
18- return board . open ( path )
19- } ,
20- disconnect : async ( ) => {
21- return board . close ( )
22- } ,
23- run : async ( code ) => {
24- return board . run ( code )
25- } ,
26- execFile : async ( path ) => {
27- return board . execfile ( path )
28- } ,
29- getPrompt : async ( ) => {
30- return board . get_prompt ( )
31- } ,
32- keyboardInterrupt : async ( ) => {
33- await board . stop ( )
34- return Promise . resolve ( )
35- } ,
36- reset : async ( ) => {
37- await board . stop ( )
38- await board . exit_raw_repl ( )
39- await board . reset ( )
40- return Promise . resolve ( )
41- } ,
42- eval : ( d ) => {
43- return board . eval ( d )
44- } ,
45- onData : ( fn ) => {
46- board . serial . on ( 'data' , fn )
47- } ,
48- listFiles : async ( folder ) => {
49- return board . fs_ls ( folder )
50- } ,
51- ilistFiles : async ( folder ) => {
52- return board . fs_ils ( folder )
53- } ,
54- loadFile : async ( file ) => {
55- const output = await board . fs_cat_binary ( file )
56- return output || ''
57- } ,
58- removeFile : async ( file ) => {
59- return board . fs_rm ( file )
60- } ,
61- saveFileContent : async ( filename , content , dataConsumer ) => {
62- return board . fs_save ( content || ' ' , filename , dataConsumer )
63- } ,
64- uploadFile : async ( src , dest , dataConsumer ) => {
65- return board . fs_put ( src , dest . replaceAll ( path . win32 . sep , path . posix . sep ) , dataConsumer )
66- } ,
67- downloadFile : async ( src , dest ) => {
68- let contents = await Serial . loadFile ( src )
69- return ipcRenderer . invoke ( 'save-file' , dest , contents )
70- } ,
71- renameFile : async ( oldName , newName ) => {
72- return board . fs_rename ( oldName , newName )
73- } ,
74- onDisconnect : async ( fn ) => {
75- board . serial . on ( 'close' , fn )
76- } ,
77- createFolder : async ( folder ) => {
78- return await board . fs_mkdir ( folder )
79- } ,
80- removeFolder : async ( folder ) => {
81- return await board . fs_rmdir ( folder )
82- } ,
83- getNavigationPath : ( navigation , target ) => {
84- return path . posix . join ( navigation , target )
85- } ,
86- getFullPath : ( root , navigation , file ) => {
87- return path . posix . join ( root , navigation , file )
88- } ,
89- getParentPath : ( navigation ) => {
90- return path . posix . dirname ( navigation )
91- } ,
92- fileExists : async ( filePath ) => {
93- // !!!: Fix this on micropython.js level
94- // ???: Check if file exists is not part of mpremote specs
95- const output = await board . run ( `
96- import os
97- try:
98- os.stat("${ filePath } ")
99- print(0)
100- except OSError:
101- print(1)
102- ` )
103- return output [ 2 ] === '0'
104- }
105- }
6+ const { platform } = require ( 'process' )
1067
1078const Disk = {
1089 openFolder : async ( ) => {
@@ -202,4 +103,4 @@ const Window = {
202103
203104contextBridge . exposeInMainWorld ( 'BridgeSerial' , Serial )
204105contextBridge . exposeInMainWorld ( 'BridgeDisk' , Disk )
205- contextBridge . exposeInMainWorld ( 'BridgeWindow' , Window )
106+ contextBridge . exposeInMainWorld ( 'BridgeWindow' , Window )
0 commit comments