@fivenet-app/gen 2026.3.0 → 2026.4.0

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 (37) hide show
  1. package/clients.ts +6 -6
  2. package/codegen/perms/perms.ts +93 -1
  3. package/package.json +1 -1
  4. package/perms.ts +6 -5
  5. package/resources/centrum/settings/settings.ts +1 -1
  6. package/resources/centrum/units/units.ts +1 -1
  7. package/resources/citizens/labels/labels.ts +526 -0
  8. package/resources/{users → citizens}/licenses/licenses.ts +17 -17
  9. package/resources/clientconfig/clientconfig.ts +32 -289
  10. package/resources/cron/cron.ts +2 -2
  11. package/resources/documents/access/access.ts +0 -23
  12. package/resources/documents/category/category.ts +1 -1
  13. package/resources/documents/templates/templates.ts +2 -2
  14. package/resources/jobs/labels/labels.ts +16 -5
  15. package/resources/livemap/markers/marker_marker.ts +1 -1
  16. package/resources/settings/banner.ts +1 -1
  17. package/resources/settings/config.ts +16 -14
  18. package/resources/sync/data/data.ts +9 -9
  19. package/resources/users/activity/activity.ts +132 -12
  20. package/resources/users/props/props.ts +4 -4
  21. package/resources/users/user.ts +4 -4
  22. package/services/citizens/citizens.client.ts +0 -13
  23. package/services/citizens/citizens.ts +1 -115
  24. package/services/citizens/labels.client.ts +77 -0
  25. package/services/citizens/labels.ts +455 -0
  26. package/services/completor/completor.ts +5 -5
  27. package/services/documents/documents.ts +1 -1
  28. package/services/qualifications/qualifications.ts +1 -1
  29. package/services/settings/cron.client.ts +13 -0
  30. package/services/settings/cron.ts +114 -1
  31. package/services/sync/sync.client.ts +271 -37
  32. package/services/sync/sync.ts +1438 -381
  33. package/svcs.ts +29 -27
  34. package/resources/sync/data/v2/data.ts +0 -220
  35. package/resources/users/labels/labels.ts +0 -160
  36. package/services/sync/v2/sync.client.ts +0 -331
  37. package/services/sync/v2/sync.ts +0 -1766
package/clients.ts CHANGED
@@ -26,6 +26,12 @@ export async function getCitizensCitizensClient() {
26
26
  return new CitizensServiceClient(useGRPCTransport());
27
27
  }
28
28
 
29
+ // Factory for citizens.labels client.
30
+ export async function getCitizensLabelsClient() {
31
+ const { LabelsServiceClient } = await import('~~/gen/ts/services/citizens/labels.client');
32
+ return new LabelsServiceClient(useGRPCTransport());
33
+ }
34
+
29
35
  // Factory for completor.completor client.
30
36
  export async function getCompletorCompletorClient() {
31
37
  const { CompletorServiceClient } = await import('~~/gen/ts/services/completor/completor.client');
@@ -170,12 +176,6 @@ export async function getSyncSyncClient() {
170
176
  return new SyncServiceClient(useGRPCTransport());
171
177
  }
172
178
 
173
- // Factory for sync.v2.sync client.
174
- export async function getSyncV2SyncClient() {
175
- const { SyncServiceClient } = await import('~~/gen/ts/services/sync/v2/sync.client');
176
- return new SyncServiceClient(useGRPCTransport());
177
- }
178
-
179
179
  // Factory for vehicles.vehicles client.
180
180
  export async function getVehiclesVehiclesClient() {
181
181
  const { VehiclesServiceClient } = await import('~~/gen/ts/services/vehicles/vehicles.client');
@@ -74,6 +74,27 @@ export interface ServiceOptions {
74
74
  * @generated from protobuf field: optional string icon = 2
75
75
  */
76
76
  icon?: string;
77
+ /**
78
+ * @generated from protobuf field: repeated codegen.perms.AdditionalServicePerm additional_perms = 3
79
+ */
80
+ additionalPerms: AdditionalServicePerm[];
81
+ }
82
+ /**
83
+ * @generated from protobuf message codegen.perms.AdditionalServicePerm
84
+ */
85
+ export interface AdditionalServicePerm {
86
+ /**
87
+ * @generated from protobuf field: string name = 3
88
+ */
89
+ name: string;
90
+ /**
91
+ * @generated from protobuf field: int32 order = 4
92
+ */
93
+ order: number;
94
+ /**
95
+ * @generated from protobuf field: repeated codegen.perms.Attr attrs = 5
96
+ */
97
+ attrs: Attr[];
77
98
  }
78
99
  // @generated message type with reflection information, may provide speed optimized methods
79
100
  class PermsOptions$Type extends MessageType<PermsOptions> {
@@ -236,12 +257,14 @@ class ServiceOptions$Type extends MessageType<ServiceOptions> {
236
257
  constructor() {
237
258
  super("codegen.perms.ServiceOptions", [
238
259
  { no: 1, name: "order", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
239
- { no: 2, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
260
+ { no: 2, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
261
+ { no: 3, name: "additional_perms", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => AdditionalServicePerm }
240
262
  ]);
241
263
  }
242
264
  create(value?: PartialMessage<ServiceOptions>): ServiceOptions {
243
265
  const message = globalThis.Object.create((this.messagePrototype!));
244
266
  message.order = 0;
267
+ message.additionalPerms = [];
245
268
  if (value !== undefined)
246
269
  reflectionMergePartial<ServiceOptions>(this, message, value);
247
270
  return message;
@@ -257,6 +280,9 @@ class ServiceOptions$Type extends MessageType<ServiceOptions> {
257
280
  case /* optional string icon */ 2:
258
281
  message.icon = reader.string();
259
282
  break;
283
+ case /* repeated codegen.perms.AdditionalServicePerm additional_perms */ 3:
284
+ message.additionalPerms.push(AdditionalServicePerm.internalBinaryRead(reader, reader.uint32(), options));
285
+ break;
260
286
  default:
261
287
  let u = options.readUnknownField;
262
288
  if (u === "throw")
@@ -275,6 +301,9 @@ class ServiceOptions$Type extends MessageType<ServiceOptions> {
275
301
  /* optional string icon = 2; */
276
302
  if (message.icon !== undefined)
277
303
  writer.tag(2, WireType.LengthDelimited).string(message.icon);
304
+ /* repeated codegen.perms.AdditionalServicePerm additional_perms = 3; */
305
+ for (let i = 0; i < message.additionalPerms.length; i++)
306
+ AdditionalServicePerm.internalBinaryWrite(message.additionalPerms[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();
278
307
  let u = options.writeUnknownFields;
279
308
  if (u !== false)
280
309
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -285,3 +314,66 @@ class ServiceOptions$Type extends MessageType<ServiceOptions> {
285
314
  * @generated MessageType for protobuf message codegen.perms.ServiceOptions
286
315
  */
287
316
  export const ServiceOptions = new ServiceOptions$Type();
317
+ // @generated message type with reflection information, may provide speed optimized methods
318
+ class AdditionalServicePerm$Type extends MessageType<AdditionalServicePerm> {
319
+ constructor() {
320
+ super("codegen.perms.AdditionalServicePerm", [
321
+ { no: 3, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
322
+ { no: 4, name: "order", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
323
+ { no: 5, name: "attrs", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Attr }
324
+ ]);
325
+ }
326
+ create(value?: PartialMessage<AdditionalServicePerm>): AdditionalServicePerm {
327
+ const message = globalThis.Object.create((this.messagePrototype!));
328
+ message.name = "";
329
+ message.order = 0;
330
+ message.attrs = [];
331
+ if (value !== undefined)
332
+ reflectionMergePartial<AdditionalServicePerm>(this, message, value);
333
+ return message;
334
+ }
335
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: AdditionalServicePerm): AdditionalServicePerm {
336
+ let message = target ?? this.create(), end = reader.pos + length;
337
+ while (reader.pos < end) {
338
+ let [fieldNo, wireType] = reader.tag();
339
+ switch (fieldNo) {
340
+ case /* string name */ 3:
341
+ message.name = reader.string();
342
+ break;
343
+ case /* int32 order */ 4:
344
+ message.order = reader.int32();
345
+ break;
346
+ case /* repeated codegen.perms.Attr attrs */ 5:
347
+ message.attrs.push(Attr.internalBinaryRead(reader, reader.uint32(), options));
348
+ break;
349
+ default:
350
+ let u = options.readUnknownField;
351
+ if (u === "throw")
352
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
353
+ let d = reader.skip(wireType);
354
+ if (u !== false)
355
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
356
+ }
357
+ }
358
+ return message;
359
+ }
360
+ internalBinaryWrite(message: AdditionalServicePerm, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
361
+ /* string name = 3; */
362
+ if (message.name !== "")
363
+ writer.tag(3, WireType.LengthDelimited).string(message.name);
364
+ /* int32 order = 4; */
365
+ if (message.order !== 0)
366
+ writer.tag(4, WireType.Varint).int32(message.order);
367
+ /* repeated codegen.perms.Attr attrs = 5; */
368
+ for (let i = 0; i < message.attrs.length; i++)
369
+ Attr.internalBinaryWrite(message.attrs[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
370
+ let u = options.writeUnknownFields;
371
+ if (u !== false)
372
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
373
+ return writer;
374
+ }
375
+ }
376
+ /**
377
+ * @generated MessageType for protobuf message codegen.perms.AdditionalServicePerm
378
+ */
379
+ export const AdditionalServicePerm = new AdditionalServicePerm$Type();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fivenet-app/gen",
3
3
  "private": false,
4
- "version": "2026.3.0",
4
+ "version": "2026.4.0",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "homepage": "https://fivenet.app",
package/perms.ts CHANGED
@@ -3,6 +3,7 @@
3
3
  // source: services/calendar/calendar.proto
4
4
  // source: services/centrum/centrum.proto
5
5
  // source: services/citizens/citizens.proto
6
+ // source: services/citizens/labels.proto
6
7
  // source: services/completor/completor.proto
7
8
  // source: services/documents/approval.proto
8
9
  // source: services/documents/collab.proto
@@ -27,7 +28,6 @@
27
28
  // source: services/settings/system.proto
28
29
  // source: services/stats/stats.proto
29
30
  // source: services/sync/sync.proto
30
- // source: services/sync/v2/sync.proto
31
31
  // source: services/vehicles/vehicles.proto
32
32
  // source: services/wiki/collab.proto
33
33
  // source: services/wiki/wiki.proto
@@ -52,10 +52,10 @@ export type GRPCServicePerms =
52
52
  | 'citizens.CitizensService/GetUser'
53
53
  | 'citizens.CitizensService/ListCitizens'
54
54
  | 'citizens.CitizensService/ListUserActivity'
55
- | 'citizens.CitizensService/ManageLabels'
56
55
  | 'citizens.CitizensService/SetUserProps'
56
+ | 'citizens.LabelsService/CreateOrUpdateLabel'
57
+ | 'citizens.LabelsService/DeleteLabel'
57
58
  | 'completor.CompletorService/CompleteCitizenLabels'
58
- | 'completor.CompletorService/CompleteDocumentCategories'
59
59
  | 'documents.ApprovalService/DeleteApprovalTasks'
60
60
  | 'documents.ApprovalService/RevokeApproval'
61
61
  | 'documents.ApprovalService/UpsertApprovalPolicy'
@@ -131,6 +131,7 @@ export const GRPCServices = [
131
131
  'calendar.CalendarService',
132
132
  'centrum.CentrumService',
133
133
  'citizens.CitizensService',
134
+ 'citizens.LabelsService',
134
135
  'completor.CompletorService',
135
136
  'documents.ApprovalService',
136
137
  'documents.DocumentsService',
@@ -165,10 +166,10 @@ export const GRPCServiceMethods = [
165
166
  'citizens.CitizensService/GetUser',
166
167
  'citizens.CitizensService/ListCitizens',
167
168
  'citizens.CitizensService/ListUserActivity',
168
- 'citizens.CitizensService/ManageLabels',
169
169
  'citizens.CitizensService/SetUserProps',
170
+ 'citizens.LabelsService/CreateOrUpdateLabel',
171
+ 'citizens.LabelsService/DeleteLabel',
170
172
  'completor.CompletorService/CompleteCitizenLabels',
171
- 'completor.CompletorService/CompleteDocumentCategories',
172
173
  'documents.ApprovalService/DeleteApprovalTasks',
173
174
  'documents.ApprovalService/RevokeApproval',
174
175
  'documents.ApprovalService/UpsertApprovalPolicy',
@@ -444,7 +444,7 @@ class Configuration$Type extends MessageType<Configuration> {
444
444
  super("resources.centrum.settings.Configuration", [
445
445
  { no: 1, name: "deduplication_enabled", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
446
446
  { no: 2, name: "deduplication_radius", kind: "scalar", T: 3 /*ScalarType.INT64*/, L: 2 /*LongType.NUMBER*/, options: { "buf.validate.field": { int64: { lt: "1000000", gt: "5" } } } },
447
- { no: 3, name: "deduplication_duration", kind: "message", T: () => Duration }
447
+ { no: 3, name: "deduplication_duration", kind: "message", T: () => Duration, options: { "buf.validate.field": { duration: { lte: { seconds: "3600" }, gt: {} } } } }
448
448
  ], { "codegen.dbscanner.dbscanner": { enabled: true } });
449
449
  }
450
450
  create(value?: PartialMessage<Configuration>): Configuration {
@@ -253,7 +253,7 @@ class Unit$Type extends MessageType<Unit> {
253
253
  { no: 5, name: "name", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "3", maxLen: "24" } }, "codegen.sanitizer.sanitizer": { enabled: true } } },
254
254
  { no: 6, name: "initials", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { minLen: "2", maxLen: "4" } }, "codegen.sanitizer.sanitizer": { enabled: true } } },
255
255
  { 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 } } },
256
- { no: 16, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "128", suffix: "Icon" } }, "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
256
+ { no: 16, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "128" } }, "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
257
257
  { no: 8, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "255" } }, "codegen.sanitizer.sanitizer": { enabled: true } } },
258
258
  { no: 9, name: "status", kind: "message", T: () => UnitStatus },
259
259
  { no: 11, name: "users", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => UnitAssignment },