@fivenet-app/gen 2026.4.0 → 2026.5.1

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 (60) hide show
  1. package/clients.ts +60 -0
  2. package/codegen/perms/perms.ts +64 -31
  3. package/package.json +1 -1
  4. package/perms.ts +57 -41
  5. package/resources/accounts/accounts.ts +41 -30
  6. package/resources/audit/audit.ts +5 -1
  7. package/resources/citizens/labels/access.ts +216 -0
  8. package/resources/citizens/labels/labels.ts +8 -214
  9. package/resources/jobs/colleagues/activity/activity.ts +1 -1
  10. package/resources/laws/laws.ts +72 -50
  11. package/resources/permissions/attributes/attributes.ts +51 -39
  12. package/resources/permissions/permissions/permissions.ts +46 -34
  13. package/resources/sync/data/data.ts +9 -9
  14. package/resources/users/activity/activity.ts +69 -76
  15. package/services/auth/auth.ts +1 -1
  16. package/services/calendar/calendar.client.ts +2 -106
  17. package/services/calendar/calendar.ts +0 -1018
  18. package/services/calendar/entries.client.ts +129 -0
  19. package/services/calendar/entries.ts +1040 -0
  20. package/services/centrum/centrum.client.ts +23 -244
  21. package/services/centrum/centrum.ts +246 -2383
  22. package/services/centrum/dispatches.client.ts +155 -0
  23. package/services/centrum/dispatches.ts +1305 -0
  24. package/services/centrum/units.client.ts +116 -0
  25. package/services/centrum/units.ts +876 -0
  26. package/services/citizens/labels.client.ts +26 -0
  27. package/services/citizens/labels.ts +283 -4
  28. package/services/completor/completor.client.ts +0 -13
  29. package/services/completor/completor.ts +2 -116
  30. package/services/documents/approval.ts +5 -5
  31. package/services/documents/categories.client.ts +64 -0
  32. package/services/documents/categories.ts +331 -0
  33. package/services/documents/collab.ts +1 -1
  34. package/services/documents/comments.client.ts +77 -0
  35. package/services/documents/comments.ts +479 -0
  36. package/services/documents/documents.client.ts +26 -182
  37. package/services/documents/documents.ts +335 -1682
  38. package/services/documents/templates.client.ts +90 -0
  39. package/services/documents/templates.ts +591 -0
  40. package/services/jobs/colleagues.client.ts +129 -0
  41. package/services/jobs/colleagues.ts +1129 -0
  42. package/services/jobs/jobs.client.ts +3 -107
  43. package/services/jobs/jobs.ts +1 -1113
  44. package/services/mailer/mailer.client.ts +0 -208
  45. package/services/mailer/mailer.ts +1 -2010
  46. package/services/mailer/settings.client.ts +103 -0
  47. package/services/mailer/settings.ts +708 -0
  48. package/services/mailer/thread.client.ts +155 -0
  49. package/services/mailer/thread.ts +1343 -0
  50. package/services/qualifications/exam.client.ts +77 -0
  51. package/services/qualifications/exam.ts +609 -0
  52. package/services/qualifications/qualifications.client.ts +1 -53
  53. package/services/qualifications/qualifications.ts +0 -591
  54. package/services/settings/accounts.ts +14 -1
  55. package/services/settings/laws.client.ts +18 -5
  56. package/services/settings/laws.ts +128 -3
  57. package/services/sync/sync.client.ts +4 -4
  58. package/services/sync/sync.ts +23 -0
  59. package/services/wiki/collab.ts +1 -1
  60. package/svcs.ts +156 -68
@@ -112,7 +112,11 @@ export enum EventAction {
112
112
  /**
113
113
  * @generated from protobuf enum value: EVENT_ACTION_DELETED = 5;
114
114
  */
115
- DELETED = 5
115
+ DELETED = 5,
116
+ /**
117
+ * @generated from protobuf enum value: EVENT_ACTION_RESTORED = 6;
118
+ */
119
+ RESTORED = 6
116
120
  }
117
121
  /**
118
122
  * @generated from protobuf enum resources.audit.EventResult
@@ -0,0 +1,216 @@
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/citizens/labels/access.proto" (package "resources.citizens.labels", 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
+ * @generated from protobuf message resources.citizens.labels.LabelAccess
16
+ */
17
+ export interface LabelAccess {
18
+ /**
19
+ * @generated from protobuf field: repeated resources.citizens.labels.JobAccess jobs = 1
20
+ */
21
+ jobs: JobAccess[];
22
+ }
23
+ /**
24
+ * @generated from protobuf message resources.citizens.labels.JobAccess
25
+ */
26
+ export interface JobAccess {
27
+ /**
28
+ * @generated from protobuf field: int64 id = 1
29
+ */
30
+ id: number;
31
+ /**
32
+ * @generated from protobuf field: int64 target_id = 2
33
+ */
34
+ targetId: number;
35
+ /**
36
+ * @generated from protobuf field: string job = 3
37
+ */
38
+ job: string;
39
+ /**
40
+ * @generated from protobuf field: optional string job_label = 4
41
+ */
42
+ jobLabel?: string;
43
+ /**
44
+ * @generated from protobuf field: int32 minimum_grade = 5
45
+ */
46
+ minimumGrade: number;
47
+ /**
48
+ * @generated from protobuf field: optional string job_grade_label = 6
49
+ */
50
+ jobGradeLabel?: string;
51
+ /**
52
+ * @generated from protobuf field: resources.citizens.labels.AccessLevel access = 7
53
+ */
54
+ access: AccessLevel;
55
+ }
56
+ /**
57
+ * @generated from protobuf enum resources.citizens.labels.AccessLevel
58
+ */
59
+ export enum AccessLevel {
60
+ /**
61
+ * @generated from protobuf enum value: ACCESS_LEVEL_UNSPECIFIED = 0;
62
+ */
63
+ UNSPECIFIED = 0,
64
+ /**
65
+ * @generated from protobuf enum value: ACCESS_LEVEL_VIEW = 1;
66
+ */
67
+ VIEW = 1,
68
+ /**
69
+ * @generated from protobuf enum value: ACCESS_LEVEL_GIVE = 2;
70
+ */
71
+ GIVE = 2,
72
+ /**
73
+ * @generated from protobuf enum value: ACCESS_LEVEL_REMOVE = 3;
74
+ */
75
+ REMOVE = 3
76
+ }
77
+ // @generated message type with reflection information, may provide speed optimized methods
78
+ class LabelAccess$Type extends MessageType<LabelAccess> {
79
+ constructor() {
80
+ super("resources.citizens.labels.LabelAccess", [
81
+ { no: 1, name: "jobs", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => JobAccess, options: { "buf.validate.field": { repeated: { maxItems: "20" } }, "tagger.tags": "alias:\"job_access\"" } }
82
+ ], { "codegen.dbscanner.dbscanner": { enabled: true } });
83
+ }
84
+ create(value?: PartialMessage<LabelAccess>): LabelAccess {
85
+ const message = globalThis.Object.create((this.messagePrototype!));
86
+ message.jobs = [];
87
+ if (value !== undefined)
88
+ reflectionMergePartial<LabelAccess>(this, message, value);
89
+ return message;
90
+ }
91
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: LabelAccess): LabelAccess {
92
+ let message = target ?? this.create(), end = reader.pos + length;
93
+ while (reader.pos < end) {
94
+ let [fieldNo, wireType] = reader.tag();
95
+ switch (fieldNo) {
96
+ case /* repeated resources.citizens.labels.JobAccess jobs */ 1:
97
+ message.jobs.push(JobAccess.internalBinaryRead(reader, reader.uint32(), options));
98
+ break;
99
+ default:
100
+ let u = options.readUnknownField;
101
+ if (u === "throw")
102
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
103
+ let d = reader.skip(wireType);
104
+ if (u !== false)
105
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
106
+ }
107
+ }
108
+ return message;
109
+ }
110
+ internalBinaryWrite(message: LabelAccess, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
111
+ /* repeated resources.citizens.labels.JobAccess jobs = 1; */
112
+ for (let i = 0; i < message.jobs.length; i++)
113
+ JobAccess.internalBinaryWrite(message.jobs[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
114
+ let u = options.writeUnknownFields;
115
+ if (u !== false)
116
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
117
+ return writer;
118
+ }
119
+ }
120
+ /**
121
+ * @generated MessageType for protobuf message resources.citizens.labels.LabelAccess
122
+ */
123
+ export const LabelAccess = new LabelAccess$Type();
124
+ // @generated message type with reflection information, may provide speed optimized methods
125
+ class JobAccess$Type extends MessageType<JobAccess> {
126
+ constructor() {
127
+ super("resources.citizens.labels.JobAccess", [
128
+ { no: 1, name: "id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "tagger.tags": "sql:\"primary_key\"" } },
129
+ { no: 2, name: "target_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
130
+ { no: 3, name: "job", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "20" } } } },
131
+ { no: 4, name: "job_label", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "50" } } } },
132
+ { no: 5, name: "minimum_grade", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gte: 0 } } } },
133
+ { no: 6, name: "job_grade_label", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "50" } } } },
134
+ { no: 7, name: "access", kind: "enum", T: () => ["resources.citizens.labels.AccessLevel", AccessLevel, "ACCESS_LEVEL_"], options: { "buf.validate.field": { enum: { definedOnly: true } } } }
135
+ ]);
136
+ }
137
+ create(value?: PartialMessage<JobAccess>): JobAccess {
138
+ const message = globalThis.Object.create((this.messagePrototype!));
139
+ message.id = 0;
140
+ message.targetId = 0;
141
+ message.job = "";
142
+ message.minimumGrade = 0;
143
+ message.access = 0;
144
+ if (value !== undefined)
145
+ reflectionMergePartial<JobAccess>(this, message, value);
146
+ return message;
147
+ }
148
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: JobAccess): JobAccess {
149
+ let message = target ?? this.create(), end = reader.pos + length;
150
+ while (reader.pos < end) {
151
+ let [fieldNo, wireType] = reader.tag();
152
+ switch (fieldNo) {
153
+ case /* int64 id */ 1:
154
+ message.id = reader.int64().toNumber();
155
+ break;
156
+ case /* int64 target_id */ 2:
157
+ message.targetId = reader.int64().toNumber();
158
+ break;
159
+ case /* string job */ 3:
160
+ message.job = reader.string();
161
+ break;
162
+ case /* optional string job_label */ 4:
163
+ message.jobLabel = reader.string();
164
+ break;
165
+ case /* int32 minimum_grade */ 5:
166
+ message.minimumGrade = reader.int32();
167
+ break;
168
+ case /* optional string job_grade_label */ 6:
169
+ message.jobGradeLabel = reader.string();
170
+ break;
171
+ case /* resources.citizens.labels.AccessLevel access */ 7:
172
+ message.access = reader.int32();
173
+ break;
174
+ default:
175
+ let u = options.readUnknownField;
176
+ if (u === "throw")
177
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
178
+ let d = reader.skip(wireType);
179
+ if (u !== false)
180
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
181
+ }
182
+ }
183
+ return message;
184
+ }
185
+ internalBinaryWrite(message: JobAccess, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
186
+ /* int64 id = 1; */
187
+ if (message.id !== 0)
188
+ writer.tag(1, WireType.Varint).int64(message.id);
189
+ /* int64 target_id = 2; */
190
+ if (message.targetId !== 0)
191
+ writer.tag(2, WireType.Varint).int64(message.targetId);
192
+ /* string job = 3; */
193
+ if (message.job !== "")
194
+ writer.tag(3, WireType.LengthDelimited).string(message.job);
195
+ /* optional string job_label = 4; */
196
+ if (message.jobLabel !== undefined)
197
+ writer.tag(4, WireType.LengthDelimited).string(message.jobLabel);
198
+ /* int32 minimum_grade = 5; */
199
+ if (message.minimumGrade !== 0)
200
+ writer.tag(5, WireType.Varint).int32(message.minimumGrade);
201
+ /* optional string job_grade_label = 6; */
202
+ if (message.jobGradeLabel !== undefined)
203
+ writer.tag(6, WireType.LengthDelimited).string(message.jobGradeLabel);
204
+ /* resources.citizens.labels.AccessLevel access = 7; */
205
+ if (message.access !== 0)
206
+ writer.tag(7, WireType.Varint).int32(message.access);
207
+ let u = options.writeUnknownFields;
208
+ if (u !== false)
209
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
210
+ return writer;
211
+ }
212
+ }
213
+ /**
214
+ * @generated MessageType for protobuf message resources.citizens.labels.JobAccess
215
+ */
216
+ export const JobAccess = new JobAccess$Type();
@@ -12,6 +12,7 @@ import type { PartialMessage } from "@protobuf-ts/runtime";
12
12
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
13
  import { MessageType } from "@protobuf-ts/runtime";
14
14
  import { Duration } from "../../../google/protobuf/duration";
15
+ import { LabelAccess } from "./access";
15
16
  import { Timestamp } from "../../timestamp/timestamp";
16
17
  /**
17
18
  * @generated from protobuf message resources.citizens.labels.Labels
@@ -63,9 +64,9 @@ export interface Label {
63
64
  */
64
65
  settings?: Settings;
65
66
  /**
66
- * @generated from protobuf field: optional resources.citizens.labels.Access access = 10
67
+ * @generated from protobuf field: optional resources.citizens.labels.LabelAccess access = 10
67
68
  */
68
- access?: Access;
69
+ access?: LabelAccess;
69
70
  /**
70
71
  * Citizen label assignment data
71
72
  *
@@ -90,73 +91,6 @@ export interface Settings {
90
91
  */
91
92
  maxDuration?: Duration;
92
93
  }
93
- /**
94
- * @generated from protobuf message resources.citizens.labels.Access
95
- */
96
- export interface Access {
97
- /**
98
- * @generated from protobuf field: repeated resources.citizens.labels.JobAccess jobs = 1
99
- */
100
- jobs: JobAccess[];
101
- }
102
- /**
103
- * @generated from protobuf message resources.citizens.labels.JobAccess
104
- */
105
- export interface JobAccess {
106
- /**
107
- * @generated from protobuf field: int64 id = 1
108
- */
109
- id: number;
110
- /**
111
- * @generated from protobuf field: int64 target_id = 2
112
- */
113
- targetId: number;
114
- /**
115
- * @generated from protobuf field: string job = 3
116
- */
117
- job: string;
118
- /**
119
- * @generated from protobuf field: optional string job_label = 4
120
- */
121
- jobLabel?: string;
122
- /**
123
- * @generated from protobuf field: int32 minimum_grade = 5
124
- */
125
- minimumGrade: number;
126
- /**
127
- * @generated from protobuf field: optional string job_grade_label = 6
128
- */
129
- jobGradeLabel?: string;
130
- /**
131
- * @generated from protobuf field: resources.citizens.labels.AccessLevel access = 7
132
- */
133
- access: AccessLevel;
134
- }
135
- /**
136
- * @generated from protobuf enum resources.citizens.labels.AccessLevel
137
- */
138
- export enum AccessLevel {
139
- /**
140
- * @generated from protobuf enum value: ACCESS_LEVEL_UNSPECIFIED = 0;
141
- */
142
- UNSPECIFIED = 0,
143
- /**
144
- * @generated from protobuf enum value: ACCESS_LEVEL_VIEW = 1;
145
- */
146
- VIEW = 1,
147
- /**
148
- * @generated from protobuf enum value: ACCESS_LEVEL_ADD = 2;
149
- */
150
- ADD = 2,
151
- /**
152
- * @generated from protobuf enum value: ACCESS_LEVEL_REMOVE = 3;
153
- */
154
- REMOVE = 3,
155
- /**
156
- * @generated from protobuf enum value: ACCESS_LEVEL_EDIT = 4;
157
- */
158
- EDIT = 4
159
- }
160
94
  // @generated message type with reflection information, may provide speed optimized methods
161
95
  class Labels$Type extends MessageType<Labels> {
162
96
  constructor() {
@@ -217,7 +151,7 @@ class Label$Type extends MessageType<Label> {
217
151
  { no: 7, name: "color", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { len: "7", pattern: "^#[A-Fa-f0-9]{6}$" } }, "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
218
152
  { no: 8, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "128" } }, "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
219
153
  { no: 9, name: "settings", kind: "message", T: () => Settings },
220
- { no: 10, name: "access", kind: "message", T: () => Access, options: { "buf.validate.field": { required: true } } },
154
+ { no: 10, name: "access", kind: "message", T: () => LabelAccess, options: { "buf.validate.field": { required: true } } },
221
155
  { no: 11, name: "expires_at", kind: "message", T: () => Timestamp }
222
156
  ]);
223
157
  }
@@ -262,8 +196,8 @@ class Label$Type extends MessageType<Label> {
262
196
  case /* optional resources.citizens.labels.Settings settings */ 9:
263
197
  message.settings = Settings.internalBinaryRead(reader, reader.uint32(), options, message.settings);
264
198
  break;
265
- case /* optional resources.citizens.labels.Access access */ 10:
266
- message.access = Access.internalBinaryRead(reader, reader.uint32(), options, message.access);
199
+ case /* optional resources.citizens.labels.LabelAccess access */ 10:
200
+ message.access = LabelAccess.internalBinaryRead(reader, reader.uint32(), options, message.access);
267
201
  break;
268
202
  case /* optional resources.timestamp.Timestamp expires_at */ 11:
269
203
  message.expiresAt = Timestamp.internalBinaryRead(reader, reader.uint32(), options, message.expiresAt);
@@ -307,9 +241,9 @@ class Label$Type extends MessageType<Label> {
307
241
  /* optional resources.citizens.labels.Settings settings = 9; */
308
242
  if (message.settings)
309
243
  Settings.internalBinaryWrite(message.settings, writer.tag(9, WireType.LengthDelimited).fork(), options).join();
310
- /* optional resources.citizens.labels.Access access = 10; */
244
+ /* optional resources.citizens.labels.LabelAccess access = 10; */
311
245
  if (message.access)
312
- Access.internalBinaryWrite(message.access, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
246
+ LabelAccess.internalBinaryWrite(message.access, writer.tag(10, WireType.LengthDelimited).fork(), options).join();
313
247
  /* optional resources.timestamp.Timestamp expires_at = 11; */
314
248
  if (message.expiresAt)
315
249
  Timestamp.internalBinaryWrite(message.expiresAt, writer.tag(11, WireType.LengthDelimited).fork(), options).join();
@@ -384,143 +318,3 @@ class Settings$Type extends MessageType<Settings> {
384
318
  * @generated MessageType for protobuf message resources.citizens.labels.Settings
385
319
  */
386
320
  export const Settings = new Settings$Type();
387
- // @generated message type with reflection information, may provide speed optimized methods
388
- class Access$Type extends MessageType<Access> {
389
- constructor() {
390
- super("resources.citizens.labels.Access", [
391
- { no: 1, name: "jobs", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => JobAccess, options: { "buf.validate.field": { repeated: { maxItems: "20" } }, "tagger.tags": "alias:\"job_access\"" } }
392
- ]);
393
- }
394
- create(value?: PartialMessage<Access>): Access {
395
- const message = globalThis.Object.create((this.messagePrototype!));
396
- message.jobs = [];
397
- if (value !== undefined)
398
- reflectionMergePartial<Access>(this, message, value);
399
- return message;
400
- }
401
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Access): Access {
402
- let message = target ?? this.create(), end = reader.pos + length;
403
- while (reader.pos < end) {
404
- let [fieldNo, wireType] = reader.tag();
405
- switch (fieldNo) {
406
- case /* repeated resources.citizens.labels.JobAccess jobs */ 1:
407
- message.jobs.push(JobAccess.internalBinaryRead(reader, reader.uint32(), options));
408
- break;
409
- default:
410
- let u = options.readUnknownField;
411
- if (u === "throw")
412
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
413
- let d = reader.skip(wireType);
414
- if (u !== false)
415
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
416
- }
417
- }
418
- return message;
419
- }
420
- internalBinaryWrite(message: Access, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
421
- /* repeated resources.citizens.labels.JobAccess jobs = 1; */
422
- for (let i = 0; i < message.jobs.length; i++)
423
- JobAccess.internalBinaryWrite(message.jobs[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();
424
- let u = options.writeUnknownFields;
425
- if (u !== false)
426
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
427
- return writer;
428
- }
429
- }
430
- /**
431
- * @generated MessageType for protobuf message resources.citizens.labels.Access
432
- */
433
- export const Access = new Access$Type();
434
- // @generated message type with reflection information, may provide speed optimized methods
435
- class JobAccess$Type extends MessageType<JobAccess> {
436
- constructor() {
437
- super("resources.citizens.labels.JobAccess", [
438
- { no: 1, name: "id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "tagger.tags": "sql:\"primary_key\"" } },
439
- { no: 2, name: "target_id", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/ },
440
- { no: 3, name: "job", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "20" } } } },
441
- { no: 4, name: "job_label", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "50" } } } },
442
- { no: 5, name: "minimum_grade", kind: "scalar", T: 5 /*ScalarType.INT32*/, options: { "buf.validate.field": { int32: { gte: 0 } } } },
443
- { no: 6, name: "job_grade_label", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "50" } } } },
444
- { no: 7, name: "access", kind: "enum", T: () => ["resources.citizens.labels.AccessLevel", AccessLevel, "ACCESS_LEVEL_"], options: { "buf.validate.field": { enum: { definedOnly: true } } } }
445
- ]);
446
- }
447
- create(value?: PartialMessage<JobAccess>): JobAccess {
448
- const message = globalThis.Object.create((this.messagePrototype!));
449
- message.id = 0;
450
- message.targetId = 0;
451
- message.job = "";
452
- message.minimumGrade = 0;
453
- message.access = 0;
454
- if (value !== undefined)
455
- reflectionMergePartial<JobAccess>(this, message, value);
456
- return message;
457
- }
458
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: JobAccess): JobAccess {
459
- let message = target ?? this.create(), end = reader.pos + length;
460
- while (reader.pos < end) {
461
- let [fieldNo, wireType] = reader.tag();
462
- switch (fieldNo) {
463
- case /* int64 id */ 1:
464
- message.id = reader.int64().toNumber();
465
- break;
466
- case /* int64 target_id */ 2:
467
- message.targetId = reader.int64().toNumber();
468
- break;
469
- case /* string job */ 3:
470
- message.job = reader.string();
471
- break;
472
- case /* optional string job_label */ 4:
473
- message.jobLabel = reader.string();
474
- break;
475
- case /* int32 minimum_grade */ 5:
476
- message.minimumGrade = reader.int32();
477
- break;
478
- case /* optional string job_grade_label */ 6:
479
- message.jobGradeLabel = reader.string();
480
- break;
481
- case /* resources.citizens.labels.AccessLevel access */ 7:
482
- message.access = reader.int32();
483
- break;
484
- default:
485
- let u = options.readUnknownField;
486
- if (u === "throw")
487
- throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
488
- let d = reader.skip(wireType);
489
- if (u !== false)
490
- (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
491
- }
492
- }
493
- return message;
494
- }
495
- internalBinaryWrite(message: JobAccess, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
496
- /* int64 id = 1; */
497
- if (message.id !== 0)
498
- writer.tag(1, WireType.Varint).int64(message.id);
499
- /* int64 target_id = 2; */
500
- if (message.targetId !== 0)
501
- writer.tag(2, WireType.Varint).int64(message.targetId);
502
- /* string job = 3; */
503
- if (message.job !== "")
504
- writer.tag(3, WireType.LengthDelimited).string(message.job);
505
- /* optional string job_label = 4; */
506
- if (message.jobLabel !== undefined)
507
- writer.tag(4, WireType.LengthDelimited).string(message.jobLabel);
508
- /* int32 minimum_grade = 5; */
509
- if (message.minimumGrade !== 0)
510
- writer.tag(5, WireType.Varint).int32(message.minimumGrade);
511
- /* optional string job_grade_label = 6; */
512
- if (message.jobGradeLabel !== undefined)
513
- writer.tag(6, WireType.LengthDelimited).string(message.jobGradeLabel);
514
- /* resources.citizens.labels.AccessLevel access = 7; */
515
- if (message.access !== 0)
516
- writer.tag(7, WireType.Varint).int32(message.access);
517
- let u = options.writeUnknownFields;
518
- if (u !== false)
519
- (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
520
- return writer;
521
- }
522
- }
523
- /**
524
- * @generated MessageType for protobuf message resources.citizens.labels.JobAccess
525
- */
526
- export const JobAccess = new JobAccess$Type();
@@ -131,7 +131,7 @@ export interface LabelsChange {
131
131
  /**
132
132
  * @generated from protobuf field: repeated resources.jobs.labels.Label removed = 2
133
133
  */
134
- removed: Label[];
134
+ removed: Label[]; // TODO switch to storing label ids instead of the whole label (resolve labels on client-side)
135
135
  }
136
136
  /**
137
137
  * @generated from protobuf message resources.jobs.colleagues.activity.NameChange