@bufbuild/protobuf 2.0.0-alpha.1 → 2.0.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/clone.d.ts +1 -1
  3. package/dist/cjs/clone.js +2 -2
  4. package/dist/cjs/codegenv1/boot.d.ts +1 -1
  5. package/dist/cjs/codegenv1/boot.js +3 -5
  6. package/dist/cjs/codegenv1/embed.d.ts +2 -2
  7. package/dist/cjs/codegenv1/embed.js +51 -46
  8. package/dist/cjs/codegenv1/enum.d.ts +1 -1
  9. package/dist/cjs/codegenv1/enum.js +2 -4
  10. package/dist/cjs/codegenv1/extension.d.ts +1 -1
  11. package/dist/cjs/codegenv1/file.d.ts +1 -1
  12. package/dist/cjs/codegenv1/file.js +5 -7
  13. package/dist/cjs/codegenv1/index.d.ts +1 -0
  14. package/dist/cjs/codegenv1/index.js +1 -0
  15. package/dist/cjs/codegenv1/message.d.ts +1 -1
  16. package/dist/cjs/codegenv1/restore-json-names.d.ts +3 -0
  17. package/dist/cjs/codegenv1/restore-json-names.js +3 -0
  18. package/dist/cjs/codegenv1/scalar.d.ts +5 -0
  19. package/dist/cjs/codegenv1/scalar.js +39 -0
  20. package/dist/cjs/codegenv1/service.d.ts +3 -3
  21. package/dist/cjs/codegenv1/symbols.d.ts +9 -0
  22. package/dist/cjs/codegenv1/symbols.js +9 -0
  23. package/dist/cjs/codegenv1/types.d.ts +59 -8
  24. package/dist/cjs/create.d.ts +1 -1
  25. package/dist/cjs/create.js +13 -23
  26. package/dist/cjs/{desc-types.d.ts → descriptors.d.ts} +66 -17
  27. package/dist/cjs/descriptors.js +53 -0
  28. package/dist/cjs/equals.d.ts +1 -1
  29. package/dist/cjs/extensions.d.ts +21 -1
  30. package/dist/cjs/extensions.js +42 -10
  31. package/dist/cjs/fields.d.ts +17 -16
  32. package/dist/cjs/fields.js +17 -10
  33. package/dist/cjs/from-binary.d.ts +2 -2
  34. package/dist/cjs/from-binary.js +31 -41
  35. package/dist/cjs/from-json.d.ts +4 -4
  36. package/dist/cjs/from-json.js +200 -185
  37. package/dist/cjs/index.d.ts +3 -2
  38. package/dist/cjs/index.js +5 -2
  39. package/dist/cjs/is-message.d.ts +1 -1
  40. package/dist/cjs/proto-int64.d.ts +4 -1
  41. package/dist/cjs/proto-int64.js +16 -6
  42. package/dist/cjs/reflect/error.d.ts +1 -1
  43. package/dist/cjs/reflect/guard.d.ts +1 -1
  44. package/dist/cjs/reflect/index.d.ts +0 -1
  45. package/dist/cjs/reflect/index.js +0 -1
  46. package/dist/cjs/reflect/names.d.ts +1 -13
  47. package/dist/cjs/reflect/names.js +2 -40
  48. package/dist/cjs/reflect/nested-types.d.ts +11 -1
  49. package/dist/cjs/reflect/nested-types.js +34 -1
  50. package/dist/cjs/reflect/reflect-check.d.ts +10 -1
  51. package/dist/cjs/reflect/reflect-check.js +126 -9
  52. package/dist/cjs/reflect/reflect-types.d.ts +162 -14
  53. package/dist/cjs/reflect/reflect.d.ts +12 -3
  54. package/dist/cjs/reflect/reflect.js +316 -290
  55. package/dist/cjs/reflect/scalar.d.ts +3 -55
  56. package/dist/cjs/reflect/scalar.js +26 -220
  57. package/dist/cjs/reflect/unsafe.d.ts +1 -1
  58. package/dist/cjs/reflect/unsafe.js +38 -43
  59. package/dist/cjs/{reflect/registry.d.ts → registry.d.ts} +2 -2
  60. package/dist/cjs/{reflect/registry.js → registry.js} +100 -73
  61. package/dist/cjs/to-binary.d.ts +1 -1
  62. package/dist/cjs/to-binary.js +28 -30
  63. package/dist/cjs/to-json.d.ts +7 -6
  64. package/dist/cjs/to-json.js +63 -70
  65. package/dist/cjs/types.d.ts +1 -1
  66. package/dist/cjs/wire/base64-encoding.js +4 -4
  67. package/dist/cjs/wire/binary-encoding.d.ts +25 -3
  68. package/dist/cjs/wire/binary-encoding.js +70 -18
  69. package/dist/cjs/wire/size-delimited.d.ts +1 -1
  70. package/dist/cjs/wire/text-format.d.ts +1 -2
  71. package/dist/cjs/wire/text-format.js +21 -19
  72. package/dist/cjs/wkt/any.d.ts +3 -3
  73. package/dist/cjs/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  74. package/dist/cjs/wkt/gen/google/protobuf/any_pb.js +7 -2
  75. package/dist/cjs/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  76. package/dist/cjs/wkt/gen/google/protobuf/api_pb.js +15 -6
  77. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  78. package/dist/cjs/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  79. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  80. package/dist/cjs/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  81. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  82. package/dist/cjs/wkt/gen/google/protobuf/duration_pb.js +7 -2
  83. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  84. package/dist/cjs/wkt/gen/google/protobuf/empty_pb.js +7 -2
  85. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  86. package/dist/cjs/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  87. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  88. package/dist/cjs/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  89. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  90. package/dist/cjs/wkt/gen/google/protobuf/struct_pb.js +18 -7
  91. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  92. package/dist/cjs/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  93. package/dist/cjs/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  94. package/dist/cjs/wkt/gen/google/protobuf/type_pb.js +32 -13
  95. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  96. package/dist/cjs/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  97. package/dist/cjs/wkt/wrappers.d.ts +1 -1
  98. package/dist/esm/clone.d.ts +1 -1
  99. package/dist/esm/clone.js +1 -1
  100. package/dist/esm/codegenv1/boot.d.ts +1 -1
  101. package/dist/esm/codegenv1/boot.js +3 -5
  102. package/dist/esm/codegenv1/embed.d.ts +2 -2
  103. package/dist/esm/codegenv1/embed.js +34 -29
  104. package/dist/esm/codegenv1/enum.d.ts +1 -1
  105. package/dist/esm/codegenv1/enum.js +2 -4
  106. package/dist/esm/codegenv1/extension.d.ts +1 -1
  107. package/dist/esm/codegenv1/file.d.ts +1 -1
  108. package/dist/esm/codegenv1/file.js +4 -6
  109. package/dist/esm/codegenv1/index.d.ts +1 -0
  110. package/dist/esm/codegenv1/index.js +1 -0
  111. package/dist/esm/codegenv1/message.d.ts +1 -1
  112. package/dist/esm/codegenv1/restore-json-names.d.ts +3 -0
  113. package/dist/esm/codegenv1/restore-json-names.js +3 -0
  114. package/dist/esm/codegenv1/scalar.d.ts +5 -0
  115. package/dist/esm/codegenv1/scalar.js +35 -0
  116. package/dist/esm/codegenv1/service.d.ts +3 -3
  117. package/dist/esm/codegenv1/symbols.d.ts +9 -0
  118. package/dist/esm/codegenv1/symbols.js +9 -0
  119. package/dist/esm/codegenv1/types.d.ts +59 -8
  120. package/dist/esm/create.d.ts +1 -1
  121. package/dist/esm/create.js +11 -21
  122. package/dist/esm/{desc-types.d.ts → descriptors.d.ts} +66 -17
  123. package/dist/esm/descriptors.js +50 -0
  124. package/dist/esm/equals.d.ts +1 -1
  125. package/dist/esm/extensions.d.ts +21 -1
  126. package/dist/esm/extensions.js +39 -9
  127. package/dist/esm/fields.d.ts +17 -16
  128. package/dist/esm/fields.js +17 -10
  129. package/dist/esm/from-binary.d.ts +2 -2
  130. package/dist/esm/from-binary.js +13 -23
  131. package/dist/esm/from-json.d.ts +4 -4
  132. package/dist/esm/from-json.js +193 -178
  133. package/dist/esm/index.d.ts +3 -2
  134. package/dist/esm/index.js +3 -2
  135. package/dist/esm/is-message.d.ts +1 -1
  136. package/dist/esm/proto-int64.d.ts +4 -1
  137. package/dist/esm/proto-int64.js +16 -6
  138. package/dist/esm/reflect/error.d.ts +1 -1
  139. package/dist/esm/reflect/guard.d.ts +1 -1
  140. package/dist/esm/reflect/index.d.ts +0 -1
  141. package/dist/esm/reflect/index.js +0 -1
  142. package/dist/esm/reflect/names.d.ts +1 -13
  143. package/dist/esm/reflect/names.js +1 -38
  144. package/dist/esm/reflect/nested-types.d.ts +11 -1
  145. package/dist/esm/reflect/nested-types.js +32 -0
  146. package/dist/esm/reflect/reflect-check.d.ts +10 -1
  147. package/dist/esm/reflect/reflect-check.js +119 -2
  148. package/dist/esm/reflect/reflect-types.d.ts +162 -14
  149. package/dist/esm/reflect/reflect-types.js +1 -0
  150. package/dist/esm/reflect/reflect.d.ts +12 -3
  151. package/dist/esm/reflect/reflect.js +305 -279
  152. package/dist/esm/reflect/scalar.d.ts +3 -55
  153. package/dist/esm/reflect/scalar.js +14 -205
  154. package/dist/esm/reflect/unsafe.d.ts +1 -1
  155. package/dist/esm/reflect/unsafe.js +38 -43
  156. package/dist/esm/{reflect/registry.d.ts → registry.d.ts} +2 -2
  157. package/dist/esm/{reflect/registry.js → registry.js} +90 -63
  158. package/dist/esm/to-binary.d.ts +1 -1
  159. package/dist/esm/to-binary.js +2 -4
  160. package/dist/esm/to-json.d.ts +7 -6
  161. package/dist/esm/to-json.js +48 -55
  162. package/dist/esm/types.d.ts +1 -1
  163. package/dist/esm/wire/base64-encoding.js +4 -4
  164. package/dist/esm/wire/binary-encoding.d.ts +25 -3
  165. package/dist/esm/wire/binary-encoding.js +63 -11
  166. package/dist/esm/wire/size-delimited.d.ts +1 -1
  167. package/dist/esm/wire/text-format.d.ts +1 -2
  168. package/dist/esm/wire/text-format.js +5 -3
  169. package/dist/esm/wkt/any.d.ts +3 -3
  170. package/dist/esm/wkt/gen/google/protobuf/any_pb.d.ts +7 -0
  171. package/dist/esm/wkt/gen/google/protobuf/any_pb.js +7 -2
  172. package/dist/esm/wkt/gen/google/protobuf/api_pb.d.ts +15 -0
  173. package/dist/esm/wkt/gen/google/protobuf/api_pb.js +15 -6
  174. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.d.ts +22 -0
  175. package/dist/esm/wkt/gen/google/protobuf/compiler/plugin_pb.js +22 -9
  176. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.d.ts +192 -0
  177. package/dist/esm/wkt/gen/google/protobuf/descriptor_pb.js +187 -84
  178. package/dist/esm/wkt/gen/google/protobuf/duration_pb.d.ts +7 -0
  179. package/dist/esm/wkt/gen/google/protobuf/duration_pb.js +7 -2
  180. package/dist/esm/wkt/gen/google/protobuf/empty_pb.d.ts +7 -0
  181. package/dist/esm/wkt/gen/google/protobuf/empty_pb.js +7 -2
  182. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.d.ts +7 -0
  183. package/dist/esm/wkt/gen/google/protobuf/field_mask_pb.js +7 -2
  184. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.d.ts +7 -0
  185. package/dist/esm/wkt/gen/google/protobuf/source_context_pb.js +7 -2
  186. package/dist/esm/wkt/gen/google/protobuf/struct_pb.d.ts +18 -0
  187. package/dist/esm/wkt/gen/google/protobuf/struct_pb.js +18 -7
  188. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.d.ts +7 -0
  189. package/dist/esm/wkt/gen/google/protobuf/timestamp_pb.js +7 -2
  190. package/dist/esm/wkt/gen/google/protobuf/type_pb.d.ts +32 -0
  191. package/dist/esm/wkt/gen/google/protobuf/type_pb.js +32 -13
  192. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.d.ts +39 -0
  193. package/dist/esm/wkt/gen/google/protobuf/wrappers_pb.js +39 -18
  194. package/dist/esm/wkt/wrappers.d.ts +1 -1
  195. package/package.json +2 -2
  196. package/dist/cjs/desc-types.js +0 -15
  197. package/dist/cjs/reflect/assert.d.ts +0 -16
  198. package/dist/cjs/reflect/assert.js +0 -59
  199. package/dist/esm/desc-types.js +0 -14
  200. package/dist/esm/reflect/assert.d.ts +0 -16
  201. package/dist/esm/reflect/assert.js +0 -52
@@ -14,6 +14,7 @@
14
14
  // limitations under the License.
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
16
  exports.reflectMap = exports.reflectList = exports.reflect = void 0;
17
+ const descriptors_js_1 = require("../descriptors.js");
17
18
  const reflect_check_js_1 = require("./reflect-check.js");
18
19
  const error_js_1 = require("./error.js");
19
20
  const unsafe_js_1 = require("./unsafe.js");
@@ -22,124 +23,131 @@ const wrappers_js_1 = require("../wkt/wrappers.js");
22
23
  const scalar_js_1 = require("./scalar.js");
23
24
  const proto_int64_js_1 = require("../proto-int64.js");
24
25
  const guard_js_1 = require("./guard.js");
26
+ /**
27
+ * Create a ReflectMessage.
28
+ */
25
29
  function reflect(messageDesc, message,
26
30
  // TODO either remove this option, or support it in reflect-list and reflect-map as well
27
31
  opt) {
28
- message !== null && message !== void 0 ? message : (message = (0, create_js_1.create)(messageDesc));
29
- const check = (opt === null || opt === void 0 ? void 0 : opt.disableFieldValueCheck) !== true;
30
- let fieldsByNumber;
31
- let sortedFields;
32
- return {
33
- message,
34
- [unsafe_js_1.unsafeLocal]: message,
35
- desc: messageDesc,
36
- fields: messageDesc.fields,
37
- oneofs: messageDesc.oneofs,
38
- members: messageDesc.members,
39
- get sortedFields() {
40
- return (sortedFields !== null && sortedFields !== void 0 ? sortedFields : (sortedFields = messageDesc.fields
41
- .concat()
42
- .sort((a, b) => a.number - b.number)));
43
- },
44
- findNumber(number) {
45
- if (!fieldsByNumber) {
46
- fieldsByNumber = new Map(messageDesc.fields.map((f) => [f.number, f]));
47
- }
48
- return fieldsByNumber.get(number);
49
- },
50
- oneofCase(oneof) {
51
- assertOwn(message, oneof);
52
- return (0, unsafe_js_1.unsafeOneofCase)(message, oneof);
53
- },
54
- isSet(field) {
55
- assertOwn(message, field);
56
- return (0, unsafe_js_1.unsafeIsSet)(message, field);
57
- },
58
- clear(field) {
59
- assertOwn(message, field);
60
- (0, unsafe_js_1.unsafeClear)(message, field);
61
- },
62
- get(field) {
63
- assertOwn(message, field);
64
- let value = (0, unsafe_js_1.unsafeGet)(message, field);
65
- switch (field.fieldKind) {
66
- case "list":
67
- return reflectList(field, value);
68
- case "map":
69
- // TODO fix types
70
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
71
- return reflectMap(field, value); // eslint-disable-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return
72
- case "message":
73
- if (value !== undefined &&
74
- !field.oneof &&
75
- (0, wrappers_js_1.isWrapperDesc)(field.message)) {
76
- value = {
77
- $typeName: field.message.typeName,
78
- value: longToReflect(field.message.fields[0], value),
79
- };
80
- }
81
- return reflect(field.message, value);
82
- case "scalar":
83
- return longToReflect(field, value);
84
- case "enum":
85
- return value;
86
- }
87
- },
88
- set(field, value) {
89
- assertOwn(message, field);
90
- if (check) {
91
- const err = (0, reflect_check_js_1.checkField)(field, value);
92
- if (err) {
93
- return err;
32
+ return new ReflectMessageImpl(messageDesc, message, (opt === null || opt === void 0 ? void 0 : opt.disableFieldValueCheck) !== true);
33
+ }
34
+ exports.reflect = reflect;
35
+ class ReflectMessageImpl {
36
+ get sortedFields() {
37
+ var _a;
38
+ return ((_a = this._sortedFields) !== null && _a !== void 0 ? _a : (this._sortedFields = this.desc.fields
39
+ .concat()
40
+ .sort((a, b) => a.number - b.number)));
41
+ }
42
+ constructor(messageDesc, message,
43
+ // TODO either remove this option, or support it in reflect-list and reflect-map as well
44
+ check = true) {
45
+ this.check = check;
46
+ this.desc = messageDesc;
47
+ this.message = this[unsafe_js_1.unsafeLocal] = message !== null && message !== void 0 ? message : (0, create_js_1.create)(messageDesc);
48
+ this.fields = messageDesc.fields;
49
+ this.oneofs = messageDesc.oneofs;
50
+ this.members = messageDesc.members;
51
+ }
52
+ findNumber(number) {
53
+ if (!this._fieldsByNumber) {
54
+ this._fieldsByNumber = new Map(this.desc.fields.map((f) => [f.number, f]));
55
+ }
56
+ return this._fieldsByNumber.get(number);
57
+ }
58
+ oneofCase(oneof) {
59
+ assertOwn(this.message, oneof);
60
+ return (0, unsafe_js_1.unsafeOneofCase)(this.message, oneof);
61
+ }
62
+ isSet(field) {
63
+ assertOwn(this.message, field);
64
+ return (0, unsafe_js_1.unsafeIsSet)(this.message, field);
65
+ }
66
+ clear(field) {
67
+ assertOwn(this.message, field);
68
+ (0, unsafe_js_1.unsafeClear)(this.message, field);
69
+ }
70
+ get(field) {
71
+ assertOwn(this.message, field);
72
+ let value = (0, unsafe_js_1.unsafeGet)(this.message, field);
73
+ switch (field.fieldKind) {
74
+ case "list":
75
+ return new ReflectListImpl(field, value, this.check);
76
+ case "map":
77
+ // TODO fix types
78
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
79
+ return reflectMap(field, value, this.check); // eslint-disable-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-return
80
+ case "message":
81
+ if (value !== undefined &&
82
+ !field.oneof &&
83
+ (0, wrappers_js_1.isWrapperDesc)(field.message)) {
84
+ value = {
85
+ $typeName: field.message.typeName,
86
+ value: longToReflect(field.message.fields[0], value),
87
+ };
94
88
  }
89
+ return new ReflectMessageImpl(field.message, value, this.check);
90
+ case "scalar":
91
+ return (value === undefined
92
+ ? (0, scalar_js_1.scalarZeroValue)(field.scalar, false)
93
+ : longToReflect(field, value));
94
+ case "enum":
95
+ return (value !== null && value !== void 0 ? value : field.enum.values[0].number);
96
+ }
97
+ }
98
+ set(field, value) {
99
+ assertOwn(this.message, field);
100
+ if (this.check) {
101
+ const err = (0, reflect_check_js_1.checkField)(field, value);
102
+ if (err) {
103
+ return err;
95
104
  }
96
- let local = value;
97
- if ((0, guard_js_1.isReflectMap)(value) || (0, guard_js_1.isReflectList)(value)) {
98
- local = value[unsafe_js_1.unsafeLocal];
99
- }
100
- else if ((0, guard_js_1.isReflectMessage)(value)) {
101
- const msg = value.message;
102
- local = !field.oneof && (0, wrappers_js_1.isWrapper)(msg) ? msg.value : msg;
103
- }
104
- else {
105
- local = longToLocal(field, value);
106
- }
107
- (0, unsafe_js_1.unsafeSet)(message, field, local);
108
- return undefined;
109
- },
110
- addListItem(field, value) {
111
- assertOwn(message, field);
112
- assertKind(field, "list");
113
- if (check) {
114
- if ((0, reflect_check_js_1.checkListItem)(field, 0, value)) {
115
- const arr = (0, unsafe_js_1.unsafeGet)(message, field);
116
- return (0, reflect_check_js_1.checkListItem)(field, arr.length, value);
117
- }
105
+ }
106
+ let local;
107
+ if ((0, guard_js_1.isReflectMap)(value) || (0, guard_js_1.isReflectList)(value)) {
108
+ local = value[unsafe_js_1.unsafeLocal];
109
+ }
110
+ else if ((0, guard_js_1.isReflectMessage)(value)) {
111
+ const msg = value.message;
112
+ local = !field.oneof && (0, wrappers_js_1.isWrapper)(msg) ? msg.value : msg;
113
+ }
114
+ else {
115
+ local = longToLocal(field, value);
116
+ }
117
+ (0, unsafe_js_1.unsafeSet)(this.message, field, local);
118
+ return undefined;
119
+ }
120
+ addListItem(field, value) {
121
+ assertOwn(this.message, field);
122
+ assertKind(field, "list");
123
+ if (this.check) {
124
+ if ((0, reflect_check_js_1.checkListItem)(field, 0, value)) {
125
+ const arr = (0, unsafe_js_1.unsafeGet)(this.message, field);
126
+ return (0, reflect_check_js_1.checkListItem)(field, arr.length, value);
118
127
  }
119
- (0, unsafe_js_1.unsafeAddListItem)(message, field, listItemToLocal(field, value));
120
- return undefined;
121
- },
122
- setMapEntry(field, key, value) {
123
- assertOwn(message, field);
124
- assertKind(field, "map");
125
- if (check) {
126
- const err = (0, reflect_check_js_1.checkMapEntry)(field, key, value);
127
- if (err) {
128
- return err;
129
- }
128
+ }
129
+ (0, unsafe_js_1.unsafeAddListItem)(this.message, field, listItemToLocal(field, value));
130
+ return undefined;
131
+ }
132
+ setMapEntry(field, key, value) {
133
+ assertOwn(this.message, field);
134
+ assertKind(field, "map");
135
+ if (this.check) {
136
+ const err = (0, reflect_check_js_1.checkMapEntry)(field, key, value);
137
+ if (err) {
138
+ return err;
130
139
  }
131
- (0, unsafe_js_1.unsafeSetMapEntry)(message, field, mapKeyToLocal(key), mapValueToLocal(field, value));
132
- return undefined;
133
- },
134
- getUnknown() {
135
- return message.$unknown;
136
- },
137
- setUnknown(value) {
138
- message.$unknown = value;
139
- },
140
- };
140
+ }
141
+ (0, unsafe_js_1.unsafeSetMapEntry)(this.message, field, mapKeyToLocal(key), mapValueToLocal(field, value));
142
+ return undefined;
143
+ }
144
+ getUnknown() {
145
+ return this.message.$unknown;
146
+ }
147
+ setUnknown(value) {
148
+ this.message.$unknown = value;
149
+ }
141
150
  }
142
- exports.reflect = reflect;
143
151
  function assertKind(field, kind) {
144
152
  if (field.fieldKind != kind) {
145
153
  throw new error_js_1.FieldError(field, `${field.toString()} is ${field.fieldKind}`, "ForeignFieldError");
@@ -150,144 +158,166 @@ function assertOwn(owner, member) {
150
158
  throw new error_js_1.FieldError(member, `cannot use ${member.toString()} with message ${owner.$typeName}`, "ForeignFieldError");
151
159
  }
152
160
  }
153
- function reflectList(field, unsafeInput) {
154
- const arr = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [];
155
- return {
156
- [unsafe_js_1.unsafeLocal]: arr,
157
- field() {
158
- return field;
159
- },
160
- get size() {
161
- return arr.length;
162
- },
163
- get(index) {
164
- const item = arr[index];
165
- return item === undefined
166
- ? undefined
167
- : listItemToReflect(field, item);
168
- },
169
- set(index, item) {
170
- if (index < 0 || index >= arr.length) {
171
- return new error_js_1.FieldError(field, `list item #${index + 1}: out of range`);
172
- }
173
- const err = (0, reflect_check_js_1.checkListItem)(field, index, item);
174
- if (!err) {
175
- arr[index] = listItemToLocal(field, item);
176
- }
177
- return err;
178
- },
179
- add(...items) {
180
- let err;
181
- for (let i = 0; i < items.length && !err; i++) {
182
- err = (0, reflect_check_js_1.checkListItem)(field, arr.length + i, items[i]);
183
- }
184
- if (!err) {
185
- for (const item of items) {
186
- arr.push(listItemToLocal(field, item));
187
- }
188
- }
189
- return err;
190
- },
191
- clear() {
192
- arr.splice(0, arr.length);
193
- },
194
- [Symbol.iterator]() {
195
- return this.values();
196
- },
197
- keys() {
198
- return arr.keys();
199
- },
200
- *values() {
201
- for (const item of arr) {
202
- yield listItemToReflect(field, item);
203
- }
204
- },
205
- *entries() {
206
- for (let i = 0; i < arr.length; i++) {
207
- yield [i, listItemToReflect(field, arr[i])];
208
- }
209
- },
210
- };
161
+ /**
162
+ * Create a ReflectList.
163
+ */
164
+ function reflectList(field, unsafeInput, check = true) {
165
+ return new ReflectListImpl(field, unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [], check);
211
166
  }
212
167
  exports.reflectList = reflectList;
213
- function reflectMap(field, unsafeInput) {
214
- const obj = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};
215
- return {
216
- [unsafe_js_1.unsafeLocal]: obj,
217
- field() {
218
- return field;
219
- },
220
- set(key, value) {
221
- const err = (0, reflect_check_js_1.checkMapEntry)(field, key, value);
222
- if (!err) {
223
- obj[mapKeyToLocal(key)] = mapValueToLocal(field, value);
224
- }
225
- return err;
226
- },
227
- delete(key) {
228
- const k = mapKeyToLocal(key);
229
- const has = Object.prototype.hasOwnProperty.call(obj, k);
230
- if (has) {
231
- delete obj[k];
232
- }
233
- return has;
234
- },
235
- clear() {
236
- for (const key of Object.keys(obj)) {
237
- delete obj[key];
238
- }
239
- },
240
- get(key) {
241
- let val = obj[mapKeyToLocal(key)];
242
- if (val !== undefined) {
243
- val = mapValueToReflect(field, val);
244
- }
245
- return val;
246
- },
247
- has(key) {
248
- return Object.prototype.hasOwnProperty.call(obj, mapKeyToLocal(key));
249
- },
250
- *keys() {
251
- for (const objKey of Object.keys(obj)) {
252
- yield mapKeyToReflect(objKey, field.mapKey);
253
- }
254
- },
255
- *entries() {
256
- for (const objEntry of Object.entries(obj)) {
257
- yield [
258
- mapKeyToReflect(objEntry[0], field.mapKey),
259
- mapValueToReflect(field, objEntry[1]),
260
- ];
261
- }
262
- },
263
- [Symbol.iterator]() {
264
- return this.entries();
265
- },
266
- get size() {
267
- return Object.keys(obj).length;
268
- },
269
- *values() {
270
- for (const val of Object.values(obj)) {
271
- yield mapValueToReflect(field, val);
168
+ class ReflectListImpl {
169
+ field() {
170
+ return this._field;
171
+ }
172
+ get size() {
173
+ return this._arr.length;
174
+ }
175
+ constructor(field, unsafeInput, check) {
176
+ this._field = field;
177
+ this._arr = this[unsafe_js_1.unsafeLocal] = unsafeInput;
178
+ this.check = check;
179
+ }
180
+ get(index) {
181
+ const item = this._arr[index];
182
+ return item === undefined
183
+ ? undefined
184
+ : listItemToReflect(this._field, item, this.check);
185
+ }
186
+ set(index, item) {
187
+ if (index < 0 || index >= this._arr.length) {
188
+ return new error_js_1.FieldError(this._field, `list item #${index + 1}: out of range`);
189
+ }
190
+ if (this.check) {
191
+ const err = (0, reflect_check_js_1.checkListItem)(this._field, index, item);
192
+ if (err) {
193
+ return err;
272
194
  }
273
- },
274
- forEach(callbackfn, thisArg) {
275
- for (const mapEntry of this.entries()) {
276
- callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);
195
+ }
196
+ this._arr[index] = listItemToLocal(this._field, item);
197
+ return undefined;
198
+ }
199
+ add(...items) {
200
+ if (this.check) {
201
+ for (let i = 0; i < items.length; i++) {
202
+ const err = (0, reflect_check_js_1.checkListItem)(this._field, this._arr.length + i, items[i]);
203
+ if (err) {
204
+ return err;
205
+ }
277
206
  }
278
- },
279
- };
207
+ }
208
+ for (const item of items) {
209
+ this._arr.push(listItemToLocal(this._field, item));
210
+ }
211
+ return undefined;
212
+ }
213
+ clear() {
214
+ this._arr.splice(0, this._arr.length);
215
+ }
216
+ [Symbol.iterator]() {
217
+ return this.values();
218
+ }
219
+ keys() {
220
+ return this._arr.keys();
221
+ }
222
+ *values() {
223
+ for (const item of this._arr) {
224
+ yield listItemToReflect(this._field, item, this.check);
225
+ }
226
+ }
227
+ *entries() {
228
+ for (let i = 0; i < this._arr.length; i++) {
229
+ yield [i, listItemToReflect(this._field, this._arr[i], this.check)];
230
+ }
231
+ }
232
+ }
233
+ /**
234
+ * Create a ReflectMap.
235
+ */
236
+ function reflectMap(field, unsafeInput, check = true) {
237
+ return new ReflectMapImpl(field, unsafeInput, check);
280
238
  }
281
239
  exports.reflectMap = reflectMap;
240
+ class ReflectMapImpl {
241
+ constructor(field, unsafeInput, check = true) {
242
+ this.obj = this[unsafe_js_1.unsafeLocal] = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};
243
+ this.check = check;
244
+ this._field = field;
245
+ }
246
+ field() {
247
+ return this._field;
248
+ }
249
+ set(key, value) {
250
+ if (this.check) {
251
+ const err = (0, reflect_check_js_1.checkMapEntry)(this._field, key, value);
252
+ if (err) {
253
+ return err;
254
+ }
255
+ }
256
+ this.obj[mapKeyToLocal(key)] = mapValueToLocal(this._field, value);
257
+ return undefined;
258
+ }
259
+ delete(key) {
260
+ const k = mapKeyToLocal(key);
261
+ const has = Object.prototype.hasOwnProperty.call(this.obj, k);
262
+ if (has) {
263
+ delete this.obj[k];
264
+ }
265
+ return has;
266
+ }
267
+ clear() {
268
+ for (const key of Object.keys(this.obj)) {
269
+ delete this.obj[key];
270
+ }
271
+ }
272
+ get(key) {
273
+ let val = this.obj[mapKeyToLocal(key)];
274
+ if (val !== undefined) {
275
+ val = mapValueToReflect(this._field, val, this.check);
276
+ }
277
+ return val;
278
+ }
279
+ has(key) {
280
+ return Object.prototype.hasOwnProperty.call(this.obj, mapKeyToLocal(key));
281
+ }
282
+ *keys() {
283
+ for (const objKey of Object.keys(this.obj)) {
284
+ yield mapKeyToReflect(objKey, this._field.mapKey);
285
+ }
286
+ }
287
+ *entries() {
288
+ for (const objEntry of Object.entries(this.obj)) {
289
+ yield [
290
+ mapKeyToReflect(objEntry[0], this._field.mapKey),
291
+ mapValueToReflect(this._field, objEntry[1], this.check),
292
+ ];
293
+ }
294
+ }
295
+ [Symbol.iterator]() {
296
+ return this.entries();
297
+ }
298
+ get size() {
299
+ return Object.keys(this.obj).length;
300
+ }
301
+ *values() {
302
+ for (const val of Object.values(this.obj)) {
303
+ yield mapValueToReflect(this._field, val, this.check);
304
+ }
305
+ }
306
+ forEach(callbackfn, thisArg) {
307
+ for (const mapEntry of this.entries()) {
308
+ callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);
309
+ }
310
+ }
311
+ }
282
312
  function listItemToLocal(field, value) {
283
313
  if ((0, guard_js_1.isReflectMessage)(value)) {
284
314
  return value.message;
285
315
  }
286
316
  return longToLocal(field, value);
287
317
  }
288
- function listItemToReflect(field, value) {
318
+ function listItemToReflect(field, value, check) {
289
319
  if (field.listKind == "message") {
290
- return reflect(field.message, value);
320
+ return new ReflectMessageImpl(field.message, value, check);
291
321
  }
292
322
  return longToReflect(field, value);
293
323
  }
@@ -297,9 +327,9 @@ function mapValueToLocal(field, value) {
297
327
  }
298
328
  return longToLocal(field, value);
299
329
  }
300
- function mapValueToReflect(field, value) {
330
+ function mapValueToReflect(field, value, check) {
301
331
  if (field.mapKind == "message") {
302
- return reflect(field.message, value);
332
+ return new ReflectMessageImpl(field.message, value, check);
303
333
  }
304
334
  return value;
305
335
  }
@@ -313,20 +343,20 @@ function mapKeyToLocal(key) {
313
343
  */
314
344
  function mapKeyToReflect(key, type) {
315
345
  switch (type) {
316
- case scalar_js_1.ScalarType.STRING:
346
+ case descriptors_js_1.ScalarType.STRING:
317
347
  return key;
318
- case scalar_js_1.ScalarType.INT32:
319
- case scalar_js_1.ScalarType.FIXED32:
320
- case scalar_js_1.ScalarType.UINT32:
321
- case scalar_js_1.ScalarType.SFIXED32:
322
- case scalar_js_1.ScalarType.SINT32: {
348
+ case descriptors_js_1.ScalarType.INT32:
349
+ case descriptors_js_1.ScalarType.FIXED32:
350
+ case descriptors_js_1.ScalarType.UINT32:
351
+ case descriptors_js_1.ScalarType.SFIXED32:
352
+ case descriptors_js_1.ScalarType.SINT32: {
323
353
  const n = Number.parseInt(key);
324
354
  if (Number.isFinite(n)) {
325
355
  return n;
326
356
  }
327
357
  break;
328
358
  }
329
- case scalar_js_1.ScalarType.BOOL:
359
+ case descriptors_js_1.ScalarType.BOOL:
330
360
  switch (key) {
331
361
  case "true":
332
362
  return true;
@@ -334,8 +364,8 @@ function mapKeyToReflect(key, type) {
334
364
  return false;
335
365
  }
336
366
  break;
337
- case scalar_js_1.ScalarType.UINT64:
338
- case scalar_js_1.ScalarType.FIXED64:
367
+ case descriptors_js_1.ScalarType.UINT64:
368
+ case descriptors_js_1.ScalarType.FIXED64:
339
369
  try {
340
370
  return proto_int64_js_1.protoInt64.uParse(key);
341
371
  }
@@ -356,54 +386,50 @@ function mapKeyToReflect(key, type) {
356
386
  return key;
357
387
  }
358
388
  function longToReflect(field, value) {
359
- if (field.scalar !== undefined) {
360
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
361
- switch (field.scalar) {
362
- case scalar_js_1.ScalarType.INT64:
363
- case scalar_js_1.ScalarType.SFIXED64:
364
- case scalar_js_1.ScalarType.SINT64:
365
- if ("longType" in field &&
366
- field.longType == scalar_js_1.LongType.STRING &&
367
- typeof value == "string") {
368
- value = proto_int64_js_1.protoInt64.parse(value);
369
- }
370
- break;
371
- case scalar_js_1.ScalarType.FIXED64:
372
- case scalar_js_1.ScalarType.UINT64:
373
- if ("longType" in field &&
374
- field.longType == scalar_js_1.LongType.STRING &&
375
- typeof value == "string") {
376
- value = proto_int64_js_1.protoInt64.uParse(value);
377
- }
378
- break;
379
- }
389
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
390
+ switch (field.scalar) {
391
+ case descriptors_js_1.ScalarType.INT64:
392
+ case descriptors_js_1.ScalarType.SFIXED64:
393
+ case descriptors_js_1.ScalarType.SINT64:
394
+ if ("longAsString" in field &&
395
+ field.longAsString &&
396
+ typeof value == "string") {
397
+ value = proto_int64_js_1.protoInt64.parse(value);
398
+ }
399
+ break;
400
+ case descriptors_js_1.ScalarType.FIXED64:
401
+ case descriptors_js_1.ScalarType.UINT64:
402
+ if ("longAsString" in field &&
403
+ field.longAsString &&
404
+ typeof value == "string") {
405
+ value = proto_int64_js_1.protoInt64.uParse(value);
406
+ }
407
+ break;
380
408
  }
381
409
  return value;
382
410
  }
383
411
  function longToLocal(field, value) {
384
- if (field.scalar !== undefined) {
385
- // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
386
- switch (field.scalar) {
387
- case scalar_js_1.ScalarType.INT64:
388
- case scalar_js_1.ScalarType.SFIXED64:
389
- case scalar_js_1.ScalarType.SINT64:
390
- if ("longType" in field && field.longType == scalar_js_1.LongType.STRING) {
391
- value = String(value);
392
- }
393
- else if (typeof value == "string" || typeof value == "number") {
394
- value = proto_int64_js_1.protoInt64.parse(value);
395
- }
396
- break;
397
- case scalar_js_1.ScalarType.FIXED64:
398
- case scalar_js_1.ScalarType.UINT64:
399
- if ("longType" in field && field.longType == scalar_js_1.LongType.STRING) {
400
- value = String(value);
401
- }
402
- else if (typeof value == "string" || typeof value == "number") {
403
- value = proto_int64_js_1.protoInt64.uParse(value);
404
- }
405
- break;
406
- }
412
+ // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check
413
+ switch (field.scalar) {
414
+ case descriptors_js_1.ScalarType.INT64:
415
+ case descriptors_js_1.ScalarType.SFIXED64:
416
+ case descriptors_js_1.ScalarType.SINT64:
417
+ if ("longAsString" in field && field.longAsString) {
418
+ value = String(value);
419
+ }
420
+ else if (typeof value == "string" || typeof value == "number") {
421
+ value = proto_int64_js_1.protoInt64.parse(value);
422
+ }
423
+ break;
424
+ case descriptors_js_1.ScalarType.FIXED64:
425
+ case descriptors_js_1.ScalarType.UINT64:
426
+ if ("longAsString" in field && field.longAsString) {
427
+ value = String(value);
428
+ }
429
+ else if (typeof value == "string" || typeof value == "number") {
430
+ value = proto_int64_js_1.protoInt64.uParse(value);
431
+ }
432
+ break;
407
433
  }
408
434
  return value;
409
435
  }