@evfrenkel/decap-cms-core 3.13.0-image-conversions.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 (306) hide show
  1. package/README.md +9 -0
  2. package/dist/20.decap-cms-core.js +2 -0
  3. package/dist/20.decap-cms-core.js.map +1 -0
  4. package/dist/3802306e7b58a11862fb.wasm +0 -0
  5. package/dist/@evfrenkel/20.decap-cms-core.js +2 -0
  6. package/dist/@evfrenkel/20.decap-cms-core.js.map +1 -0
  7. package/dist/@evfrenkel/decap-cms-core.js +44 -0
  8. package/dist/@evfrenkel/decap-cms-core.js.LICENSE.txt +126 -0
  9. package/dist/@evfrenkel/decap-cms-core.js.map +1 -0
  10. package/dist/decap-cms-core.js +47 -0
  11. package/dist/decap-cms-core.js.LICENSE.txt +126 -0
  12. package/dist/decap-cms-core.js.map +1 -0
  13. package/dist/esm/actions/auth.js +97 -0
  14. package/dist/esm/actions/collections.js +15 -0
  15. package/dist/esm/actions/config.js +503 -0
  16. package/dist/esm/actions/deploys.js +80 -0
  17. package/dist/esm/actions/editorialWorkflow.js +480 -0
  18. package/dist/esm/actions/entries.js +876 -0
  19. package/dist/esm/actions/media.js +147 -0
  20. package/dist/esm/actions/mediaLibrary.js +599 -0
  21. package/dist/esm/actions/notifications.js +21 -0
  22. package/dist/esm/actions/search.js +149 -0
  23. package/dist/esm/actions/status.js +74 -0
  24. package/dist/esm/actions/waitUntil.js +32 -0
  25. package/dist/esm/backend.js +1090 -0
  26. package/dist/esm/bootstrap.js +101 -0
  27. package/dist/esm/components/App/App.js +296 -0
  28. package/dist/esm/components/App/Header.js +172 -0
  29. package/dist/esm/components/App/NotFoundPage.js +19 -0
  30. package/dist/esm/components/Collection/Collection.js +198 -0
  31. package/dist/esm/components/Collection/CollectionControls.js +47 -0
  32. package/dist/esm/components/Collection/CollectionSearch.js +222 -0
  33. package/dist/esm/components/Collection/CollectionTop.js +68 -0
  34. package/dist/esm/components/Collection/ControlButton.js +17 -0
  35. package/dist/esm/components/Collection/Entries/Entries.js +73 -0
  36. package/dist/esm/components/Collection/Entries/EntriesCollection.js +241 -0
  37. package/dist/esm/components/Collection/Entries/EntriesSearch.js +113 -0
  38. package/dist/esm/components/Collection/Entries/EntryCard.js +192 -0
  39. package/dist/esm/components/Collection/Entries/EntryListing.js +143 -0
  40. package/dist/esm/components/Collection/FilterControl.js +33 -0
  41. package/dist/esm/components/Collection/GroupControl.js +33 -0
  42. package/dist/esm/components/Collection/NestedCollection.js +308 -0
  43. package/dist/esm/components/Collection/Sidebar.js +91 -0
  44. package/dist/esm/components/Collection/SortControl.js +59 -0
  45. package/dist/esm/components/Collection/ViewStyleControl.js +41 -0
  46. package/dist/esm/components/Editor/Editor.js +466 -0
  47. package/dist/esm/components/Editor/EditorControlPane/EditorControl.js +398 -0
  48. package/dist/esm/components/Editor/EditorControlPane/EditorControlPane.js +254 -0
  49. package/dist/esm/components/Editor/EditorControlPane/Widget.js +374 -0
  50. package/dist/esm/components/Editor/EditorInterface.js +386 -0
  51. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreview.js +47 -0
  52. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewContent.js +67 -0
  53. package/dist/esm/components/Editor/EditorPreviewPane/EditorPreviewPane.js +306 -0
  54. package/dist/esm/components/Editor/EditorPreviewPane/PreviewHOC.js +27 -0
  55. package/dist/esm/components/Editor/EditorToolbar.js +554 -0
  56. package/dist/esm/components/Editor/withWorkflow.js +56 -0
  57. package/dist/esm/components/EditorWidgets/Unknown/UnknownControl.js +18 -0
  58. package/dist/esm/components/EditorWidgets/Unknown/UnknownPreview.js +20 -0
  59. package/dist/esm/components/EditorWidgets/index.js +4 -0
  60. package/dist/esm/components/MediaLibrary/EmptyMessage.js +22 -0
  61. package/dist/esm/components/MediaLibrary/MediaLibrary.js +446 -0
  62. package/dist/esm/components/MediaLibrary/MediaLibraryButtons.js +92 -0
  63. package/dist/esm/components/MediaLibrary/MediaLibraryCard.js +99 -0
  64. package/dist/esm/components/MediaLibrary/MediaLibraryCardGrid.js +198 -0
  65. package/dist/esm/components/MediaLibrary/MediaLibraryHeader.js +34 -0
  66. package/dist/esm/components/MediaLibrary/MediaLibraryModal.js +156 -0
  67. package/dist/esm/components/MediaLibrary/MediaLibrarySearch.js +51 -0
  68. package/dist/esm/components/MediaLibrary/MediaLibraryTop.js +124 -0
  69. package/dist/esm/components/UI/DragDrop.js +67 -0
  70. package/dist/esm/components/UI/ErrorBoundary.js +170 -0
  71. package/dist/esm/components/UI/FileUploadButton.js +27 -0
  72. package/dist/esm/components/UI/Modal.js +104 -0
  73. package/dist/esm/components/UI/Notifications.js +62 -0
  74. package/dist/esm/components/UI/SettingsDropdown.js +107 -0
  75. package/dist/esm/components/UI/index.js +6 -0
  76. package/dist/esm/components/Workflow/Workflow.js +133 -0
  77. package/dist/esm/components/Workflow/WorkflowCard.js +128 -0
  78. package/dist/esm/components/Workflow/WorkflowList.js +204 -0
  79. package/dist/esm/constants/collectionTypes.js +2 -0
  80. package/dist/esm/constants/collectionViews.js +2 -0
  81. package/dist/esm/constants/commitProps.js +2 -0
  82. package/dist/esm/constants/configSchema.js +695 -0
  83. package/dist/esm/constants/fieldInference.js +57 -0
  84. package/dist/esm/constants/publishModes.js +18 -0
  85. package/dist/esm/constants/validationErrorTypes.js +6 -0
  86. package/dist/esm/formats/formats.js +83 -0
  87. package/dist/esm/formats/frontmatter.js +146 -0
  88. package/dist/esm/formats/helpers.js +12 -0
  89. package/dist/esm/formats/json.js +8 -0
  90. package/dist/esm/formats/toml.js +32 -0
  91. package/dist/esm/formats/yaml.js +60 -0
  92. package/dist/esm/index.js +7 -0
  93. package/dist/esm/integrations/index.js +28 -0
  94. package/dist/esm/integrations/providers/algolia/implementation.js +174 -0
  95. package/dist/esm/integrations/providers/assetStore/implementation.js +165 -0
  96. package/dist/esm/lib/consoleError.js +3 -0
  97. package/dist/esm/lib/formatters.js +201 -0
  98. package/dist/esm/lib/i18n.js +372 -0
  99. package/dist/esm/lib/imageTransformations.js +143 -0
  100. package/dist/esm/lib/phrases.js +6 -0
  101. package/dist/esm/lib/polyfill.js +8 -0
  102. package/dist/esm/lib/registry.js +332 -0
  103. package/dist/esm/lib/serializeEntryValues.js +67 -0
  104. package/dist/esm/lib/stega.js +142 -0
  105. package/dist/esm/lib/textHelper.js +9 -0
  106. package/dist/esm/lib/urlHelper.js +129 -0
  107. package/dist/esm/mediaLibrary.js +37 -0
  108. package/dist/esm/reducers/auth.js +27 -0
  109. package/dist/esm/reducers/collections.js +428 -0
  110. package/dist/esm/reducers/combinedReducer.js +8 -0
  111. package/dist/esm/reducers/config.js +29 -0
  112. package/dist/esm/reducers/cursors.js +31 -0
  113. package/dist/esm/reducers/deploys.js +50 -0
  114. package/dist/esm/reducers/editorialWorkflow.js +83 -0
  115. package/dist/esm/reducers/entries.js +568 -0
  116. package/dist/esm/reducers/entryDraft.js +211 -0
  117. package/dist/esm/reducers/globalUI.js +25 -0
  118. package/dist/esm/reducers/index.js +66 -0
  119. package/dist/esm/reducers/integrations.js +53 -0
  120. package/dist/esm/reducers/mediaLibrary.js +252 -0
  121. package/dist/esm/reducers/medias.js +68 -0
  122. package/dist/esm/reducers/notifications.js +23 -0
  123. package/dist/esm/reducers/search.js +92 -0
  124. package/dist/esm/reducers/status.js +30 -0
  125. package/dist/esm/redux/index.js +7 -0
  126. package/dist/esm/redux/middleware/waitUntilAction.js +48 -0
  127. package/dist/esm/routing/history.js +12 -0
  128. package/dist/esm/types/diacritics.d.js +0 -0
  129. package/dist/esm/types/global.d.js +1 -0
  130. package/dist/esm/types/immutable.js +7 -0
  131. package/dist/esm/types/redux.js +14 -0
  132. package/dist/esm/types/tomlify-j0.4.d.js +0 -0
  133. package/dist/esm/valueObjects/AssetProxy.js +44 -0
  134. package/dist/esm/valueObjects/EditorComponent.js +34 -0
  135. package/dist/esm/valueObjects/Entry.js +20 -0
  136. package/index.d.ts +662 -0
  137. package/package.json +100 -0
  138. package/src/__tests__/backend.spec.js +1223 -0
  139. package/src/actions/__tests__/config.spec.js +1023 -0
  140. package/src/actions/__tests__/editorialWorkflow.spec.js +216 -0
  141. package/src/actions/__tests__/entries.spec.js +610 -0
  142. package/src/actions/__tests__/media.spec.ts +171 -0
  143. package/src/actions/__tests__/mediaLibrary.spec.js +462 -0
  144. package/src/actions/__tests__/search.spec.js +209 -0
  145. package/src/actions/auth.ts +127 -0
  146. package/src/actions/collections.ts +18 -0
  147. package/src/actions/config.ts +574 -0
  148. package/src/actions/deploys.ts +105 -0
  149. package/src/actions/editorialWorkflow.ts +567 -0
  150. package/src/actions/entries.ts +1070 -0
  151. package/src/actions/media.ts +139 -0
  152. package/src/actions/mediaLibrary.ts +639 -0
  153. package/src/actions/notifications.ts +36 -0
  154. package/src/actions/search.ts +221 -0
  155. package/src/actions/status.ts +99 -0
  156. package/src/actions/waitUntil.ts +49 -0
  157. package/src/backend.ts +1411 -0
  158. package/src/bootstrap.js +104 -0
  159. package/src/components/App/App.js +295 -0
  160. package/src/components/App/Header.js +291 -0
  161. package/src/components/App/NotFoundPage.js +23 -0
  162. package/src/components/Collection/Collection.js +210 -0
  163. package/src/components/Collection/CollectionControls.js +58 -0
  164. package/src/components/Collection/CollectionSearch.js +243 -0
  165. package/src/components/Collection/CollectionTop.js +81 -0
  166. package/src/components/Collection/ControlButton.js +27 -0
  167. package/src/components/Collection/Entries/Entries.js +82 -0
  168. package/src/components/Collection/Entries/EntriesCollection.js +277 -0
  169. package/src/components/Collection/Entries/EntriesSearch.js +102 -0
  170. package/src/components/Collection/Entries/EntryCard.js +256 -0
  171. package/src/components/Collection/Entries/EntryListing.js +151 -0
  172. package/src/components/Collection/Entries/__tests__/EntriesCollection.spec.js +163 -0
  173. package/src/components/Collection/Entries/__tests__/__snapshots__/EntriesCollection.spec.js.snap +46 -0
  174. package/src/components/Collection/FilterControl.js +39 -0
  175. package/src/components/Collection/GroupControl.js +39 -0
  176. package/src/components/Collection/NestedCollection.js +330 -0
  177. package/src/components/Collection/Sidebar.js +136 -0
  178. package/src/components/Collection/SortControl.js +68 -0
  179. package/src/components/Collection/ViewStyleControl.js +52 -0
  180. package/src/components/Collection/__tests__/Collection.spec.js +75 -0
  181. package/src/components/Collection/__tests__/NestedCollection.spec.js +445 -0
  182. package/src/components/Collection/__tests__/Sidebar.spec.js +87 -0
  183. package/src/components/Collection/__tests__/__snapshots__/Collection.spec.js.snap +144 -0
  184. package/src/components/Collection/__tests__/__snapshots__/NestedCollection.spec.js.snap +550 -0
  185. package/src/components/Collection/__tests__/__snapshots__/Sidebar.spec.js.snap +312 -0
  186. package/src/components/Editor/Editor.js +497 -0
  187. package/src/components/Editor/EditorControlPane/EditorControl.js +453 -0
  188. package/src/components/Editor/EditorControlPane/EditorControlPane.js +269 -0
  189. package/src/components/Editor/EditorControlPane/Widget.js +384 -0
  190. package/src/components/Editor/EditorInterface.js +444 -0
  191. package/src/components/Editor/EditorPreviewPane/EditorPreview.js +40 -0
  192. package/src/components/Editor/EditorPreviewPane/EditorPreviewContent.js +75 -0
  193. package/src/components/Editor/EditorPreviewPane/EditorPreviewPane.js +337 -0
  194. package/src/components/Editor/EditorPreviewPane/PreviewHOC.js +33 -0
  195. package/src/components/Editor/EditorToolbar.js +728 -0
  196. package/src/components/Editor/__tests__/Editor.spec.js +221 -0
  197. package/src/components/Editor/__tests__/EditorToolbar.spec.js +166 -0
  198. package/src/components/Editor/__tests__/__snapshots__/Editor.spec.js.snap +45 -0
  199. package/src/components/Editor/__tests__/__snapshots__/EditorToolbar.spec.js.snap +4265 -0
  200. package/src/components/Editor/withWorkflow.js +61 -0
  201. package/src/components/EditorWidgets/Unknown/UnknownControl.js +17 -0
  202. package/src/components/EditorWidgets/Unknown/UnknownPreview.js +19 -0
  203. package/src/components/EditorWidgets/index.js +5 -0
  204. package/src/components/MediaLibrary/EmptyMessage.js +28 -0
  205. package/src/components/MediaLibrary/MediaLibrary.js +411 -0
  206. package/src/components/MediaLibrary/MediaLibraryButtons.js +135 -0
  207. package/src/components/MediaLibrary/MediaLibraryCard.js +128 -0
  208. package/src/components/MediaLibrary/MediaLibraryCardGrid.js +199 -0
  209. package/src/components/MediaLibrary/MediaLibraryHeader.js +48 -0
  210. package/src/components/MediaLibrary/MediaLibraryModal.js +200 -0
  211. package/src/components/MediaLibrary/MediaLibrarySearch.js +61 -0
  212. package/src/components/MediaLibrary/MediaLibraryTop.js +144 -0
  213. package/src/components/MediaLibrary/__tests__/MediaLibraryButtons.spec.js +45 -0
  214. package/src/components/MediaLibrary/__tests__/MediaLibraryCard.spec.js +49 -0
  215. package/src/components/MediaLibrary/__tests__/__snapshots__/MediaLibraryCard.spec.js.snap +264 -0
  216. package/src/components/UI/DragDrop.js +66 -0
  217. package/src/components/UI/ErrorBoundary.js +213 -0
  218. package/src/components/UI/FileUploadButton.js +24 -0
  219. package/src/components/UI/Modal.js +112 -0
  220. package/src/components/UI/Notifications.tsx +83 -0
  221. package/src/components/UI/SettingsDropdown.js +130 -0
  222. package/src/components/UI/__tests__/ErrorBoundary.spec.js +57 -0
  223. package/src/components/UI/index.js +6 -0
  224. package/src/components/Workflow/Workflow.js +169 -0
  225. package/src/components/Workflow/WorkflowCard.js +177 -0
  226. package/src/components/Workflow/WorkflowList.js +272 -0
  227. package/src/constants/__tests__/configSchema.spec.js +644 -0
  228. package/src/constants/collectionTypes.ts +2 -0
  229. package/src/constants/collectionViews.js +2 -0
  230. package/src/constants/commitProps.ts +2 -0
  231. package/src/constants/configSchema.js +489 -0
  232. package/src/constants/fieldInference.tsx +78 -0
  233. package/src/constants/publishModes.ts +22 -0
  234. package/src/constants/validationErrorTypes.js +6 -0
  235. package/src/formats/__tests__/formats.spec.js +87 -0
  236. package/src/formats/__tests__/frontmatter.spec.js +450 -0
  237. package/src/formats/__tests__/toml.spec.js +9 -0
  238. package/src/formats/__tests__/yaml.spec.js +189 -0
  239. package/src/formats/formats.ts +97 -0
  240. package/src/formats/frontmatter.ts +150 -0
  241. package/src/formats/helpers.ts +14 -0
  242. package/src/formats/json.ts +9 -0
  243. package/src/formats/toml.ts +33 -0
  244. package/src/formats/yaml.ts +73 -0
  245. package/src/index.js +8 -0
  246. package/src/integrations/index.js +35 -0
  247. package/src/integrations/providers/algolia/implementation.js +176 -0
  248. package/src/integrations/providers/assetStore/implementation.js +148 -0
  249. package/src/lib/__tests__/formatters.spec.js +844 -0
  250. package/src/lib/__tests__/i18n.spec.js +792 -0
  251. package/src/lib/__tests__/imageTransformations.spec.ts +97 -0
  252. package/src/lib/__tests__/phrases.spec.js +119 -0
  253. package/src/lib/__tests__/registry.spec.js +261 -0
  254. package/src/lib/__tests__/serializeEntryValues.spec.js +22 -0
  255. package/src/lib/__tests__/urlHelper.spec.js +145 -0
  256. package/src/lib/consoleError.js +7 -0
  257. package/src/lib/formatters.ts +297 -0
  258. package/src/lib/i18n.ts +462 -0
  259. package/src/lib/imageTransformations.ts +212 -0
  260. package/src/lib/phrases.js +8 -0
  261. package/src/lib/polyfill.js +9 -0
  262. package/src/lib/registry.js +315 -0
  263. package/src/lib/serializeEntryValues.js +75 -0
  264. package/src/lib/stega.ts +145 -0
  265. package/src/lib/textHelper.js +11 -0
  266. package/src/lib/urlHelper.ts +152 -0
  267. package/src/mediaLibrary.ts +51 -0
  268. package/src/reducers/__tests__/auth.spec.ts +38 -0
  269. package/src/reducers/__tests__/collections.spec.js +610 -0
  270. package/src/reducers/__tests__/config.spec.js +38 -0
  271. package/src/reducers/__tests__/deploys.spec.ts +111 -0
  272. package/src/reducers/__tests__/entries.spec.js +694 -0
  273. package/src/reducers/__tests__/entryDraft.spec.js +315 -0
  274. package/src/reducers/__tests__/globalUI.js +43 -0
  275. package/src/reducers/__tests__/integrations.spec.ts +76 -0
  276. package/src/reducers/__tests__/mediaLibrary.spec.js +154 -0
  277. package/src/reducers/__tests__/medias.spec.ts +49 -0
  278. package/src/reducers/auth.ts +46 -0
  279. package/src/reducers/collections.ts +535 -0
  280. package/src/reducers/combinedReducer.ts +11 -0
  281. package/src/reducers/config.ts +38 -0
  282. package/src/reducers/cursors.js +36 -0
  283. package/src/reducers/deploys.ts +54 -0
  284. package/src/reducers/editorialWorkflow.ts +163 -0
  285. package/src/reducers/entries.ts +819 -0
  286. package/src/reducers/entryDraft.js +259 -0
  287. package/src/reducers/globalUI.ts +45 -0
  288. package/src/reducers/index.ts +82 -0
  289. package/src/reducers/integrations.ts +59 -0
  290. package/src/reducers/mediaLibrary.ts +296 -0
  291. package/src/reducers/medias.ts +66 -0
  292. package/src/reducers/notifications.ts +52 -0
  293. package/src/reducers/search.ts +111 -0
  294. package/src/reducers/status.ts +40 -0
  295. package/src/redux/index.ts +18 -0
  296. package/src/redux/middleware/waitUntilAction.ts +64 -0
  297. package/src/routing/__tests__/history.spec.ts +49 -0
  298. package/src/routing/history.ts +17 -0
  299. package/src/types/diacritics.d.ts +1 -0
  300. package/src/types/global.d.ts +8 -0
  301. package/src/types/immutable.ts +49 -0
  302. package/src/types/redux.ts +875 -0
  303. package/src/types/tomlify-j0.4.d.ts +13 -0
  304. package/src/valueObjects/AssetProxy.ts +48 -0
  305. package/src/valueObjects/EditorComponent.js +38 -0
  306. package/src/valueObjects/Entry.ts +63 -0
@@ -0,0 +1,875 @@
1
+ import type { Action } from 'redux';
2
+ import type { StaticallyTypedRecord } from './immutable';
3
+ import type { Map, List, OrderedMap, Set } from 'immutable';
4
+ import type { FILES, FOLDER } from '../constants/collectionTypes';
5
+ import type { MediaFile as BackendMediaFile } from '../backend';
6
+ import type { Auth } from '../reducers/auth';
7
+ import type { Status } from '../reducers/status';
8
+ import type { Medias } from '../reducers/medias';
9
+ import type { Deploys } from '../reducers/deploys';
10
+ import type { Search } from '../reducers/search';
11
+ import type { GlobalUI } from '../reducers/globalUI';
12
+ import type { NotificationsState } from '../reducers/notifications';
13
+ import type { formatExtensions } from '../formats/formats';
14
+
15
+ export type CmsBackendType =
16
+ | 'azure'
17
+ | 'git-gateway'
18
+ | 'github'
19
+ | 'gitlab'
20
+ | 'gitea'
21
+ | 'bitbucket'
22
+ | 'test-repo'
23
+ | 'proxy';
24
+
25
+ export type CmsMapWidgetType = 'Point' | 'LineString' | 'Polygon';
26
+
27
+ export type CmsMarkdownWidgetButton =
28
+ | 'bold'
29
+ | 'italic'
30
+ | 'code'
31
+ | 'link'
32
+ | 'heading-one'
33
+ | 'heading-two'
34
+ | 'heading-three'
35
+ | 'heading-four'
36
+ | 'heading-five'
37
+ | 'heading-six'
38
+ | 'quote'
39
+ | 'code-block'
40
+ | 'bulleted-list'
41
+ | 'numbered-list';
42
+
43
+ export interface CmsSelectWidgetOptionObject {
44
+ label: string;
45
+ value: unknown;
46
+ }
47
+
48
+ export type CmsCollectionFormatType =
49
+ | 'yml'
50
+ | 'yaml'
51
+ | 'toml'
52
+ | 'json'
53
+ | 'frontmatter'
54
+ | 'yaml-frontmatter'
55
+ | 'toml-frontmatter'
56
+ | 'json-frontmatter';
57
+
58
+ export type CmsAuthScope = 'repo' | 'public_repo';
59
+
60
+ export type CmsPublishMode = 'simple' | 'editorial_workflow';
61
+
62
+ export type CmsSlugEncoding = 'unicode' | 'ascii';
63
+
64
+ export interface CmsI18nConfig {
65
+ structure: 'multiple_folders' | 'multiple_files' | 'single_file';
66
+ locales: string[];
67
+ default_locale?: string;
68
+ }
69
+
70
+ export interface CmsFieldBase {
71
+ name: string;
72
+ label?: string;
73
+ required?: boolean;
74
+ hint?: string;
75
+ pattern?: [string, string];
76
+ i18n?: boolean | 'translate' | 'duplicate' | 'none';
77
+ media_folder?: string;
78
+ public_folder?: string;
79
+ image_transformations?: CmsImageTransformations;
80
+ comment?: string;
81
+ }
82
+
83
+ export interface CmsFieldBoolean {
84
+ widget: 'boolean';
85
+ default?: boolean;
86
+ }
87
+
88
+ export interface CmsFieldCode {
89
+ widget: 'code';
90
+ default?: unknown;
91
+
92
+ default_language?: string;
93
+ allow_language_selection?: boolean;
94
+ keys?: { code: string; lang: string };
95
+ output_code_only?: boolean;
96
+ }
97
+
98
+ export interface CmsFieldColor {
99
+ widget: 'color';
100
+ default?: string;
101
+
102
+ allowInput?: boolean;
103
+ enableAlpha?: boolean;
104
+ }
105
+
106
+ export interface CmsFieldDateTime {
107
+ widget: 'datetime';
108
+ default?: string;
109
+
110
+ format?: string;
111
+ date_format?: boolean | string;
112
+ time_format?: boolean | string;
113
+ picker_utc?: boolean;
114
+
115
+ /**
116
+ * @deprecated Use date_format instead
117
+ */
118
+ dateFormat?: boolean | string;
119
+ /**
120
+ * @deprecated Use time_format instead
121
+ */
122
+ timeFormat?: boolean | string;
123
+ /**
124
+ * @deprecated Use picker_utc instead
125
+ */
126
+ pickerUtc?: boolean;
127
+ }
128
+
129
+ export interface CmsFieldFileOrImage {
130
+ widget: 'file' | 'image';
131
+ default?: string;
132
+
133
+ media_library?: CmsMediaLibrary;
134
+ allow_multiple?: boolean;
135
+ config?: unknown;
136
+ }
137
+
138
+ export interface CmsFieldObject {
139
+ widget: 'object';
140
+ default?: unknown;
141
+
142
+ collapsed?: boolean;
143
+ summary?: string;
144
+ fields: CmsField[];
145
+ }
146
+
147
+ export interface CmsFieldList {
148
+ widget: 'list';
149
+ default?: unknown;
150
+
151
+ allow_add?: boolean;
152
+ allow_remove?: boolean;
153
+ allow_reorder?: boolean;
154
+ collapsed?: boolean;
155
+ summary?: string;
156
+ minimize_collapsed?: boolean;
157
+ label_singular?: string;
158
+ field?: CmsField;
159
+ fields?: CmsField[];
160
+ max?: number;
161
+ min?: number;
162
+ add_to_top?: boolean;
163
+ types?: (CmsFieldBase & CmsFieldObject)[];
164
+ }
165
+
166
+ export interface CmsFieldMap {
167
+ widget: 'map';
168
+ default?: string;
169
+
170
+ decimals?: number;
171
+ type?: CmsMapWidgetType;
172
+ }
173
+
174
+ export interface CmsFieldMarkdown {
175
+ widget: 'markdown';
176
+ default?: string;
177
+
178
+ minimal?: boolean;
179
+ buttons?: CmsMarkdownWidgetButton[];
180
+ editor_components?: string[];
181
+ modes?: ('raw' | 'rich_text')[];
182
+
183
+ /**
184
+ * @deprecated Use editor_components instead
185
+ */
186
+ editorComponents?: string[];
187
+ }
188
+
189
+ export interface CmsFieldRichText {
190
+ widget: 'richtext';
191
+ default?: string;
192
+
193
+ minimal?: boolean;
194
+ buttons?: CmsMarkdownWidgetButton[];
195
+ editor_components?: string[];
196
+ modes?: ('raw' | 'rich_text')[];
197
+
198
+ /**
199
+ * @deprecated Use editor_components instead
200
+ */
201
+ editorComponents?: string[];
202
+ }
203
+
204
+ export interface CmsFieldNumber {
205
+ widget: 'number';
206
+ default?: string | number;
207
+
208
+ value_type?: 'int' | 'float' | string;
209
+ min?: number;
210
+ max?: number;
211
+
212
+ step?: number;
213
+
214
+ /**
215
+ * @deprecated Use valueType instead
216
+ */
217
+ valueType?: 'int' | 'float' | string;
218
+ }
219
+
220
+ export interface CmsFieldSelect {
221
+ widget: 'select';
222
+ default?: string | string[];
223
+
224
+ options: string[] | CmsSelectWidgetOptionObject[];
225
+ multiple?: boolean;
226
+ min?: number;
227
+ max?: number;
228
+ }
229
+
230
+ export interface CmsFieldRelation {
231
+ widget: 'relation';
232
+ default?: string | string[];
233
+
234
+ collection: string;
235
+ value_field: string;
236
+ search_fields: string[];
237
+ file?: string;
238
+ display_fields?: string[];
239
+ multiple?: boolean;
240
+ options_length?: number;
241
+
242
+ /**
243
+ * @deprecated Use value_field instead
244
+ */
245
+ valueField?: string;
246
+ /**
247
+ * @deprecated Use search_fields instead
248
+ */
249
+ searchFields?: string[];
250
+ /**
251
+ * @deprecated Use display_fields instead
252
+ */
253
+ displayFields?: string[];
254
+ /**
255
+ * @deprecated Use options_length instead
256
+ */
257
+ optionsLength?: number;
258
+ }
259
+
260
+ export interface CmsFieldHidden {
261
+ widget: 'hidden';
262
+ default?: unknown;
263
+ }
264
+
265
+ export interface CmsFieldStringOrText {
266
+ // This is the default widget, so declaring its type is optional.
267
+ widget?: 'string' | 'text';
268
+ default?: string;
269
+ visualEditing?: boolean;
270
+ }
271
+
272
+ export interface CmsFieldMeta {
273
+ name: string;
274
+ label: string;
275
+ widget: string;
276
+ required: boolean;
277
+ index_file?: string;
278
+ meta: boolean;
279
+ }
280
+
281
+ export type CmsField = CmsFieldBase &
282
+ (
283
+ | CmsFieldBoolean
284
+ | CmsFieldCode
285
+ | CmsFieldColor
286
+ | CmsFieldDateTime
287
+ | CmsFieldFileOrImage
288
+ | CmsFieldList
289
+ | CmsFieldMap
290
+ | CmsFieldMarkdown
291
+ | CmsFieldRichText
292
+ | CmsFieldNumber
293
+ | CmsFieldObject
294
+ | CmsFieldRelation
295
+ | CmsFieldSelect
296
+ | CmsFieldHidden
297
+ | CmsFieldStringOrText
298
+ | CmsFieldMeta
299
+ );
300
+
301
+ export interface CmsCollectionFile {
302
+ name: string;
303
+ label: string;
304
+ file: string;
305
+ fields: CmsField[];
306
+ label_singular?: string;
307
+ description?: string;
308
+ preview_path?: string;
309
+ preview_path_date_field?: string;
310
+ preview_path_preserve_slashes?: boolean;
311
+ i18n?: boolean | CmsI18nConfig;
312
+ media_folder?: string;
313
+ public_folder?: string;
314
+ }
315
+
316
+ export interface ViewFilter {
317
+ label: string;
318
+ field: string;
319
+ pattern: string;
320
+ id: string;
321
+ }
322
+
323
+ export interface ViewGroup {
324
+ label: string;
325
+ field: string;
326
+ pattern: string;
327
+ id: string;
328
+ }
329
+
330
+ export interface SortableField {
331
+ field: string;
332
+ label?: string;
333
+ default_sort?: boolean | 'asc' | 'desc';
334
+ }
335
+
336
+ export interface CmsCollection {
337
+ name: string;
338
+ label: string;
339
+ label_singular?: string;
340
+ description?: string;
341
+ folder?: string;
342
+ files?: CmsCollectionFile[];
343
+ identifier_field?: string;
344
+ summary?: string;
345
+ slug?: string;
346
+ preview_path?: string;
347
+ preview_path_date_field?: string;
348
+ preview_path_preserve_slashes?: boolean;
349
+ create?: boolean;
350
+ delete?: boolean;
351
+ editor?: {
352
+ preview?: boolean;
353
+ visualEditing?: boolean;
354
+ };
355
+ publish?: boolean;
356
+ nested?: {
357
+ depth: number;
358
+ };
359
+ type: typeof FOLDER | typeof FILES;
360
+ meta?: { path?: { label: string; widget: string; index_file?: string } };
361
+
362
+ /**
363
+ * It accepts the following values: yml, yaml, toml, json, md, markdown, html
364
+ *
365
+ * You may also specify a custom extension not included in the list above, by specifying the format value.
366
+ */
367
+ extension?: string;
368
+ format?: CmsCollectionFormatType;
369
+
370
+ frontmatter_delimiter?: string[] | string;
371
+ fields?: CmsField[];
372
+ filter?: { field: string; value: unknown };
373
+ path?: string;
374
+ media_folder?: string;
375
+ public_folder?: string;
376
+ sortable_fields?: (string | SortableField)[];
377
+ view_filters?: ViewFilter[];
378
+ view_groups?: ViewGroup[];
379
+ i18n?: boolean | CmsI18nConfig;
380
+
381
+ /**
382
+ * @deprecated Use sortable_fields instead
383
+ */
384
+ sortableFields?: (string | SortableField)[];
385
+ }
386
+
387
+ export interface CmsBackend {
388
+ name: CmsBackendType;
389
+ auth_scope?: CmsAuthScope;
390
+ open_authoring?: boolean;
391
+ repo?: string;
392
+ branch?: string;
393
+ api_root?: string;
394
+ site_domain?: string;
395
+ base_url?: string;
396
+ auth_endpoint?: string;
397
+ cms_label_prefix?: string;
398
+ squash_merges?: boolean;
399
+ signoff_commits?: boolean;
400
+ proxy_url?: string;
401
+ commit_messages?: {
402
+ create?: string;
403
+ update?: string;
404
+ delete?: string;
405
+ uploadMedia?: string;
406
+ deleteMedia?: string;
407
+ openAuthoring?: string;
408
+ };
409
+ }
410
+
411
+ export interface CmsSlug {
412
+ encoding?: CmsSlugEncoding;
413
+ clean_accents?: boolean;
414
+ sanitize_replacement?: string;
415
+ }
416
+
417
+ export interface CmsLocalBackend {
418
+ url?: string;
419
+ allowed_hosts?: string[];
420
+ }
421
+
422
+ export interface CmsIssueReports {
423
+ url?: string;
424
+ }
425
+
426
+ export type CmsImageTransformationFormat = 'jpg' | 'jpeg' | 'png' | 'webp';
427
+
428
+ export interface CmsImageTransformationVariant {
429
+ name: string;
430
+ width?: number;
431
+ height?: number;
432
+ format?: CmsImageTransformationFormat;
433
+ quality?: number;
434
+ default?: boolean;
435
+ keep_original_size?: boolean;
436
+ }
437
+
438
+ export type CmsImageTransformations =
439
+ | CmsImageTransformationVariant[]
440
+ | {
441
+ keep_original?: boolean;
442
+ variants: CmsImageTransformationVariant[];
443
+ };
444
+
445
+ export interface CmsConfig {
446
+ backend: CmsBackend;
447
+ collections: CmsCollection[];
448
+ locale?: string;
449
+ site_url?: string;
450
+ display_url?: string;
451
+ logo_url?: string; // Deprecated, replaced by `logo.src`
452
+ logo?: {
453
+ src: string;
454
+ show_in_header?: boolean;
455
+ };
456
+ show_preview_links?: boolean;
457
+ media_folder?: string;
458
+ public_folder?: string;
459
+ media_folder_relative?: boolean;
460
+ image_transformations?: CmsImageTransformations;
461
+ media_library?: CmsMediaLibrary;
462
+ publish_mode?: CmsPublishMode;
463
+ load_config_file?: boolean;
464
+ integrations?: {
465
+ hooks: string[];
466
+ provider: string;
467
+ collections?: '*' | string[];
468
+ applicationID?: string;
469
+ apiKey?: string;
470
+ getSignedFormURL?: string;
471
+ }[];
472
+ slug?: CmsSlug;
473
+ i18n?: CmsI18nConfig;
474
+ issue_reports?: CmsIssueReports;
475
+ local_backend?: boolean | CmsLocalBackend;
476
+ editor?: {
477
+ preview?: boolean;
478
+ };
479
+ error: string | undefined;
480
+ isFetching: boolean;
481
+ }
482
+
483
+ export type CmsMediaLibraryOptions = unknown; // TODO: type properly
484
+
485
+ export interface CmsMediaLibrary {
486
+ name: string;
487
+ config?: CmsMediaLibraryOptions;
488
+ }
489
+
490
+ export type SlugConfig = StaticallyTypedRecord<{
491
+ encoding: string;
492
+ clean_accents: boolean;
493
+ sanitize_replacement: string;
494
+ }>;
495
+
496
+ type BackendObject = {
497
+ name: string;
498
+ repo?: string | null;
499
+ open_authoring?: boolean;
500
+ branch?: string;
501
+ api_root?: string;
502
+ squash_merges?: boolean;
503
+ use_graphql?: boolean;
504
+ preview_context?: string;
505
+ identity_url?: string;
506
+ gateway_url?: string;
507
+ large_media_url?: string;
508
+ use_large_media_transforms_in_media_library?: boolean;
509
+ commit_messages: Map<string, string>;
510
+ };
511
+
512
+ type Backend = StaticallyTypedRecord<Backend> & BackendObject;
513
+
514
+ export type Config = StaticallyTypedRecord<{
515
+ backend: Backend;
516
+ media_folder: string;
517
+ public_folder: string;
518
+ publish_mode?: string;
519
+ media_library: StaticallyTypedRecord<{ name: string }> & { name: string };
520
+ locale?: string;
521
+ slug: SlugConfig;
522
+ media_folder_relative?: boolean;
523
+ base_url?: string;
524
+ site_id?: string;
525
+ site_url?: string;
526
+ show_preview_links?: boolean;
527
+ isFetching?: boolean;
528
+ integrations: List<Integration>;
529
+ collections: List<StaticallyTypedRecord<{ name: string }>>;
530
+ }>;
531
+
532
+ type PagesObject = {
533
+ [collection: string]: { isFetching: boolean; page: number; ids: List<string> };
534
+ };
535
+
536
+ type Pages = StaticallyTypedRecord<PagesObject>;
537
+
538
+ type EntitiesObject = { [key: string]: EntryMap };
539
+
540
+ export enum SortDirection {
541
+ Ascending = 'Ascending',
542
+ Descending = 'Descending',
543
+ None = 'None',
544
+ }
545
+
546
+ export type SortObject = { key: string; direction: SortDirection };
547
+
548
+ export type SortMap = OrderedMap<string, StaticallyTypedRecord<SortObject>>;
549
+
550
+ export type Sort = Map<string, SortMap>;
551
+
552
+ export type FilterMap = StaticallyTypedRecord<ViewFilter & { active: boolean }>;
553
+
554
+ export type GroupMap = StaticallyTypedRecord<ViewGroup & { active: boolean }>;
555
+
556
+ export type Filter = Map<string, Map<string, FilterMap>>; // collection.field.active
557
+
558
+ export type Group = Map<string, Map<string, GroupMap>>; // collection.field.active
559
+
560
+ export type GroupOfEntries = {
561
+ id: string;
562
+ label: string;
563
+ value: string | boolean | undefined;
564
+ paths: Set<string>;
565
+ };
566
+
567
+ export type Entities = StaticallyTypedRecord<EntitiesObject>;
568
+
569
+ export type Entries = StaticallyTypedRecord<{
570
+ pages: Pages & PagesObject;
571
+ entities: Entities & EntitiesObject;
572
+ sort: Sort;
573
+ filter: Filter;
574
+ group: Group;
575
+ viewStyle: string;
576
+ }>;
577
+
578
+ export type EditorialWorkflow = StaticallyTypedRecord<{
579
+ pages: Pages & PagesObject;
580
+ entities: Entities & EntitiesObject;
581
+ }>;
582
+
583
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
584
+ export type EntryObject = {
585
+ path: string;
586
+ slug: string;
587
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
588
+ data: any;
589
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
590
+ i18n?: any;
591
+ collection: string;
592
+ mediaFiles: List<MediaFileMap>;
593
+ newRecord: boolean;
594
+ author?: string;
595
+ updatedOn?: string;
596
+ status: string;
597
+ meta: StaticallyTypedRecord<{ path: string }>;
598
+ };
599
+
600
+ export type EntryMap = StaticallyTypedRecord<EntryObject>;
601
+
602
+ export type Entry = EntryMap & EntryObject;
603
+
604
+ export type FieldsErrors = StaticallyTypedRecord<{ [field: string]: { type: string }[] }>;
605
+
606
+ export type EntryDraft = StaticallyTypedRecord<{
607
+ entry: Entry;
608
+ fieldsErrors: FieldsErrors;
609
+ fieldsMetaData?: Map<string, Map<string, string>>;
610
+ }>;
611
+
612
+ export type EntryField = StaticallyTypedRecord<{
613
+ field?: EntryField;
614
+ fields?: List<EntryField>;
615
+ types?: List<EntryField>;
616
+ widget: string;
617
+ name: string;
618
+ default: string | null | boolean | List<unknown>;
619
+ media_folder?: string;
620
+ multiple?: boolean;
621
+ public_folder?: string;
622
+ image_transformations?: CmsImageTransformations;
623
+ comment?: string;
624
+ meta?: boolean;
625
+ i18n: 'translate' | 'duplicate' | 'none';
626
+ }>;
627
+
628
+ export type EntryFields = List<EntryField>;
629
+
630
+ export type FilterRule = StaticallyTypedRecord<{
631
+ value: string;
632
+ field: string;
633
+ }>;
634
+
635
+ export type CollectionFile = StaticallyTypedRecord<{
636
+ file: string;
637
+ name: string;
638
+ fields: EntryFields;
639
+ label: string;
640
+ media_folder?: string;
641
+ public_folder?: string;
642
+ preview_path?: string;
643
+ preview_path_date_field?: string;
644
+ }>;
645
+
646
+ export type CollectionFiles = List<CollectionFile>;
647
+
648
+ type NestedObject = { depth: number; subfolders?: boolean };
649
+
650
+ type Nested = StaticallyTypedRecord<NestedObject>;
651
+
652
+ type PathObject = { label: string; widget: string; index_file: string };
653
+
654
+ type MetaObject = {
655
+ path?: StaticallyTypedRecord<PathObject>;
656
+ };
657
+
658
+ type Meta = StaticallyTypedRecord<MetaObject>;
659
+
660
+ type i18n = StaticallyTypedRecord<{
661
+ structure: string;
662
+ locales: string[];
663
+ default_locale: string;
664
+ }>;
665
+
666
+ export type Format = keyof typeof formatExtensions | string;
667
+
668
+ type CollectionObject = {
669
+ name: string;
670
+ folder?: string;
671
+ files?: CollectionFiles;
672
+ fields: EntryFields;
673
+ isFetching: boolean;
674
+ media_folder?: string;
675
+ public_folder?: string;
676
+ preview_path?: string;
677
+ preview_path_date_field?: string;
678
+ preview_path_preserve_slashes?: boolean;
679
+ summary?: string;
680
+ filter?: FilterRule;
681
+ type: 'file_based_collection' | 'folder_based_collection';
682
+ extension?: string;
683
+ format?: Format;
684
+ frontmatter_delimiter?: List<string> | string | [string, string];
685
+ create?: boolean;
686
+ delete?: boolean;
687
+ identifier_field?: string;
688
+ path?: string;
689
+ slug?: string;
690
+ label_singular?: string;
691
+ label: string;
692
+ sortable_fields: List<StaticallyTypedRecord<SortableField>>;
693
+ view_filters: List<StaticallyTypedRecord<ViewFilter>>;
694
+ view_groups: List<StaticallyTypedRecord<ViewGroup>>;
695
+ nested?: Nested;
696
+ meta?: Meta;
697
+ i18n: i18n;
698
+ };
699
+
700
+ export type Collection = StaticallyTypedRecord<CollectionObject>;
701
+
702
+ export type Collections = StaticallyTypedRecord<{ [path: string]: Collection & CollectionObject }>;
703
+
704
+ export interface MediaLibraryInstance {
705
+ show: (args: {
706
+ id?: string;
707
+ value?: string;
708
+ config: StaticallyTypedRecord<{}>;
709
+ allowMultiple?: boolean;
710
+ imagesOnly?: boolean;
711
+ }) => void;
712
+ hide: () => void;
713
+ onClearControl: (args: { id: string }) => void;
714
+ onRemoveControl: (args: { id: string }) => void;
715
+ enableStandalone: () => boolean;
716
+ }
717
+
718
+ export type DisplayURL = { id: string; path: string } | string;
719
+
720
+ export type MediaFile = BackendMediaFile & { key?: string };
721
+
722
+ export type MediaFileMap = StaticallyTypedRecord<MediaFile>;
723
+
724
+ type DisplayURLStateObject = {
725
+ isFetching: boolean;
726
+ url?: string;
727
+ err?: Error;
728
+ };
729
+
730
+ export type DisplayURLState = StaticallyTypedRecord<DisplayURLStateObject>;
731
+
732
+ interface DisplayURLsObject {
733
+ [id: string]: DisplayURLState;
734
+ }
735
+
736
+ export type MediaLibrary = StaticallyTypedRecord<{
737
+ externalLibrary?: MediaLibraryInstance;
738
+ files: MediaFile[];
739
+ displayURLs: StaticallyTypedRecord<DisplayURLsObject> & DisplayURLsObject;
740
+ isLoading: boolean;
741
+ }>;
742
+
743
+ export type Hook = string | boolean;
744
+
745
+ export type Integrations = StaticallyTypedRecord<{
746
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
747
+ hooks: { [collectionOrHook: string]: any };
748
+ }>;
749
+
750
+ export type Cursors = StaticallyTypedRecord<{}>;
751
+
752
+ export interface State {
753
+ auth: Auth;
754
+ config: CmsConfig;
755
+ cursors: Cursors;
756
+ collections: Collections;
757
+ deploys: Deploys;
758
+ globalUI: GlobalUI;
759
+ editorialWorkflow: EditorialWorkflow;
760
+ entries: Entries;
761
+ entryDraft: EntryDraft;
762
+ integrations: Integrations;
763
+ medias: Medias;
764
+ mediaLibrary: MediaLibrary;
765
+ search: Search;
766
+ status: Status;
767
+ notifications: NotificationsState;
768
+ }
769
+
770
+ export interface Integration {
771
+ hooks: string[];
772
+ collections?: string | string[];
773
+ provider: string;
774
+ }
775
+
776
+ interface EntryPayload {
777
+ collection: string;
778
+ }
779
+
780
+ export interface EntryRequestPayload extends EntryPayload {
781
+ slug: string;
782
+ }
783
+
784
+ export interface EntrySuccessPayload extends EntryPayload {
785
+ entry: EntryObject;
786
+ }
787
+
788
+ export interface EntryFailurePayload extends EntryPayload {
789
+ slug: string;
790
+ error: Error;
791
+ }
792
+
793
+ export interface EntryDeletePayload {
794
+ entrySlug: string;
795
+ collectionName: string;
796
+ }
797
+
798
+ export type EntriesRequestPayload = EntryPayload;
799
+
800
+ export interface EntriesSuccessPayload extends EntryPayload {
801
+ entries: EntryObject[];
802
+ append: boolean;
803
+ page: number;
804
+ }
805
+ export interface EntriesSortRequestPayload extends EntryPayload {
806
+ key: string;
807
+ direction: string;
808
+ }
809
+
810
+ export interface EntriesSortFailurePayload extends EntriesSortRequestPayload {
811
+ error: Error;
812
+ }
813
+
814
+ export interface EntriesFilterRequestPayload {
815
+ filter: ViewFilter;
816
+ collection: string;
817
+ }
818
+
819
+ export interface EntriesFilterFailurePayload {
820
+ filter: ViewFilter;
821
+ collection: string;
822
+ error: Error;
823
+ }
824
+
825
+ export interface EntriesGroupRequestPayload {
826
+ group: ViewGroup;
827
+ collection: string;
828
+ }
829
+
830
+ export interface EntriesGroupFailurePayload {
831
+ group: ViewGroup;
832
+ collection: string;
833
+ error: Error;
834
+ }
835
+
836
+ export interface ChangeViewStylePayload {
837
+ style: string;
838
+ }
839
+
840
+ export interface EntriesMoveSuccessPayload extends EntryPayload {
841
+ entries: EntryObject[];
842
+ }
843
+
844
+ export interface EntriesAction extends Action<string> {
845
+ payload:
846
+ | EntryRequestPayload
847
+ | EntrySuccessPayload
848
+ | EntryFailurePayload
849
+ | EntriesSuccessPayload
850
+ | EntriesRequestPayload
851
+ | EntryDeletePayload;
852
+ meta: {
853
+ collection: string;
854
+ };
855
+ }
856
+
857
+ export interface EditorialWorkflowAction extends Action<string> {
858
+ payload?: CmsConfig & {
859
+ collection: string;
860
+ entry: { slug: string };
861
+ } & {
862
+ collection: string;
863
+ slug: string;
864
+ } & {
865
+ pages: [];
866
+ entries: { collection: string; slug: string }[];
867
+ } & {
868
+ collection: string;
869
+ entry: StaticallyTypedRecord<{ slug: string }>;
870
+ } & {
871
+ collection: string;
872
+ slug: string;
873
+ newStatus: string;
874
+ };
875
+ }