@fivenet-app/gen 2026.8.0 → 2026.10.2

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 (83) hide show
  1. package/LICENSE +201 -0
  2. package/clients.ts +12 -0
  3. package/codegen/perms/perms.ts +331 -2
  4. package/google/protobuf/any.ts +47 -103
  5. package/google/protobuf/descriptor.ts +28 -29
  6. package/google/protobuf/struct.ts +33 -22
  7. package/google/protobuf/timestamp.ts +3 -3
  8. package/package.json +2 -2
  9. package/perms.ts +58 -17
  10. package/resources/calendar/calendar.ts +11 -0
  11. package/resources/calendar/entries/entries.ts +23 -0
  12. package/resources/centrum/dispatches/dispatches.ts +214 -21
  13. package/resources/centrum/units/units.ts +212 -5
  14. package/resources/citizens/labels/access.ts +10 -6
  15. package/resources/cron/cron.ts +44 -3
  16. package/resources/dbsync/state.ts +192 -0
  17. package/resources/documents/stamps/access.ts +25 -0
  18. package/resources/documents/stamps/stamp.ts +0 -21
  19. package/resources/documents/templates/templates.ts +63 -61
  20. package/resources/documents/workflow/workflow.ts +61 -1
  21. package/resources/file/file.ts +3 -3
  22. package/resources/file/filestore.ts +26 -10
  23. package/resources/jobs/colleagues/activity/activity.ts +50 -8
  24. package/resources/jobs/colleagues/colleagues.ts +14 -1
  25. package/resources/jobs/groups/access/access.ts +29 -0
  26. package/resources/jobs/groups/activity.ts +332 -0
  27. package/resources/jobs/groups/group.ts +1666 -0
  28. package/resources/jobs/groups/short/group_member_short.ts +129 -0
  29. package/resources/jobs/job_asset.ts +116 -0
  30. package/resources/jobs/user_selector.ts +170 -0
  31. package/resources/notifications/clientview/clientview.ts +5 -1
  32. package/resources/notifications/events/events.ts +35 -1
  33. package/resources/notifications/notifications.ts +322 -2
  34. package/resources/permissions/attributes/attributes.ts +164 -2
  35. package/resources/permissions/authorization/authorization.ts +86 -0
  36. package/resources/permissions/permissions/permissions.ts +16 -1
  37. package/resources/properties/properties.ts +1648 -0
  38. package/resources/qualifications/activity/activity.ts +328 -0
  39. package/resources/qualifications/exam/exam.ts +108 -4
  40. package/resources/qualifications/qualifications.ts +36 -2
  41. package/resources/settings/config.ts +3 -3
  42. package/resources/settings/status.ts +197 -105
  43. package/resources/sync/activity/activity.ts +4 -4
  44. package/resources/sync/data/data.ts +16 -4
  45. package/resources/users/activity/activity.ts +220 -3
  46. package/resources/users/props/props.ts +13 -1
  47. package/resources/users/user.ts +13 -1
  48. package/resources/vehicles/activity/activity.ts +222 -3
  49. package/resources/vehicles/props/props.ts +13 -1
  50. package/resources/vehicles/vehicles.ts +13 -1
  51. package/services/auth/auth.ts +61 -67
  52. package/services/calendar/calendar.ts +1 -1
  53. package/services/calendar/entries.ts +3 -3
  54. package/services/centrum/centrum.ts +103 -1
  55. package/services/centrum/dispatches.ts +25 -1
  56. package/services/centrum/units.ts +28 -4
  57. package/services/citizens/citizens.client.ts +49 -0
  58. package/services/citizens/citizens.ts +384 -7
  59. package/services/completor/completor.ts +2 -2
  60. package/services/documents/approval.ts +2 -2
  61. package/services/documents/documents.ts +10 -9
  62. package/services/documents/templates.ts +24 -13
  63. package/services/jobs/colleagues.client.ts +34 -8
  64. package/services/jobs/colleagues.ts +289 -75
  65. package/services/jobs/conduct.ts +12 -19
  66. package/services/jobs/groups.client.ts +311 -0
  67. package/services/jobs/groups.ts +3654 -1
  68. package/services/jobs/timeclock.ts +30 -27
  69. package/services/notifications/notifications.client.ts +40 -1
  70. package/services/notifications/notifications.ts +483 -3
  71. package/services/qualifications/qualifications.client.ts +20 -7
  72. package/services/qualifications/qualifications.ts +291 -8
  73. package/services/settings/job_assets.client.ts +105 -0
  74. package/services/settings/job_assets.ts +373 -0
  75. package/services/settings/properties.client.ts +194 -0
  76. package/services/settings/properties.ts +1555 -0
  77. package/services/settings/settings.ts +1 -1
  78. package/services/settings/system.ts +29 -9
  79. package/services/sync/sync.client.ts +69 -33
  80. package/services/sync/sync.ts +557 -18
  81. package/services/vehicles/vehicles.client.ts +52 -0
  82. package/services/vehicles/vehicles.ts +386 -8
  83. package/svcs.ts +87 -1
@@ -0,0 +1,129 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter force_server_none,long_type_number,optimize_speed,ts_nocheck
2
+ // @generated from protobuf file "resources/jobs/groups/short/group_member_short.proto" (package "resources.jobs.groups.short", syntax proto3)
3
+ // tslint:disable
4
+ // @ts-nocheck
5
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
6
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
7
+ import { WireType } from "@protobuf-ts/runtime";
8
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
9
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
10
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
11
+ import type { PartialMessage } from "@protobuf-ts/runtime";
12
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
+ import { MessageType } from "@protobuf-ts/runtime";
14
+ /**
15
+ * Lightweight group information attached to a colleague.
16
+ *
17
+ * @generated from protobuf message resources.jobs.groups.short.GroupMemberShort
18
+ */
19
+ export interface GroupMemberShort {
20
+ /**
21
+ * @generated from protobuf field: int64 id = 1
22
+ */
23
+ id: number;
24
+ /**
25
+ * @generated from protobuf field: string job = 2
26
+ */
27
+ job: string;
28
+ /**
29
+ * @generated from protobuf field: string name = 3
30
+ */
31
+ name: string;
32
+ /**
33
+ * @generated from protobuf field: optional string short_name = 4
34
+ */
35
+ shortName?: string;
36
+ /**
37
+ * @generated from protobuf field: optional string color = 5
38
+ */
39
+ color?: string;
40
+ /**
41
+ * @generated from protobuf field: bool is_leader = 6
42
+ */
43
+ isLeader: boolean;
44
+ }
45
+ // @generated message type with reflection information, may provide speed optimized methods
46
+ class GroupMemberShort$Type extends MessageType<GroupMemberShort> {
47
+ constructor() {
48
+ super("resources.jobs.groups.short.GroupMemberShort", [
49
+ { no: 1, name: "id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { gt: "0" } } } },
50
+ { no: 2, name: "job", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "20" } } } },
51
+ { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "128" } } } },
52
+ { no: 4, name: "short_name", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } },
53
+ { no: 5, name: "color", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "32" } } } },
54
+ { no: 6, name: "is_leader", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
55
+ ]);
56
+ }
57
+ create(value?: PartialMessage<GroupMemberShort>): GroupMemberShort {
58
+ const message = globalThis.Object.create((this.messagePrototype!));
59
+ message.id = 0;
60
+ message.job = "";
61
+ message.name = "";
62
+ message.isLeader = false;
63
+ if (value !== undefined)
64
+ reflectionMergePartial<GroupMemberShort>(this, message, value);
65
+ return message;
66
+ }
67
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GroupMemberShort): GroupMemberShort {
68
+ let message = target ?? this.create(), end = reader.pos + length;
69
+ while (reader.pos < end) {
70
+ let [fieldNo, wireType] = reader.tag();
71
+ switch (fieldNo) {
72
+ case /* int64 id */ 1:
73
+ message.id = reader.int64().toNumber();
74
+ break;
75
+ case /* string job */ 2:
76
+ message.job = reader.string();
77
+ break;
78
+ case /* string name */ 3:
79
+ message.name = reader.string();
80
+ break;
81
+ case /* optional string short_name */ 4:
82
+ message.shortName = reader.string();
83
+ break;
84
+ case /* optional string color */ 5:
85
+ message.color = reader.string();
86
+ break;
87
+ case /* bool is_leader */ 6:
88
+ message.isLeader = reader.bool();
89
+ break;
90
+ default:
91
+ let u = options.readUnknownField;
92
+ if (u === "throw")
93
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
94
+ let d = reader.skip(wireType);
95
+ if (u !== false)
96
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
97
+ }
98
+ }
99
+ return message;
100
+ }
101
+ internalBinaryWrite(message: GroupMemberShort, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
102
+ /* int64 id = 1; */
103
+ if (message.id !== 0)
104
+ writer.tag(1, WireType.Varint).int64(message.id);
105
+ /* string job = 2; */
106
+ if (message.job !== "")
107
+ writer.tag(2, WireType.LengthDelimited).string(message.job);
108
+ /* string name = 3; */
109
+ if (message.name !== "")
110
+ writer.tag(3, WireType.LengthDelimited).string(message.name);
111
+ /* optional string short_name = 4; */
112
+ if (message.shortName !== undefined)
113
+ writer.tag(4, WireType.LengthDelimited).string(message.shortName);
114
+ /* optional string color = 5; */
115
+ if (message.color !== undefined)
116
+ writer.tag(5, WireType.LengthDelimited).string(message.color);
117
+ /* bool is_leader = 6; */
118
+ if (message.isLeader !== false)
119
+ writer.tag(6, WireType.Varint).bool(message.isLeader);
120
+ let u = options.writeUnknownFields;
121
+ if (u !== false)
122
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
123
+ return writer;
124
+ }
125
+ }
126
+ /**
127
+ * @generated MessageType for protobuf message resources.jobs.groups.short.GroupMemberShort
128
+ */
129
+ export const GroupMemberShort = new GroupMemberShort$Type();
@@ -0,0 +1,116 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter force_server_none,long_type_number,optimize_speed,ts_nocheck
2
+ // @generated from protobuf file "resources/jobs/job_asset.proto" (package "resources.jobs", syntax proto3)
3
+ // tslint:disable
4
+ // @ts-nocheck
5
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
6
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
7
+ import { WireType } from "@protobuf-ts/runtime";
8
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
9
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
10
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
11
+ import type { PartialMessage } from "@protobuf-ts/runtime";
12
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
+ import { MessageType } from "@protobuf-ts/runtime";
14
+ import { Timestamp } from "../timestamp/timestamp";
15
+ import { File } from "../file/file";
16
+ /**
17
+ * @generated from protobuf message resources.jobs.JobAsset
18
+ */
19
+ export interface JobAsset {
20
+ /**
21
+ * @generated from protobuf field: int64 id = 1
22
+ */
23
+ id: number;
24
+ /**
25
+ * @generated from protobuf field: resources.file.File file = 2
26
+ */
27
+ file?: File;
28
+ /**
29
+ * @generated from protobuf field: optional int32 created_by_user_id = 3
30
+ */
31
+ createdByUserId?: number;
32
+ /**
33
+ * @generated from protobuf field: resources.timestamp.Timestamp created_at = 4
34
+ */
35
+ createdAt?: Timestamp;
36
+ /**
37
+ * @generated from protobuf field: string display_name = 5
38
+ */
39
+ displayName: string;
40
+ }
41
+ // @generated message type with reflection information, may provide speed optimized methods
42
+ class JobAsset$Type extends MessageType<JobAsset> {
43
+ constructor() {
44
+ super("resources.jobs.JobAsset", [
45
+ { no: 1, name: "id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
46
+ { no: 2, name: "file", kind: "message", T: () => File },
47
+ { no: 3, name: "created_by_user_id", kind: "scalar", opt: true, T: 5 /*ScalarType.INT32*/ },
48
+ { no: 4, name: "created_at", kind: "message", T: () => Timestamp },
49
+ { no: 5, name: "display_name", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "1", maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } }
50
+ ]);
51
+ }
52
+ create(value?: PartialMessage<JobAsset>): JobAsset {
53
+ const message = globalThis.Object.create((this.messagePrototype!));
54
+ message.id = 0;
55
+ message.displayName = "";
56
+ if (value !== undefined)
57
+ reflectionMergePartial<JobAsset>(this, message, value);
58
+ return message;
59
+ }
60
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: JobAsset): JobAsset {
61
+ let message = target ?? this.create(), end = reader.pos + length;
62
+ while (reader.pos < end) {
63
+ let [fieldNo, wireType] = reader.tag();
64
+ switch (fieldNo) {
65
+ case /* int64 id */ 1:
66
+ message.id = reader.int64().toNumber();
67
+ break;
68
+ case /* resources.file.File file */ 2:
69
+ message.file = File.internalBinaryRead(reader, reader.uint32(), options, message.file);
70
+ break;
71
+ case /* optional int32 created_by_user_id */ 3:
72
+ message.createdByUserId = reader.int32();
73
+ break;
74
+ case /* resources.timestamp.Timestamp created_at */ 4:
75
+ message.createdAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.createdAt);
76
+ break;
77
+ case /* string display_name */ 5:
78
+ message.displayName = reader.string();
79
+ break;
80
+ default:
81
+ let u = options.readUnknownField;
82
+ if (u === "throw")
83
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
84
+ let d = reader.skip(wireType);
85
+ if (u !== false)
86
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
87
+ }
88
+ }
89
+ return message;
90
+ }
91
+ internalBinaryWrite(message: JobAsset, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
92
+ /* int64 id = 1; */
93
+ if (message.id !== 0)
94
+ writer.tag(1, WireType.Varint).int64(message.id);
95
+ /* resources.file.File file = 2; */
96
+ if (message.file)
97
+ File.internalBinaryWrite(message.file, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
98
+ /* optional int32 created_by_user_id = 3; */
99
+ if (message.createdByUserId !== undefined)
100
+ writer.tag(3, WireType.Varint).int32(message.createdByUserId);
101
+ /* resources.timestamp.Timestamp created_at = 4; */
102
+ if (message.createdAt)
103
+ Timestamp.internalBinaryWrite(message.createdAt, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
104
+ /* string display_name = 5; */
105
+ if (message.displayName !== "")
106
+ writer.tag(5, WireType.LengthDelimited).string(message.displayName);
107
+ let u = options.writeUnknownFields;
108
+ if (u !== false)
109
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
110
+ return writer;
111
+ }
112
+ }
113
+ /**
114
+ * @generated MessageType for protobuf message resources.jobs.JobAsset
115
+ */
116
+ export const JobAsset = new JobAsset$Type();
@@ -0,0 +1,170 @@
1
+ // @generated by protobuf-ts 2.11.1 with parameter force_server_none,long_type_number,optimize_speed,ts_nocheck
2
+ // @generated from protobuf file "resources/jobs/user_selector.proto" (package "resources.jobs", syntax proto3)
3
+ // tslint:disable
4
+ // @ts-nocheck
5
+ import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
6
+ import type { IBinaryWriter } from "@protobuf-ts/runtime";
7
+ import type { BinaryReadOptions } from "@protobuf-ts/runtime";
8
+ import type { IBinaryReader } from "@protobuf-ts/runtime";
9
+ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
10
+ import { WireType } from "@protobuf-ts/runtime";
11
+ import type { PartialMessage } from "@protobuf-ts/runtime";
12
+ import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
+ import { MessageType } from "@protobuf-ts/runtime";
14
+ /**
15
+ * @generated from protobuf message resources.jobs.UserSelector
16
+ */
17
+ export interface UserSelector {
18
+ /**
19
+ * Explicit users to include.
20
+ *
21
+ * @generated from protobuf field: repeated int32 user_ids = 1
22
+ */
23
+ userIds: number[];
24
+ /**
25
+ * Users resolved from job groups.
26
+ *
27
+ * @generated from protobuf field: resources.jobs.GroupUserSelector groups = 2
28
+ */
29
+ groups?: GroupUserSelector;
30
+ }
31
+ /**
32
+ * @generated from protobuf message resources.jobs.GroupUserSelector
33
+ */
34
+ export interface GroupUserSelector {
35
+ /**
36
+ * @generated from protobuf field: repeated int64 group_ids = 1
37
+ */
38
+ groupIds: number[];
39
+ /**
40
+ * Include group leaders even if they are not resolved members.
41
+ *
42
+ * @generated from protobuf field: bool include_leaders = 2
43
+ */
44
+ includeLeaders: boolean;
45
+ }
46
+ // @generated message type with reflection information, may provide speed optimized methods
47
+ class UserSelector$Type extends MessageType<UserSelector> {
48
+ constructor() {
49
+ super("resources.jobs.UserSelector", [
50
+ { no: 1, name: "user_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { repeated: { maxItems: "50", items: { int32: { gt: 0 } } } } } },
51
+ { no: 2, name: "groups", kind: "message", T: () => GroupUserSelector }
52
+ ]);
53
+ }
54
+ create(value?: PartialMessage<UserSelector>): UserSelector {
55
+ const message = globalThis.Object.create((this.messagePrototype!));
56
+ message.userIds = [];
57
+ if (value !== undefined)
58
+ reflectionMergePartial<UserSelector>(this, message, value);
59
+ return message;
60
+ }
61
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: UserSelector): UserSelector {
62
+ let message = target ?? this.create(), end = reader.pos + length;
63
+ while (reader.pos < end) {
64
+ let [fieldNo, wireType] = reader.tag();
65
+ switch (fieldNo) {
66
+ case /* repeated int32 user_ids */ 1:
67
+ if (wireType === WireType.LengthDelimited)
68
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
69
+ message.userIds.push(reader.int32());
70
+ else
71
+ message.userIds.push(reader.int32());
72
+ break;
73
+ case /* resources.jobs.GroupUserSelector groups */ 2:
74
+ message.groups = GroupUserSelector.internalBinaryRead(reader, reader.uint32(), options, message.groups);
75
+ break;
76
+ default:
77
+ let u = options.readUnknownField;
78
+ if (u === "throw")
79
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
80
+ let d = reader.skip(wireType);
81
+ if (u !== false)
82
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
83
+ }
84
+ }
85
+ return message;
86
+ }
87
+ internalBinaryWrite(message: UserSelector, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
88
+ /* repeated int32 user_ids = 1; */
89
+ if (message.userIds.length) {
90
+ writer.tag(1, WireType.LengthDelimited).fork();
91
+ for (let i = 0; i < message.userIds.length; i++)
92
+ writer.int32(message.userIds[i]);
93
+ writer.join();
94
+ }
95
+ /* resources.jobs.GroupUserSelector groups = 2; */
96
+ if (message.groups)
97
+ GroupUserSelector.internalBinaryWrite(message.groups, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
98
+ let u = options.writeUnknownFields;
99
+ if (u !== false)
100
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
101
+ return writer;
102
+ }
103
+ }
104
+ /**
105
+ * @generated MessageType for protobuf message resources.jobs.UserSelector
106
+ */
107
+ export const UserSelector = new UserSelector$Type();
108
+ // @generated message type with reflection information, may provide speed optimized methods
109
+ class GroupUserSelector$Type extends MessageType<GroupUserSelector> {
110
+ constructor() {
111
+ super("resources.jobs.GroupUserSelector", [
112
+ { no: 1, name: "group_ids", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { repeated: { maxItems: "5", items: { int64: { gt: "0" } } } } } },
113
+ { no: 2, name: "include_leaders", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
114
+ ]);
115
+ }
116
+ create(value?: PartialMessage<GroupUserSelector>): GroupUserSelector {
117
+ const message = globalThis.Object.create((this.messagePrototype!));
118
+ message.groupIds = [];
119
+ message.includeLeaders = false;
120
+ if (value !== undefined)
121
+ reflectionMergePartial<GroupUserSelector>(this, message, value);
122
+ return message;
123
+ }
124
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: GroupUserSelector): GroupUserSelector {
125
+ let message = target ?? this.create(), end = reader.pos + length;
126
+ while (reader.pos < end) {
127
+ let [fieldNo, wireType] = reader.tag();
128
+ switch (fieldNo) {
129
+ case /* repeated int64 group_ids */ 1:
130
+ if (wireType === WireType.LengthDelimited)
131
+ for (let e = reader.int32() + reader.pos; reader.pos < e;)
132
+ message.groupIds.push(reader.int64().toNumber());
133
+ else
134
+ message.groupIds.push(reader.int64().toNumber());
135
+ break;
136
+ case /* bool include_leaders */ 2:
137
+ message.includeLeaders = reader.bool();
138
+ break;
139
+ default:
140
+ let u = options.readUnknownField;
141
+ if (u === "throw")
142
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
143
+ let d = reader.skip(wireType);
144
+ if (u !== false)
145
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
146
+ }
147
+ }
148
+ return message;
149
+ }
150
+ internalBinaryWrite(message: GroupUserSelector, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
151
+ /* repeated int64 group_ids = 1; */
152
+ if (message.groupIds.length) {
153
+ writer.tag(1, WireType.LengthDelimited).fork();
154
+ for (let i = 0; i < message.groupIds.length; i++)
155
+ writer.int64(message.groupIds[i]);
156
+ writer.join();
157
+ }
158
+ /* bool include_leaders = 2; */
159
+ if (message.includeLeaders !== false)
160
+ writer.tag(2, WireType.Varint).bool(message.includeLeaders);
161
+ let u = options.writeUnknownFields;
162
+ if (u !== false)
163
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
164
+ return writer;
165
+ }
166
+ }
167
+ /**
168
+ * @generated MessageType for protobuf message resources.jobs.GroupUserSelector
169
+ */
170
+ export const GroupUserSelector = new GroupUserSelector$Type();
@@ -81,7 +81,11 @@ export enum ObjectType {
81
81
  /**
82
82
  * @generated from protobuf enum value: OBJECT_TYPE_JOBS_CONDUCT = 5;
83
83
  */
84
- JOBS_CONDUCT = 5
84
+ JOBS_CONDUCT = 5,
85
+ /**
86
+ * @generated from protobuf enum value: OBJECT_TYPE_QUALIFICATION = 6;
87
+ */
88
+ QUALIFICATION = 6
85
89
  }
86
90
  /**
87
91
  * @generated from protobuf enum resources.notifications.clientview.ObjectEventType
@@ -22,6 +22,13 @@ import { Notification } from "../notifications";
22
22
  * @generated from protobuf message resources.notifications.events.UserEvent
23
23
  */
24
24
  export interface UserEvent {
25
+ /**
26
+ * Present on durable notification events to let streams update their badge
27
+ * count, provided per stream on best-effort basis.
28
+ *
29
+ * @generated from protobuf field: optional int64 unread_count = 7
30
+ */
31
+ unreadCount?: number;
25
32
  /**
26
33
  * @generated from protobuf oneof: data
27
34
  */
@@ -42,6 +49,8 @@ export interface UserEvent {
42
49
  } | {
43
50
  oneofKind: "notificationsReadCount";
44
51
  /**
52
+ * Deprecated delta kept for wire compatibility with older clients.
53
+ *
45
54
  * @generated from protobuf field: int64 notifications_read_count = 3
46
55
  */
47
56
  notificationsReadCount: number;
@@ -57,6 +66,14 @@ export interface UserEvent {
57
66
  * @generated from protobuf field: resources.userinfo.AccountGroupsChanged account_groups_changed = 5
58
67
  */
59
68
  accountGroupsChanged: AccountGroupsChanged;
69
+ } | {
70
+ oneofKind: "notificationsUnreadCount";
71
+ /**
72
+ * The authoritative unread count after a notification-state mutation.
73
+ *
74
+ * @generated from protobuf field: int64 notifications_unread_count = 6
75
+ */
76
+ notificationsUnreadCount: number;
60
77
  } | {
61
78
  oneofKind: undefined;
62
79
  };
@@ -132,11 +149,13 @@ export interface SystemEvent {
132
149
  class UserEvent$Type extends MessageType<UserEvent> {
133
150
  constructor() {
134
151
  super("resources.notifications.events.UserEvent", [
152
+ { no: 7, name: "unread_count", kind: "scalar", opt: true, T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
135
153
  { no: 1, name: "refresh_token", kind: "scalar", oneof: "data", T: 8 /*ScalarType.BOOL*/ },
136
154
  { no: 2, name: "notification", kind: "message", oneof: "data", T: () => Notification },
137
155
  { no: 3, name: "notifications_read_count", kind: "scalar", oneof: "data", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
138
156
  { no: 4, name: "user_info_changed", kind: "message", oneof: "data", T: () => UserInfoChanged },
139
- { no: 5, name: "account_groups_changed", kind: "message", oneof: "data", T: () => AccountGroupsChanged }
157
+ { no: 5, name: "account_groups_changed", kind: "message", oneof: "data", T: () => AccountGroupsChanged },
158
+ { no: 6, name: "notifications_unread_count", kind: "scalar", oneof: "data", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ }
140
159
  ]);
141
160
  }
142
161
  create(value?: PartialMessage<UserEvent>): UserEvent {
@@ -151,6 +170,9 @@ class UserEvent$Type extends MessageType<UserEvent> {
151
170
  while (reader.pos < end) {
152
171
  let [fieldNo, wireType] = reader.tag();
153
172
  switch (fieldNo) {
173
+ case /* optional int64 unread_count */ 7:
174
+ message.unreadCount = reader.int64().toNumber();
175
+ break;
154
176
  case /* bool refresh_token */ 1:
155
177
  message.data = {
156
178
  oneofKind: "refreshToken",
@@ -181,6 +203,12 @@ class UserEvent$Type extends MessageType<UserEvent> {
181
203
  accountGroupsChanged: AccountGroupsChanged.internalBinaryRead(reader, reader.uint32(), options, (message.data as any).accountGroupsChanged)
182
204
  };
183
205
  break;
206
+ case /* int64 notifications_unread_count */ 6:
207
+ message.data = {
208
+ oneofKind: "notificationsUnreadCount",
209
+ notificationsUnreadCount: reader.int64().toNumber()
210
+ };
211
+ break;
184
212
  default:
185
213
  let u = options.readUnknownField;
186
214
  if (u === "throw")
@@ -208,6 +236,12 @@ class UserEvent$Type extends MessageType<UserEvent> {
208
236
  /* resources.userinfo.AccountGroupsChanged account_groups_changed = 5; */
209
237
  if (message.data.oneofKind === "accountGroupsChanged")
210
238
  AccountGroupsChanged.internalBinaryWrite(message.data.accountGroupsChanged, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
239
+ /* int64 notifications_unread_count = 6; */
240
+ if (message.data.oneofKind === "notificationsUnreadCount")
241
+ writer.tag(6, WireType.Varint).int64(message.data.notificationsUnreadCount);
242
+ /* optional int64 unread_count = 7; */
243
+ if (message.unreadCount !== undefined)
244
+ writer.tag(7, WireType.Varint).int64(message.unreadCount);
211
245
  let u = options.writeUnknownFields;
212
246
  if (u !== false)
213
247
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);