payload-wordpress-migrator 0.0.23 → 0.0.24
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/dist/components/MigrationDashboardClient.js +2 -8
- package/dist/components/MigrationDashboardClient.js.map +1 -1
- package/dist/components/dashboard/SiteConfigPanel.d.ts +3 -9
- package/dist/components/dashboard/SiteConfigPanel.js +60 -170
- package/dist/components/dashboard/SiteConfigPanel.js.map +1 -1
- package/dist/components/dashboard/index.d.ts +1 -1
- package/dist/components/dashboard/types.d.ts +0 -8
- package/dist/components/dashboard/useMigrationDashboard.d.ts +2 -8
- package/dist/components/dashboard/useMigrationDashboard.js +33 -195
- package/dist/components/dashboard/useMigrationDashboard.js.map +1 -1
- package/dist/utils/endpoints/handlers.js +26 -15
- package/dist/utils/endpoints/handlers.js.map +1 -1
- package/dist/utils/migration/jobCrud.js +4 -4
- package/dist/utils/migration/jobCrud.js.map +1 -1
- package/dist/utils/migration/orchestrator.d.ts +2 -2
- package/dist/utils/migration/orchestrator.js +5 -5
- package/dist/utils/migration/orchestrator.js.map +1 -1
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ import { useMigrationDashboard } from './dashboard/useMigrationDashboard.js';
|
|
|
8
8
|
import styles from './MigrationDashboardClient.module.css';
|
|
9
9
|
|
|
10
10
|
const MigrationDashboardClient = ({ summary: initialSummary })=>{
|
|
11
|
-
const {
|
|
11
|
+
const { loading, siteConfig, summary, handleJobAction, scanWordPressContent, getAllLogs } = useMigrationDashboard(initialSummary);
|
|
12
12
|
return /*#__PURE__*/ jsxs("div", {
|
|
13
13
|
className: "gutter--left gutter--right collection-list__wrap",
|
|
14
14
|
children: [
|
|
@@ -19,14 +19,8 @@ const MigrationDashboardClient = ({ summary: initialSummary })=>{
|
|
|
19
19
|
})
|
|
20
20
|
}),
|
|
21
21
|
/*#__PURE__*/ jsx(SiteConfigPanel, {
|
|
22
|
-
configState: configState,
|
|
23
22
|
loading: loading,
|
|
24
|
-
|
|
25
|
-
onConfigChange: handleSiteConfigChange,
|
|
26
|
-
onEdit: handleEditConfig,
|
|
27
|
-
onSave: handleSaveConfig,
|
|
28
|
-
onToggle: ()=>setShowSiteConfig(!showSiteConfig),
|
|
29
|
-
showSiteConfig: showSiteConfig,
|
|
23
|
+
onScan: scanWordPressContent,
|
|
30
24
|
siteConfig: siteConfig
|
|
31
25
|
}),
|
|
32
26
|
/*#__PURE__*/ jsx(StatsOverview, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MigrationDashboardClient.js","sources":["../../src/components/MigrationDashboardClient.tsx"],"sourcesContent":["'use client'\n\nimport { JobsTable } from './dashboard/JobsTable'\nimport { LogViewer } from './dashboard/LogViewer'\nimport { SiteConfigPanel } from './dashboard/SiteConfigPanel'\nimport { StatsOverview } from './dashboard/StatsOverview'\nimport type { MigrationSummary } from './dashboard/types'\nimport { useMigrationDashboard } from './dashboard/useMigrationDashboard'\n\nimport styles from './MigrationDashboardClient.module.css'\n\ntype MigrationDashboardClientProps = {\n summary: MigrationSummary\n}\n\nexport const MigrationDashboardClient = ({\n summary: initialSummary,\n}: MigrationDashboardClientProps) => {\n const {\n
|
|
1
|
+
{"version":3,"file":"MigrationDashboardClient.js","sources":["../../src/components/MigrationDashboardClient.tsx"],"sourcesContent":["'use client'\n\nimport { JobsTable } from './dashboard/JobsTable'\nimport { LogViewer } from './dashboard/LogViewer'\nimport { SiteConfigPanel } from './dashboard/SiteConfigPanel'\nimport { StatsOverview } from './dashboard/StatsOverview'\nimport type { MigrationSummary } from './dashboard/types'\nimport { useMigrationDashboard } from './dashboard/useMigrationDashboard'\n\nimport styles from './MigrationDashboardClient.module.css'\n\ntype MigrationDashboardClientProps = {\n summary: MigrationSummary\n}\n\nexport const MigrationDashboardClient = ({\n summary: initialSummary,\n}: MigrationDashboardClientProps) => {\n const {\n loading,\n siteConfig,\n summary,\n handleJobAction,\n scanWordPressContent,\n getAllLogs,\n } = useMigrationDashboard(initialSummary)\n\n return (\n <div className=\"gutter--left gutter--right collection-list__wrap\">\n <div className={styles.migrationDashboardHeader}>\n <h1>WordPress Migration Dashboard</h1>\n </div>\n\n <SiteConfigPanel\n loading={loading}\n onScan={scanWordPressContent}\n siteConfig={siteConfig}\n />\n\n <StatsOverview siteConfig={siteConfig} summary={summary} />\n\n <JobsTable\n jobs={summary.recentJobs ?? []}\n loading={loading}\n onJobAction={handleJobAction}\n />\n\n <LogViewer logs={getAllLogs()} />\n </div>\n )\n}\n"],"names":["className"],"mappings":";;;;;;;;;;AAkBE;AASA;;;;AAESA;AACH;AAAI;;;;;;;;;;;;;;;;;;;;;;AAoBZ;;"}
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const SiteConfigPanel: ({
|
|
3
|
-
configState: SiteConfigState;
|
|
1
|
+
import type { WordPressSiteConfig } from './types';
|
|
2
|
+
export declare const SiteConfigPanel: ({ loading, onScan, siteConfig, }: {
|
|
4
3
|
loading: boolean;
|
|
5
|
-
|
|
6
|
-
onConfigChange: (field: keyof WordPressSiteConfig, value: string) => void;
|
|
7
|
-
onEdit: () => void;
|
|
8
|
-
onSave: () => void;
|
|
9
|
-
onToggle: () => void;
|
|
10
|
-
showSiteConfig: boolean;
|
|
4
|
+
onScan: () => void;
|
|
11
5
|
siteConfig: WordPressSiteConfig;
|
|
12
6
|
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs, jsx
|
|
2
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import styles from '../MigrationDashboardClient.module.css';
|
|
4
4
|
|
|
5
|
-
const SiteConfigPanel = ({
|
|
5
|
+
const SiteConfigPanel = ({ loading, onScan, siteConfig })=>{
|
|
6
6
|
return /*#__PURE__*/ jsxs("div", {
|
|
7
7
|
className: styles.siteConfigSection,
|
|
8
8
|
children: [
|
|
@@ -10,192 +10,82 @@ const SiteConfigPanel = ({ configState, loading, onCancel, onConfigChange, onEdi
|
|
|
10
10
|
className: styles.siteConfigHeader,
|
|
11
11
|
children: [
|
|
12
12
|
/*#__PURE__*/ jsx("h2", {
|
|
13
|
-
children: "WordPress
|
|
13
|
+
children: "WordPress Content Discovery"
|
|
14
14
|
}),
|
|
15
15
|
/*#__PURE__*/ jsx("button", {
|
|
16
|
-
className: styles.
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
className: styles.saveButton,
|
|
17
|
+
disabled: loading || siteConfig.connectionStatus === 'scanning',
|
|
18
|
+
onClick: onScan,
|
|
19
|
+
children: siteConfig.connectionStatus === 'scanning' ? 'Scanning...' : 'Scan WordPress Content'
|
|
19
20
|
})
|
|
20
21
|
]
|
|
21
22
|
}),
|
|
22
|
-
|
|
23
|
+
siteConfig.connectionStatus === 'scanned' && siteConfig.discoveredContent && siteConfig.discoveredContent.length > 0 && /*#__PURE__*/ jsx("div", {
|
|
23
24
|
className: styles.siteConfigForm,
|
|
24
|
-
children:
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
children: /*#__PURE__*/ jsx("div", {
|
|
26
|
+
className: styles.connectionStatus,
|
|
27
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
28
|
+
className: styles.discoveredContent,
|
|
27
29
|
children: [
|
|
28
30
|
/*#__PURE__*/ jsxs("div", {
|
|
29
|
-
className: styles.
|
|
30
|
-
children: [
|
|
31
|
-
/*#__PURE__*/ jsx("label", {
|
|
32
|
-
htmlFor: "siteName",
|
|
33
|
-
children: "Site Name"
|
|
34
|
-
}),
|
|
35
|
-
/*#__PURE__*/ jsx("input", {
|
|
36
|
-
disabled: !configState.isEditing,
|
|
37
|
-
id: "siteName",
|
|
38
|
-
onChange: (e)=>onConfigChange('siteName', e.target.value),
|
|
39
|
-
placeholder: "My WordPress Site",
|
|
40
|
-
type: "text",
|
|
41
|
-
value: siteConfig.siteName
|
|
42
|
-
})
|
|
43
|
-
]
|
|
44
|
-
}),
|
|
45
|
-
/*#__PURE__*/ jsxs("div", {
|
|
46
|
-
className: styles.formGroup,
|
|
47
|
-
children: [
|
|
48
|
-
/*#__PURE__*/ jsx("label", {
|
|
49
|
-
htmlFor: "wpSiteUrl",
|
|
50
|
-
children: "WordPress Site URL"
|
|
51
|
-
}),
|
|
52
|
-
/*#__PURE__*/ jsx("input", {
|
|
53
|
-
disabled: !configState.isEditing,
|
|
54
|
-
id: "wpSiteUrl",
|
|
55
|
-
onChange: (e)=>onConfigChange('wpSiteUrl', e.target.value),
|
|
56
|
-
placeholder: "https://example.com",
|
|
57
|
-
type: "url",
|
|
58
|
-
value: siteConfig.wpSiteUrl
|
|
59
|
-
}),
|
|
60
|
-
/*#__PURE__*/ jsx("small", {
|
|
61
|
-
children: "Base URL of your WordPress site"
|
|
62
|
-
})
|
|
63
|
-
]
|
|
64
|
-
}),
|
|
65
|
-
/*#__PURE__*/ jsxs("div", {
|
|
66
|
-
className: styles.formGroup,
|
|
31
|
+
className: styles.discoveredHeader,
|
|
67
32
|
children: [
|
|
68
|
-
/*#__PURE__*/
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
id: "wpUsername",
|
|
75
|
-
onChange: (e)=>onConfigChange('wpUsername', e.target.value),
|
|
76
|
-
placeholder: "admin",
|
|
77
|
-
type: "text",
|
|
78
|
-
value: siteConfig.wpUsername
|
|
79
|
-
})
|
|
80
|
-
]
|
|
81
|
-
}),
|
|
82
|
-
/*#__PURE__*/ jsxs("div", {
|
|
83
|
-
className: styles.formGroup,
|
|
84
|
-
children: [
|
|
85
|
-
/*#__PURE__*/ jsx("label", {
|
|
86
|
-
htmlFor: "wpPassword",
|
|
87
|
-
children: "Application Password"
|
|
88
|
-
}),
|
|
89
|
-
/*#__PURE__*/ jsx("input", {
|
|
90
|
-
disabled: !configState.isEditing,
|
|
91
|
-
id: "wpPassword",
|
|
92
|
-
onChange: (e)=>onConfigChange('wpPassword', e.target.value),
|
|
93
|
-
placeholder: "xxxx xxxx xxxx xxxx",
|
|
94
|
-
type: "password",
|
|
95
|
-
value: siteConfig.wpPassword
|
|
33
|
+
/*#__PURE__*/ jsxs("h4", {
|
|
34
|
+
children: [
|
|
35
|
+
"Available Content (",
|
|
36
|
+
siteConfig.totalItems,
|
|
37
|
+
" total items)"
|
|
38
|
+
]
|
|
96
39
|
}),
|
|
97
40
|
/*#__PURE__*/ jsx("small", {
|
|
98
|
-
children: "
|
|
41
|
+
children: "Ready for migration"
|
|
99
42
|
})
|
|
100
43
|
]
|
|
101
|
-
})
|
|
102
|
-
]
|
|
103
|
-
}),
|
|
104
|
-
/*#__PURE__*/ jsxs("div", {
|
|
105
|
-
className: styles.configActions,
|
|
106
|
-
children: [
|
|
107
|
-
/*#__PURE__*/ jsx("div", {
|
|
108
|
-
className: styles.connectionStatus,
|
|
109
|
-
children: /*#__PURE__*/ jsxs("div", {
|
|
110
|
-
className: styles.statusIndicator,
|
|
111
|
-
children: [
|
|
112
|
-
/*#__PURE__*/ jsx("span", {
|
|
113
|
-
className: `${styles.statusDot} ${styles[siteConfig.connectionStatus]}`
|
|
114
|
-
}),
|
|
115
|
-
/*#__PURE__*/ jsxs("span", {
|
|
116
|
-
className: styles.statusText,
|
|
117
|
-
children: [
|
|
118
|
-
siteConfig.connectionStatus === 'not-scanned' && 'Not Scanned',
|
|
119
|
-
siteConfig.connectionStatus === 'scanned' && siteConfig.discoveredContent && siteConfig.discoveredContent.length > 0 && /*#__PURE__*/ jsxs("div", {
|
|
120
|
-
className: styles.discoveredContent,
|
|
121
|
-
children: [
|
|
122
|
-
/*#__PURE__*/ jsxs("div", {
|
|
123
|
-
className: styles.discoveredHeader,
|
|
124
|
-
children: [
|
|
125
|
-
/*#__PURE__*/ jsxs("h4", {
|
|
126
|
-
children: [
|
|
127
|
-
"Available Content (",
|
|
128
|
-
siteConfig.totalItems,
|
|
129
|
-
" total items)"
|
|
130
|
-
]
|
|
131
|
-
}),
|
|
132
|
-
/*#__PURE__*/ jsx("small", {
|
|
133
|
-
children: "Ready for migration"
|
|
134
|
-
})
|
|
135
|
-
]
|
|
136
|
-
}),
|
|
137
|
-
/*#__PURE__*/ jsx("div", {
|
|
138
|
-
className: styles.contentList,
|
|
139
|
-
children: siteConfig.discoveredContent.map((content)=>/*#__PURE__*/ jsxs("div", {
|
|
140
|
-
className: styles.contentItem,
|
|
141
|
-
children: [
|
|
142
|
-
/*#__PURE__*/ jsxs("span", {
|
|
143
|
-
className: styles.contentLabel,
|
|
144
|
-
children: [
|
|
145
|
-
content.label,
|
|
146
|
-
":"
|
|
147
|
-
]
|
|
148
|
-
}),
|
|
149
|
-
/*#__PURE__*/ jsxs("span", {
|
|
150
|
-
className: styles.contentCount,
|
|
151
|
-
children: [
|
|
152
|
-
content.count,
|
|
153
|
-
" items"
|
|
154
|
-
]
|
|
155
|
-
}),
|
|
156
|
-
content.custom && /*#__PURE__*/ jsx("span", {
|
|
157
|
-
className: styles.customBadge,
|
|
158
|
-
children: "Custom"
|
|
159
|
-
})
|
|
160
|
-
]
|
|
161
|
-
}, content.type))
|
|
162
|
-
})
|
|
163
|
-
]
|
|
164
|
-
}),
|
|
165
|
-
siteConfig.connectionStatus === 'scanned' && 'Content Discovered',
|
|
166
|
-
siteConfig.connectionStatus === 'failed' && 'Scan Failed'
|
|
167
|
-
]
|
|
168
|
-
})
|
|
169
|
-
]
|
|
170
|
-
})
|
|
171
44
|
}),
|
|
172
45
|
/*#__PURE__*/ jsx("div", {
|
|
173
|
-
className: styles.
|
|
174
|
-
children:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
46
|
+
className: styles.contentList,
|
|
47
|
+
children: siteConfig.discoveredContent.map((content)=>/*#__PURE__*/ jsxs("div", {
|
|
48
|
+
className: styles.contentItem,
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ jsxs("span", {
|
|
51
|
+
className: styles.contentLabel,
|
|
52
|
+
children: [
|
|
53
|
+
content.label,
|
|
54
|
+
":"
|
|
55
|
+
]
|
|
56
|
+
}),
|
|
57
|
+
/*#__PURE__*/ jsxs("span", {
|
|
58
|
+
className: styles.contentCount,
|
|
59
|
+
children: [
|
|
60
|
+
content.count,
|
|
61
|
+
" items"
|
|
62
|
+
]
|
|
63
|
+
}),
|
|
64
|
+
content.custom && /*#__PURE__*/ jsx("span", {
|
|
65
|
+
className: styles.customBadge,
|
|
66
|
+
children: "Custom"
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}, content.type))
|
|
195
70
|
})
|
|
196
71
|
]
|
|
197
72
|
})
|
|
198
|
-
|
|
73
|
+
})
|
|
74
|
+
}),
|
|
75
|
+
siteConfig.connectionStatus === 'failed' && /*#__PURE__*/ jsx("div", {
|
|
76
|
+
className: styles.siteConfigForm,
|
|
77
|
+
children: /*#__PURE__*/ jsxs("div", {
|
|
78
|
+
className: styles.connectionStatus,
|
|
79
|
+
children: [
|
|
80
|
+
/*#__PURE__*/ jsx("span", {
|
|
81
|
+
className: `${styles.statusDot} ${styles.failed}`
|
|
82
|
+
}),
|
|
83
|
+
/*#__PURE__*/ jsx("span", {
|
|
84
|
+
className: styles.statusText,
|
|
85
|
+
children: "Scan Failed — check that WordPress credentials are configured in the plugin config"
|
|
86
|
+
})
|
|
87
|
+
]
|
|
88
|
+
})
|
|
199
89
|
})
|
|
200
90
|
]
|
|
201
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SiteConfigPanel.js","sources":["../../../src/components/dashboard/SiteConfigPanel.tsx"],"sourcesContent":["'use client'\n\nimport type {
|
|
1
|
+
{"version":3,"file":"SiteConfigPanel.js","sources":["../../../src/components/dashboard/SiteConfigPanel.tsx"],"sourcesContent":["'use client'\n\nimport type { WordPressSiteConfig } from './types'\n\nimport styles from '../MigrationDashboardClient.module.css'\n\nexport const SiteConfigPanel = ({\n loading,\n onScan,\n siteConfig,\n}: {\n loading: boolean\n onScan: () => void\n siteConfig: WordPressSiteConfig\n}) => {\n return (\n <div className={styles.siteConfigSection}>\n <div className={styles.siteConfigHeader}>\n <h2>WordPress Content Discovery</h2>\n <button\n className={styles.saveButton}\n disabled={loading || siteConfig.connectionStatus === 'scanning'}\n onClick={onScan}\n >\n {siteConfig.connectionStatus === 'scanning' ? 'Scanning...' : 'Scan WordPress Content'}\n </button>\n </div>\n\n {siteConfig.connectionStatus === 'scanned' &&\n siteConfig.discoveredContent &&\n siteConfig.discoveredContent.length > 0 && (\n <div className={styles.siteConfigForm}>\n <div className={styles.connectionStatus}>\n <div className={styles.discoveredContent}>\n <div className={styles.discoveredHeader}>\n <h4>Available Content ({siteConfig.totalItems} total items)</h4>\n <small>Ready for migration</small>\n </div>\n <div className={styles.contentList}>\n {siteConfig.discoveredContent.map((content) => (\n <div className={styles.contentItem} key={content.type}>\n <span className={styles.contentLabel}>{content.label}:</span>\n <span className={styles.contentCount}>{content.count} items</span>\n {content.custom && <span className={styles.customBadge}>Custom</span>}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )}\n\n {siteConfig.connectionStatus === 'failed' && (\n <div className={styles.siteConfigForm}>\n <div className={styles.connectionStatus}>\n <span className={`${styles.statusDot} ${styles.failed}`} />\n <span className={styles.statusText}>\n Scan Failed — check that WordPress credentials are configured in the plugin config\n </span>\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["className","siteConfig","content"],"mappings":";;;;AAMO;AASL;AACOA;;;AACEA;;;AACC;;;AAEFA;;;;;;;AAQHC;AAGQD;AACH;AAAKA;AACH;AAAKA;;;AACEA;;;;AACC;AAAoBC;AAAsB;;;;AACvC;;;;;AAEJD;AACFC;AACMD;;;AACGA;;AAAiCE;AAAc;;;;AAC/CF;;AAAiCE;AAAc;;;;AAC5BF;AAA+B;;;AAHjBE;;;;;;;AAahDF;AACH;AAAKA;;;;;;AAEGA;AAA8B;;;;;;;AAQhD;;"}
|
|
@@ -4,4 +4,4 @@ export { LogViewer } from './LogViewer';
|
|
|
4
4
|
export { SiteConfigPanel } from './SiteConfigPanel';
|
|
5
5
|
export { StatsOverview } from './StatsOverview';
|
|
6
6
|
export { useMigrationDashboard } from './useMigrationDashboard';
|
|
7
|
-
export type { ContentType, JobActionType, MigrationSummary,
|
|
7
|
+
export type { ContentType, JobActionType, MigrationSummary, WordPressSiteConfig, } from './types';
|
|
@@ -33,14 +33,6 @@ export type ContentType = {
|
|
|
33
33
|
export type WordPressSiteConfig = {
|
|
34
34
|
connectionStatus: 'failed' | 'not-scanned' | 'scanned' | 'scanning';
|
|
35
35
|
discoveredContent?: ContentType[];
|
|
36
|
-
siteName: string;
|
|
37
36
|
totalItems?: number;
|
|
38
|
-
wpPassword: string;
|
|
39
|
-
wpSiteUrl: string;
|
|
40
|
-
wpUsername: string;
|
|
41
|
-
};
|
|
42
|
-
export type SiteConfigState = {
|
|
43
|
-
isEditing: boolean;
|
|
44
|
-
isSaved: boolean;
|
|
45
37
|
};
|
|
46
38
|
export type JobActionType = 'pause' | 'restart' | 'resume' | 'retry' | 'rollback' | 'start' | 'update';
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
import type { JobActionType, MigrationSummary,
|
|
1
|
+
import type { JobActionType, MigrationSummary, WordPressSiteConfig } from './types';
|
|
2
2
|
export declare const useMigrationDashboard: (initialSummary: MigrationSummary) => {
|
|
3
|
-
configState: SiteConfigState;
|
|
4
3
|
loading: boolean;
|
|
5
|
-
showSiteConfig: boolean;
|
|
6
4
|
siteConfig: WordPressSiteConfig;
|
|
7
5
|
summary: MigrationSummary;
|
|
8
|
-
handleCancelEdit: () => void;
|
|
9
|
-
handleEditConfig: () => void;
|
|
10
|
-
handleSaveConfig: () => Promise<void>;
|
|
11
|
-
handleSiteConfigChange: (field: keyof WordPressSiteConfig, value: string) => void;
|
|
12
|
-
setShowSiteConfig: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
13
6
|
handleJobAction: (action: JobActionType, jobId: string) => Promise<void>;
|
|
7
|
+
scanWordPressContent: () => Promise<void>;
|
|
14
8
|
getAllLogs: () => string[];
|
|
15
9
|
};
|