1515 */
1616
1717import { v4 as uuidv4 } from 'uuid' ;
18+ import { fromByteArray } from 'base64-js' ;
1819import PeerId from 'peer-id' ;
1920import { encode } from 'bs58' ;
2021import { addData } from './dataStorage' ;
@@ -29,7 +30,21 @@ export interface Particle {
2930 script : string ;
3031 // sign upper fields
3132 signature : string ;
32- data : any ;
33+ data : Uint8Array ;
34+ }
35+
36+ /**
37+ * Represents particle action to send to a node
38+ */
39+ interface ParticleAction {
40+ action : 'Particle'
41+ id : string ;
42+ init_peer_id : string ;
43+ timestamp : number ;
44+ ttl : number ;
45+ script : string ;
46+ signature : number [ ] ;
47+ data : string ;
3348}
3449
3550function wrapScript ( selfPeerId : string , script : string , fields : string [ ] ) : string {
@@ -63,7 +78,7 @@ export async function build(peerId: PeerId, script: string, data: Map<string, an
6378 ttl : ttl ,
6479 script : script ,
6580 signature : '' ,
66- data : [ ] ,
81+ data : Buffer . from ( [ ] ) ,
6782 } ;
6883
6984 particle . signature = await signParticle ( peerId , particle ) ;
@@ -72,16 +87,20 @@ export async function build(peerId: PeerId, script: string, data: Map<string, an
7287}
7388
7489/**
75- * Copies a particle and stringify it .
90+ * Creates an action to send to a node .
7691 */
77- export function stringifyParticle ( call : Particle ) : string {
78- let obj : any = { ...call } ;
79- obj . action = 'Particle' ;
80-
81- // delete it after signatures will be implemented on nodes
82- obj . signature = [ ] ;
83-
84- return JSON . stringify ( obj ) ;
92+ export function toAction ( particle : Particle ) : ParticleAction {
93+ return {
94+ action : "Particle" ,
95+ id : particle . id ,
96+ init_peer_id : particle . init_peer_id ,
97+ timestamp : particle . timestamp ,
98+ ttl : particle . ttl ,
99+ script : particle . script ,
100+ // TODO: copy signature from a particle after signatures will be implemented on nodes
101+ signature : [ ] ,
102+ data : fromByteArray ( particle . data )
103+ } ;
85104}
86105
87106export function parseParticle ( str : string ) : Particle {
0 commit comments