UNPKG

8.71 kBJavaScriptView Raw
1import { Writer as $Writer } from 'protobufjs/minimal';
2import { encode as encodeBitset } from '@statechart/scpb-bitset';
3import {
4 state as stateTypes,
5 transition as transitionTypes,
6 expression as expressionTypes,
7} from './types';
8
9export default function encodeDocument(message, writer) {
10 if (!writer)
11 writer = $Writer.create();
12 if (message.name != null && message.hasOwnProperty("name"))
13 writer.uint32(/* id 1, wireType 2 =*/10).string(message.name);
14 var states = message.states || [];
15 var stateSize = states.length;
16 var transitions = message.transitions || [];
17 var transitionSize = transitions.length;
18 if (states.length)
19 for (let i = 0; i < states.length; ++i)
20 encodeState(states[i], writer.uint32(/* id 2, wireType 2 =*/18).fork(), stateSize, transitionSize).ldelim();
21 if (transitions.length)
22 for (let i = 0; i < transitions.length; ++i)
23 encodeTransition(transitions[i], writer.uint32(/* id 3, wireType 2 =*/26).fork(), stateSize, transitionSize).ldelim();
24 if (message.datamodel != null && message.hasOwnProperty("datamodel"))
25 writer.uint32(/* id 4, wireType 2 =*/34).string(message.datamodel);
26 if (message.meta != null && message.hasOwnProperty("meta"))
27 for (let keys = Object.keys(message.meta), i = 0; i < keys.length; ++i)
28 writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.meta[keys[i]]).ldelim();
29 return writer;
30}
31
32function encodeState(message, writer, stateSize, transitionSize) {
33 if (!writer)
34 writer = $Writer.create();
35 if (message.type != null && message.hasOwnProperty("type"))
36 writer.uint32(/* id 1, wireType 0 =*/8).uint32(stateTypes.indexOf(message.type));
37 if (message.idx != null && message.hasOwnProperty("idx"))
38 writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.idx);
39 if (message.id != null && message.hasOwnProperty("id"))
40 writer.uint32(/* id 3, wireType 2 =*/26).string(message.id);
41 if (message.onEnter != null && message.onEnter.length)
42 for (let i = 0; i < message.onEnter.length; ++i)
43 encodeExpression(message.onEnter[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
44 if (message.onExit != null && message.onExit.length)
45 for (let i = 0; i < message.onExit.length; ++i)
46 encodeExpression(message.onExit[i], writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
47 if (message.invocations != null && message.invocations.length)
48 for (let i = 0; i < message.invocations.length; ++i)
49 encodeInvocation(message.invocations[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
50 if (message.data != null && message.data.length)
51 for (let i = 0; i < message.data.length; ++i)
52 encodeData(message.data[i], writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();
53 if (message.parent != null && message.hasOwnProperty("parent"))
54 writer.uint32(/* id 8, wireType 0 =*/64).uint32(message.parent);
55 if (message.children != null && message.hasOwnProperty("children"))
56 writer.uint32(/* id 9, wireType 2 =*/74).bytes(encodeBitset(message.children, stateSize));
57 if (message.ancestors != null && message.hasOwnProperty("ancestors"))
58 writer.uint32(/* id 10, wireType 2 =*/82).bytes(encodeBitset(message.ancestors, stateSize));
59 if (message.completion != null && message.hasOwnProperty("completion"))
60 writer.uint32(/* id 11, wireType 2 =*/90).bytes(encodeBitset(message.completion, stateSize));
61 if (message.transitions != null && message.hasOwnProperty("transitions"))
62 writer.uint32(/* id 12, wireType 2 =*/98).bytes(encodeBitset(message.transitions, transitionSize));
63 if (message.hasHistory != null && message.hasOwnProperty("hasHistory"))
64 writer.uint32(/* id 13, wireType 0 =*/104).bool(message.hasHistory);
65 return writer;
66}
67
68function encodeTransition(message, writer, stateSize, transitionSize) {
69 if (!writer)
70 writer = $Writer.create();
71 if (message.type != null && message.hasOwnProperty("type"))
72 writer.uint32(/* id 1, wireType 0 =*/8).uint32(transitionTypes.indexOf(message.type));
73 if (message.idx != null && message.hasOwnProperty("idx"))
74 writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.idx);
75 if (message.source != null && message.hasOwnProperty("source"))
76 writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.source);
77 if (message.events != null && message.events.length)
78 for (let i = 0; i < message.events.length; ++i)
79 writer.uint32(/* id 4, wireType 2 =*/34).string(message.events[i]);
80 if (message.condition != null && message.hasOwnProperty("condition"))
81 encodeExpression(message.condition, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
82 if (message.onTransition != null && message.onTransition.length)
83 for (let i = 0; i < message.onTransition.length; ++i)
84 encodeExpression(message.onTransition[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
85 if (message.targets != null && message.hasOwnProperty("targets"))
86 writer.uint32(/* id 7, wireType 2 =*/58).bytes(encodeBitset(message.targets, stateSize));
87 if (message.conflicts != null && message.hasOwnProperty("conflicts"))
88 writer.uint32(/* id 8, wireType 2 =*/66).bytes(encodeBitset(message.conflicts, transitionSize));
89 if (message.exits != null && message.hasOwnProperty("exits"))
90 writer.uint32(/* id 9, wireType 2 =*/74).bytes(encodeBitset(message.exits, stateSize));
91 return writer;
92}
93
94function encodeExpression(message, writer) {
95 if (!writer)
96 writer = $Writer.create();
97 if (message.type != null && message.hasOwnProperty("type"))
98 writer.uint32(/* id 1, wireType 0 =*/8).uint32(expressionTypes.indexOf(message.type));
99 if (message.value != null && message.hasOwnProperty("value"))
100 writer.uint32(/* id 2, wireType 2 =*/18).string(message.value);
101 if (message.props != null && message.hasOwnProperty("props"))
102 for (let keys = Object.keys(message.props), i = 0; i < keys.length; ++i) {
103 let value = message.props[keys[i]];
104 if (value == null) continue;
105 writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);
106 encodeExpression(value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();
107 }
108 if (message.children != null && message.children.length)
109 for (let i = 0; i < message.children.length; ++i)
110 encodeExpression(message.children[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
111 return writer;
112}
113
114function encodeInvocation(message, writer) {
115 if (!writer)
116 writer = $Writer.create();
117 if (message.type != null && message.hasOwnProperty("type"))
118 encodeExpression(message.type, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
119 if (message.src != null && message.hasOwnProperty("src"))
120 encodeExpression(message.src, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
121 if (message.id != null && message.hasOwnProperty("id"))
122 encodeExpression(message.id, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
123 if (message.params != null && message.params.length)
124 for (let i = 0; i < message.params.length; ++i)
125 encodeExpression(message.params[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
126 if (message.content != null && message.hasOwnProperty("content"))
127 encodeExpression(message.content, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();
128 if (message.onExit != null && message.onExit.length)
129 for (let i = 0; i < message.onExit.length; ++i)
130 encodeExpression(message.onExit[i], writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();
131 if (message.autoforward != null && message.hasOwnProperty("autoforward"))
132 writer.uint32(/* id 7, wireType 0 =*/56).bool(message.autoforward);
133 return writer;
134}
135
136function encodeData(message, writer) {
137 if (!writer)
138 writer = $Writer.create();
139 if (message.id != null && message.hasOwnProperty("id"))
140 writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);
141 if (message.value != null && message.hasOwnProperty("value"))
142 encodeExpression(message.value, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
143 if (message.src != null && message.hasOwnProperty("src"))
144 writer.uint32(/* id 3, wireType 2 =*/26).string(message.src);
145 return writer;
146}