coil_core/manifest/
integration.rs1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
2pub enum IntegrationKind {
3 AdminNavigation,
4 AdminWorkflow,
5 FrontendRendering,
6 SearchIndex,
7 SeoMetadata,
8 JsonLd,
9 LocalizedContent,
10 CacheInvalidation,
11 StoragePolicy,
12 CommerceBridge,
13 AuthPublication,
14}
15
16#[derive(Debug, Clone, PartialEq, Eq)]
17pub struct IntegrationPoint {
18 pub kind: IntegrationKind,
19 pub surface: String,
20 pub description: String,
21}
22
23impl IntegrationPoint {
24 pub fn new(
25 kind: IntegrationKind,
26 surface: impl Into<String>,
27 description: impl Into<String>,
28 ) -> Self {
29 Self {
30 kind,
31 surface: surface.into(),
32 description: description.into(),
33 }
34 }
35}
36
37#[derive(Debug, Clone, Copy, PartialEq, Eq)]
38pub enum ModuleBehavior {
39 CacheInvalidation,
40 LocalizedContent,
41 SeoMetadata,
42 JsonLd,
43 AccessibleAdminUi,
44 StoragePolicyAware,
45 AuthGovernedPublication,
46 AsyncJobs,
47 AuditedBulkActions,
48}
49
50#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
51pub enum ExtensionSlotKind {
52 Page,
53 Api,
54 Job,
55 ScheduledJob,
56 Webhook,
57 AdminWidget,
58 RenderHook,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq)]
62pub struct ExtensionSlotDescriptor {
63 pub kind: ExtensionSlotKind,
64 pub surface: String,
65 pub description: String,
66}
67
68impl ExtensionSlotDescriptor {
69 pub fn new(
70 kind: ExtensionSlotKind,
71 surface: impl Into<String>,
72 description: impl Into<String>,
73 ) -> Self {
74 Self {
75 kind,
76 surface: surface.into(),
77 description: description.into(),
78 }
79 }
80}