PluginProbe
Extendify / 3.1.5
Extendify v3.1.5
3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 0.6.0 0.7.0 All 126 releases
extendify / src / AutoLaunch / functions / patterns.js

patterns.js in Extendify 3.1.5, at src/AutoLaunch/functions/patterns.js

58 lines 1.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { AI_HOST } from '@constants';
2 import { reqDataBasics } from '@shared/lib/data';
3 import { retryTwice } from './helpers';
4
5 const generatePatterns = async (page, data) => {
6 const { siteProfile, designBuild } = data;
7 return await retryTwice(async () => {
8 const response = await fetch(`${AI_HOST}/api/patterns`, {
9 method: 'POST',
10 headers: { 'Content-Type': 'application/json' },
11 body: JSON.stringify({
12 ...reqDataBasics,
13 siteProfile,
14 page,
15 buildId: designBuild?.buildId,
16 }),
17 });
18 if (!response.ok) {
19 throw new Error(
20 `Pattern generation failed with status ${response.status}`,
21 );
22 }
23 return await response.json();
24 });
25 };
26
27 // Hold back patterns that already have finalized content (e.g. design build)
28 const splitGeneratedContent = (page) => {
29 const generated = page.patterns?.filter((p) => p.contentGenerated) ?? [];
30 const rest = page.patterns?.filter((p) => !p.contentGenerated) ?? [];
31 return { generated, toGenerate: { ...page, patterns: rest } };
32 };
33
34 export const generatePageContent = async (pages, data) => {
35 const splits = pages.map(splitGeneratedContent);
36
37 const result = await Promise.allSettled(
38 splits.map(({ toGenerate }) =>
39 toGenerate.patterns.length
40 ? generatePatterns(toGenerate, data).catch(() => toGenerate)
41 : Promise.resolve(toGenerate),
42 ),
43 );
44
45 return result?.map((pageResult, i) => {
46 const original = pages[i];
47 const { generated } = splits[i];
48 const merged =
49 pageResult.status === 'fulfilled' && pageResult.value
50 ? { ...original, ...pageResult.value }
51 : original;
52 return {
53 ...merged,
54 patterns: [...generated, ...(merged.patterns ?? [])],
55 };
56 });
57 };
58