@leadcms/sdk 3.3.11 → 3.4.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.
- package/README.md +2 -1
- package/dist/cli/bin/content-status-args.d.ts +7 -0
- package/dist/cli/bin/content-status-args.d.ts.map +1 -0
- package/dist/cli/bin/content-status-args.js +27 -0
- package/dist/cli/bin/content-status-args.js.map +1 -0
- package/dist/cli/bin/pull-content.js +3 -1
- package/dist/cli/bin/pull-content.js.map +1 -1
- package/dist/cli/bin/pull-settings.d.ts +6 -0
- package/dist/cli/bin/pull-settings.d.ts.map +1 -0
- package/dist/cli/bin/pull-settings.js +31 -0
- package/dist/cli/bin/pull-settings.js.map +1 -0
- package/dist/cli/bin/push-all.js +16 -1
- package/dist/cli/bin/push-all.js.map +1 -1
- package/dist/cli/bin/push-comments.d.ts +6 -0
- package/dist/cli/bin/push-comments.d.ts.map +1 -0
- package/dist/cli/bin/push-comments.js +33 -0
- package/dist/cli/bin/push-comments.js.map +1 -0
- package/dist/cli/bin/push-content.js +3 -2
- package/dist/cli/bin/push-content.js.map +1 -1
- package/dist/cli/bin/push-email-templates.js +13 -1
- package/dist/cli/bin/push-email-templates.js.map +1 -1
- package/dist/cli/bin/push-settings.d.ts +6 -0
- package/dist/cli/bin/push-settings.d.ts.map +1 -0
- package/dist/cli/bin/push-settings.js +34 -0
- package/dist/cli/bin/push-settings.js.map +1 -0
- package/dist/cli/bin/status-all.js +115 -2
- package/dist/cli/bin/status-all.js.map +1 -1
- package/dist/cli/bin/status-comments.d.ts +6 -0
- package/dist/cli/bin/status-comments.d.ts.map +1 -0
- package/dist/cli/bin/status-comments.js +28 -0
- package/dist/cli/bin/status-comments.js.map +1 -0
- package/dist/cli/bin/status-content.js +3 -1
- package/dist/cli/bin/status-content.js.map +1 -1
- package/dist/cli/bin/status-settings.d.ts +6 -0
- package/dist/cli/bin/status-settings.d.ts.map +1 -0
- package/dist/cli/bin/status-settings.js +27 -0
- package/dist/cli/bin/status-settings.js.map +1 -0
- package/dist/cli/index.js +38 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/cms-config-types.d.ts +4 -0
- package/dist/lib/cms-config-types.d.ts.map +1 -1
- package/dist/lib/cms-config-types.js +6 -0
- package/dist/lib/cms-config-types.js.map +1 -1
- package/dist/lib/cms.d.ts +7 -7
- package/dist/lib/cms.d.ts.map +1 -1
- package/dist/lib/cms.js +42 -7
- package/dist/lib/cms.js.map +1 -1
- package/dist/lib/comment-types.d.ts +4 -0
- package/dist/lib/comment-types.d.ts.map +1 -1
- package/dist/lib/config.d.ts +2 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +6 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/content-merge.d.ts.map +1 -1
- package/dist/lib/content-merge.js +102 -19
- package/dist/lib/content-merge.js.map +1 -1
- package/dist/lib/data-service.d.ts +41 -1
- package/dist/lib/data-service.d.ts.map +1 -1
- package/dist/lib/data-service.js +133 -1
- package/dist/lib/data-service.js.map +1 -1
- package/dist/lib/settings-types.d.ts +120 -0
- package/dist/lib/settings-types.d.ts.map +1 -0
- package/dist/lib/settings-types.js +84 -0
- package/dist/lib/settings-types.js.map +1 -0
- package/dist/scripts/fetch-leadcms-comments.d.ts +6 -1
- package/dist/scripts/fetch-leadcms-comments.d.ts.map +1 -1
- package/dist/scripts/fetch-leadcms-comments.js +7 -5
- package/dist/scripts/fetch-leadcms-comments.js.map +1 -1
- package/dist/scripts/init-leadcms.d.ts.map +1 -1
- package/dist/scripts/init-leadcms.js +15 -1
- package/dist/scripts/init-leadcms.js.map +1 -1
- package/dist/scripts/leadcms-helpers.d.ts +1 -0
- package/dist/scripts/leadcms-helpers.d.ts.map +1 -1
- package/dist/scripts/leadcms-helpers.js +1 -0
- package/dist/scripts/leadcms-helpers.js.map +1 -1
- package/dist/scripts/pull-all.d.ts +5 -1
- package/dist/scripts/pull-all.d.ts.map +1 -1
- package/dist/scripts/pull-all.js +32 -5
- package/dist/scripts/pull-all.js.map +1 -1
- package/dist/scripts/pull-content.d.ts +11 -0
- package/dist/scripts/pull-content.d.ts.map +1 -1
- package/dist/scripts/pull-content.js +79 -3
- package/dist/scripts/pull-content.js.map +1 -1
- package/dist/scripts/pull-settings.d.ts +19 -0
- package/dist/scripts/pull-settings.d.ts.map +1 -0
- package/dist/scripts/pull-settings.js +69 -0
- package/dist/scripts/pull-settings.js.map +1 -0
- package/dist/scripts/push-comments.d.ts +48 -0
- package/dist/scripts/push-comments.d.ts.map +1 -0
- package/dist/scripts/push-comments.js +433 -0
- package/dist/scripts/push-comments.js.map +1 -0
- package/dist/scripts/push-email-templates.d.ts +4 -1
- package/dist/scripts/push-email-templates.d.ts.map +1 -1
- package/dist/scripts/push-email-templates.js +57 -12
- package/dist/scripts/push-email-templates.js.map +1 -1
- package/dist/scripts/push-leadcms-content.d.ts +15 -5
- package/dist/scripts/push-leadcms-content.d.ts.map +1 -1
- package/dist/scripts/push-leadcms-content.js +112 -31
- package/dist/scripts/push-leadcms-content.js.map +1 -1
- package/dist/scripts/push-media.d.ts.map +1 -1
- package/dist/scripts/push-media.js +13 -8
- package/dist/scripts/push-media.js.map +1 -1
- package/dist/scripts/push-settings.d.ts +56 -0
- package/dist/scripts/push-settings.d.ts.map +1 -0
- package/dist/scripts/push-settings.js +272 -0
- package/dist/scripts/push-settings.js.map +1 -0
- package/dist/scripts/settings-manager.d.ts +52 -0
- package/dist/scripts/settings-manager.d.ts.map +1 -0
- package/dist/scripts/settings-manager.js +469 -0
- package/dist/scripts/settings-manager.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Push local settings to LeadCMS.
|
|
3
|
+
*/
|
|
4
|
+
import "dotenv/config";
|
|
5
|
+
import { leadCMSUrl, leadCMSApiKey, defaultLanguage, SETTINGS_DIR } from "./leadcms-helpers.js";
|
|
6
|
+
import { fetchRemoteSettings, readLocalSettings, buildSettingsPushOperations, pushSettingsToRemote, buildSettingsStatus, } from "./settings-manager.js";
|
|
7
|
+
import { colorConsole, statusColors, diffColors } from "../lib/console-colors.js";
|
|
8
|
+
import { AI_SITEPROFILE_PREFIX } from "../lib/settings-types.js";
|
|
9
|
+
import * as Diff from "diff";
|
|
10
|
+
export function selectOperationsForPush(operations, force) {
|
|
11
|
+
if (!force) {
|
|
12
|
+
return operations.filter((op) => op.type !== "unchanged");
|
|
13
|
+
}
|
|
14
|
+
return operations.map((op) => {
|
|
15
|
+
if (op.type !== "unchanged")
|
|
16
|
+
return op;
|
|
17
|
+
return {
|
|
18
|
+
...op,
|
|
19
|
+
type: "update",
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Push local settings to LeadCMS.
|
|
25
|
+
*/
|
|
26
|
+
export async function pushSettings(options = {}) {
|
|
27
|
+
const { targetName, dryRun, force } = options;
|
|
28
|
+
if (!leadCMSApiKey) {
|
|
29
|
+
console.log("⏭️ Skipping settings push (no API key configured)");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
console.log(`⚙️ Pushing settings to LeadCMS...`);
|
|
33
|
+
try {
|
|
34
|
+
// Read local settings
|
|
35
|
+
let localSettings = await readLocalSettings(SETTINGS_DIR, defaultLanguage);
|
|
36
|
+
if (targetName) {
|
|
37
|
+
localSettings = localSettings.filter((s) => s.key === targetName);
|
|
38
|
+
if (localSettings.length === 0) {
|
|
39
|
+
console.log(` ℹ️ Setting "${targetName}" not found locally`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (localSettings.length === 0) {
|
|
44
|
+
console.log(` ℹ️ No local settings to push`);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Fetch remote settings for comparison
|
|
48
|
+
const allRemote = await fetchRemoteSettings(leadCMSUrl, leadCMSApiKey);
|
|
49
|
+
// Build operations
|
|
50
|
+
const operations = buildSettingsPushOperations(localSettings, allRemote);
|
|
51
|
+
const changes = operations.filter((op) => op.type !== "unchanged");
|
|
52
|
+
if (changes.length === 0 && !force) {
|
|
53
|
+
console.log(` ✅ All settings are in sync, nothing to push`);
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const toPush = selectOperationsForPush(operations, Boolean(force));
|
|
57
|
+
if (dryRun) {
|
|
58
|
+
console.log(` 🔍 Dry run - would push ${toPush.length} setting(s):`);
|
|
59
|
+
for (const op of toPush) {
|
|
60
|
+
const lang = op.language ? ` [${op.language}]` : "";
|
|
61
|
+
console.log(` ${op.type}: ${op.key}${lang} = "${op.localValue}"`);
|
|
62
|
+
}
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// Push via import API
|
|
66
|
+
const result = await pushSettingsToRemote(toPush, leadCMSUrl, leadCMSApiKey, dryRun || false);
|
|
67
|
+
if (result) {
|
|
68
|
+
console.log(` ✅ Settings push complete: ${result.added} added, ${result.updated} updated, ${result.failed} failed, ${result.skipped} skipped`);
|
|
69
|
+
if (result.errors && result.errors.length > 0) {
|
|
70
|
+
for (const err of result.errors) {
|
|
71
|
+
console.error(` ❌ ${err.key || "unknown"}: ${err.message || "Unknown error"}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error.response?.status === 401) {
|
|
78
|
+
console.error(" ❌ Authentication failed while pushing settings");
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
console.error(` ❌ Failed to push settings: ${error.message}`);
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Show settings status (local vs remote comparison).
|
|
87
|
+
*/
|
|
88
|
+
export async function statusSettings(options = {}) {
|
|
89
|
+
const { targetName } = options;
|
|
90
|
+
if (!leadCMSApiKey) {
|
|
91
|
+
console.log("⏭️ Skipping settings status (no API key configured)");
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const statusResult = await getSettingsStatusData(options);
|
|
96
|
+
if (!statusResult)
|
|
97
|
+
return;
|
|
98
|
+
renderSettingsStatus(statusResult, targetName);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
console.error(` ❌ Failed to check settings status: ${error.message}`);
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get settings status data without rendering (for unified status view).
|
|
107
|
+
*/
|
|
108
|
+
export async function getSettingsStatusData(options = {}) {
|
|
109
|
+
const { targetName } = options;
|
|
110
|
+
if (!leadCMSApiKey) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
// Read local settings
|
|
114
|
+
let localSettings = await readLocalSettings(SETTINGS_DIR, defaultLanguage);
|
|
115
|
+
// Fetch remote settings
|
|
116
|
+
const allRemote = await fetchRemoteSettings(leadCMSUrl, leadCMSApiKey);
|
|
117
|
+
// Build comparison
|
|
118
|
+
const statusResult = buildSettingsStatus(localSettings, allRemote);
|
|
119
|
+
if (targetName) {
|
|
120
|
+
statusResult.comparisons = statusResult.comparisons.filter((c) => c.key === targetName);
|
|
121
|
+
}
|
|
122
|
+
return statusResult;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Render settings status to console.
|
|
126
|
+
*/
|
|
127
|
+
export function renderSettingsStatus(statusResult, targetName) {
|
|
128
|
+
const { comparisons } = statusResult;
|
|
129
|
+
if (comparisons.length === 0) {
|
|
130
|
+
if (targetName) {
|
|
131
|
+
console.log(` ℹ️ Setting "${targetName}" not found locally or remotely`);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
console.log(` ✅ No tracked settings found`);
|
|
135
|
+
}
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
colorConsole.important("\n⚙️ Settings Status");
|
|
139
|
+
console.log("─".repeat(80));
|
|
140
|
+
const modified = comparisons.filter((c) => c.status === "modified");
|
|
141
|
+
const localOnly = comparisons.filter((c) => c.status === "local-only");
|
|
142
|
+
const remoteOnly = comparisons.filter((c) => c.status === "remote-only");
|
|
143
|
+
const inSync = comparisons.filter((c) => c.status === "in-sync");
|
|
144
|
+
const changeCount = modified.length + localOnly.length + remoteOnly.length;
|
|
145
|
+
if (changeCount === 0) {
|
|
146
|
+
colorConsole.success(`\n✅ All ${inSync.length} tracked setting(s) are in sync!\n`);
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
console.log("");
|
|
150
|
+
for (const entry of comparisons) {
|
|
151
|
+
const lang = entry.language ? ` [${entry.language}]` : "";
|
|
152
|
+
const label = `${entry.key}${lang}`;
|
|
153
|
+
switch (entry.status) {
|
|
154
|
+
case "in-sync":
|
|
155
|
+
console.log(` ${colorConsole.gray("✓")} ${label.padEnd(50)} ${colorConsole.gray(formatSettingValue(entry.key, entry.localValue))}`);
|
|
156
|
+
break;
|
|
157
|
+
case "modified":
|
|
158
|
+
console.log(` ${statusColors.modified("M")} ${label.padEnd(50)} ${colorConsole.gray(formatSettingDiff(entry.key, entry.remoteValue, entry.localValue))}`);
|
|
159
|
+
renderSettingDiffPreview(entry.key, entry.remoteValue, entry.localValue, " ");
|
|
160
|
+
break;
|
|
161
|
+
case "local-only":
|
|
162
|
+
console.log(` ${statusColors.created("+")} ${label.padEnd(50)} ${colorConsole.highlight(formatSettingValue(entry.key, entry.localValue))} ${colorConsole.gray("(local only)")}`);
|
|
163
|
+
break;
|
|
164
|
+
case "remote-only":
|
|
165
|
+
console.log(` ${statusColors.conflict("-")} ${label.padEnd(50)} ${colorConsole.gray(formatSettingValue(entry.key, entry.remoteValue))} ${colorConsole.gray("(remote only)")}`);
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
console.log("");
|
|
170
|
+
console.log("─".repeat(80));
|
|
171
|
+
console.log(` ${inSync.length} in sync, ${modified.length} modified, ${localOnly.length} local only, ${remoteOnly.length} remote only`);
|
|
172
|
+
console.log("");
|
|
173
|
+
}
|
|
174
|
+
function truncateValue(value, maxLen = 40) {
|
|
175
|
+
const singleLine = value.replace(/\n/g, "\\n");
|
|
176
|
+
if (singleLine.length <= maxLen)
|
|
177
|
+
return singleLine;
|
|
178
|
+
return singleLine.slice(0, maxLen - 3) + "...";
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Format a setting value for display.
|
|
182
|
+
* AI.SiteProfile values (which are stored as .md files) get a content-style
|
|
183
|
+
* summary: first meaningful line + line count. All other keys use the normal
|
|
184
|
+
* short truncation.
|
|
185
|
+
*/
|
|
186
|
+
export function formatSettingValue(key, value) {
|
|
187
|
+
if (!value && value !== "")
|
|
188
|
+
return "(not set)";
|
|
189
|
+
if (value === "")
|
|
190
|
+
return "(empty)";
|
|
191
|
+
if (!key.startsWith(AI_SITEPROFILE_PREFIX)) {
|
|
192
|
+
return truncateValue(value);
|
|
193
|
+
}
|
|
194
|
+
// AI.SiteProfile: summarise like a text file
|
|
195
|
+
const lines = value.split(/\r?\n/);
|
|
196
|
+
const lineCount = lines.length;
|
|
197
|
+
// Pick the first non-empty, non-heading line as a preview
|
|
198
|
+
const preview = lines.find((l) => l.trim() !== "" && !l.startsWith("#"))?.trim() ||
|
|
199
|
+
lines.find((l) => l.trim() !== "")?.trim() ||
|
|
200
|
+
"";
|
|
201
|
+
const shortPreview = preview.length > 40 ? preview.slice(0, 37) + "..." : preview;
|
|
202
|
+
if (lineCount <= 1)
|
|
203
|
+
return shortPreview;
|
|
204
|
+
return `${shortPreview} (${lineCount} lines)`;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Format a diff description for a modified AI.SiteProfile setting.
|
|
208
|
+
* Returns e.g. "3 lines → 47 lines" or the normal "old" → "new" for short values.
|
|
209
|
+
*/
|
|
210
|
+
export function formatSettingDiff(key, remoteValue, localValue) {
|
|
211
|
+
if (!key.startsWith(AI_SITEPROFILE_PREFIX)) {
|
|
212
|
+
return `"${truncateValue(remoteValue || '')}" → "${truncateValue(localValue || '')}"`;
|
|
213
|
+
}
|
|
214
|
+
const remoteLines = (remoteValue || "").split(/\r?\n/).length;
|
|
215
|
+
const localLines = (localValue || "").split(/\r?\n/).length;
|
|
216
|
+
if (remoteLines === localLines) {
|
|
217
|
+
return `content changed (${localLines} line${localLines !== 1 ? "s" : ""})`;
|
|
218
|
+
}
|
|
219
|
+
return `${remoteLines} line${remoteLines !== 1 ? "s" : ""} → ${localLines} line${localLines !== 1 ? "s" : ""}`;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Render a colored line-by-line diff for an AI.SiteProfile setting.
|
|
223
|
+
* For non-AI settings this is a no-op (returns false).
|
|
224
|
+
*
|
|
225
|
+
* @param indent Leading whitespace for each printed line
|
|
226
|
+
* @returns true if a diff was rendered, false if skipped
|
|
227
|
+
*/
|
|
228
|
+
export function renderSettingDiffPreview(key, remoteValue, localValue, indent = " ") {
|
|
229
|
+
if (!key.startsWith(AI_SITEPROFILE_PREFIX))
|
|
230
|
+
return false;
|
|
231
|
+
const oldText = remoteValue || "";
|
|
232
|
+
const newText = localValue || "";
|
|
233
|
+
const diff = Diff.diffLines(oldText, newText);
|
|
234
|
+
let addedLines = 0;
|
|
235
|
+
let removedLines = 0;
|
|
236
|
+
let unchangedLines = 0;
|
|
237
|
+
let previewLines = 0;
|
|
238
|
+
const maxPreviewLines = 8;
|
|
239
|
+
for (const part of diff) {
|
|
240
|
+
const lines = part.value.split("\n").filter((l) => l.trim() !== "");
|
|
241
|
+
if (part.added) {
|
|
242
|
+
addedLines += lines.length;
|
|
243
|
+
if (previewLines < maxPreviewLines) {
|
|
244
|
+
for (const line of lines.slice(0, maxPreviewLines - previewLines)) {
|
|
245
|
+
colorConsole.log(`${indent}${diffColors.added(`+ ${line}`)}`);
|
|
246
|
+
previewLines++;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else if (part.removed) {
|
|
251
|
+
removedLines += lines.length;
|
|
252
|
+
if (previewLines < maxPreviewLines) {
|
|
253
|
+
for (const line of lines.slice(0, maxPreviewLines - previewLines)) {
|
|
254
|
+
colorConsole.log(`${indent}${diffColors.removed(`- ${line}`)}`);
|
|
255
|
+
previewLines++;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
unchangedLines += lines.length;
|
|
261
|
+
}
|
|
262
|
+
if (previewLines >= maxPreviewLines)
|
|
263
|
+
break;
|
|
264
|
+
}
|
|
265
|
+
const remaining = addedLines + removedLines - previewLines;
|
|
266
|
+
if (remaining > 0) {
|
|
267
|
+
colorConsole.log(`${indent}${colorConsole.gray(`... (${remaining} more change${remaining !== 1 ? "s" : ""})`)}`);
|
|
268
|
+
}
|
|
269
|
+
colorConsole.log(`${indent}${colorConsole.green(`+${addedLines}`)} added, ${colorConsole.red(`-${removedLines}`)} removed, ${unchangedLines} unchanged`);
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=push-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"push-settings.js","sourceRoot":"","sources":["../../src/scripts/push-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LeadCMS Settings Management
|
|
3
|
+
*
|
|
4
|
+
* Handles fetching, saving, reading, comparing, and pushing CMS settings.
|
|
5
|
+
* Settings are stored locally as:
|
|
6
|
+
* - ai-siteprofile/*.md (one file per AI.SiteProfile.* key)
|
|
7
|
+
* - content.json (all Content.* keys grouped)
|
|
8
|
+
* - media.json (all Media.* keys grouped)
|
|
9
|
+
*
|
|
10
|
+
* Language-specific settings go into locale subdirectories.
|
|
11
|
+
*/
|
|
12
|
+
import { type SettingDetailsDto, type SettingImportResult, type LocalSettingValue, type SettingsStatusResult, type SettingPushOperation } from "../lib/settings-types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Fetch all settings from the CMS via /api/settings/export
|
|
15
|
+
*/
|
|
16
|
+
export declare function fetchRemoteSettings(leadCMSUrl: string, leadCMSApiKey: string): Promise<SettingDetailsDto[]>;
|
|
17
|
+
/**
|
|
18
|
+
* Filter remote settings to only tracked keys.
|
|
19
|
+
* Also filters out settings with null/empty values.
|
|
20
|
+
*/
|
|
21
|
+
export declare function filterTrackedSettings(settings: SettingDetailsDto[]): SettingDetailsDto[];
|
|
22
|
+
/**
|
|
23
|
+
* Save fetched settings to the local settings directory.
|
|
24
|
+
*
|
|
25
|
+
* @param settings - Tracked settings from the CMS
|
|
26
|
+
* @param settingsDir - Resolved path to the settings directory
|
|
27
|
+
* @param defaultLanguage - The project's default language
|
|
28
|
+
* @param targetName - Optional: only save settings matching this key name
|
|
29
|
+
*/
|
|
30
|
+
export declare function saveSettingsLocally(settings: SettingDetailsDto[], settingsDir: string, defaultLanguage: string, targetName?: string): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Read all locally stored settings from the settings directory.
|
|
33
|
+
*
|
|
34
|
+
* @param settingsDir - Resolved path to the settings directory
|
|
35
|
+
* @param defaultLanguage - The project's default language
|
|
36
|
+
* @returns Array of local setting values with their keys and languages
|
|
37
|
+
*/
|
|
38
|
+
export declare function readLocalSettings(settingsDir: string, defaultLanguage: string): Promise<LocalSettingValue[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Build a comparison between local and remote settings.
|
|
41
|
+
* Only includes tracked settings.
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildSettingsStatus(localSettings: LocalSettingValue[], remoteSettings: SettingDetailsDto[]): SettingsStatusResult;
|
|
44
|
+
/**
|
|
45
|
+
* Determine what push operations are needed.
|
|
46
|
+
*/
|
|
47
|
+
export declare function buildSettingsPushOperations(localSettings: LocalSettingValue[], remoteSettings: SettingDetailsDto[]): SettingPushOperation[];
|
|
48
|
+
/**
|
|
49
|
+
* Push local settings to the CMS via /api/settings/import
|
|
50
|
+
*/
|
|
51
|
+
export declare function pushSettingsToRemote(operations: SettingPushOperation[], leadCMSUrl: string, leadCMSApiKey: string, dryRun?: boolean): Promise<SettingImportResult | null>;
|
|
52
|
+
//# sourceMappingURL=settings-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-manager.d.ts","sourceRoot":"","sources":["../../src/scripts/settings-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EAEtB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAS1B,MAAM,0BAA0B,CAAC;AAQlC;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAmB9B;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAMxF;AAID;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAyBf;AA4ID;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA6B9B;AAiED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,iBAAiB,EAAE,EAClC,cAAc,EAAE,iBAAiB,EAAE,GAClC,oBAAoB,CA4EtB;AAID;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,iBAAiB,EAAE,EAClC,cAAc,EAAE,iBAAiB,EAAE,GAClC,oBAAoB,EAAE,CA8CxB;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,oBAAoB,EAAE,EAClC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAwCrC"}
|