@@ -12,21 +12,20 @@ async function protoParserFunc(protoBodyData) {
1212 //store the original .proto content in the storage before parsing
1313 protoStorage . protoMaster = protoBodyData ;
1414 //make unique protoID for file we are saving
15- let protoID = Math . floor ( Math . random ( ) * 1000 ) ;
15+ let protoID = Math . floor ( Math . random ( ) * 10000 ) ;
1616 //if file path for that ID already exists, increment the ID
1717 try {
1818 while ( fs . existsSync ( 'src/client/components/composer/protos/' + protoID + '.proto' ) ) {
19- //file exists
19+ //if file name exists try incrementing by 1
2020 protoID += 1 ;
2121 }
2222 } catch ( err ) {
2323 console . error ( err )
2424 }
25+ // const dirName = remote.app.getAppPath(); // remote.app.getAppPath() stopped working at some point so switched to process.cwd()
26+
2527 // write to saveProto file for interaction with the server
26- // const dirName = remote.app.getAppPath(); // uncomment when done testing above
27- fs . writeFileSync ( path . join ( process . cwd ( ) , 'src/client/components/composer/protos/' + protoID + '.proto' ) , protoBodyData , 'utf-8' )
28- console . log ( 'Proto file has been saved' )
29- // });
28+ fs . writeFileSync ( path . join ( process . cwd ( ) , 'src/client/components/composer/protos/' + protoID + '.proto' ) , protoBodyData , 'utf-8' ) ;
3029
3130 // define the modular client for testing
3231 // declare path variable of imported proto file
@@ -40,40 +39,31 @@ async function protoParserFunc(protoBodyData) {
4039 defaults : true ,
4140 oneofs :true
4241 } ;
43- // console.log('before protoLoader');
44- //create gRPC package definition w/ protoLoader
42+
43+ //create gRPC package definition w/ protoLoader library
4544 protoStorage . packageDefinition = protoLoader . loadSync ( PROTO_PATH , protoOptionsObj ) ;
46- // console.log('after protoLoader');
45+
4746 //create descriptor from package packageDefinition
4847 //descriptor --> gRPC uses the Protobuf .proto file format to define your messages, services and some aspects of the code generation.
4948 protoStorage . descriptor = grpc . loadPackageDefinition ( protoStorage . packageDefinition ) ;
50- // console.log(protoStorage.descriptor);
5149 protoStorage . packageName = Object . keys ( protoStorage . descriptor ) [ 0 ] ;
52- // console.log('package name: ',protoStorage.packageName);
5350 protoStorage . descriptorDefinition = protoStorage . descriptor [ protoStorage . packageName ] ;
54- // console.log('protoStorage.descriptorDefinition: ',protoStorage.descriptorDefinition);
5551 protoStorage . protoPath = PROTO_PATH ;
56- // console.log(PROTO_PATH);
52+
53+ // Store the services from the current .proto file
5754 const serviceArr = [ ] ;
5855 for ( let [ serviceName , serviceDef ] of Object . entries ( protoStorage . descriptorDefinition ) ) {
5956 if ( typeof serviceDef === 'function' ) {
60- // console.log('serviceName: ', serviceName);
61- // console.log('serviceDef: ', serviceDef);
6257 const serviceObj = { } ;
6358 serviceObj . packageName = protoStorage . packageName ;
64- // console.log('serviceName, serviceDef: ', serviceName, serviceDef);
6559 serviceObj . name = serviceName ;
6660 serviceObj . rpcs = [ ] ;
6761 serviceObj . messages = [ ]
68- let counter = 1 ;
62+
6963 for ( let [ requestName , requestDef ] of Object . entries ( serviceDef . service ) ) {
70- // console.log('counter: ', counter);
71- counter ++
72- // console.log('requestName: ', requestName);
73- // console.log('requestDef: ', requestDef);
7464 const streamingReq = requestDef . requestStream ;
7565 const streamingRes = requestDef . responseStream ;
76- // console.log('streamingReq, streamingRes: ', streamingReq, streamingRes);
66+
7767 let stream = 'UNARY' ;
7868 if ( streamingReq ) stream = 'CLIENT STREAM' ;
7969 if ( streamingRes ) stream = 'SERVER STREAM' ;
@@ -87,13 +77,11 @@ async function protoParserFunc(protoBodyData) {
8777 res : messageNameRes
8878 } ) ;
8979
90- // console.log('serviceName: ', serviceName); // ServiceName
91- // console.log('requestName: ', requestName); // RPC Request Name
92- // console.log('requestDef: ', requestDef); // too much info
80+ // create object with proto info that is formatted for interaction with Swell frontend
9381 let draftObj ;
9482 requestDef . requestType . type . field . forEach ( ( msgObj ) => {
9583 let mName = msgObj . name ;
96- // let mType = msgObj. type;
84+ // bool will track if the message is a nested type
9785 let bool = false ;
9886 if ( msgObj . type === 'TYPE_MESSAGE' ) bool = true ;
9987 if ( ! draftObj ) {
@@ -108,6 +96,7 @@ async function protoParserFunc(protoBodyData) {
10896 draftObj . def [ mName ] . nested = bool ;
10997 draftObj . def [ mName ] . dependent = msgObj . typeName ;
11098
99+ // Frontend expects a message object in the following format
111100 // {
112101 // name: messageNameReq,
113102 // def: {
@@ -121,37 +110,9 @@ async function protoParserFunc(protoBodyData) {
121110
122111 } )
123112 serviceObj . messages . push ( draftObj )
124- /*
125- requestDef.responseType.type.field.forEach((msgObj) => {
126- let mName = msgObj.name;
127- // let mType = msgObj.type;
128- let bool = false;
129- if (msgObj.type === 'TYPE_MESSAGE') bool = true;
130113
131- serviceObj.messages.push({
132- name: messageNameRes,
133- def: {[mName]: msgObj.type},
134- nested: bool,
135- dependent: msgObj.typeName
136- })
137- // serviceObj.messages.def =
138- })
139- */ // not using the details of the response object since user will run
114+ // not using the details of the response object (requestDef.responseType) since user will run
140115 // their own server
141-
142- // serviceObj[serviceName][requestName]
143- // console.log('Request message type: ',requestDef.requestType.type); // need to iterate through .field to get all types per message
144- // console.log('Request message name: ',requestDef.requestType.type.name); // Request message name
145- // console.log('Request message type.field: ',requestDef.requestType.type.field);
146- // console.log('message reqField [0].name: ', (requestDef.requestType.type.field)[0].name); // name of individual message field within message
147- // console.log('message reqField [0].type: ', (requestDef.requestType.type.field)[0].type); // type of individual message field per message
148- // console.log('Response message name: ',requestDef.responseType.type.name);// Response message name
149- // console.log('Response message type.field: ',requestDef.responseType.type.field);
150- // console.log('message resField [0].name: ', (requestDef.responseType.type.field)[0].name); // name of individual content type within message
151- // console.log('message resField [0].type: ', (requestDef.responseType.type.field)[0].type);// type of individual content type per message
152-
153- // console.log('serviceObj: ', serviceObj);
154- // console.log('serviceObj.messages: ', serviceObj.messages);
155116 }
156117 serviceArr . push ( serviceObj ) ;
157118 }
@@ -162,102 +123,25 @@ async function protoParserFunc(protoBodyData) {
162123// test run of protoParser
163124// protoParser(tempData);
164125//
126+ //current target shape of parsed grpc service object for frontend
165127//this.state.services = [
166128// {name: 'ServiceName',
167- // messages: [{name: 'messageName',
168- // def: {messageDef}
169- // }]
129+ // messages: [{
130+ // name: messageNameReq,
131+ // def: {
132+ // [mName]: {
133+ // type:msgObj.type,
134+ // nested: bool,
135+ // dependent: msgObj.typeName }
136+ // }
137+ // }]
170138// rpcs: [{name: 'RPC Name',
171139// type: 'Stream Type',
172140// req: 'MessageName for Requst',
173141// res: 'MessageName for Response' }]
174142// }]
175143//
176- // this.state.services: [
177- // {
178- // name: 'BookService',
179- // messages: [
180- // {
181- // name: "Book",
182- // def: {
183- // isbn: 'int64',
184- // title: 'string',
185- // author: 'string',
186- // }
187- // },
188- // {
189- // name: "GetBookRequest",
190- // def: {
191- // isbn: 'int64'
192- // }
193- // },
194- // {
195- // name: "GetBookViaAuthor",
196- // def: {
197- // author: 'string',
198- // }
199- // }
200- // ],
201- // rpcs: [
202- // {
203- // name: "GetBook",
204- // type: 'UNARY',
205- // req: 'GetBookRequest',
206- // res: 'Book'
207- // },
208- // {
209- // name: "GetBooksViaAuthor",
210- // type: 'SERVER STREAM',
211- // req: 'GetBookViaAuthor',
212- // res: 'Book'
213- // },
214- // {
215- // name: "GetGreatestBook",
216- // type: 'CLIENT STREAM',
217- // req: 'GetBookRequest',
218- // res: 'Book'
219- // },
220- // {
221- // name: "GetBooks",
222- // type: 'BIDIRECTIONAL',
223- // req: 'GetBookRequest',
224- // res: 'Book'
225- // },
226- // ]
227- // },
228- // {
229- // name: 'DogService',
230- // messages: [
231- // {
232- // name: "Info",
233- // def: {
234- // name: 'string',
235- // breed: 'string'
236- // }
237- // },
238- // {
239- // name: "GetAge",
240- // def: {
241- // age: 'string'
242- // }
243- // }
244- // ],
245- // rpcs: [
246- // {
247- // name: "GetInfo",
248- // type: 'UNARY',
249- // req: 'GetAge',
250- // res: 'Info',
251- // },
252- // {
253- // name: "GetBackground",
254- // type: 'BIDIRECTIONAL',
255- // req: 'GetAge',
256- // res: 'Info'
257- // },
258- // ]
259- // }
260- // ]
144+
261145// console.log(tempData);
262146// protoParserFunc(tempData).catch((err) => console.log(err));
263147export default protoParserFunc
0 commit comments