--- /dev/null
+// Everything below is located in the js-namespace\r
+package js;\r
+\r
+// Represents a JavaScript value.\r
+// Contains exactly one or zero fields.\r
+message Value {\r
+ oneof type {\r
+ sint32 integer = 1;\r
+ double double = 2;\r
+ string string = 3;\r
+ bool boolean = 4;\r
+ bool null = 5;\r
+ Array array = 6;\r
+ Object object = 7;\r
+ // if none is set: undefined\r
+ }\r
+}\r
+\r
+// Represents a JavaScript array.\r
+// Contains zero to N values.\r
+message Array {\r
+ repeated Value values = 1;\r
+}\r
+\r
+// Represents a JavaScript object.\r
+// Contains zero to N keys with associated values.\r
+message Object {\r
+ repeated Value keys = 1;\r
+ repeated Value values = 2;\r
+}\r