@mattermost/types 10.12.0 → 11.1.0-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.
package/lib/apps.d.ts CHANGED
@@ -123,6 +123,7 @@ export type AppForm = {
123
123
  header?: string;
124
124
  footer?: string;
125
125
  icon?: string;
126
+ submit_label?: string;
126
127
  submit_buttons?: string;
127
128
  cancel_button?: boolean;
128
129
  submit_on_cancel?: boolean;
@@ -131,7 +132,7 @@ export type AppForm = {
131
132
  submit?: AppCall;
132
133
  depends_on?: string[];
133
134
  };
134
- export type AppFormValue = string | AppSelectOption | boolean | null;
135
+ export type AppFormValue = string | AppSelectOption | AppSelectOption[] | boolean | null;
135
136
  export type AppFormValues = {
136
137
  [name: string]: AppFormValue;
137
138
  };
@@ -159,6 +160,9 @@ export type AppField = {
159
160
  subtype?: string;
160
161
  min_length?: number;
161
162
  max_length?: number;
163
+ min_date?: string;
164
+ max_date?: string;
165
+ time_interval?: number;
162
166
  };
163
167
  export type AutocompleteSuggestion = {
164
168
  suggestion: string;
package/lib/apps.js CHANGED
@@ -145,6 +145,9 @@ function isAppForm(v) {
145
145
  if (form.icon !== undefined && typeof form.icon !== 'string') {
146
146
  return false;
147
147
  }
148
+ if (form.submit_label !== undefined && typeof form.submit_label !== 'string') {
149
+ return false;
150
+ }
148
151
  if (form.submit_buttons !== undefined && typeof form.submit_buttons !== 'string') {
149
152
  return false;
150
153
  }
@@ -178,6 +181,9 @@ function isAppFormValue(v) {
178
181
  if (v === null) {
179
182
  return true;
180
183
  }
184
+ if (Array.isArray(v)) {
185
+ return v.every(isAppSelectOption);
186
+ }
181
187
  return isAppSelectOption(v);
182
188
  }
183
189
  function isAppSelectOption(v) {
@@ -193,6 +199,25 @@ function isAppSelectOption(v) {
193
199
  }
194
200
  return true;
195
201
  }
202
+ /**
203
+ * Validates if a string is a valid date format (ISO date, datetime, or relative reference)
204
+ * Uses native Date constructor which is permissive - server-side validation is authoritative
205
+ */
206
+ function isValidDateString(dateStr) {
207
+ const relativePatterns = [
208
+ /^today$/,
209
+ /^tomorrow$/,
210
+ /^yesterday$/,
211
+ /^[+-]\d{1,4}[dwm]$/i,
212
+ ];
213
+ for (const pattern of relativePatterns) {
214
+ if (pattern.test(dateStr)) {
215
+ return true;
216
+ }
217
+ }
218
+ const date = new Date(dateStr);
219
+ return !isNaN(date.getTime());
220
+ }
196
221
  function isAppField(v) {
197
222
  if (typeof v !== 'object' || v === null) {
198
223
  return false;
@@ -246,5 +271,26 @@ function isAppField(v) {
246
271
  if (field.max_length !== undefined && typeof field.max_length !== 'number') {
247
272
  return false;
248
273
  }
274
+ if (field.min_date !== undefined) {
275
+ if (typeof field.min_date !== 'string') {
276
+ return false;
277
+ }
278
+ // Validate that min_date is a valid date format (ISO or relative)
279
+ if (!isValidDateString(field.min_date)) {
280
+ return false;
281
+ }
282
+ }
283
+ if (field.max_date !== undefined) {
284
+ if (typeof field.max_date !== 'string') {
285
+ return false;
286
+ }
287
+ // Validate that max_date is a valid date format (ISO or relative)
288
+ if (!isValidDateString(field.max_date)) {
289
+ return false;
290
+ }
291
+ }
292
+ if (field.time_interval !== undefined && typeof field.time_interval !== 'number') {
293
+ return false;
294
+ }
249
295
  return true;
250
296
  }
package/lib/channels.d.ts CHANGED
@@ -133,6 +133,7 @@ export type ChannelsState = {
133
133
  channelMemberCountsByGroup: RelationOneToOne<Channel, ChannelMemberCountsByGroup>;
134
134
  messageCounts: RelationOneToOne<Channel, ChannelMessageCount>;
135
135
  channelsMemberCount: Record<string, number>;
136
+ restrictedDMs: RelationOneToOne<Channel, boolean>;
136
137
  };
137
138
  export type ChannelModeration = {
138
139
  name: string;
package/lib/cloud.d.ts CHANGED
@@ -172,3 +172,16 @@ export type Feedback = {
172
172
  reason: string;
173
173
  comments: string;
174
174
  };
175
+ export type MessageDescriptor = {
176
+ id: string;
177
+ defaultMessage: string;
178
+ values?: Record<string, any>;
179
+ };
180
+ export type PreviewModalContentData = {
181
+ skuLabel: MessageDescriptor;
182
+ title: MessageDescriptor;
183
+ subtitle: MessageDescriptor;
184
+ videoUrl: string;
185
+ videoPoster?: string;
186
+ useCase: string;
187
+ };
package/lib/config.d.ts CHANGED
@@ -111,21 +111,20 @@ export type ClientConfig = {
111
111
  EnableUserTypingMessages: string;
112
112
  EnforceMultifactorAuthentication: string;
113
113
  ExperimentalChannelCategorySorting: string;
114
- ExperimentalClientSideCertCheck: string;
115
- ExperimentalClientSideCertEnable: string;
116
114
  ExperimentalEnableAuthenticationTransfer: string;
117
115
  ExperimentalEnableAutomaticReplies: string;
118
116
  ExperimentalEnableDefaultChannelLeaveJoinMessages: string;
119
117
  ExperimentalEnablePostMetadata: string;
120
118
  ExperimentalGroupUnreadChannels: string;
121
119
  ExperimentalPrimaryTeam: string;
122
- ExperimentalViewArchivedChannels: string;
123
120
  FileLevel: string;
124
121
  FeatureFlagAppsEnabled: string;
125
122
  FeatureFlagCallsEnabled: string;
126
123
  FeatureFlagCustomProfileAttributes: string;
127
124
  FeatureFlagAttributeBasedAccessControl: string;
128
125
  FeatureFlagWebSocketEventScope: string;
126
+ FeatureFlagInteractiveDialogAppsForm: string;
127
+ FeatureFlagContentFlagging: string;
129
128
  ForgotPasswordLink: string;
130
129
  GiphySdkKey: string;
131
130
  GoogleDeveloperKey: string;
@@ -221,6 +220,10 @@ export type ClientConfig = {
221
220
  YoutubeReferrerPolicy: 'true' | 'false';
222
221
  ScheduledPosts: string;
223
222
  DeleteAccountLink: string;
223
+ ContentFlaggingEnabled: 'true' | 'false';
224
+ EnableAttributeBasedAccessControl: string;
225
+ EnableChannelScopeAccessControl: string;
226
+ EnableUserManagedAttributes: string;
224
227
  };
225
228
  export type License = {
226
229
  id: string;
@@ -421,7 +424,6 @@ export type TeamSettings = {
421
424
  MaxNotificationsPerChannel: number;
422
425
  EnableConfirmNotificationsToChannel: boolean;
423
426
  TeammateNameDisplay: string;
424
- ExperimentalViewArchivedChannels: boolean;
425
427
  ExperimentalEnableAutomaticReplies: boolean;
426
428
  LockTeammateNameDisplay: boolean;
427
429
  ExperimentalPrimaryTeam: string;
@@ -463,7 +465,6 @@ export type LogSettings = {
463
465
  FileLocation: string;
464
466
  EnableWebhookDebugging: boolean;
465
467
  EnableDiagnostics: boolean;
466
- VerboseDiagnostics: boolean;
467
468
  EnableSentry: boolean;
468
469
  AdvancedLoggingJSON: Record<string, any>;
469
470
  MaxFieldSize: number;
@@ -479,17 +480,6 @@ export type ExperimentalAuditSettings = {
479
480
  AdvancedLoggingJSON: Record<string, any>;
480
481
  Certificate: string;
481
482
  };
482
- export type NotificationLogSettings = {
483
- EnableConsole: boolean;
484
- ConsoleLevel: string;
485
- ConsoleJson: boolean;
486
- EnableColor: boolean;
487
- EnableFile: boolean;
488
- FileLevel: string;
489
- FileJson: boolean;
490
- FileLocation: string;
491
- AdvancedLoggingJSON: Record<string, any>;
492
- };
493
483
  export type PasswordSettings = {
494
484
  MinimumLength: number;
495
485
  Lowercase: boolean;
@@ -784,8 +774,6 @@ export type MetricsSettings = {
784
774
  ClientSideUserIds: string[];
785
775
  };
786
776
  export type ExperimentalSettings = {
787
- ClientSideCertEnable: boolean;
788
- ClientSideCertCheck: string;
789
777
  LinkMetadataTimeoutMilliseconds: number;
790
778
  RestrictSystemAdmin: boolean;
791
779
  EnableSharedChannels: boolean;
@@ -838,13 +826,6 @@ export type ElasticsearchSettings = {
838
826
  Trace: string;
839
827
  IgnoredPurgeIndexes: string;
840
828
  };
841
- export type BleveSettings = {
842
- IndexDir: string;
843
- EnableIndexing: boolean;
844
- EnableSearching: boolean;
845
- EnableAutocomplete: boolean;
846
- BatchSize: number;
847
- };
848
829
  export type DataRetentionSettings = {
849
830
  EnableMessageDeletion: boolean;
850
831
  EnableFileDeletion: boolean;
@@ -926,6 +907,7 @@ export type CloudSettings = {
926
907
  CWSAPIURL: string;
927
908
  CWSMock: boolean;
928
909
  Disable: boolean;
910
+ PreviewModalBucketURL: string;
929
911
  };
930
912
  export type FeatureFlags = Record<string, string | boolean>;
931
913
  export type ImportSettings = {
@@ -942,9 +924,7 @@ export type AccessControlSettings = {
942
924
  EnableUserManagedAttributes: boolean;
943
925
  };
944
926
  export type ContentFlaggingNotificationSettings = {
945
- ReviewerSettings: ContentFlaggingReviewerSetting;
946
927
  EventTargetMapping: Record<ContentFlaggingEvent, NotificationTarget[]>;
947
- AdditionalSettings: ContentFlaggingAdditionalSettings;
948
928
  };
949
929
  export type TeamReviewerSetting = {
950
930
  Enabled: boolean;
@@ -964,7 +944,10 @@ export type ContentFlaggingAdditionalSettings = {
964
944
  HideFlaggedContent: boolean;
965
945
  };
966
946
  export type ContentFlaggingSettings = {
947
+ EnableContentFlagging: boolean;
967
948
  NotificationSettings: ContentFlaggingNotificationSettings;
949
+ ReviewerSettings: ContentFlaggingReviewerSetting;
950
+ AdditionalSettings: ContentFlaggingAdditionalSettings;
968
951
  };
969
952
  export type AdminConfig = {
970
953
  ServiceSettings: ServiceSettings;
@@ -973,7 +956,6 @@ export type AdminConfig = {
973
956
  SqlSettings: SqlSettings;
974
957
  LogSettings: LogSettings;
975
958
  ExperimentalAuditSettings: ExperimentalAuditSettings;
976
- NotificationLogSettings: NotificationLogSettings;
977
959
  PasswordSettings: PasswordSettings;
978
960
  FileSettings: FileSettings;
979
961
  EmailSettings: EmailSettings;
@@ -997,7 +979,6 @@ export type AdminConfig = {
997
979
  AnalyticsSettings: AnalyticsSettings;
998
980
  CacheSettings: CacheSettings;
999
981
  ElasticsearchSettings: ElasticsearchSettings;
1000
- BleveSettings: BleveSettings;
1001
982
  DataRetentionSettings: DataRetentionSettings;
1002
983
  MessageExportSettings: MessageExportSettings;
1003
984
  JobSettings: JobSettings;
@@ -1,2 +1,24 @@
1
+ import type { Post } from './posts';
2
+ import type { NameMappedPropertyFields, PropertyValue } from './properties';
1
3
  export type ContentFlaggingEvent = 'flagged' | 'assigned' | 'removed' | 'dismissed';
2
4
  export type NotificationTarget = 'reviewers' | 'author' | 'reporter';
5
+ export type ContentFlaggingConfig = {
6
+ reasons: string[];
7
+ reporter_comment_required: boolean;
8
+ reviewer_comment_required: boolean;
9
+ notify_reporter_on_dismissal?: boolean;
10
+ notify_reporter_on_removal?: boolean;
11
+ };
12
+ export type ContentFlaggingState = {
13
+ settings?: ContentFlaggingConfig;
14
+ fields?: NameMappedPropertyFields;
15
+ postValues?: {
16
+ [key: Post['id']]: Array<PropertyValue<unknown>>;
17
+ };
18
+ };
19
+ export declare enum ContentFlaggingStatus {
20
+ Pending = "Pending",
21
+ Assigned = "Assigned",
22
+ Removed = "Removed",
23
+ Retained = "Retained"
24
+ }
@@ -2,3 +2,11 @@
2
2
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
3
  // See LICENSE.txt for license information.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.ContentFlaggingStatus = void 0;
6
+ var ContentFlaggingStatus;
7
+ (function (ContentFlaggingStatus) {
8
+ ContentFlaggingStatus["Pending"] = "Pending";
9
+ ContentFlaggingStatus["Assigned"] = "Assigned";
10
+ ContentFlaggingStatus["Removed"] = "Removed";
11
+ ContentFlaggingStatus["Retained"] = "Retained";
12
+ })(ContentFlaggingStatus || (exports.ContentFlaggingStatus = ContentFlaggingStatus = {}));
@@ -140,6 +140,7 @@ type Dialog = {
140
140
  submit_label?: string;
141
141
  notify_on_cancel?: boolean;
142
142
  state?: string;
143
+ source_url?: string;
143
144
  };
144
145
  export type DialogSubmission = {
145
146
  url?: string;
@@ -149,9 +150,10 @@ export type DialogSubmission = {
149
150
  channel_id: string;
150
151
  team_id: string;
151
152
  submission: {
152
- [x: string]: string;
153
+ [x: string]: string | string[];
153
154
  };
154
155
  cancelled: boolean;
156
+ type?: string;
155
157
  };
156
158
  export type DialogElement = {
157
159
  display_name: string;
@@ -165,13 +167,21 @@ export type DialogElement = {
165
167
  min_length: number;
166
168
  max_length: number;
167
169
  data_source: string;
170
+ data_source_url?: string;
171
+ multiselect?: boolean;
168
172
  options: Array<{
169
173
  text: string;
170
174
  value: any;
171
175
  }>;
176
+ refresh?: boolean;
177
+ min_date?: string;
178
+ max_date?: string;
179
+ time_interval?: number;
172
180
  };
173
181
  export type SubmitDialogResponse = {
174
182
  error?: string;
175
183
  errors?: Record<string, string>;
184
+ type?: string;
185
+ form?: Dialog;
176
186
  };
177
187
  export {};
package/lib/limits.d.ts CHANGED
@@ -4,4 +4,7 @@ export type LimitsState = {
4
4
  export type ServerLimits = {
5
5
  activeUserCount: number;
6
6
  maxUsersLimit: number;
7
+ maxUsersHardLimit?: number;
8
+ lastAccessiblePostTime?: number;
9
+ postHistoryLimit?: number;
7
10
  };
package/lib/posts.d.ts CHANGED
@@ -5,7 +5,7 @@ import type { Reaction } from './reactions';
5
5
  import type { TeamType } from './teams';
6
6
  import type { UserProfile } from './users';
7
7
  import { type RelationOneToOne, type RelationOneToMany, type IDMappedObjects } from './utilities';
8
- export type PostType = 'system_add_remove' | 'system_add_to_channel' | 'system_add_to_team' | 'system_channel_deleted' | 'system_channel_restored' | 'system_displayname_change' | 'system_convert_channel' | 'system_ephemeral' | 'system_header_change' | 'system_join_channel' | 'system_join_leave' | 'system_leave_channel' | 'system_purpose_change' | 'system_remove_from_channel' | 'system_combined_user_activity' | 'system_fake_parent_deleted' | 'system_generic' | 'reminder' | 'system_wrangler' | '';
8
+ export type PostType = 'system_add_remove' | 'system_add_to_channel' | 'system_add_to_team' | 'system_channel_deleted' | 'system_channel_restored' | 'system_displayname_change' | 'system_convert_channel' | 'system_ephemeral' | 'system_header_change' | 'system_join_channel' | 'system_join_leave' | 'system_leave_channel' | 'system_purpose_change' | 'system_remove_from_channel' | 'system_combined_user_activity' | 'system_fake_parent_deleted' | 'system_generic' | 'reminder' | 'system_wrangler' | 'custom_spillage_report' | '';
9
9
  export type PostEmbedType = 'image' | 'link' | 'message_attachment' | 'opengraph' | 'permalink';
10
10
  export type PostEmbed = {
11
11
  type: PostEmbedType;
@@ -5,6 +5,7 @@ export type PropertyField = {
5
5
  name: string;
6
6
  type: FieldType;
7
7
  attrs?: {
8
+ subType?: string;
8
9
  [key: string]: unknown;
9
10
  };
10
11
  target_id?: string;
@@ -13,11 +14,15 @@ export type PropertyField = {
13
14
  update_at: number;
14
15
  delete_at: number;
15
16
  };
17
+ export type NameMappedPropertyFields = {
18
+ [key: PropertyField['name']]: PropertyField;
19
+ };
16
20
  export type PropertyValue<T> = {
17
21
  id: string;
18
22
  target_id: string;
19
23
  target_type: string;
20
24
  group_id: string;
25
+ field_id: string;
21
26
  value: T;
22
27
  create_at: number;
23
28
  update_at: number;
@@ -42,6 +47,14 @@ export type UserPropertyField = PropertyField & {
42
47
  options?: PropertyFieldOption[];
43
48
  ldap?: string;
44
49
  saml?: string;
50
+ managed?: string;
51
+ };
52
+ };
53
+ export type SelectPropertyField = PropertyField & {
54
+ attrs?: {
55
+ editable?: boolean;
56
+ options?: PropertyFieldOption[];
45
57
  };
46
58
  };
59
+ export declare const supportsOptions: (field: UserPropertyField) => boolean;
47
60
  export type UserPropertyFieldPatch = Partial<Pick<UserPropertyField, 'name' | 'attrs' | 'type'>>;
package/lib/properties.js CHANGED
@@ -2,3 +2,8 @@
2
2
  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
3
3
  // See LICENSE.txt for license information.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.supportsOptions = void 0;
6
+ const supportsOptions = (field) => {
7
+ return field.type === 'select' || field.type === 'multiselect';
8
+ };
9
+ exports.supportsOptions = supportsOptions;
package/lib/search.d.ts CHANGED
@@ -14,6 +14,10 @@ export type SearchState = {
14
14
  matches: {
15
15
  [x: string]: string[];
16
16
  };
17
+ truncationInfo?: {
18
+ posts: number;
19
+ files: number;
20
+ };
17
21
  };
18
22
  export type SearchParameter = {
19
23
  terms: string;
package/lib/store.d.ts CHANGED
@@ -5,6 +5,7 @@ import type { ChannelBookmarksState } from './channel_bookmarks';
5
5
  import type { ChannelCategoriesState } from './channel_categories';
6
6
  import type { ChannelsState } from './channels';
7
7
  import type { CloudState, CloudUsage } from './cloud';
8
+ import type { ContentFlaggingState } from './content_flagging';
8
9
  import type { EmojisState } from './emojis';
9
10
  import type { FilesState } from './files';
10
11
  import type { GeneralState } from './general';
@@ -73,6 +74,7 @@ export type GlobalState = {
73
74
  remotes?: Record<string, RemoteClusterInfo[]>;
74
75
  remotesByRemoteId?: Record<string, RemoteClusterInfo>;
75
76
  };
77
+ contentFlagging: ContentFlaggingState;
76
78
  };
77
79
  errors: any[];
78
80
  requests: {
package/lib/teams.d.ts CHANGED
@@ -42,6 +42,7 @@ export type TeamsState = {
42
42
  stats: RelationOneToOne<Team, TeamStats>;
43
43
  groupsAssociatedToTeam: any;
44
44
  totalCount: number;
45
+ contentFlaggingStatus: Record<Team['id'], boolean>;
45
46
  };
46
47
  export type TeamUnread = {
47
48
  team_id: string;
package/lib/users.d.ts CHANGED
@@ -34,6 +34,7 @@ export type UserProfile = {
34
34
  delete_at: number;
35
35
  username: string;
36
36
  password: string;
37
+ auth_data?: string;
37
38
  auth_service: string;
38
39
  email: string;
39
40
  nickname: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mattermost/types",
3
- "version": "10.12.0",
3
+ "version": "11.1.0-1",
4
4
  "description": "Shared type definitions used by the Mattermost web app",
5
5
  "keywords": [
6
6
  "mattermost"