@oaysus/cli 0.1.13 → 0.1.14

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 (84) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +151 -85
  3. package/dist/cli.js.map +1 -1
  4. package/dist/components/App.d.ts +26 -10
  5. package/dist/components/App.d.ts.map +1 -1
  6. package/dist/components/App.js +23 -8
  7. package/dist/components/App.js.map +1 -1
  8. package/dist/components/SlashCommands.js +1 -1
  9. package/dist/lib/push.d.ts.map +1 -1
  10. package/dist/lib/push.js +29 -1
  11. package/dist/lib/push.js.map +1 -1
  12. package/dist/lib/shared/commands.d.ts +11 -1
  13. package/dist/lib/shared/commands.d.ts.map +1 -1
  14. package/dist/lib/shared/commands.js +55 -13
  15. package/dist/lib/shared/commands.js.map +1 -1
  16. package/dist/lib/shared/uploader.d.ts +1 -0
  17. package/dist/lib/shared/uploader.d.ts.map +1 -1
  18. package/dist/lib/shared/uploader.js +4 -2
  19. package/dist/lib/shared/uploader.js.map +1 -1
  20. package/dist/lib/site/asset-puller.d.ts +93 -0
  21. package/dist/lib/site/asset-puller.d.ts.map +1 -0
  22. package/dist/lib/site/asset-puller.js +376 -0
  23. package/dist/lib/site/asset-puller.js.map +1 -0
  24. package/dist/lib/site/asset-resolver.d.ts +44 -0
  25. package/dist/lib/site/asset-resolver.d.ts.map +1 -0
  26. package/dist/lib/site/asset-resolver.js +225 -0
  27. package/dist/lib/site/asset-resolver.js.map +1 -0
  28. package/dist/lib/site/asset-uploader.d.ts +58 -0
  29. package/dist/lib/site/asset-uploader.d.ts.map +1 -0
  30. package/dist/lib/site/asset-uploader.js +261 -0
  31. package/dist/lib/site/asset-uploader.js.map +1 -0
  32. package/dist/lib/site/index.d.ts +14 -0
  33. package/dist/lib/site/index.d.ts.map +1 -0
  34. package/dist/lib/site/index.js +15 -0
  35. package/dist/lib/site/index.js.map +1 -0
  36. package/dist/lib/site/metadata.d.ts +99 -0
  37. package/dist/lib/site/metadata.d.ts.map +1 -0
  38. package/dist/lib/site/metadata.js +470 -0
  39. package/dist/lib/site/metadata.js.map +1 -0
  40. package/dist/lib/site/page-publisher.d.ts +51 -0
  41. package/dist/lib/site/page-publisher.d.ts.map +1 -0
  42. package/dist/lib/site/page-publisher.js +460 -0
  43. package/dist/lib/site/page-publisher.js.map +1 -0
  44. package/dist/lib/site/page-puller.d.ts +93 -0
  45. package/dist/lib/site/page-puller.d.ts.map +1 -0
  46. package/dist/lib/site/page-puller.js +346 -0
  47. package/dist/lib/site/page-puller.js.map +1 -0
  48. package/dist/lib/site/page-validator.d.ts +29 -0
  49. package/dist/lib/site/page-validator.d.ts.map +1 -0
  50. package/dist/lib/site/page-validator.js +282 -0
  51. package/dist/lib/site/page-validator.js.map +1 -0
  52. package/dist/lib/site/project-loader.d.ts +45 -0
  53. package/dist/lib/site/project-loader.d.ts.map +1 -0
  54. package/dist/lib/site/project-loader.js +276 -0
  55. package/dist/lib/site/project-loader.js.map +1 -0
  56. package/dist/lib/site/shared-component-resolver.d.ts +89 -0
  57. package/dist/lib/site/shared-component-resolver.d.ts.map +1 -0
  58. package/dist/lib/site/shared-component-resolver.js +222 -0
  59. package/dist/lib/site/shared-component-resolver.js.map +1 -0
  60. package/dist/screens/WelcomeScreen.d.ts +26 -10
  61. package/dist/screens/WelcomeScreen.d.ts.map +1 -1
  62. package/dist/screens/WelcomeScreen.js +44 -21
  63. package/dist/screens/WelcomeScreen.js.map +1 -1
  64. package/dist/screens/site/SiteInitScreen.d.ts +12 -0
  65. package/dist/screens/site/SiteInitScreen.d.ts.map +1 -0
  66. package/dist/screens/site/SiteInitScreen.js +282 -0
  67. package/dist/screens/site/SiteInitScreen.js.map +1 -0
  68. package/dist/screens/site/SitePublishScreen.d.ts +15 -0
  69. package/dist/screens/site/SitePublishScreen.d.ts.map +1 -0
  70. package/dist/screens/site/SitePublishScreen.js +330 -0
  71. package/dist/screens/site/SitePublishScreen.js.map +1 -0
  72. package/dist/screens/site/SitePullScreen.d.ts +14 -0
  73. package/dist/screens/site/SitePullScreen.d.ts.map +1 -0
  74. package/dist/screens/site/SitePullScreen.js +455 -0
  75. package/dist/screens/site/SitePullScreen.js.map +1 -0
  76. package/dist/screens/site/SiteValidateScreen.d.ts +12 -0
  77. package/dist/screens/site/SiteValidateScreen.d.ts.map +1 -0
  78. package/dist/screens/site/SiteValidateScreen.js +201 -0
  79. package/dist/screens/site/SiteValidateScreen.js.map +1 -0
  80. package/dist/types/site.d.ts +348 -0
  81. package/dist/types/site.d.ts.map +1 -0
  82. package/dist/types/site.js +6 -0
  83. package/dist/types/site.js.map +1 -0
  84. package/package.json +1 -1
@@ -0,0 +1,470 @@
1
+ /**
2
+ * Metadata Manager
3
+ * Handles the .oaysus/ directory containing project metadata:
4
+ * - config.json: Project configuration (websiteId, etc.)
5
+ * - components.json: Component catalog with schemas
6
+ * - assets.json: Asset manifest for sync tracking
7
+ */
8
+ import fs from 'fs/promises';
9
+ import path from 'path';
10
+ import axios from 'axios';
11
+ import { loadCredentials } from '../shared/auth.js';
12
+ import { SSO_BASE_URL, debug } from '../shared/config.js';
13
+ const OAYSUS_DIR = '.oaysus';
14
+ const CONFIG_FILE = 'config.json';
15
+ const COMPONENTS_FILE = 'components.json';
16
+ const ASSETS_FILE = 'assets.json';
17
+ /**
18
+ * Check if a file exists
19
+ */
20
+ async function fileExists(filePath) {
21
+ try {
22
+ await fs.access(filePath);
23
+ return true;
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ /**
30
+ * Ensure the .oaysus directory exists
31
+ */
32
+ export async function ensureOaysusDir(projectPath) {
33
+ const oaysusDir = path.join(projectPath, OAYSUS_DIR);
34
+ await fs.mkdir(oaysusDir, { recursive: true });
35
+ return oaysusDir;
36
+ }
37
+ /**
38
+ * Check if a project has .oaysus metadata
39
+ */
40
+ export async function hasOaysusMetadata(projectPath) {
41
+ const configPath = path.join(projectPath, OAYSUS_DIR, CONFIG_FILE);
42
+ return fileExists(configPath);
43
+ }
44
+ /**
45
+ * Find project root by looking for .oaysus/ directory
46
+ * Falls back to oaysus.website.json for backward compatibility
47
+ */
48
+ export async function findProjectRoot(startPath = process.cwd()) {
49
+ let currentPath = path.resolve(startPath);
50
+ for (let i = 0; i < 10; i++) {
51
+ // Check for new .oaysus/ directory
52
+ const oaysusDir = path.join(currentPath, OAYSUS_DIR);
53
+ if (await fileExists(oaysusDir)) {
54
+ return currentPath;
55
+ }
56
+ // Backward compatibility: check for oaysus.website.json
57
+ const legacyConfig = path.join(currentPath, 'oaysus.website.json');
58
+ if (await fileExists(legacyConfig)) {
59
+ return currentPath;
60
+ }
61
+ const parentPath = path.dirname(currentPath);
62
+ if (parentPath === currentPath)
63
+ break;
64
+ currentPath = parentPath;
65
+ }
66
+ return null;
67
+ }
68
+ // ============================================================================
69
+ // Config Management
70
+ // ============================================================================
71
+ /**
72
+ * Load project config from .oaysus/config.json
73
+ */
74
+ export async function loadConfig(projectPath) {
75
+ const configPath = path.join(projectPath, OAYSUS_DIR, CONFIG_FILE);
76
+ try {
77
+ const content = await fs.readFile(configPath, 'utf-8');
78
+ return JSON.parse(content);
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
84
+ /**
85
+ * Save project config to .oaysus/config.json
86
+ */
87
+ export async function saveConfig(projectPath, config) {
88
+ await ensureOaysusDir(projectPath);
89
+ const configPath = path.join(projectPath, OAYSUS_DIR, CONFIG_FILE);
90
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
91
+ }
92
+ /**
93
+ * Get websiteId from config or credentials
94
+ */
95
+ export async function getWebsiteId(projectPath) {
96
+ // Try .oaysus/config.json first
97
+ const config = await loadConfig(projectPath);
98
+ if (config?.websiteId) {
99
+ return config.websiteId;
100
+ }
101
+ // Try legacy oaysus.website.json
102
+ const legacyPath = path.join(projectPath, 'oaysus.website.json');
103
+ try {
104
+ const content = await fs.readFile(legacyPath, 'utf-8');
105
+ const legacy = JSON.parse(content);
106
+ if (legacy.websiteId) {
107
+ return legacy.websiteId;
108
+ }
109
+ }
110
+ catch {
111
+ // Ignore
112
+ }
113
+ // Fall back to credentials
114
+ const credentials = await loadCredentials();
115
+ return credentials?.websiteId || null;
116
+ }
117
+ // ============================================================================
118
+ // Component Catalog Management
119
+ // ============================================================================
120
+ /**
121
+ * Load component catalog from .oaysus/components.json
122
+ */
123
+ export async function loadComponentCatalog(projectPath) {
124
+ const catalogPath = path.join(projectPath, OAYSUS_DIR, COMPONENTS_FILE);
125
+ try {
126
+ const content = await fs.readFile(catalogPath, 'utf-8');
127
+ return JSON.parse(content);
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * Save component catalog to .oaysus/components.json
135
+ */
136
+ export async function saveComponentCatalog(projectPath, catalog) {
137
+ await ensureOaysusDir(projectPath);
138
+ const catalogPath = path.join(projectPath, OAYSUS_DIR, COMPONENTS_FILE);
139
+ await fs.writeFile(catalogPath, JSON.stringify(catalog, null, 2), 'utf-8');
140
+ }
141
+ /**
142
+ * Fetch components from server and build catalog
143
+ */
144
+ export async function syncComponentCatalog(options) {
145
+ const { projectPath, force = false } = options;
146
+ let { websiteId, jwt } = options;
147
+ // Get credentials if not provided
148
+ if (!websiteId || !jwt) {
149
+ const credentials = await loadCredentials();
150
+ if (!credentials) {
151
+ return {
152
+ success: false,
153
+ error: 'Not authenticated. Run "oaysus login"',
154
+ componentCount: 0,
155
+ themePackCount: 0,
156
+ };
157
+ }
158
+ websiteId = websiteId || credentials.websiteId;
159
+ jwt = jwt || credentials.jwt;
160
+ }
161
+ if (!websiteId) {
162
+ return {
163
+ success: false,
164
+ error: 'No website ID found',
165
+ componentCount: 0,
166
+ themePackCount: 0,
167
+ };
168
+ }
169
+ debug('Syncing component catalog for website:', websiteId);
170
+ try {
171
+ // Fetch installed components
172
+ const componentsUrl = `${SSO_BASE_URL}/hosting/page-builder/components/custom`;
173
+ const componentsResponse = await axios.get(componentsUrl, {
174
+ params: { websiteId },
175
+ headers: { Authorization: `Bearer ${jwt}` },
176
+ });
177
+ if (!componentsResponse.data.success) {
178
+ return {
179
+ success: false,
180
+ error: componentsResponse.data.error || 'Failed to fetch components',
181
+ componentCount: 0,
182
+ themePackCount: 0,
183
+ };
184
+ }
185
+ const serverComponents = componentsResponse.data.components || [];
186
+ // Group components by theme pack
187
+ const themePackMap = new Map();
188
+ const allComponentTypes = [];
189
+ for (const comp of serverComponents) {
190
+ const themePackId = comp.themePackId || 'custom';
191
+ const themePackName = comp.themePack?.displayName || themePackId;
192
+ if (!themePackMap.has(themePackId)) {
193
+ themePackMap.set(themePackId, {
194
+ id: themePackId,
195
+ name: themePackName,
196
+ version: comp.version,
197
+ installed: true,
198
+ components: [],
199
+ });
200
+ }
201
+ const catalogComponent = {
202
+ type: comp.type || comp.name,
203
+ displayName: comp.displayName || comp.name,
204
+ description: comp.description,
205
+ category: comp.category,
206
+ schema: comp.schema,
207
+ defaultProps: comp.defaultProps,
208
+ // defaultShared from schema - used for shared component resolution
209
+ defaultShared: comp.defaultShared || false,
210
+ };
211
+ themePackMap.get(themePackId).components.push(catalogComponent);
212
+ allComponentTypes.push(catalogComponent.type);
213
+ }
214
+ const catalog = {
215
+ version: 1,
216
+ lastSyncedAt: new Date().toISOString(),
217
+ websiteId,
218
+ themePacks: Array.from(themePackMap.values()),
219
+ allComponentTypes,
220
+ };
221
+ // Save to disk
222
+ await saveComponentCatalog(projectPath, catalog);
223
+ debug('Component catalog synced:', allComponentTypes.length, 'components');
224
+ return {
225
+ success: true,
226
+ catalog,
227
+ componentCount: allComponentTypes.length,
228
+ themePackCount: themePackMap.size,
229
+ };
230
+ }
231
+ catch (error) {
232
+ let errorMessage = 'Failed to sync component catalog';
233
+ if (axios.isAxiosError(error)) {
234
+ if (error.response?.status === 401) {
235
+ errorMessage = 'Authentication failed. Please run "oaysus login"';
236
+ }
237
+ else {
238
+ errorMessage = error.response?.data?.error || error.message;
239
+ }
240
+ }
241
+ else if (error instanceof Error) {
242
+ errorMessage = error.message;
243
+ }
244
+ return {
245
+ success: false,
246
+ error: errorMessage,
247
+ componentCount: 0,
248
+ themePackCount: 0,
249
+ };
250
+ }
251
+ }
252
+ /**
253
+ * Check if component catalog is stale (older than threshold)
254
+ * Can take either a ComponentCatalog object or a project path
255
+ */
256
+ export async function isCatalogStale(catalogOrPath, maxAgeMs = 24 * 60 * 60 * 1000) {
257
+ let catalog;
258
+ if (typeof catalogOrPath === 'string') {
259
+ catalog = await loadComponentCatalog(catalogOrPath);
260
+ if (!catalog) {
261
+ return true; // No catalog = stale
262
+ }
263
+ }
264
+ else {
265
+ catalog = catalogOrPath;
266
+ }
267
+ const lastSynced = new Date(catalog.lastSyncedAt).getTime();
268
+ const now = Date.now();
269
+ return now - lastSynced > maxAgeMs;
270
+ }
271
+ /**
272
+ * Check if a component type exists in the catalog
273
+ */
274
+ export function componentExists(catalog, componentType) {
275
+ return catalog.allComponentTypes.includes(componentType);
276
+ }
277
+ /**
278
+ * Find a component in the catalog by type
279
+ */
280
+ export function findComponent(catalog, componentType) {
281
+ for (const themePack of catalog.themePacks) {
282
+ const component = themePack.components.find(c => c.type === componentType);
283
+ if (component) {
284
+ return component;
285
+ }
286
+ }
287
+ return null;
288
+ }
289
+ /**
290
+ * Check if a component type should be shared by default
291
+ */
292
+ export function isDefaultShared(catalog, componentType) {
293
+ const component = findComponent(catalog, componentType);
294
+ return component?.defaultShared === true;
295
+ }
296
+ /**
297
+ * Get suggestions for a misspelled component type
298
+ */
299
+ export function getSuggestions(catalog, componentType, maxSuggestions = 3) {
300
+ const input = componentType.toLowerCase();
301
+ const scored = catalog.allComponentTypes.map(type => {
302
+ const target = type.toLowerCase();
303
+ // Simple similarity: count matching characters
304
+ let matches = 0;
305
+ for (const char of input) {
306
+ if (target.includes(char))
307
+ matches++;
308
+ }
309
+ // Bonus for prefix match
310
+ if (target.startsWith(input.slice(0, 3)))
311
+ matches += 5;
312
+ return { type, score: matches };
313
+ });
314
+ scored.sort((a, b) => b.score - a.score);
315
+ return scored.slice(0, maxSuggestions).map(s => s.type);
316
+ }
317
+ // ============================================================================
318
+ // Asset Manifest Management
319
+ // ============================================================================
320
+ /**
321
+ * Load asset manifest from .oaysus/assets.json
322
+ */
323
+ export async function loadAssetManifest(projectPath) {
324
+ // Try new location first
325
+ const newPath = path.join(projectPath, OAYSUS_DIR, ASSETS_FILE);
326
+ try {
327
+ const content = await fs.readFile(newPath, 'utf-8');
328
+ return JSON.parse(content);
329
+ }
330
+ catch {
331
+ // Fall back to legacy location
332
+ const legacyPath = path.join(projectPath, 'assets', 'assets.json');
333
+ try {
334
+ const content = await fs.readFile(legacyPath, 'utf-8');
335
+ return JSON.parse(content);
336
+ }
337
+ catch {
338
+ // Return empty manifest
339
+ return { version: 1, assets: {} };
340
+ }
341
+ }
342
+ }
343
+ /**
344
+ * Save asset manifest to .oaysus/assets.json
345
+ */
346
+ export async function saveAssetManifest(projectPath, manifest) {
347
+ await ensureOaysusDir(projectPath);
348
+ const manifestPath = path.join(projectPath, OAYSUS_DIR, ASSETS_FILE);
349
+ await fs.writeFile(manifestPath, JSON.stringify(manifest, null, 2), 'utf-8');
350
+ }
351
+ // ============================================================================
352
+ // Migration from legacy oaysus.website.json
353
+ // ============================================================================
354
+ /**
355
+ * Migrate from legacy oaysus.website.json to .oaysus/
356
+ */
357
+ export async function migrateLegacyConfig(projectPath) {
358
+ const legacyPath = path.join(projectPath, 'oaysus.website.json');
359
+ try {
360
+ const content = await fs.readFile(legacyPath, 'utf-8');
361
+ const legacy = JSON.parse(content);
362
+ // Get websiteId from legacy or credentials
363
+ let websiteId = legacy.websiteId;
364
+ if (!websiteId) {
365
+ const credentials = await loadCredentials();
366
+ websiteId = credentials?.websiteId;
367
+ }
368
+ if (!websiteId) {
369
+ return false;
370
+ }
371
+ // Create new config
372
+ const config = {
373
+ version: 1,
374
+ websiteId,
375
+ };
376
+ await saveConfig(projectPath, config);
377
+ // Migrate assets.json if it exists in legacy location
378
+ const legacyAssetsPath = path.join(projectPath, 'assets', 'assets.json');
379
+ if (await fileExists(legacyAssetsPath)) {
380
+ const assetsContent = await fs.readFile(legacyAssetsPath, 'utf-8');
381
+ const manifest = JSON.parse(assetsContent);
382
+ await saveAssetManifest(projectPath, manifest);
383
+ }
384
+ debug('Migrated legacy config to .oaysus/');
385
+ return true;
386
+ }
387
+ catch {
388
+ return false;
389
+ }
390
+ }
391
+ // ============================================================================
392
+ // Initialization
393
+ // ============================================================================
394
+ /**
395
+ * Initialize .oaysus/ metadata for a project
396
+ */
397
+ export async function initializeMetadata(options) {
398
+ const { projectPath, websiteId, websiteName, subdomain, syncComponents = true } = options;
399
+ try {
400
+ // Create config
401
+ const config = {
402
+ version: 1,
403
+ websiteId,
404
+ websiteName,
405
+ subdomain,
406
+ lastSyncedAt: new Date().toISOString(),
407
+ };
408
+ await saveConfig(projectPath, config);
409
+ // Sync component catalog if requested
410
+ if (syncComponents) {
411
+ let jwt = options.jwt;
412
+ if (!jwt) {
413
+ const credentials = await loadCredentials();
414
+ jwt = credentials?.jwt;
415
+ }
416
+ if (jwt) {
417
+ const syncResult = await syncComponentCatalog({
418
+ projectPath,
419
+ websiteId,
420
+ jwt,
421
+ });
422
+ if (!syncResult.success) {
423
+ return {
424
+ success: false,
425
+ error: `Created config but failed to sync components: ${syncResult.error}`,
426
+ };
427
+ }
428
+ }
429
+ }
430
+ // Create empty asset manifest
431
+ await saveAssetManifest(projectPath, { version: 1, assets: {} });
432
+ return { success: true };
433
+ }
434
+ catch (error) {
435
+ return {
436
+ success: false,
437
+ error: error instanceof Error ? error.message : 'Unknown error',
438
+ };
439
+ }
440
+ }
441
+ /**
442
+ * Format component catalog for display
443
+ */
444
+ export function formatCatalogForDisplay(catalog) {
445
+ const lines = [];
446
+ lines.push(`Component Catalog (synced ${new Date(catalog.lastSyncedAt).toLocaleString()})`);
447
+ lines.push(`Website: ${catalog.websiteId}`);
448
+ lines.push('');
449
+ if (catalog.themePacks.length === 0) {
450
+ lines.push('No components installed. Upload a theme pack first.');
451
+ return lines;
452
+ }
453
+ for (const themePack of catalog.themePacks) {
454
+ lines.push(`Theme Pack: ${themePack.name}${themePack.version ? ` v${themePack.version}` : ''}`);
455
+ for (let i = 0; i < themePack.components.length; i++) {
456
+ const comp = themePack.components[i];
457
+ const isLast = i === themePack.components.length - 1;
458
+ const prefix = isLast ? '└──' : '├──';
459
+ let line = ` ${prefix} ${comp.type}`;
460
+ if (comp.description) {
461
+ line += ` - ${comp.description}`;
462
+ }
463
+ lines.push(line);
464
+ }
465
+ lines.push('');
466
+ }
467
+ lines.push(`Total: ${catalog.allComponentTypes.length} components`);
468
+ return lines;
469
+ }
470
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../../src/lib/site/metadata.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Page Publisher
3
+ * Publishes pages to the Oaysus platform via API
4
+ */
5
+ import type { PageDefinition, LoadedProject, PublishPageResult, PublishResult, UploadedAssetInfo } from '../../types/site.js';
6
+ /**
7
+ * Publish progress callback
8
+ */
9
+ export type PublishProgressCallback = (stage: 'validating' | 'resolving-shared' | 'uploading-assets' | 'publishing-pages', current: number, total: number, detail?: string) => void;
10
+ /**
11
+ * Check which pages from a project already exist on the server
12
+ * Returns list of slugs that will be overwritten
13
+ */
14
+ export declare function checkExistingPages(project: LoadedProject, options?: {
15
+ websiteId?: string;
16
+ jwt?: string;
17
+ }): Promise<{
18
+ existingPages: string[];
19
+ newPages: string[];
20
+ }>;
21
+ /**
22
+ * Publish a single page (create or update)
23
+ */
24
+ export declare function publishPage(page: PageDefinition, options: {
25
+ websiteId: string;
26
+ jwt: string;
27
+ assetMap?: Map<string, UploadedAssetInfo>;
28
+ }): Promise<PublishPageResult>;
29
+ /**
30
+ * Publish an entire project
31
+ */
32
+ export declare function publishProject(project: LoadedProject, options?: {
33
+ websiteId?: string;
34
+ jwt?: string;
35
+ dryRun?: boolean;
36
+ skipValidation?: boolean;
37
+ onProgress?: PublishProgressCallback;
38
+ }): Promise<PublishResult>;
39
+ /**
40
+ * Publish a single page file from a project
41
+ */
42
+ export declare function publishSinglePage(project: LoadedProject, pageIdentifier: string, options?: {
43
+ websiteId?: string;
44
+ jwt?: string;
45
+ onProgress?: PublishProgressCallback;
46
+ }): Promise<PublishResult>;
47
+ /**
48
+ * Format publish results for display
49
+ */
50
+ export declare function formatPublishResults(result: PublishResult): string[];
51
+ //# sourceMappingURL=page-publisher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-publisher.d.ts","sourceRoot":"","sources":["../../../src/lib/site/page-publisher.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,aAAa,EAEb,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAS7B;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,CACpC,KAAK,EAAE,YAAY,GAAG,kBAAkB,GAAG,kBAAkB,GAAG,kBAAkB,EAClF,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,CAAC;AAiCV;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,GACL,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAgC1D;AAmID;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE;IACP,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC3C,GACA,OAAO,CAAC,iBAAiB,CAAC,CAsD5B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACjC,GACL,OAAO,CAAC,aAAa,CAAC,CAoMxB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,uBAAuB,CAAC;CACjC,GACL,OAAO,CAAC,aAAa,CAAC,CA6BxB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAwCpE"}