@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
@@ -17,22 +17,36 @@ import { Struct } from "../../../google/protobuf/struct";
17
17
  */
18
18
  export interface Content {
19
19
  /**
20
- * @generated from protobuf field: optional string version = 1
20
+ * @generated from protobuf field: string version = 1
21
21
  */
22
- version?: string;
22
+ version: string;
23
23
  /**
24
- * @generated from protobuf field: optional resources.common.content.JSONNode content = 2
24
+ * @generated from protobuf field: resources.common.content.ContentType content_type = 2
25
25
  */
26
- content?: JSONNode;
26
+ contentType: ContentType;
27
27
  /**
28
- * @generated from protobuf field: optional string raw_content = 3
28
+ * Deprecated: Legacy HTML (only for viewing old content)
29
+ *
30
+ * @generated from protobuf field: optional string raw_html = 3
29
31
  */
30
- rawContent?: string;
32
+ rawHtml?: string;
33
+ /**
34
+ * Deprecated: Legacy custom HTML to JSON AST (only for viewing old content)
35
+ *
36
+ * @generated from protobuf field: optional resources.common.content.RichTextHtmlNode content = 4
37
+ */
38
+ content?: RichTextHtmlNode;
39
+ /**
40
+ * Tiptap JSON Document
41
+ *
42
+ * @generated from protobuf field: google.protobuf.Struct tiptap_json = 5
43
+ */
44
+ tiptapJson?: Struct;
31
45
  }
32
46
  /**
33
- * @generated from protobuf message resources.common.content.JSONNode
47
+ * @generated from protobuf message resources.common.content.RichTextHtmlNode
34
48
  */
35
- export interface JSONNode {
49
+ export interface RichTextHtmlNode {
36
50
  /**
37
51
  * @generated from protobuf field: resources.common.content.NodeType type = 1
38
52
  */
@@ -56,28 +70,24 @@ export interface JSONNode {
56
70
  */
57
71
  text?: string;
58
72
  /**
59
- * @generated from protobuf field: repeated resources.common.content.JSONNode content = 6
73
+ * @generated from protobuf field: repeated resources.common.content.RichTextHtmlNode content = 6
60
74
  */
61
- content: JSONNode[];
75
+ content: RichTextHtmlNode[];
62
76
  }
63
77
  /**
64
- * @generated from protobuf message resources.common.content.TiptapJSONDocument
78
+ * @generated from protobuf message resources.common.content.ExtractedContent
65
79
  */
66
- export interface TiptapJSONDocument {
67
- /**
68
- * @generated from protobuf field: google.protobuf.Struct json = 1
69
- */
70
- json?: Struct;
80
+ export interface ExtractedContent {
71
81
  /**
72
- * @generated from protobuf field: string summary = 2
82
+ * @generated from protobuf field: string text = 1
73
83
  */
74
- summary: string;
84
+ text: string;
75
85
  /**
76
- * @generated from protobuf field: uint32 word_count = 3
86
+ * @generated from protobuf field: uint32 word_count = 2
77
87
  */
78
88
  wordCount: number;
79
89
  /**
80
- * @generated from protobuf field: string first_heading = 4
90
+ * @generated from protobuf field: string first_heading = 3
81
91
  */
82
92
  firstHeading: string;
83
93
  }
@@ -90,10 +100,14 @@ export enum ContentType {
90
100
  */
91
101
  UNSPECIFIED = 0,
92
102
  /**
103
+ * Used for legacy HTML content
104
+ *
93
105
  * @generated from protobuf enum value: CONTENT_TYPE_HTML = 1;
94
106
  */
95
107
  HTML = 1,
96
108
  /**
109
+ * Used for Tiptap JSON content
110
+ *
97
111
  * @generated from protobuf enum value: CONTENT_TYPE_TIPTAP_JSON = 2;
98
112
  */
99
113
  TIPTAP_JSON = 2
@@ -127,13 +141,17 @@ export enum NodeType {
127
141
  class Content$Type extends MessageType<Content> {
128
142
  constructor() {
129
143
  super("resources.common.content.Content", [
130
- { no: 1, name: "version", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "24" } } } },
131
- { no: 2, name: "content", kind: "message", T: () => JSONNode },
132
- { no: 3, name: "raw_content", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxBytes: "2000000" } }, "codegen.sanitizer.sanitizer": { enabled: true } } }
144
+ { no: 1, name: "version", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "buf.validate.field": { string: { maxLen: "24" } } } },
145
+ { no: 2, name: "content_type", kind: "enum", T: () => ["resources.common.content.ContentType", ContentType, "CONTENT_TYPE_"], options: { "buf.validate.field": { enum: { definedOnly: true } } } },
146
+ { no: 3, name: "raw_html", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
147
+ { no: 4, name: "content", kind: "message", T: () => RichTextHtmlNode },
148
+ { no: 5, name: "tiptap_json", kind: "message", T: () => Struct, options: { "codegen.sanitizer.sanitizer": { enabled: true, tiptapJson: true } } }
133
149
  ]);
134
150
  }
135
151
  create(value?: PartialMessage<Content>): Content {
136
152
  const message = globalThis.Object.create((this.messagePrototype!));
153
+ message.version = "";
154
+ message.contentType = 0;
137
155
  if (value !== undefined)
138
156
  reflectionMergePartial<Content>(this, message, value);
139
157
  return message;
@@ -143,14 +161,20 @@ class Content$Type extends MessageType<Content> {
143
161
  while (reader.pos < end) {
144
162
  let [fieldNo, wireType] = reader.tag();
145
163
  switch (fieldNo) {
146
- case /* optional string version */ 1:
164
+ case /* string version */ 1:
147
165
  message.version = reader.string();
148
166
  break;
149
- case /* optional resources.common.content.JSONNode content */ 2:
150
- message.content = JSONNode.internalBinaryRead(reader, reader.uint32(), options, message.content);
167
+ case /* resources.common.content.ContentType content_type */ 2:
168
+ message.contentType = reader.int32();
169
+ break;
170
+ case /* optional string raw_html */ 3:
171
+ message.rawHtml = reader.string();
172
+ break;
173
+ case /* optional resources.common.content.RichTextHtmlNode content */ 4:
174
+ message.content = RichTextHtmlNode.internalBinaryRead(reader, reader.uint32(), options, message.content);
151
175
  break;
152
- case /* optional string raw_content */ 3:
153
- message.rawContent = reader.string();
176
+ case /* google.protobuf.Struct tiptap_json */ 5:
177
+ message.tiptapJson = Struct.internalBinaryRead(reader, reader.uint32(), options, message.tiptapJson);
154
178
  break;
155
179
  default:
156
180
  let u = options.readUnknownField;
@@ -164,15 +188,21 @@ class Content$Type extends MessageType<Content> {
164
188
  return message;
165
189
  }
166
190
  internalBinaryWrite(message: Content, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
167
- /* optional string version = 1; */
168
- if (message.version !== undefined)
191
+ /* string version = 1; */
192
+ if (message.version !== "")
169
193
  writer.tag(1, WireType.LengthDelimited).string(message.version);
170
- /* optional resources.common.content.JSONNode content = 2; */
194
+ /* resources.common.content.ContentType content_type = 2; */
195
+ if (message.contentType !== 0)
196
+ writer.tag(2, WireType.Varint).int32(message.contentType);
197
+ /* optional string raw_html = 3; */
198
+ if (message.rawHtml !== undefined)
199
+ writer.tag(3, WireType.LengthDelimited).string(message.rawHtml);
200
+ /* optional resources.common.content.RichTextHtmlNode content = 4; */
171
201
  if (message.content)
172
- JSONNode.internalBinaryWrite(message.content, writer.tag(2, WireType.LengthDelimited).fork(), options).join();
173
- /* optional string raw_content = 3; */
174
- if (message.rawContent !== undefined)
175
- writer.tag(3, WireType.LengthDelimited).string(message.rawContent);
202
+ RichTextHtmlNode.internalBinaryWrite(message.content, writer.tag(4, WireType.LengthDelimited).fork(), options).join();
203
+ /* google.protobuf.Struct tiptap_json = 5; */
204
+ if (message.tiptapJson)
205
+ Struct.internalBinaryWrite(message.tiptapJson, writer.tag(5, WireType.LengthDelimited).fork(), options).join();
176
206
  let u = options.writeUnknownFields;
177
207
  if (u !== false)
178
208
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -184,28 +214,28 @@ class Content$Type extends MessageType<Content> {
184
214
  */
185
215
  export const Content = new Content$Type();
186
216
  // @generated message type with reflection information, may provide speed optimized methods
187
- class JSONNode$Type extends MessageType<JSONNode> {
217
+ class RichTextHtmlNode$Type extends MessageType<RichTextHtmlNode> {
188
218
  constructor() {
189
- super("resources.common.content.JSONNode", [
219
+ super("resources.common.content.RichTextHtmlNode", [
190
220
  { no: 1, name: "type", kind: "enum", T: () => ["resources.common.content.NodeType", NodeType, "NODE_TYPE_"], options: { "buf.validate.field": { enum: { definedOnly: true } } } },
191
- { no: 2, name: "id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
192
- { no: 3, name: "tag", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
193
- { no: 4, name: "attrs", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ }, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
194
- { no: 5, name: "text", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
195
- { no: 6, name: "content", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => JSONNode }
221
+ { no: 2, name: "id", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
222
+ { no: 3, name: "tag", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
223
+ { no: 4, name: "attrs", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ }, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
224
+ { no: 5, name: "text", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
225
+ { no: 6, name: "content", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => RichTextHtmlNode }
196
226
  ]);
197
227
  }
198
- create(value?: PartialMessage<JSONNode>): JSONNode {
228
+ create(value?: PartialMessage<RichTextHtmlNode>): RichTextHtmlNode {
199
229
  const message = globalThis.Object.create((this.messagePrototype!));
200
230
  message.type = 0;
201
231
  message.tag = "";
202
232
  message.attrs = {};
203
233
  message.content = [];
204
234
  if (value !== undefined)
205
- reflectionMergePartial<JSONNode>(this, message, value);
235
+ reflectionMergePartial<RichTextHtmlNode>(this, message, value);
206
236
  return message;
207
237
  }
208
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: JSONNode): JSONNode {
238
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RichTextHtmlNode): RichTextHtmlNode {
209
239
  let message = target ?? this.create(), end = reader.pos + length;
210
240
  while (reader.pos < end) {
211
241
  let [fieldNo, wireType] = reader.tag();
@@ -225,8 +255,8 @@ class JSONNode$Type extends MessageType<JSONNode> {
225
255
  case /* optional string text */ 5:
226
256
  message.text = reader.string();
227
257
  break;
228
- case /* repeated resources.common.content.JSONNode content */ 6:
229
- message.content.push(JSONNode.internalBinaryRead(reader, reader.uint32(), options));
258
+ case /* repeated resources.common.content.RichTextHtmlNode content */ 6:
259
+ message.content.push(RichTextHtmlNode.internalBinaryRead(reader, reader.uint32(), options));
230
260
  break;
231
261
  default:
232
262
  let u = options.readUnknownField;
@@ -239,8 +269,8 @@ class JSONNode$Type extends MessageType<JSONNode> {
239
269
  }
240
270
  return message;
241
271
  }
242
- private binaryReadMap4(map: JSONNode["attrs"], reader: IBinaryReader, options: BinaryReadOptions): void {
243
- let len = reader.uint32(), end = reader.pos + len, key: keyof JSONNode["attrs"] | undefined, val: JSONNode["attrs"][any] | undefined;
272
+ private binaryReadMap4(map: RichTextHtmlNode["attrs"], reader: IBinaryReader, options: BinaryReadOptions): void {
273
+ let len = reader.uint32(), end = reader.pos + len, key: keyof RichTextHtmlNode["attrs"] | undefined, val: RichTextHtmlNode["attrs"][any] | undefined;
244
274
  while (reader.pos < end) {
245
275
  let [fieldNo, wireType] = reader.tag();
246
276
  switch (fieldNo) {
@@ -250,12 +280,12 @@ class JSONNode$Type extends MessageType<JSONNode> {
250
280
  case 2:
251
281
  val = reader.string();
252
282
  break;
253
- default: throw new globalThis.Error("unknown map entry field for resources.common.content.JSONNode.attrs");
283
+ default: throw new globalThis.Error("unknown map entry field for resources.common.content.RichTextHtmlNode.attrs");
254
284
  }
255
285
  }
256
286
  map[key ?? ""] = val ?? "";
257
287
  }
258
- internalBinaryWrite(message: JSONNode, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
288
+ internalBinaryWrite(message: RichTextHtmlNode, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
259
289
  /* resources.common.content.NodeType type = 1; */
260
290
  if (message.type !== 0)
261
291
  writer.tag(1, WireType.Varint).int32(message.type);
@@ -271,9 +301,9 @@ class JSONNode$Type extends MessageType<JSONNode> {
271
301
  /* optional string text = 5; */
272
302
  if (message.text !== undefined)
273
303
  writer.tag(5, WireType.LengthDelimited).string(message.text);
274
- /* repeated resources.common.content.JSONNode content = 6; */
304
+ /* repeated resources.common.content.RichTextHtmlNode content = 6; */
275
305
  for (let i = 0; i < message.content.length; i++)
276
- JSONNode.internalBinaryWrite(message.content[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join();
306
+ RichTextHtmlNode.internalBinaryWrite(message.content[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join();
277
307
  let u = options.writeUnknownFields;
278
308
  if (u !== false)
279
309
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -281,43 +311,39 @@ class JSONNode$Type extends MessageType<JSONNode> {
281
311
  }
282
312
  }
283
313
  /**
284
- * @generated MessageType for protobuf message resources.common.content.JSONNode
314
+ * @generated MessageType for protobuf message resources.common.content.RichTextHtmlNode
285
315
  */
286
- export const JSONNode = new JSONNode$Type();
316
+ export const RichTextHtmlNode = new RichTextHtmlNode$Type();
287
317
  // @generated message type with reflection information, may provide speed optimized methods
288
- class TiptapJSONDocument$Type extends MessageType<TiptapJSONDocument> {
318
+ class ExtractedContent$Type extends MessageType<ExtractedContent> {
289
319
  constructor() {
290
- super("resources.common.content.TiptapJSONDocument", [
291
- { no: 1, name: "json", kind: "message", T: () => Struct },
292
- { no: 2, name: "summary", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
293
- { no: 3, name: "word_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
294
- { no: 4, name: "first_heading", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } }
320
+ super("resources.common.content.ExtractedContent", [
321
+ { no: 1, name: "text", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
322
+ { no: 2, name: "word_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
323
+ { no: 3, name: "first_heading", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
295
324
  ]);
296
325
  }
297
- create(value?: PartialMessage<TiptapJSONDocument>): TiptapJSONDocument {
326
+ create(value?: PartialMessage<ExtractedContent>): ExtractedContent {
298
327
  const message = globalThis.Object.create((this.messagePrototype!));
299
- message.summary = "";
328
+ message.text = "";
300
329
  message.wordCount = 0;
301
330
  message.firstHeading = "";
302
331
  if (value !== undefined)
303
- reflectionMergePartial<TiptapJSONDocument>(this, message, value);
332
+ reflectionMergePartial<ExtractedContent>(this, message, value);
304
333
  return message;
305
334
  }
306
- internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: TiptapJSONDocument): TiptapJSONDocument {
335
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ExtractedContent): ExtractedContent {
307
336
  let message = target ?? this.create(), end = reader.pos + length;
308
337
  while (reader.pos < end) {
309
338
  let [fieldNo, wireType] = reader.tag();
310
339
  switch (fieldNo) {
311
- case /* google.protobuf.Struct json */ 1:
312
- message.json = Struct.internalBinaryRead(reader, reader.uint32(), options, message.json);
313
- break;
314
- case /* string summary */ 2:
315
- message.summary = reader.string();
340
+ case /* string text */ 1:
341
+ message.text = reader.string();
316
342
  break;
317
- case /* uint32 word_count */ 3:
343
+ case /* uint32 word_count */ 2:
318
344
  message.wordCount = reader.uint32();
319
345
  break;
320
- case /* string first_heading */ 4:
346
+ case /* string first_heading */ 3:
321
347
  message.firstHeading = reader.string();
322
348
  break;
323
349
  default:
@@ -331,19 +357,16 @@ class TiptapJSONDocument$Type extends MessageType<TiptapJSONDocument> {
331
357
  }
332
358
  return message;
333
359
  }
334
- internalBinaryWrite(message: TiptapJSONDocument, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
335
- /* google.protobuf.Struct json = 1; */
336
- if (message.json)
337
- Struct.internalBinaryWrite(message.json, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
338
- /* string summary = 2; */
339
- if (message.summary !== "")
340
- writer.tag(2, WireType.LengthDelimited).string(message.summary);
341
- /* uint32 word_count = 3; */
360
+ internalBinaryWrite(message: ExtractedContent, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
361
+ /* string text = 1; */
362
+ if (message.text !== "")
363
+ writer.tag(1, WireType.LengthDelimited).string(message.text);
364
+ /* uint32 word_count = 2; */
342
365
  if (message.wordCount !== 0)
343
- writer.tag(3, WireType.Varint).uint32(message.wordCount);
344
- /* string first_heading = 4; */
366
+ writer.tag(2, WireType.Varint).uint32(message.wordCount);
367
+ /* string first_heading = 3; */
345
368
  if (message.firstHeading !== "")
346
- writer.tag(4, WireType.LengthDelimited).string(message.firstHeading);
369
+ writer.tag(3, WireType.LengthDelimited).string(message.firstHeading);
347
370
  let u = options.writeUnknownFields;
348
371
  if (u !== false)
349
372
  (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
@@ -351,6 +374,6 @@ class TiptapJSONDocument$Type extends MessageType<TiptapJSONDocument> {
351
374
  }
352
375
  }
353
376
  /**
354
- * @generated MessageType for protobuf message resources.common.content.TiptapJSONDocument
377
+ * @generated MessageType for protobuf message resources.common.content.ExtractedContent
355
378
  */
356
- export const TiptapJSONDocument = new TiptapJSONDocument$Type();
379
+ export const ExtractedContent = new ExtractedContent$Type();
@@ -0,0 +1,267 @@
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/common/content/diff_activity.proto" (package "resources.common.content", 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
+ * One diff operation, designed for inline client rendering.
16
+ *
17
+ * @generated from protobuf message resources.common.content.ContentDiffOp
18
+ */
19
+ export interface ContentDiffOp {
20
+ /**
21
+ * @generated from protobuf field: resources.common.content.Kind kind = 1
22
+ */
23
+ kind: Kind;
24
+ /**
25
+ * Plain text segment. Can contain whitespace and newlines.
26
+ * Client renders:
27
+ * - EQUAL: normal text
28
+ * - INSERT: highlighted
29
+ * - DELETE: strikethrough or hidden behind a toggle
30
+ *
31
+ * @generated from protobuf field: string text = 2
32
+ */
33
+ text: string;
34
+ }
35
+ /**
36
+ * Optional stats to quickly show "what changed" without parsing ops.
37
+ *
38
+ * @generated from protobuf message resources.common.content.ContentDiffStats
39
+ */
40
+ export interface ContentDiffStats {
41
+ /**
42
+ * Counts are measured in runes/codepoints on the server side.
43
+ *
44
+ * @generated from protobuf field: uint32 inserted_runes = 1
45
+ */
46
+ insertedRunes: number;
47
+ /**
48
+ * @generated from protobuf field: uint32 deleted_runes = 2
49
+ */
50
+ deletedRunes: number;
51
+ /**
52
+ * Optional: number of diff ops (after cleanup/coalescing).
53
+ *
54
+ * @generated from protobuf field: uint32 op_count = 3
55
+ */
56
+ opCount: number;
57
+ }
58
+ /**
59
+ * @generated from protobuf message resources.common.content.ContentDiff
60
+ */
61
+ export interface ContentDiff {
62
+ /**
63
+ * Quick summary for badge like "+12 / -3"
64
+ *
65
+ * @generated from protobuf field: resources.common.content.ContentDiffStats stats = 1
66
+ */
67
+ stats?: ContentDiffStats;
68
+ /**
69
+ * The diff itself for inline rendering
70
+ *
71
+ * @generated from protobuf field: repeated resources.common.content.ContentDiffOp ops = 2
72
+ */
73
+ ops: ContentDiffOp[];
74
+ }
75
+ /**
76
+ * @generated from protobuf enum resources.common.content.Kind
77
+ */
78
+ export enum Kind {
79
+ /**
80
+ * @generated from protobuf enum value: KIND_UNSPECIFIED = 0;
81
+ */
82
+ UNSPECIFIED = 0,
83
+ /**
84
+ * @generated from protobuf enum value: KIND_EQUAL = 1;
85
+ */
86
+ EQUAL = 1,
87
+ /**
88
+ * @generated from protobuf enum value: KIND_INSERT = 2;
89
+ */
90
+ INSERT = 2,
91
+ /**
92
+ * @generated from protobuf enum value: KIND_DELETE = 3;
93
+ */
94
+ DELETE = 3
95
+ }
96
+ // @generated message type with reflection information, may provide speed optimized methods
97
+ class ContentDiffOp$Type extends MessageType<ContentDiffOp> {
98
+ constructor() {
99
+ super("resources.common.content.ContentDiffOp", [
100
+ { no: 1, name: "kind", kind: "enum", T: () => ["resources.common.content.Kind", Kind, "KIND_"] },
101
+ { no: 2, name: "text", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
102
+ ]);
103
+ }
104
+ create(value?: PartialMessage<ContentDiffOp>): ContentDiffOp {
105
+ const message = globalThis.Object.create((this.messagePrototype!));
106
+ message.kind = 0;
107
+ message.text = "";
108
+ if (value !== undefined)
109
+ reflectionMergePartial<ContentDiffOp>(this, message, value);
110
+ return message;
111
+ }
112
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ContentDiffOp): ContentDiffOp {
113
+ let message = target ?? this.create(), end = reader.pos + length;
114
+ while (reader.pos < end) {
115
+ let [fieldNo, wireType] = reader.tag();
116
+ switch (fieldNo) {
117
+ case /* resources.common.content.Kind kind */ 1:
118
+ message.kind = reader.int32();
119
+ break;
120
+ case /* string text */ 2:
121
+ message.text = reader.string();
122
+ break;
123
+ default:
124
+ let u = options.readUnknownField;
125
+ if (u === "throw")
126
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
127
+ let d = reader.skip(wireType);
128
+ if (u !== false)
129
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
130
+ }
131
+ }
132
+ return message;
133
+ }
134
+ internalBinaryWrite(message: ContentDiffOp, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
135
+ /* resources.common.content.Kind kind = 1; */
136
+ if (message.kind !== 0)
137
+ writer.tag(1, WireType.Varint).int32(message.kind);
138
+ /* string text = 2; */
139
+ if (message.text !== "")
140
+ writer.tag(2, WireType.LengthDelimited).string(message.text);
141
+ let u = options.writeUnknownFields;
142
+ if (u !== false)
143
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
144
+ return writer;
145
+ }
146
+ }
147
+ /**
148
+ * @generated MessageType for protobuf message resources.common.content.ContentDiffOp
149
+ */
150
+ export const ContentDiffOp = new ContentDiffOp$Type();
151
+ // @generated message type with reflection information, may provide speed optimized methods
152
+ class ContentDiffStats$Type extends MessageType<ContentDiffStats> {
153
+ constructor() {
154
+ super("resources.common.content.ContentDiffStats", [
155
+ { no: 1, name: "inserted_runes", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
156
+ { no: 2, name: "deleted_runes", kind: "scalar", T: 13 /*ScalarType.UINT32*/ },
157
+ { no: 3, name: "op_count", kind: "scalar", T: 13 /*ScalarType.UINT32*/ }
158
+ ]);
159
+ }
160
+ create(value?: PartialMessage<ContentDiffStats>): ContentDiffStats {
161
+ const message = globalThis.Object.create((this.messagePrototype!));
162
+ message.insertedRunes = 0;
163
+ message.deletedRunes = 0;
164
+ message.opCount = 0;
165
+ if (value !== undefined)
166
+ reflectionMergePartial<ContentDiffStats>(this, message, value);
167
+ return message;
168
+ }
169
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ContentDiffStats): ContentDiffStats {
170
+ let message = target ?? this.create(), end = reader.pos + length;
171
+ while (reader.pos < end) {
172
+ let [fieldNo, wireType] = reader.tag();
173
+ switch (fieldNo) {
174
+ case /* uint32 inserted_runes */ 1:
175
+ message.insertedRunes = reader.uint32();
176
+ break;
177
+ case /* uint32 deleted_runes */ 2:
178
+ message.deletedRunes = reader.uint32();
179
+ break;
180
+ case /* uint32 op_count */ 3:
181
+ message.opCount = reader.uint32();
182
+ break;
183
+ default:
184
+ let u = options.readUnknownField;
185
+ if (u === "throw")
186
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
187
+ let d = reader.skip(wireType);
188
+ if (u !== false)
189
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
190
+ }
191
+ }
192
+ return message;
193
+ }
194
+ internalBinaryWrite(message: ContentDiffStats, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
195
+ /* uint32 inserted_runes = 1; */
196
+ if (message.insertedRunes !== 0)
197
+ writer.tag(1, WireType.Varint).uint32(message.insertedRunes);
198
+ /* uint32 deleted_runes = 2; */
199
+ if (message.deletedRunes !== 0)
200
+ writer.tag(2, WireType.Varint).uint32(message.deletedRunes);
201
+ /* uint32 op_count = 3; */
202
+ if (message.opCount !== 0)
203
+ writer.tag(3, WireType.Varint).uint32(message.opCount);
204
+ let u = options.writeUnknownFields;
205
+ if (u !== false)
206
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
207
+ return writer;
208
+ }
209
+ }
210
+ /**
211
+ * @generated MessageType for protobuf message resources.common.content.ContentDiffStats
212
+ */
213
+ export const ContentDiffStats = new ContentDiffStats$Type();
214
+ // @generated message type with reflection information, may provide speed optimized methods
215
+ class ContentDiff$Type extends MessageType<ContentDiff> {
216
+ constructor() {
217
+ super("resources.common.content.ContentDiff", [
218
+ { no: 1, name: "stats", kind: "message", T: () => ContentDiffStats },
219
+ { no: 2, name: "ops", kind: "message", repeat: 2 /*RepeatType.UNPACKED*/, T: () => ContentDiffOp }
220
+ ]);
221
+ }
222
+ create(value?: PartialMessage<ContentDiff>): ContentDiff {
223
+ const message = globalThis.Object.create((this.messagePrototype!));
224
+ message.ops = [];
225
+ if (value !== undefined)
226
+ reflectionMergePartial<ContentDiff>(this, message, value);
227
+ return message;
228
+ }
229
+ internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ContentDiff): ContentDiff {
230
+ let message = target ?? this.create(), end = reader.pos + length;
231
+ while (reader.pos < end) {
232
+ let [fieldNo, wireType] = reader.tag();
233
+ switch (fieldNo) {
234
+ case /* resources.common.content.ContentDiffStats stats */ 1:
235
+ message.stats = ContentDiffStats.internalBinaryRead(reader, reader.uint32(), options, message.stats);
236
+ break;
237
+ case /* repeated resources.common.content.ContentDiffOp ops */ 2:
238
+ message.ops.push(ContentDiffOp.internalBinaryRead(reader, reader.uint32(), options));
239
+ break;
240
+ default:
241
+ let u = options.readUnknownField;
242
+ if (u === "throw")
243
+ throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);
244
+ let d = reader.skip(wireType);
245
+ if (u !== false)
246
+ (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);
247
+ }
248
+ }
249
+ return message;
250
+ }
251
+ internalBinaryWrite(message: ContentDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {
252
+ /* resources.common.content.ContentDiffStats stats = 1; */
253
+ if (message.stats)
254
+ ContentDiffStats.internalBinaryWrite(message.stats, writer.tag(1, WireType.LengthDelimited).fork(), options).join();
255
+ /* repeated resources.common.content.ContentDiffOp ops = 2; */
256
+ for (let i = 0; i < message.ops.length; i++)
257
+ ContentDiffOp.internalBinaryWrite(message.ops[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();
258
+ let u = options.writeUnknownFields;
259
+ if (u !== false)
260
+ (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
261
+ return writer;
262
+ }
263
+ }
264
+ /**
265
+ * @generated MessageType for protobuf message resources.common.content.ContentDiff
266
+ */
267
+ export const ContentDiff = new ContentDiff$Type();
@@ -32,8 +32,8 @@ export interface I18NItem {
32
32
  class I18NItem$Type extends MessageType<I18NItem> {
33
33
  constructor() {
34
34
  super("resources.common.I18NItem", [
35
- { no: 1, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } },
36
- { no: 2, name: "parameters", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ }, options: { "codegen.sanitizer.sanitizer": { enabled: true, method: "StripTags" } } }
35
+ { no: 1, name: "key", kind: "scalar", T: 9 /*ScalarType.STRING*/, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } },
36
+ { no: 2, name: "parameters", kind: "map", K: 9 /*ScalarType.STRING*/, V: { kind: "scalar", T: 9 /*ScalarType.STRING*/ }, options: { "codegen.sanitizer.sanitizer": { enabled: true, stripHtmlTags: true } } }
37
37
  ], { "codegen.dbscanner.dbscanner": { enabled: true } });
38
38
  }
39
39
  create(value?: PartialMessage<I18NItem>): I18NItem {