@fivenet-app/gen 2025.9.1 → 2026.3.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 (131) hide show
  1. package/README.md +1 -1
  2. package/clients.ts +36 -0
  3. package/codegen/perms/perms.ts +94 -15
  4. package/codegen/sanitizer/sanitizer.ts +34 -1
  5. package/package.json +2 -2
  6. package/perms.ts +137 -6
  7. package/resources/accounts/accounts.ts +98 -31
  8. package/resources/accounts/{oauth2.ts → oauth2/oauth2.ts} +20 -20
  9. package/resources/audit/audit.ts +156 -38
  10. package/resources/calendar/{access.ts → access/access.ts} +30 -30
  11. package/resources/calendar/calendar.ts +17 -477
  12. package/resources/calendar/entries/entries.ts +474 -0
  13. package/resources/centrum/{access.ts → access/access.ts} +22 -22
  14. package/resources/centrum/{dispatchers.ts → dispatchers/dispatchers.ts} +14 -14
  15. package/resources/centrum/{dispatches.ts → dispatches/dispatches.ts} +151 -185
  16. package/resources/centrum/joblist.ts +136 -0
  17. package/resources/centrum/{settings.ts → settings/settings.ts} +69 -69
  18. package/resources/centrum/{units_access.ts → units/access/access.ts} +30 -30
  19. package/resources/centrum/{units.ts → units/units.ts} +131 -51
  20. package/resources/clientconfig/clientconfig.ts +159 -34
  21. package/resources/collab/collab.ts +4 -16
  22. package/resources/common/content/content.ts +108 -85
  23. package/resources/common/content/diff_activity.ts +267 -0
  24. package/resources/common/i18n.ts +2 -2
  25. package/resources/{common/cron → cron}/cron.ts +41 -41
  26. package/resources/documents/{access.ts → access/access.ts} +30 -30
  27. package/resources/documents/{activity.ts → activity/activity.ts} +171 -123
  28. package/resources/documents/approval/approval.ts +945 -0
  29. package/resources/documents/{category.ts → category/category.ts} +7 -7
  30. package/resources/documents/{comment.ts → comment/comment.ts} +10 -10
  31. package/resources/documents/data/data.ts +303 -0
  32. package/resources/documents/documents.ts +282 -667
  33. package/resources/{common/uuid.ts → documents/forms/forms.ts} +20 -20
  34. package/resources/documents/{pins.ts → pins/pins.ts} +5 -5
  35. package/resources/documents/references/references.ts +187 -0
  36. package/resources/documents/relations/relations.ts +184 -0
  37. package/resources/documents/{requests.ts → requests/requests.ts} +18 -18
  38. package/resources/documents/stamps/stamp.ts +355 -0
  39. package/resources/documents/{templates.ts → templates/templates.ts} +426 -84
  40. package/resources/documents/{workflow.ts → workflow/workflow.ts} +264 -26
  41. package/resources/file/filestore.ts +1 -1
  42. package/resources/{common/grpcws → grpcws}/grpcws.ts +52 -52
  43. package/resources/jobs/{activity.ts → colleagues/activity/activity.ts} +54 -54
  44. package/resources/jobs/{colleagues.ts → colleagues/colleagues.ts} +17 -28
  45. package/resources/jobs/{conduct.ts → conduct/conduct.ts} +70 -45
  46. package/resources/jobs/{labels.ts → labels/labels.ts} +18 -18
  47. package/resources/jobs/{job_props.ts → props/props.ts} +26 -38
  48. package/resources/jobs/{job_settings.ts → settings/settings.ts} +53 -53
  49. package/resources/jobs/{timeclock.ts → timeclock/timeclock.ts} +17 -17
  50. package/resources/livemap/{heatmap.ts → heatmap/heatmap.ts} +4 -4
  51. package/resources/livemap/{marker_marker.ts → markers/marker_marker.ts} +35 -35
  52. package/resources/livemap/{user_marker.ts → markers/user_marker.ts} +115 -36
  53. package/resources/mailer/{access.ts → access/access.ts} +67 -67
  54. package/resources/mailer/{email.ts → emails/email.ts} +19 -19
  55. package/resources/mailer/{events.ts → events/events.ts} +24 -24
  56. package/resources/mailer/{message.ts → messages/message.ts} +29 -29
  57. package/resources/mailer/{settings.ts → settings/settings.ts} +14 -13
  58. package/resources/mailer/{template.ts → templates/template.ts} +15 -15
  59. package/resources/mailer/{thread.ts → threads/thread.ts} +29 -29
  60. package/resources/notifications/{client_view.ts → clientview/clientview.ts} +22 -22
  61. package/resources/notifications/{events.ts → events/events.ts} +20 -20
  62. package/resources/notifications/notifications.ts +4 -4
  63. package/resources/permissions/{attributes.ts → attributes/attributes.ts} +42 -42
  64. package/resources/permissions/{events.ts → events/events.ts} +7 -7
  65. package/resources/permissions/{permissions.ts → permissions/permissions.ts} +30 -19
  66. package/resources/qualifications/{access.ts → access/access.ts} +19 -19
  67. package/resources/qualifications/{exam.ts → exam/exam.ts} +269 -141
  68. package/resources/qualifications/qualifications.ts +51 -179
  69. package/resources/settings/banner.ts +3 -3
  70. package/resources/settings/config.ts +514 -14
  71. package/resources/{documents/state.ts → settings/data.ts} +41 -20
  72. package/resources/settings/perms.ts +14 -14
  73. package/resources/stats/stats.ts +379 -0
  74. package/resources/sync/{activity.ts → activity/activity.ts} +104 -25
  75. package/resources/sync/{data.ts → data/data.ts} +404 -58
  76. package/resources/sync/data/v2/data.ts +220 -0
  77. package/resources/userinfo/{user_info.ts → userinfo.ts} +71 -93
  78. package/resources/users/{activity.ts → activity/activity.ts} +121 -100
  79. package/resources/users/{labels.ts → labels/labels.ts} +12 -12
  80. package/resources/users/{licenses.ts → licenses/licenses.ts} +10 -10
  81. package/resources/users/{props.ts → props/props.ts} +91 -69
  82. package/resources/users/short/user.ts +184 -0
  83. package/resources/users/{users.ts → user.ts} +266 -195
  84. package/resources/vehicles/{activity.ts → activity/activity.ts} +20 -20
  85. package/resources/vehicles/{props.ts → props/props.ts} +28 -6
  86. package/resources/vehicles/vehicles.ts +20 -8
  87. package/resources/wiki/{access.ts → access/access.ts} +30 -30
  88. package/resources/wiki/{activity.ts → activity/activity.ts} +104 -70
  89. package/resources/wiki/page.ts +39 -15
  90. package/services/auth/auth.client.ts +23 -10
  91. package/services/auth/auth.ts +445 -262
  92. package/services/calendar/calendar.ts +56 -34
  93. package/services/centrum/centrum.ts +127 -127
  94. package/services/citizens/citizens.ts +51 -27
  95. package/services/completor/completor.ts +35 -15
  96. package/services/documents/approval.client.ts +188 -0
  97. package/services/documents/approval.ts +1776 -0
  98. package/services/documents/documents.ts +163 -185
  99. package/services/documents/forms.client.ts +51 -0
  100. package/services/documents/forms.ts +232 -0
  101. package/services/documents/stamps.client.ts +77 -0
  102. package/services/documents/stamps.ts +481 -0
  103. package/services/documents/stats.client.ts +38 -0
  104. package/services/documents/stats.ts +245 -0
  105. package/services/jobs/conduct.client.ts +30 -3
  106. package/services/jobs/conduct.ts +159 -33
  107. package/services/jobs/jobs.ts +43 -43
  108. package/services/jobs/stats.client.ts +38 -0
  109. package/services/jobs/stats.ts +207 -0
  110. package/services/jobs/timeclock.ts +39 -39
  111. package/services/livemap/livemap.ts +18 -18
  112. package/services/mailer/mailer.ts +78 -78
  113. package/services/notifications/notifications.ts +35 -35
  114. package/services/qualifications/qualifications.ts +80 -45
  115. package/services/settings/accounts.client.ts +23 -10
  116. package/services/settings/accounts.ts +191 -30
  117. package/services/settings/cron.ts +4 -4
  118. package/services/settings/laws.ts +1 -1
  119. package/services/settings/settings.ts +73 -52
  120. package/services/settings/system.client.ts +13 -0
  121. package/services/settings/system.ts +115 -15
  122. package/services/stats/stats.client.ts +7 -7
  123. package/services/stats/stats.ts +24 -24
  124. package/services/sync/sync.ts +124 -77
  125. package/services/sync/v2/sync.client.ts +331 -0
  126. package/services/sync/v2/sync.ts +1766 -0
  127. package/services/vehicles/vehicles.ts +8 -8
  128. package/services/wiki/wiki.ts +8 -8
  129. package/svcs.ts +95 -3
  130. package/resources/centrum/attributes.ts +0 -183
  131. package/resources/documents/signoff.ts +0 -55
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # FiveNet Proto Generated Typescript Files
2
2
 
3
- [![Container Images on GHCR.io](https://img.shields.io/badge/Container%20Images%20on-GHCR.io-blue)](https://github.com/fivenet-app/fivenet/v2025/pkgs/container/fivenet) [![Helm Logo](https://img.shields.io/badge/Helm%20Chart%20-available?logo=Helm&labelColor=0F1689)](https://github.com/FiveNet-app/charts) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?&logo=discord&logoColor=white)](https://discord.gg/ASRPPr8CeT) [![fivenet.app Website](https://img.shields.io/badge/Website-fivenet.app-purple)](https://fivenet.app)
3
+ [![Container Images on GHCR.io](https://img.shields.io/badge/Container%20Images%20on-GHCR.io-blue)](https://github.com/fivenet-app/fivenet/v2026/pkgs/container/fivenet) [![Helm Logo](https://img.shields.io/badge/Helm%20Chart%20-available?logo=Helm&labelColor=0F1689)](https://github.com/FiveNet-app/charts) [![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?&logo=discord&logoColor=white)](https://discord.gg/ASRPPr8CeT) [![fivenet.app Website](https://img.shields.io/badge/Website-fivenet.app-purple)](https://fivenet.app)
4
4
 
5
5
  [![Go](https://img.shields.io/badge/Go-%2300ADD8.svg?&logo=go&logoColor=white)](https://go.dev/) [![Nuxt.js](https://img.shields.io/badge/Nuxt.js-00DC82?logo=nuxtdotjs&logoColor=fff)](https://nuxt.com/) [![Nuxt UI Pro](https://img.shields.io/badge/Made%20with-Nuxt%20UI%20Pro-00DC82?logo=nuxt.js&labelColor=020420)](https://ui.nuxt.com/pro) [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=fff)](#) [![NATS.io](https://img.shields.io/badge/nats.io-gray.svg?logo=natsdotio)](https://nats.io/) [![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=fff)](https://www.docker.com/)
6
6
 
package/clients.ts CHANGED
@@ -32,6 +32,12 @@ export async function getCompletorCompletorClient() {
32
32
  return new CompletorServiceClient(useGRPCTransport());
33
33
  }
34
34
 
35
+ // Factory for documents.approval client.
36
+ export async function getDocumentsApprovalClient() {
37
+ const { ApprovalServiceClient } = await import('~~/gen/ts/services/documents/approval.client');
38
+ return new ApprovalServiceClient(useGRPCTransport());
39
+ }
40
+
35
41
  // Factory for documents.collab client.
36
42
  export async function getDocumentsCollabClient() {
37
43
  const { CollabServiceClient } = await import('~~/gen/ts/services/documents/collab.client');
@@ -44,6 +50,24 @@ export async function getDocumentsDocumentsClient() {
44
50
  return new DocumentsServiceClient(useGRPCTransport());
45
51
  }
46
52
 
53
+ // Factory for documents.forms client.
54
+ export async function getDocumentsFormsClient() {
55
+ const { FormsServiceClient } = await import('~~/gen/ts/services/documents/forms.client');
56
+ return new FormsServiceClient(useGRPCTransport());
57
+ }
58
+
59
+ // Factory for documents.stamps client.
60
+ export async function getDocumentsStampsClient() {
61
+ const { StampsServiceClient } = await import('~~/gen/ts/services/documents/stamps.client');
62
+ return new StampsServiceClient(useGRPCTransport());
63
+ }
64
+
65
+ // Factory for documents.stats client.
66
+ export async function getDocumentsStatsClient() {
67
+ const { StatsServiceClient } = await import('~~/gen/ts/services/documents/stats.client');
68
+ return new StatsServiceClient(useGRPCTransport());
69
+ }
70
+
47
71
  // Factory for filestore.filestore client.
48
72
  export async function getFilestoreFilestoreClient() {
49
73
  const { FilestoreServiceClient } = await import('~~/gen/ts/services/filestore/filestore.client');
@@ -62,6 +86,12 @@ export async function getJobsJobsClient() {
62
86
  return new JobsServiceClient(useGRPCTransport());
63
87
  }
64
88
 
89
+ // Factory for jobs.stats client.
90
+ export async function getJobsStatsClient() {
91
+ const { StatsServiceClient } = await import('~~/gen/ts/services/jobs/stats.client');
92
+ return new StatsServiceClient(useGRPCTransport());
93
+ }
94
+
65
95
  // Factory for jobs.timeclock client.
66
96
  export async function getJobsTimeclockClient() {
67
97
  const { TimeclockServiceClient } = await import('~~/gen/ts/services/jobs/timeclock.client');
@@ -140,6 +170,12 @@ export async function getSyncSyncClient() {
140
170
  return new SyncServiceClient(useGRPCTransport());
141
171
  }
142
172
 
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
+
143
179
  // Factory for vehicles.vehicles client.
144
180
  export async function getVehiclesVehiclesClient() {
145
181
  const { VehiclesServiceClient } = await import('~~/gen/ts/services/vehicles/vehicles.client');
@@ -11,11 +11,11 @@ import { UnknownFieldHandler } from "@protobuf-ts/runtime";
11
11
  import type { PartialMessage } from "@protobuf-ts/runtime";
12
12
  import { reflectionMergePartial } from "@protobuf-ts/runtime";
13
13
  import { MessageType } from "@protobuf-ts/runtime";
14
- import { AttributeType } from "../../resources/permissions/attributes";
14
+ import { AttributeType } from "../../resources/permissions/attributes/attributes";
15
15
  /**
16
- * @generated from protobuf message codegen.perms.FieldOptions
16
+ * @generated from protobuf message codegen.perms.PermsOptions
17
17
  */
18
- export interface FieldOptions {
18
+ export interface PermsOptions {
19
19
  /**
20
20
  * @generated from protobuf field: bool enabled = 1
21
21
  */
@@ -28,6 +28,10 @@ export interface FieldOptions {
28
28
  * @generated from protobuf field: optional string name = 3
29
29
  */
30
30
  name?: string;
31
+ /**
32
+ * @generated from protobuf field: repeated string names = 6
33
+ */
34
+ names: string[];
31
35
  /**
32
36
  * @generated from protobuf field: int32 order = 4
33
37
  */
@@ -50,7 +54,7 @@ export interface Attr {
50
54
  */
51
55
  value: string;
52
56
  /**
53
- * @generated from protobuf field: resources.permissions.AttributeType type = 3
57
+ * @generated from protobuf field: resources.permissions.attributes.AttributeType type = 3
54
58
  */
55
59
  type: AttributeType;
56
60
  /**
@@ -58,27 +62,42 @@ export interface Attr {
58
62
  */
59
63
  validStringList: string[];
60
64
  }
65
+ /**
66
+ * @generated from protobuf message codegen.perms.ServiceOptions
67
+ */
68
+ export interface ServiceOptions {
69
+ /**
70
+ * @generated from protobuf field: int32 order = 1
71
+ */
72
+ order: number;
73
+ /**
74
+ * @generated from protobuf field: optional string icon = 2
75
+ */
76
+ icon?: string;
77
+ }
61
78
  // @generated message type with reflection information, may provide speed optimized methods
62
- class FieldOptions$Type extends MessageType<FieldOptions> {
79
+ class PermsOptions$Type extends MessageType<PermsOptions> {
63
80
  constructor() {
64
- super("codegen.perms.FieldOptions", [
81
+ super("codegen.perms.PermsOptions", [
65
82
  { no: 1, name: "enabled", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
66
83
  { no: 2, name: "service", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
67
84
  { no: 3, name: "name", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
85
+ { no: 6, name: "names", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ },
68
86
  { no: 4, name: "order", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
69
87
  { no: 5, name: "attrs", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => Attr }
70
88
  ]);
71
89
  }
72
- create(value?: PartialMessage<FieldOptions>): FieldOptions {
90
+ create(value?: PartialMessage<PermsOptions>): PermsOptions {
73
91
  const message = globalThis.Object.create((this.messagePrototype!));
74
92
  message.enabled = false;
93
+ message.names = [];
75
94
  message.order = 0;
76
95
  message.attrs = [];
77
96
  if (value !== undefined)
78
- reflectionMergePartial<FieldOptions>(this, message, value);
97
+ reflectionMergePartial<PermsOptions>(this, message, value);
79
98
  return message;
80
99
  }
81
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FieldOptions): FieldOptions {
100
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PermsOptions): PermsOptions {
82
101
  let message = target ?? this.create(), end = reader.pos + length;
83
102
  while (reader.pos < end) {
84
103
  let [fieldNo, wireType] = reader.tag();
@@ -92,6 +111,9 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
92
111
  case /* optional string name */ 3:
93
112
  message.name = reader.string();
94
113
  break;
114
+ case /* repeated string names */ 6:
115
+ message.names.push(reader.string());
116
+ break;
95
117
  case /* int32 order */ 4:
96
118
  message.order = reader.int32();
97
119
  break;
@@ -109,7 +131,7 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
109
131
  }
110
132
  return message;
111
133
  }
112
- internalBinaryWrite(message: FieldOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
134
+ internalBinaryWrite(message: PermsOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
113
135
  /* bool enabled = 1; */
114
136
  if (message.enabled !== false)
115
137
  writer.tag(1, WireType.Varint).bool(message.enabled);
@@ -125,6 +147,9 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
125
147
  /* repeated codegen.perms.Attr attrs = 5; */
126
148
  for (let i = 0; i < message.attrs.length; i++)
127
149
  Attr.internalBinaryWrite(message.attrs[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();
150
+ /* repeated string names = 6; */
151
+ for (let i = 0; i < message.names.length; i++)
152
+ writer.tag(6, WireType.LengthDelimited).string(message.names[i]);
128
153
  let u = options.writeUnknownFields;
129
154
  if (u !== false)
130
155
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -132,16 +157,16 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
132
157
  }
133
158
  }
134
159
  /**
135
- * @generated MessageType for protobuf message codegen.perms.FieldOptions
160
+ * @generated MessageType for protobuf message codegen.perms.PermsOptions
136
161
  */
137
- export const FieldOptions = new FieldOptions$Type();
162
+ export const PermsOptions = new PermsOptions$Type();
138
163
  // @generated message type with reflection information, may provide speed optimized methods
139
164
  class Attr$Type extends MessageType<Attr> {
140
165
  constructor() {
141
166
  super("codegen.perms.Attr", [
142
167
  { no: 1, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
143
168
  { no: 2, name: "value", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
144
- { no: 3, name: "type", kind: "enum", T: () => ["resources.permissions.AttributeType", AttributeType, "ATTRIBUTE_TYPE_"] },
169
+ { no: 3, name: "type", kind: "enum", T: () => ["resources.permissions.attributes.AttributeType", AttributeType, "ATTRIBUTE_TYPE_"] },
145
170
  { no: 4, name: "valid_string_list", kind: "scalar", repeat: 2 /*RepeatType.UNPACKED*/, T: 9 /*ScalarType.STRING*/ }
146
171
  ]);
147
172
  }
@@ -166,7 +191,7 @@ class Attr$Type extends MessageType<Attr> {
166
191
  case /* string value */ 2:
167
192
  message.value = reader.string();
168
193
  break;
169
- case /* resources.permissions.AttributeType type */ 3:
194
+ case /* resources.permissions.attributes.AttributeType type */ 3:
170
195
  message.type = reader.int32();
171
196
  break;
172
197
  case /* repeated string valid_string_list */ 4:
@@ -190,7 +215,7 @@ class Attr$Type extends MessageType<Attr> {
190
215
  /* string value = 2; */
191
216
  if (message.value !== "")
192
217
  writer.tag(2, WireType.LengthDelimited).string(message.value);
193
- /* resources.permissions.AttributeType type = 3; */
218
+ /* resources.permissions.attributes.AttributeType type = 3; */
194
219
  if (message.type !== 0)
195
220
  writer.tag(3, WireType.Varint).int32(message.type);
196
221
  /* repeated string valid_string_list = 4; */
@@ -206,3 +231,57 @@ class Attr$Type extends MessageType<Attr> {
206
231
  * @generated MessageType for protobuf message codegen.perms.Attr
207
232
  */
208
233
  export const Attr = new Attr$Type();
234
+ // @generated message type with reflection information, may provide speed optimized methods
235
+ class ServiceOptions$Type extends MessageType<ServiceOptions> {
236
+ constructor() {
237
+ super("codegen.perms.ServiceOptions", [
238
+ { no: 1, name: "order", kind: "scalar", T: 5 /*ScalarType.INT32*/ },
239
+ { no: 2, name: "icon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
240
+ ]);
241
+ }
242
+ create(value?: PartialMessage<ServiceOptions>): ServiceOptions {
243
+ const message = globalThis.Object.create((this.messagePrototype!));
244
+ message.order = 0;
245
+ if (value !== undefined)
246
+ reflectionMergePartial<ServiceOptions>(this, message, value);
247
+ return message;
248
+ }
249
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ServiceOptions): ServiceOptions {
250
+ let message = target ?? this.create(), end = reader.pos + length;
251
+ while (reader.pos < end) {
252
+ let [fieldNo, wireType] = reader.tag();
253
+ switch (fieldNo) {
254
+ case /* int32 order */ 1:
255
+ message.order = reader.int32();
256
+ break;
257
+ case /* optional string icon */ 2:
258
+ message.icon = reader.string();
259
+ break;
260
+ default:
261
+ let u = options.readUnknownField;
262
+ if (u === "throw")
263
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
264
+ let d = reader.skip(wireType);
265
+ if (u !== false)
266
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
267
+ }
268
+ }
269
+ return message;
270
+ }
271
+ internalBinaryWrite(message: ServiceOptions, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
272
+ /* int32 order = 1; */
273
+ if (message.order !== 0)
274
+ writer.tag(1, WireType.Varint).int32(message.order);
275
+ /* optional string icon = 2; */
276
+ if (message.icon !== undefined)
277
+ writer.tag(2, WireType.LengthDelimited).string(message.icon);
278
+ let u = options.writeUnknownFields;
279
+ if (u !== false)
280
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
281
+ return writer;
282
+ }
283
+ }
284
+ /**
285
+ * @generated MessageType for protobuf message codegen.perms.ServiceOptions
286
+ */
287
+ export const ServiceOptions = new ServiceOptions$Type();
@@ -23,13 +23,28 @@ export interface FieldOptions {
23
23
  * @generated from protobuf field: optional string method = 2
24
24
  */
25
25
  method?: string;
26
+ /**
27
+ * @generated from protobuf field: optional bool strip_html_tags = 3
28
+ */
29
+ stripHtmlTags?: boolean;
30
+ /**
31
+ * @generated from protobuf field: optional bool tiptap_json = 4
32
+ */
33
+ tiptapJson?: boolean;
34
+ /**
35
+ * @generated from protobuf field: optional uint32 max_bytes = 5
36
+ */
37
+ maxBytes?: number;
26
38
  }
27
39
  // @generated message type with reflection information, may provide speed optimized methods
28
40
  class FieldOptions$Type extends MessageType<FieldOptions> {
29
41
  constructor() {
30
42
  super("codegen.sanitizer.FieldOptions", [
31
43
  { no: 1, name: "enabled", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
32
- { no: 2, name: "method", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
44
+ { no: 2, name: "method", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
45
+ { no: 3, name: "strip_html_tags", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
46
+ { no: 4, name: "tiptap_json", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ },
47
+ { no: 5, name: "max_bytes", kind: "scalar", opt: true, T: 13 /*ScalarType.UINT32*/ }
33
48
  ]);
34
49
  }
35
50
  create(value?: PartialMessage<FieldOptions>): FieldOptions {
@@ -50,6 +65,15 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
50
65
  case /* optional string method */ 2:
51
66
  message.method = reader.string();
52
67
  break;
68
+ case /* optional bool strip_html_tags */ 3:
69
+ message.stripHtmlTags = reader.bool();
70
+ break;
71
+ case /* optional bool tiptap_json */ 4:
72
+ message.tiptapJson = reader.bool();
73
+ break;
74
+ case /* optional uint32 max_bytes */ 5:
75
+ message.maxBytes = reader.uint32();
76
+ break;
53
77
  default:
54
78
  let u = options.readUnknownField;
55
79
  if (u === "throw")
@@ -68,6 +92,15 @@ class FieldOptions$Type extends MessageType<FieldOptions> {
68
92
  /* optional string method = 2; */
69
93
  if (message.method !== undefined)
70
94
  writer.tag(2, WireType.LengthDelimited).string(message.method);
95
+ /* optional bool strip_html_tags = 3; */
96
+ if (message.stripHtmlTags !== undefined)
97
+ writer.tag(3, WireType.Varint).bool(message.stripHtmlTags);
98
+ /* optional bool tiptap_json = 4; */
99
+ if (message.tiptapJson !== undefined)
100
+ writer.tag(4, WireType.Varint).bool(message.tiptapJson);
101
+ /* optional uint32 max_bytes = 5; */
102
+ if (message.maxBytes !== undefined)
103
+ writer.tag(5, WireType.Varint).uint32(message.maxBytes);
71
104
  let u = options.writeUnknownFields;
72
105
  if (u !== false)
73
106
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@fivenet-app/gen",
3
3
  "private": false,
4
- "version": "2025.9.1",
4
+ "version": "2026.3.0",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
7
7
  "homepage": "https://fivenet.app",
@@ -11,6 +11,6 @@
11
11
  },
12
12
  "devDependencies": {
13
13
  "@protobuf-ts/plugin": "2.11.1",
14
- "google-protobuf": "4.0.0"
14
+ "google-protobuf": "4.0.2"
15
15
  }
16
16
  }
package/perms.ts CHANGED
@@ -4,11 +4,16 @@
4
4
  // source: services/centrum/centrum.proto
5
5
  // source: services/citizens/citizens.proto
6
6
  // source: services/completor/completor.proto
7
+ // source: services/documents/approval.proto
7
8
  // source: services/documents/collab.proto
8
9
  // source: services/documents/documents.proto
10
+ // source: services/documents/forms.proto
11
+ // source: services/documents/stamps.proto
12
+ // source: services/documents/stats.proto
9
13
  // source: services/filestore/filestore.proto
10
14
  // source: services/jobs/conduct.proto
11
15
  // source: services/jobs/jobs.proto
16
+ // source: services/jobs/stats.proto
12
17
  // source: services/jobs/timeclock.proto
13
18
  // source: services/livemap/livemap.proto
14
19
  // source: services/mailer/mailer.proto
@@ -22,14 +27,16 @@
22
27
  // source: services/settings/system.proto
23
28
  // source: services/stats/stats.proto
24
29
  // source: services/sync/sync.proto
30
+ // source: services/sync/v2/sync.proto
25
31
  // source: services/vehicles/vehicles.proto
26
32
  // source: services/wiki/collab.proto
27
33
  // source: services/wiki/wiki.proto
28
34
 
29
- export type Perms =
30
- | 'Superuser/CanBeSuperuser'
31
- | 'Superuser/Superuser'
32
- | 'TODOService/TODOMethod'
35
+ export type Perms = SystemPerms | GRPCServicePerms;
36
+
37
+ export type SystemPerms = 'Superuser/CanBeSuperuser' | 'Superuser/Superuser' | 'TODOService/TODOMethod';
38
+
39
+ export type GRPCServicePerms =
33
40
  | 'auth.AuthService/ChooseCharacter'
34
41
  | 'calendar.CalendarService/CreateCalendar'
35
42
  | 'centrum.CentrumService/CreateDispatch'
@@ -48,8 +55,11 @@ export type Perms =
48
55
  | 'citizens.CitizensService/ManageLabels'
49
56
  | 'citizens.CitizensService/SetUserProps'
50
57
  | 'completor.CompletorService/CompleteCitizenLabels'
51
- | 'completor.CompletorService/CompleteCitizens'
52
58
  | 'completor.CompletorService/CompleteDocumentCategories'
59
+ | 'documents.ApprovalService/DeleteApprovalTasks'
60
+ | 'documents.ApprovalService/RevokeApproval'
61
+ | 'documents.ApprovalService/UpsertApprovalPolicy'
62
+ | 'documents.ApprovalService/UpsertApprovalTasks'
53
63
  | 'documents.DocumentsService/AddDocumentReference'
54
64
  | 'documents.DocumentsService/AddDocumentRelation'
55
65
  | 'documents.DocumentsService/ChangeDocumentOwner'
@@ -71,16 +81,22 @@ export type Perms =
71
81
  | 'documents.DocumentsService/ToggleDocument'
72
82
  | 'documents.DocumentsService/ToggleDocumentPin'
73
83
  | 'documents.DocumentsService/UpdateDocument'
84
+ | 'documents.StampsService/DeleteStamp'
85
+ | 'documents.StampsService/ListUsableStamps'
86
+ | 'documents.StampsService/UpsertStamp'
87
+ | 'documents.StatsService/GetStats'
74
88
  | 'jobs.ConductService/CreateConductEntry'
75
89
  | 'jobs.ConductService/DeleteConductEntry'
76
90
  | 'jobs.ConductService/ListConductEntries'
77
91
  | 'jobs.ConductService/UpdateConductEntry'
92
+ | 'jobs.ConductService/UploadFile'
78
93
  | 'jobs.JobsService/GetColleague'
79
94
  | 'jobs.JobsService/ListColleagueActivity'
80
95
  | 'jobs.JobsService/ListColleagues'
81
96
  | 'jobs.JobsService/ManageLabels'
82
97
  | 'jobs.JobsService/SetColleagueProps'
83
98
  | 'jobs.JobsService/SetMOTD'
99
+ | 'jobs.StatsService/GetStats'
84
100
  | 'jobs.TimeclockService/ListInactiveEmployees'
85
101
  | 'jobs.TimeclockService/ListTimeclock'
86
102
  | 'livemap.LivemapService/CreateOrUpdateMarker'
@@ -103,7 +119,122 @@ export type Perms =
103
119
  | 'settings.SettingsService/ViewAuditLog'
104
120
  | 'vehicles.VehiclesService/ListVehicles'
105
121
  | 'vehicles.VehiclesService/SetVehicleProps'
122
+ | 'wiki.WikiService/CreatePage'
106
123
  | 'wiki.WikiService/DeletePage'
107
124
  | 'wiki.WikiService/ListPageActivity'
108
125
  | 'wiki.WikiService/ListPages'
109
- | 'wiki.WikiService/UpdatePage';
126
+ | 'wiki.WikiService/UpdatePage'
127
+ | 'wiki.WikiService/UploadFile';
128
+
129
+ export const GRPCServices = [
130
+ 'auth.AuthService',
131
+ 'calendar.CalendarService',
132
+ 'centrum.CentrumService',
133
+ 'citizens.CitizensService',
134
+ 'completor.CompletorService',
135
+ 'documents.ApprovalService',
136
+ 'documents.DocumentsService',
137
+ 'documents.StampsService',
138
+ 'documents.StatsService',
139
+ 'jobs.ConductService',
140
+ 'jobs.JobsService',
141
+ 'jobs.StatsService',
142
+ 'jobs.TimeclockService',
143
+ 'livemap.LivemapService',
144
+ 'mailer.MailerService',
145
+ 'qualifications.QualificationsService',
146
+ 'settings.LawsService',
147
+ 'settings.SettingsService',
148
+ 'vehicles.VehiclesService',
149
+ 'wiki.WikiService',
150
+ ];
151
+
152
+ export const GRPCServiceMethods = [
153
+ 'auth.AuthService/ChooseCharacter',
154
+ 'calendar.CalendarService/CreateCalendar',
155
+ 'centrum.CentrumService/CreateDispatch',
156
+ 'centrum.CentrumService/CreateOrUpdateUnit',
157
+ 'centrum.CentrumService/DeleteDispatch',
158
+ 'centrum.CentrumService/DeleteUnit',
159
+ 'centrum.CentrumService/Stream',
160
+ 'centrum.CentrumService/TakeControl',
161
+ 'centrum.CentrumService/TakeDispatch',
162
+ 'centrum.CentrumService/UpdateDispatch',
163
+ 'centrum.CentrumService/UpdateDispatchers',
164
+ 'centrum.CentrumService/UpdateSettings',
165
+ 'citizens.CitizensService/GetUser',
166
+ 'citizens.CitizensService/ListCitizens',
167
+ 'citizens.CitizensService/ListUserActivity',
168
+ 'citizens.CitizensService/ManageLabels',
169
+ 'citizens.CitizensService/SetUserProps',
170
+ 'completor.CompletorService/CompleteCitizenLabels',
171
+ 'completor.CompletorService/CompleteDocumentCategories',
172
+ 'documents.ApprovalService/DeleteApprovalTasks',
173
+ 'documents.ApprovalService/RevokeApproval',
174
+ 'documents.ApprovalService/UpsertApprovalPolicy',
175
+ 'documents.ApprovalService/UpsertApprovalTasks',
176
+ 'documents.DocumentsService/AddDocumentReference',
177
+ 'documents.DocumentsService/AddDocumentRelation',
178
+ 'documents.DocumentsService/ChangeDocumentOwner',
179
+ 'documents.DocumentsService/CreateDocumentReq',
180
+ 'documents.DocumentsService/CreateOrUpdateCategory',
181
+ 'documents.DocumentsService/CreateTemplate',
182
+ 'documents.DocumentsService/DeleteCategory',
183
+ 'documents.DocumentsService/DeleteComment',
184
+ 'documents.DocumentsService/DeleteDocument',
185
+ 'documents.DocumentsService/DeleteDocumentReq',
186
+ 'documents.DocumentsService/DeleteTemplate',
187
+ 'documents.DocumentsService/ListCategories',
188
+ 'documents.DocumentsService/ListDocumentActivity',
189
+ 'documents.DocumentsService/ListDocumentReqs',
190
+ 'documents.DocumentsService/ListDocuments',
191
+ 'documents.DocumentsService/ListTemplates',
192
+ 'documents.DocumentsService/ListUserDocuments',
193
+ 'documents.DocumentsService/SetDocumentReminder',
194
+ 'documents.DocumentsService/ToggleDocument',
195
+ 'documents.DocumentsService/ToggleDocumentPin',
196
+ 'documents.DocumentsService/UpdateDocument',
197
+ 'documents.StampsService/DeleteStamp',
198
+ 'documents.StampsService/ListUsableStamps',
199
+ 'documents.StampsService/UpsertStamp',
200
+ 'documents.StatsService/GetStats',
201
+ 'jobs.ConductService/CreateConductEntry',
202
+ 'jobs.ConductService/DeleteConductEntry',
203
+ 'jobs.ConductService/ListConductEntries',
204
+ 'jobs.ConductService/UpdateConductEntry',
205
+ 'jobs.ConductService/UploadFile',
206
+ 'jobs.JobsService/GetColleague',
207
+ 'jobs.JobsService/ListColleagueActivity',
208
+ 'jobs.JobsService/ListColleagues',
209
+ 'jobs.JobsService/ManageLabels',
210
+ 'jobs.JobsService/SetColleagueProps',
211
+ 'jobs.JobsService/SetMOTD',
212
+ 'jobs.StatsService/GetStats',
213
+ 'jobs.TimeclockService/ListInactiveEmployees',
214
+ 'jobs.TimeclockService/ListTimeclock',
215
+ 'livemap.LivemapService/CreateOrUpdateMarker',
216
+ 'livemap.LivemapService/DeleteMarker',
217
+ 'livemap.LivemapService/Stream',
218
+ 'mailer.MailerService/CreateOrUpdateEmail',
219
+ 'mailer.MailerService/DeleteEmail',
220
+ 'mailer.MailerService/ListEmails',
221
+ 'qualifications.QualificationsService/DeleteQualification',
222
+ 'qualifications.QualificationsService/ListQualifications',
223
+ 'qualifications.QualificationsService/UpdateQualification',
224
+ 'settings.LawsService/CreateOrUpdateLawBook',
225
+ 'settings.LawsService/DeleteLawBook',
226
+ 'settings.SettingsService/CreateRole',
227
+ 'settings.SettingsService/DeleteRole',
228
+ 'settings.SettingsService/GetJobProps',
229
+ 'settings.SettingsService/GetRoles',
230
+ 'settings.SettingsService/SetJobProps',
231
+ 'settings.SettingsService/UpdateRolePerms',
232
+ 'settings.SettingsService/ViewAuditLog',
233
+ 'vehicles.VehiclesService/ListVehicles',
234
+ 'vehicles.VehiclesService/SetVehicleProps',
235
+ 'wiki.WikiService/CreatePage',
236
+ 'wiki.WikiService/DeletePage',
237
+ 'wiki.WikiService/ListPageActivity',
238
+ 'wiki.WikiService/ListPages',
239
+ 'wiki.WikiService/UpdatePage',
240
+ 'wiki.WikiService/UploadFile',];