@dcl/protocol 1.0.0-18103449748.commit-258fabc → 1.0.0-18103584382.commit-cb75aeb

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.
@@ -56,6 +56,9 @@ export interface Movement {
56
56
  isFalling: boolean;
57
57
  isStunned: boolean;
58
58
  rotationY: number;
59
+ /** interpolation */
60
+ isInstant: boolean;
61
+ isEmoting: boolean;
59
62
  }
60
63
 
61
64
  export interface MovementCompressed {
@@ -68,6 +71,7 @@ export interface MovementCompressed {
68
71
  export interface PlayerEmote {
69
72
  incrementalId: number;
70
73
  urn: string;
74
+ timestamp: number;
71
75
  }
72
76
 
73
77
  export interface SceneEmote {
@@ -92,6 +96,11 @@ export interface ProfileResponse {
92
96
  export interface Chat {
93
97
  message: string;
94
98
  timestamp: number;
99
+ /**
100
+ * Extension: optional forwarded_from to identify the original sender when
101
+ * messages are forwarded through an SFU
102
+ */
103
+ forwardedFrom?: string | undefined;
95
104
  }
96
105
 
97
106
  export interface Scene {
@@ -608,6 +617,8 @@ function createBaseMovement(): Movement {
608
617
  isFalling: false,
609
618
  isStunned: false,
610
619
  rotationY: 0,
620
+ isInstant: false,
621
+ isEmoting: false,
611
622
  };
612
623
  }
613
624
 
@@ -661,6 +672,12 @@ export namespace Movement {
661
672
  if (message.rotationY !== 0) {
662
673
  writer.uint32(133).float(message.rotationY);
663
674
  }
675
+ if (message.isInstant === true) {
676
+ writer.uint32(136).bool(message.isInstant);
677
+ }
678
+ if (message.isEmoting === true) {
679
+ writer.uint32(144).bool(message.isEmoting);
680
+ }
664
681
  return writer;
665
682
  }
666
683
 
@@ -783,6 +800,20 @@ export namespace Movement {
783
800
 
784
801
  message.rotationY = reader.float();
785
802
  continue;
803
+ case 17:
804
+ if (tag !== 136) {
805
+ break;
806
+ }
807
+
808
+ message.isInstant = reader.bool();
809
+ continue;
810
+ case 18:
811
+ if (tag !== 144) {
812
+ break;
813
+ }
814
+
815
+ message.isEmoting = reader.bool();
816
+ continue;
786
817
  }
787
818
  if ((tag & 7) === 4 || tag === 0) {
788
819
  break;
@@ -810,6 +841,8 @@ export namespace Movement {
810
841
  isFalling: isSet(object.isFalling) ? Boolean(object.isFalling) : false,
811
842
  isStunned: isSet(object.isStunned) ? Boolean(object.isStunned) : false,
812
843
  rotationY: isSet(object.rotationY) ? Number(object.rotationY) : 0,
844
+ isInstant: isSet(object.isInstant) ? Boolean(object.isInstant) : false,
845
+ isEmoting: isSet(object.isEmoting) ? Boolean(object.isEmoting) : false,
813
846
  };
814
847
  }
815
848
 
@@ -831,6 +864,8 @@ export namespace Movement {
831
864
  message.isFalling !== undefined && (obj.isFalling = message.isFalling);
832
865
  message.isStunned !== undefined && (obj.isStunned = message.isStunned);
833
866
  message.rotationY !== undefined && (obj.rotationY = message.rotationY);
867
+ message.isInstant !== undefined && (obj.isInstant = message.isInstant);
868
+ message.isEmoting !== undefined && (obj.isEmoting = message.isEmoting);
834
869
  return obj;
835
870
  }
836
871
 
@@ -856,6 +891,8 @@ export namespace Movement {
856
891
  message.isFalling = object.isFalling ?? false;
857
892
  message.isStunned = object.isStunned ?? false;
858
893
  message.rotationY = object.rotationY ?? 0;
894
+ message.isInstant = object.isInstant ?? false;
895
+ message.isEmoting = object.isEmoting ?? false;
859
896
  return message;
860
897
  }
861
898
  }
@@ -932,7 +969,7 @@ export namespace MovementCompressed {
932
969
  }
933
970
 
934
971
  function createBasePlayerEmote(): PlayerEmote {
935
- return { incrementalId: 0, urn: "" };
972
+ return { incrementalId: 0, urn: "", timestamp: 0 };
936
973
  }
937
974
 
938
975
  export namespace PlayerEmote {
@@ -943,6 +980,9 @@ export namespace PlayerEmote {
943
980
  if (message.urn !== "") {
944
981
  writer.uint32(18).string(message.urn);
945
982
  }
983
+ if (message.timestamp !== 0) {
984
+ writer.uint32(29).float(message.timestamp);
985
+ }
946
986
  return writer;
947
987
  }
948
988
 
@@ -967,6 +1007,13 @@ export namespace PlayerEmote {
967
1007
 
968
1008
  message.urn = reader.string();
969
1009
  continue;
1010
+ case 3:
1011
+ if (tag !== 29) {
1012
+ break;
1013
+ }
1014
+
1015
+ message.timestamp = reader.float();
1016
+ continue;
970
1017
  }
971
1018
  if ((tag & 7) === 4 || tag === 0) {
972
1019
  break;
@@ -980,6 +1027,7 @@ export namespace PlayerEmote {
980
1027
  return {
981
1028
  incrementalId: isSet(object.incrementalId) ? Number(object.incrementalId) : 0,
982
1029
  urn: isSet(object.urn) ? String(object.urn) : "",
1030
+ timestamp: isSet(object.timestamp) ? Number(object.timestamp) : 0,
983
1031
  };
984
1032
  }
985
1033
 
@@ -987,6 +1035,7 @@ export namespace PlayerEmote {
987
1035
  const obj: any = {};
988
1036
  message.incrementalId !== undefined && (obj.incrementalId = Math.round(message.incrementalId));
989
1037
  message.urn !== undefined && (obj.urn = message.urn);
1038
+ message.timestamp !== undefined && (obj.timestamp = message.timestamp);
990
1039
  return obj;
991
1040
  }
992
1041
 
@@ -998,6 +1047,7 @@ export namespace PlayerEmote {
998
1047
  const message = createBasePlayerEmote();
999
1048
  message.incrementalId = object.incrementalId ?? 0;
1000
1049
  message.urn = object.urn ?? "";
1050
+ message.timestamp = object.timestamp ?? 0;
1001
1051
  return message;
1002
1052
  }
1003
1053
  }
@@ -1274,7 +1324,7 @@ export namespace ProfileResponse {
1274
1324
  }
1275
1325
 
1276
1326
  function createBaseChat(): Chat {
1277
- return { message: "", timestamp: 0 };
1327
+ return { message: "", timestamp: 0, forwardedFrom: undefined };
1278
1328
  }
1279
1329
 
1280
1330
  export namespace Chat {
@@ -1285,6 +1335,9 @@ export namespace Chat {
1285
1335
  if (message.timestamp !== 0) {
1286
1336
  writer.uint32(17).double(message.timestamp);
1287
1337
  }
1338
+ if (message.forwardedFrom !== undefined) {
1339
+ writer.uint32(26).string(message.forwardedFrom);
1340
+ }
1288
1341
  return writer;
1289
1342
  }
1290
1343
 
@@ -1309,6 +1362,13 @@ export namespace Chat {
1309
1362
 
1310
1363
  message.timestamp = reader.double();
1311
1364
  continue;
1365
+ case 3:
1366
+ if (tag !== 26) {
1367
+ break;
1368
+ }
1369
+
1370
+ message.forwardedFrom = reader.string();
1371
+ continue;
1312
1372
  }
1313
1373
  if ((tag & 7) === 4 || tag === 0) {
1314
1374
  break;
@@ -1322,6 +1382,7 @@ export namespace Chat {
1322
1382
  return {
1323
1383
  message: isSet(object.message) ? String(object.message) : "",
1324
1384
  timestamp: isSet(object.timestamp) ? Number(object.timestamp) : 0,
1385
+ forwardedFrom: isSet(object.forwardedFrom) ? String(object.forwardedFrom) : undefined,
1325
1386
  };
1326
1387
  }
1327
1388
 
@@ -1329,6 +1390,7 @@ export namespace Chat {
1329
1390
  const obj: any = {};
1330
1391
  message.message !== undefined && (obj.message = message.message);
1331
1392
  message.timestamp !== undefined && (obj.timestamp = message.timestamp);
1393
+ message.forwardedFrom !== undefined && (obj.forwardedFrom = message.forwardedFrom);
1332
1394
  return obj;
1333
1395
  }
1334
1396
 
@@ -1340,6 +1402,7 @@ export namespace Chat {
1340
1402
  const message = createBaseChat();
1341
1403
  message.message = object.message ?? "";
1342
1404
  message.timestamp = object.timestamp ?? 0;
1405
+ message.forwardedFrom = object.forwardedFrom ?? undefined;
1343
1406
  return message;
1344
1407
  }
1345
1408
  }
@@ -0,0 +1,442 @@
1
+ /* eslint-disable */
2
+ import _m0 from "protobufjs/minimal";
3
+
4
+ export const protobufPackage = "decentraland.social_service";
5
+
6
+ export interface InvalidFriendshipAction {
7
+ message?: string | undefined;
8
+ }
9
+
10
+ export interface InternalServerError {
11
+ message?: string | undefined;
12
+ }
13
+
14
+ export interface InvalidRequest {
15
+ message?: string | undefined;
16
+ }
17
+
18
+ export interface ProfileNotFound {
19
+ message?: string | undefined;
20
+ }
21
+
22
+ export interface ConflictingError {
23
+ message?: string | undefined;
24
+ }
25
+
26
+ export interface ForbiddenError {
27
+ message?: string | undefined;
28
+ }
29
+
30
+ export interface NotFoundError {
31
+ message?: string | undefined;
32
+ }
33
+
34
+ function createBaseInvalidFriendshipAction(): InvalidFriendshipAction {
35
+ return { message: undefined };
36
+ }
37
+
38
+ export namespace InvalidFriendshipAction {
39
+ export function encode(message: InvalidFriendshipAction, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
40
+ if (message.message !== undefined) {
41
+ writer.uint32(10).string(message.message);
42
+ }
43
+ return writer;
44
+ }
45
+
46
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): InvalidFriendshipAction {
47
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
48
+ let end = length === undefined ? reader.len : reader.pos + length;
49
+ const message = createBaseInvalidFriendshipAction();
50
+ while (reader.pos < end) {
51
+ const tag = reader.uint32();
52
+ switch (tag >>> 3) {
53
+ case 1:
54
+ if (tag !== 10) {
55
+ break;
56
+ }
57
+
58
+ message.message = reader.string();
59
+ continue;
60
+ }
61
+ if ((tag & 7) === 4 || tag === 0) {
62
+ break;
63
+ }
64
+ reader.skipType(tag & 7);
65
+ }
66
+ return message;
67
+ }
68
+
69
+ export function fromJSON(object: any): InvalidFriendshipAction {
70
+ return { message: isSet(object.message) ? String(object.message) : undefined };
71
+ }
72
+
73
+ export function toJSON(message: InvalidFriendshipAction): unknown {
74
+ const obj: any = {};
75
+ message.message !== undefined && (obj.message = message.message);
76
+ return obj;
77
+ }
78
+
79
+ export function create<I extends Exact<DeepPartial<InvalidFriendshipAction>, I>>(base?: I): InvalidFriendshipAction {
80
+ return InvalidFriendshipAction.fromPartial(base ?? {});
81
+ }
82
+
83
+ export function fromPartial<I extends Exact<DeepPartial<InvalidFriendshipAction>, I>>(
84
+ object: I,
85
+ ): InvalidFriendshipAction {
86
+ const message = createBaseInvalidFriendshipAction();
87
+ message.message = object.message ?? undefined;
88
+ return message;
89
+ }
90
+ }
91
+
92
+ function createBaseInternalServerError(): InternalServerError {
93
+ return { message: undefined };
94
+ }
95
+
96
+ export namespace InternalServerError {
97
+ export function encode(message: InternalServerError, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
98
+ if (message.message !== undefined) {
99
+ writer.uint32(10).string(message.message);
100
+ }
101
+ return writer;
102
+ }
103
+
104
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): InternalServerError {
105
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
106
+ let end = length === undefined ? reader.len : reader.pos + length;
107
+ const message = createBaseInternalServerError();
108
+ while (reader.pos < end) {
109
+ const tag = reader.uint32();
110
+ switch (tag >>> 3) {
111
+ case 1:
112
+ if (tag !== 10) {
113
+ break;
114
+ }
115
+
116
+ message.message = reader.string();
117
+ continue;
118
+ }
119
+ if ((tag & 7) === 4 || tag === 0) {
120
+ break;
121
+ }
122
+ reader.skipType(tag & 7);
123
+ }
124
+ return message;
125
+ }
126
+
127
+ export function fromJSON(object: any): InternalServerError {
128
+ return { message: isSet(object.message) ? String(object.message) : undefined };
129
+ }
130
+
131
+ export function toJSON(message: InternalServerError): unknown {
132
+ const obj: any = {};
133
+ message.message !== undefined && (obj.message = message.message);
134
+ return obj;
135
+ }
136
+
137
+ export function create<I extends Exact<DeepPartial<InternalServerError>, I>>(base?: I): InternalServerError {
138
+ return InternalServerError.fromPartial(base ?? {});
139
+ }
140
+
141
+ export function fromPartial<I extends Exact<DeepPartial<InternalServerError>, I>>(object: I): InternalServerError {
142
+ const message = createBaseInternalServerError();
143
+ message.message = object.message ?? undefined;
144
+ return message;
145
+ }
146
+ }
147
+
148
+ function createBaseInvalidRequest(): InvalidRequest {
149
+ return { message: undefined };
150
+ }
151
+
152
+ export namespace InvalidRequest {
153
+ export function encode(message: InvalidRequest, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
154
+ if (message.message !== undefined) {
155
+ writer.uint32(10).string(message.message);
156
+ }
157
+ return writer;
158
+ }
159
+
160
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): InvalidRequest {
161
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
162
+ let end = length === undefined ? reader.len : reader.pos + length;
163
+ const message = createBaseInvalidRequest();
164
+ while (reader.pos < end) {
165
+ const tag = reader.uint32();
166
+ switch (tag >>> 3) {
167
+ case 1:
168
+ if (tag !== 10) {
169
+ break;
170
+ }
171
+
172
+ message.message = reader.string();
173
+ continue;
174
+ }
175
+ if ((tag & 7) === 4 || tag === 0) {
176
+ break;
177
+ }
178
+ reader.skipType(tag & 7);
179
+ }
180
+ return message;
181
+ }
182
+
183
+ export function fromJSON(object: any): InvalidRequest {
184
+ return { message: isSet(object.message) ? String(object.message) : undefined };
185
+ }
186
+
187
+ export function toJSON(message: InvalidRequest): unknown {
188
+ const obj: any = {};
189
+ message.message !== undefined && (obj.message = message.message);
190
+ return obj;
191
+ }
192
+
193
+ export function create<I extends Exact<DeepPartial<InvalidRequest>, I>>(base?: I): InvalidRequest {
194
+ return InvalidRequest.fromPartial(base ?? {});
195
+ }
196
+
197
+ export function fromPartial<I extends Exact<DeepPartial<InvalidRequest>, I>>(object: I): InvalidRequest {
198
+ const message = createBaseInvalidRequest();
199
+ message.message = object.message ?? undefined;
200
+ return message;
201
+ }
202
+ }
203
+
204
+ function createBaseProfileNotFound(): ProfileNotFound {
205
+ return { message: undefined };
206
+ }
207
+
208
+ export namespace ProfileNotFound {
209
+ export function encode(message: ProfileNotFound, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
210
+ if (message.message !== undefined) {
211
+ writer.uint32(10).string(message.message);
212
+ }
213
+ return writer;
214
+ }
215
+
216
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): ProfileNotFound {
217
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
218
+ let end = length === undefined ? reader.len : reader.pos + length;
219
+ const message = createBaseProfileNotFound();
220
+ while (reader.pos < end) {
221
+ const tag = reader.uint32();
222
+ switch (tag >>> 3) {
223
+ case 1:
224
+ if (tag !== 10) {
225
+ break;
226
+ }
227
+
228
+ message.message = reader.string();
229
+ continue;
230
+ }
231
+ if ((tag & 7) === 4 || tag === 0) {
232
+ break;
233
+ }
234
+ reader.skipType(tag & 7);
235
+ }
236
+ return message;
237
+ }
238
+
239
+ export function fromJSON(object: any): ProfileNotFound {
240
+ return { message: isSet(object.message) ? String(object.message) : undefined };
241
+ }
242
+
243
+ export function toJSON(message: ProfileNotFound): unknown {
244
+ const obj: any = {};
245
+ message.message !== undefined && (obj.message = message.message);
246
+ return obj;
247
+ }
248
+
249
+ export function create<I extends Exact<DeepPartial<ProfileNotFound>, I>>(base?: I): ProfileNotFound {
250
+ return ProfileNotFound.fromPartial(base ?? {});
251
+ }
252
+
253
+ export function fromPartial<I extends Exact<DeepPartial<ProfileNotFound>, I>>(object: I): ProfileNotFound {
254
+ const message = createBaseProfileNotFound();
255
+ message.message = object.message ?? undefined;
256
+ return message;
257
+ }
258
+ }
259
+
260
+ function createBaseConflictingError(): ConflictingError {
261
+ return { message: undefined };
262
+ }
263
+
264
+ export namespace ConflictingError {
265
+ export function encode(message: ConflictingError, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
266
+ if (message.message !== undefined) {
267
+ writer.uint32(10).string(message.message);
268
+ }
269
+ return writer;
270
+ }
271
+
272
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): ConflictingError {
273
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
274
+ let end = length === undefined ? reader.len : reader.pos + length;
275
+ const message = createBaseConflictingError();
276
+ while (reader.pos < end) {
277
+ const tag = reader.uint32();
278
+ switch (tag >>> 3) {
279
+ case 1:
280
+ if (tag !== 10) {
281
+ break;
282
+ }
283
+
284
+ message.message = reader.string();
285
+ continue;
286
+ }
287
+ if ((tag & 7) === 4 || tag === 0) {
288
+ break;
289
+ }
290
+ reader.skipType(tag & 7);
291
+ }
292
+ return message;
293
+ }
294
+
295
+ export function fromJSON(object: any): ConflictingError {
296
+ return { message: isSet(object.message) ? String(object.message) : undefined };
297
+ }
298
+
299
+ export function toJSON(message: ConflictingError): unknown {
300
+ const obj: any = {};
301
+ message.message !== undefined && (obj.message = message.message);
302
+ return obj;
303
+ }
304
+
305
+ export function create<I extends Exact<DeepPartial<ConflictingError>, I>>(base?: I): ConflictingError {
306
+ return ConflictingError.fromPartial(base ?? {});
307
+ }
308
+
309
+ export function fromPartial<I extends Exact<DeepPartial<ConflictingError>, I>>(object: I): ConflictingError {
310
+ const message = createBaseConflictingError();
311
+ message.message = object.message ?? undefined;
312
+ return message;
313
+ }
314
+ }
315
+
316
+ function createBaseForbiddenError(): ForbiddenError {
317
+ return { message: undefined };
318
+ }
319
+
320
+ export namespace ForbiddenError {
321
+ export function encode(message: ForbiddenError, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
322
+ if (message.message !== undefined) {
323
+ writer.uint32(10).string(message.message);
324
+ }
325
+ return writer;
326
+ }
327
+
328
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): ForbiddenError {
329
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
330
+ let end = length === undefined ? reader.len : reader.pos + length;
331
+ const message = createBaseForbiddenError();
332
+ while (reader.pos < end) {
333
+ const tag = reader.uint32();
334
+ switch (tag >>> 3) {
335
+ case 1:
336
+ if (tag !== 10) {
337
+ break;
338
+ }
339
+
340
+ message.message = reader.string();
341
+ continue;
342
+ }
343
+ if ((tag & 7) === 4 || tag === 0) {
344
+ break;
345
+ }
346
+ reader.skipType(tag & 7);
347
+ }
348
+ return message;
349
+ }
350
+
351
+ export function fromJSON(object: any): ForbiddenError {
352
+ return { message: isSet(object.message) ? String(object.message) : undefined };
353
+ }
354
+
355
+ export function toJSON(message: ForbiddenError): unknown {
356
+ const obj: any = {};
357
+ message.message !== undefined && (obj.message = message.message);
358
+ return obj;
359
+ }
360
+
361
+ export function create<I extends Exact<DeepPartial<ForbiddenError>, I>>(base?: I): ForbiddenError {
362
+ return ForbiddenError.fromPartial(base ?? {});
363
+ }
364
+
365
+ export function fromPartial<I extends Exact<DeepPartial<ForbiddenError>, I>>(object: I): ForbiddenError {
366
+ const message = createBaseForbiddenError();
367
+ message.message = object.message ?? undefined;
368
+ return message;
369
+ }
370
+ }
371
+
372
+ function createBaseNotFoundError(): NotFoundError {
373
+ return { message: undefined };
374
+ }
375
+
376
+ export namespace NotFoundError {
377
+ export function encode(message: NotFoundError, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
378
+ if (message.message !== undefined) {
379
+ writer.uint32(10).string(message.message);
380
+ }
381
+ return writer;
382
+ }
383
+
384
+ export function decode(input: _m0.Reader | Uint8Array, length?: number): NotFoundError {
385
+ const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
386
+ let end = length === undefined ? reader.len : reader.pos + length;
387
+ const message = createBaseNotFoundError();
388
+ while (reader.pos < end) {
389
+ const tag = reader.uint32();
390
+ switch (tag >>> 3) {
391
+ case 1:
392
+ if (tag !== 10) {
393
+ break;
394
+ }
395
+
396
+ message.message = reader.string();
397
+ continue;
398
+ }
399
+ if ((tag & 7) === 4 || tag === 0) {
400
+ break;
401
+ }
402
+ reader.skipType(tag & 7);
403
+ }
404
+ return message;
405
+ }
406
+
407
+ export function fromJSON(object: any): NotFoundError {
408
+ return { message: isSet(object.message) ? String(object.message) : undefined };
409
+ }
410
+
411
+ export function toJSON(message: NotFoundError): unknown {
412
+ const obj: any = {};
413
+ message.message !== undefined && (obj.message = message.message);
414
+ return obj;
415
+ }
416
+
417
+ export function create<I extends Exact<DeepPartial<NotFoundError>, I>>(base?: I): NotFoundError {
418
+ return NotFoundError.fromPartial(base ?? {});
419
+ }
420
+
421
+ export function fromPartial<I extends Exact<DeepPartial<NotFoundError>, I>>(object: I): NotFoundError {
422
+ const message = createBaseNotFoundError();
423
+ message.message = object.message ?? undefined;
424
+ return message;
425
+ }
426
+ }
427
+
428
+ type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
429
+
430
+ export type DeepPartial<T> = T extends Builtin ? T
431
+ : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>
432
+ : T extends { $case: string } ? { [K in keyof Omit<T, "$case">]?: DeepPartial<T[K]> } & { $case: T["$case"] }
433
+ : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }
434
+ : Partial<T>;
435
+
436
+ type KeysOfUnion<T> = T extends T ? keyof T : never;
437
+ export type Exact<P, I extends P> = P extends Builtin ? P
438
+ : P & { [K in keyof P]: Exact<P[K], I[K]> } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never };
439
+
440
+ function isSet(value: any): boolean {
441
+ return value !== null && value !== undefined;
442
+ }