effects/WordPressAPI/importers
Esta página aún no está disponible en tu idioma.
Classes
Section titled “Classes”WordPressAPI
Section titled “WordPressAPI”Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:28^
Extends
Section titled “Extends”- {
importPagesFromWPAPI
:Effect
<void
,boolean
|Error
|ParseError
|SDKCoreError
,ImportEndpointConfig
>;importPostsFromWPAPI
:Effect
<void
,boolean
|Error
|ParseError
|LibSQLDatabaseError
|SDKCoreError
,ImportPostsEndpointConfig
>;importSettingsFromWPAPI
:Effect
<void
,boolean
|AstroUserError
|UnknownException
|ParseError
|SDKCoreError
,ImportEndpointConfig
>; } & {_tag
:"WordPressAPI"
; }
Constructors
Section titled “Constructors”Constructor
Section titled “Constructor”new WordPressAPI(_: { importPagesFromWPAPI: Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>; importPostsFromWPAPI: Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>; importSettingsFromWPAPI: Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>; }): WordPressAPI
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26559
Parameters
Section titled “Parameters”importPagesFromWPAPI
Section titled “importPagesFromWPAPI”Effect
<void
, boolean
| Error
| ParseError
| SDKCoreError
, ImportEndpointConfig
>
importPostsFromWPAPI
Section titled “importPostsFromWPAPI”Effect
<void
, boolean
| Error
| ParseError
| LibSQLDatabaseError
| SDKCoreError
, ImportPostsEndpointConfig
>
importSettingsFromWPAPI
Section titled “importSettingsFromWPAPI”Effect
<void
, boolean
| AstroUserError
| UnknownException
| ParseError
| SDKCoreError
, ImportEndpointConfig
>
Returns
Section titled “Returns”Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).constructor
Properties
Section titled “Properties”readonly _tag: "WordPressAPI";
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26560
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),})._tag
importPagesFromWPAPI
Section titled “importPagesFromWPAPI”importPagesFromWPAPI: Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:192^
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).importPagesFromWPAPI
importPostsFromWPAPI
Section titled “importPostsFromWPAPI”importPostsFromWPAPI: Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:193^
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).importPostsFromWPAPI
importSettingsFromWPAPI
Section titled “importSettingsFromWPAPI”importSettingsFromWPAPI: Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:191^
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).importSettingsFromWPAPI
readonly static _op: "Tag";
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:28
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),})._op
[ChannelTypeId]
Section titled “[ChannelTypeId]”readonly static [ChannelTypeId]: VarianceStruct<never, unknown, never, unknown, WordPressAPI, unknown, WordPressAPI>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Channel.d.ts:108
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[ChannelTypeId]
[EffectTypeId]
Section titled “[EffectTypeId]”readonly static [EffectTypeId]: VarianceStruct<WordPressAPI, never, WordPressAPI>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:195
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[EffectTypeId]
[ignoreSymbol]?
Section titled “[ignoreSymbol]?”static optional [ignoreSymbol]: TagUnifyIgnore;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:41
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[ignoreSymbol]
[SinkTypeId]
Section titled “[SinkTypeId]”readonly static [SinkTypeId]: VarianceStruct<WordPressAPI, unknown, never, never, WordPressAPI>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Sink.d.ts:82
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[SinkTypeId]
[STMTypeId]
Section titled “[STMTypeId]”readonly static [STMTypeId]: { _A: Covariant<WordPressAPI>; _E: Covariant<never>; _R: Covariant<WordPressAPI>;};
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/STM.d.ts:136
readonly _A: Covariant<WordPressAPI>;
readonly _E: Covariant<never>;
readonly _R: Covariant<WordPressAPI>;
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[STMTypeId]
[StreamTypeId]
Section titled “[StreamTypeId]”readonly static [StreamTypeId]: VarianceStruct<WordPressAPI, never, WordPressAPI>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Stream.d.ts:111
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[StreamTypeId]
[TagTypeId]
Section titled “[TagTypeId]”readonly static [TagTypeId]: { _Identifier: Invariant<WordPressAPI>; _Service: Invariant<WordPressAPI>;};
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:31
_Identifier
Section titled “_Identifier”readonly _Identifier: Invariant<WordPressAPI>;
_Service
Section titled “_Service”readonly _Service: Invariant<WordPressAPI>;
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[TagTypeId]
[typeSymbol]?
Section titled “[typeSymbol]?”static optional [typeSymbol]: unknown;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:39
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[typeSymbol]
[unifySymbol]?
Section titled “[unifySymbol]?”static optional [unifySymbol]: TagUnify<Class<WordPressAPI, "WordPressAPI", { dependencies: readonly [Layer<WordPressAPIUtils, never, never>, Layer<WordPressAPIConverters, never, never>]; effect: Effect<{ importPagesFromWPAPI: Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>; importPostsFromWPAPI: Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>; importSettingsFromWPAPI: Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>; }, never, | WordPressAPIUtils | WordPressAPIConverters>;}>>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:40
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[unifySymbol]
Default
Section titled “Default”readonly static Default: Layer<WordPressAPI, never, never>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26570
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).Default
DefaultWithoutDependencies
Section titled “DefaultWithoutDependencies”readonly static DefaultWithoutDependencies: Layer<WordPressAPI, never, | WordPressAPIUtils| WordPressAPIConverters>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26569
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).DefaultWithoutDependencies
Identifier
Section titled “Identifier”readonly static Identifier: WordPressAPI;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:30
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).Identifier
readonly static key: "WordPressAPI";
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:38
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).key
make()
Section titled “make()”readonly static make: (_: { importPagesFromWPAPI: Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>; importPostsFromWPAPI: Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>; importSettingsFromWPAPI: Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>; }) => WordPressAPI;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26563
Parameters
Section titled “Parameters”importPagesFromWPAPI
Section titled “importPagesFromWPAPI”Effect
<void
, boolean
| Error
| ParseError
| SDKCoreError
, ImportEndpointConfig
>
importPostsFromWPAPI
Section titled “importPostsFromWPAPI”Effect
<void
, boolean
| Error
| ParseError
| LibSQLDatabaseError
| SDKCoreError
, ImportPostsEndpointConfig
>
importSettingsFromWPAPI
Section titled “importSettingsFromWPAPI”Effect
<void
, boolean
| AstroUserError
| UnknownException
| ParseError
| SDKCoreError
, ImportEndpointConfig
>
Returns
Section titled “Returns”Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).make
Provide()
Section titled “Provide()”static Provide: <A, E, R>(self: Effect<A, E, R>) => Effect<A, E, Exclude<R, WordPressAPI>>;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:197^
Type Parameters
Section titled “Type Parameters”A
E
R
Parameters
Section titled “Parameters”Effect
<A
, E
, R
>
Returns
Section titled “Returns”Effect
<A
, E
, Exclude
<R
, WordPressAPI
>>
Service
Section titled “Service”readonly static Service: WordPressAPI;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:29
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).Service
stack?
Section titled “stack?”readonly static optional stack: string;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:37
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).stack
readonly static use: <X>(body: (_: WordPressAPI) => X) => [X] extends [Effect<A, E, R>] ? Effect<A, E, | WordPressAPI| R> : [X] extends [PromiseLike<A>] ? Effect<A, UnknownException, WordPressAPI> : Effect<X, never, WordPressAPI>;
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26562
Type Parameters
Section titled “Type Parameters”X
Parameters
Section titled “Parameters”(_
: WordPressAPI
) => X
Returns
Section titled “Returns”[X
] extends [Effect
<A
, E
, R
>] ? Effect
<A
, E
,
| WordPressAPI
| R
> : [X
] extends [PromiseLike
<A
>] ? Effect
<A
, UnknownException
, WordPressAPI
> : Effect
<X
, never
, WordPressAPI
>
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).use
Methods
Section titled “Methods”[iterator]()
Section titled “[iterator]()”static iterator: EffectGenerator<Tag<WordPressAPI, WordPressAPI>>
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:137
Returns
Section titled “Returns”EffectGenerator
<Tag
<WordPressAPI
, WordPressAPI
>>
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[iterator]
[NodeInspectSymbol]()
Section titled “[NodeInspectSymbol]()”static NodeInspectSymbol: unknown
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:22
Returns
Section titled “Returns”unknown
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).[NodeInspectSymbol]
context()
Section titled “context()”static context(self: WordPressAPI): Context<WordPressAPI>
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:36
Parameters
Section titled “Parameters”Returns
Section titled “Returns”Context
<WordPressAPI
>
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).context
static of(self: WordPressAPI): WordPressAPI
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:35
Parameters
Section titled “Parameters”Returns
Section titled “Returns”Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).of
pipe()
Section titled “pipe()”Call Signature
Section titled “Call Signature”static pipe<A>(this: A): A
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:10
Type Parameters
Section titled “Type Parameters”A
Parameters
Section titled “Parameters”A
Returns
Section titled “Returns”A
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B>(this: A, ab: (_: A) => B): B
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:11
Type Parameters
Section titled “Type Parameters”A
B
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
Returns
Section titled “Returns”B
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C>( this: A, ab: (_: A) => B, bc: (_: B) => C): C
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:12
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
Returns
Section titled “Returns”C
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:13
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
Returns
Section titled “Returns”D
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E): E
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:14
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
Returns
Section titled “Returns”E
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F): F
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:15
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
Returns
Section titled “Returns”F
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G): G
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:16
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
Returns
Section titled “Returns”G
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H): H
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:17
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
Returns
Section titled “Returns”H
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I): I
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:18
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
Returns
Section titled “Returns”I
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J): J
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:19
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
Returns
Section titled “Returns”J
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K): K
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:20
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
Returns
Section titled “Returns”K
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L): L
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:21
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
Returns
Section titled “Returns”L
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M): M
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:22
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
Returns
Section titled “Returns”M
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N): N
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:23
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
Returns
Section titled “Returns”N
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O): O
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:24
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
Returns
Section titled “Returns”O
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P): P
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:25
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
Returns
Section titled “Returns”P
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q): Q
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:26
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
Returns
Section titled “Returns”Q
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R): R
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:27
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
R
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
(_
: Q
) => R
Returns
Section titled “Returns”R
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S): S
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:28
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
R
= never
S
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
(_
: Q
) => R
(_
: R
) => S
Returns
Section titled “Returns”S
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T): T
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:29
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
R
= never
S
= never
T
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
(_
: Q
) => R
(_
: R
) => S
(_
: S
) => T
Returns
Section titled “Returns”T
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:30
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
R
= never
S
= never
T
= never
U
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
(_
: Q
) => R
(_
: R
) => S
(_
: S
) => T
(_
: T
) => U
Returns
Section titled “Returns”U
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
Call Signature
Section titled “Call Signature”static pipe<A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U>( this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D, de: (_: D) => E, ef: (_: E) => F, fg: (_: F) => G, gh: (_: G) => H, hi: (_: H) => I, ij: (_: I) => J, jk: (_: J) => K, kl: (_: K) => L, lm: (_: L) => M, mn: (_: M) => N, no: (_: N) => O, op: (_: O) => P, pq: (_: P) => Q, qr: (_: Q) => R, rs: (_: R) => S, st: (_: S) => T, tu: (_: T) => U): U
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:31
Type Parameters
Section titled “Type Parameters”A
B
= never
C
= never
D
= never
E
= never
F
= never
G
= never
H
= never
I
= never
J
= never
K
= never
L
= never
M
= never
N
= never
O
= never
P
= never
Q
= never
R
= never
S
= never
T
= never
U
= never
Parameters
Section titled “Parameters”A
(_
: A
) => B
(_
: B
) => C
(_
: C
) => D
(_
: D
) => E
(_
: E
) => F
(_
: F
) => G
(_
: G
) => H
(_
: H
) => I
(_
: I
) => J
(_
: J
) => K
(_
: K
) => L
(_
: L
) => M
(_
: M
) => N
(_
: N
) => O
(_
: O
) => P
(_
: P
) => Q
(_
: Q
) => R
(_
: R
) => S
(_
: S
) => T
(_
: T
) => U
Returns
Section titled “Returns”U
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).pipe
toJSON()
Section titled “toJSON()”static toJSON(): unknown
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:21
Returns
Section titled “Returns”unknown
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).toJSON
toString()
Section titled “toString()”static toString(): string
Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:20
Returns
Section titled “Returns”string
Inherited from
Section titled “Inherited from”Effect.Service<WordPressAPI>()('WordPressAPI', { dependencies: [WordPressAPIUtils.Default, WordPressAPIConverters.Default], effect: genLogger('@studiocms/devapps/effects/WordPressAPI.effect')(function () { const sdk = yield SDKCore;
const { apiEndpoint, downloadPostImage, fetchAll } = yield WordPressAPIUtils;
const { convertToPageContent, convertToPageData, convertToPostContent, convertToPostData } = yield WordPressAPIConverters;
/ Imports site settings from a WordPress API endpoint and updates the local database.
@param endpoint - The WordPress API endpoint to fetch settings from.
This function performs the following steps: 1. Constructs the URL for the settings endpoint. 2. Fetches the site settings from the constructed URL. 3. Logs the fetched settings. 4. Downloads the site icon if available. 5. If the site icon is not available, attempts to download the site logo. 6. Constructs the site configuration object. 7. Updates the local database with the fetched settings. 8. Logs the success or failure of the database update. / const importSettingsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importSettingsFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig;
const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'settings'));
yield Console.log('Fetching site settings from: ', url.origin);
const response = yield Effect.tryPromise(() => fetch(url)); const rawSettings = yield Effect.tryPromise(() => response.json());
const settings = yield Schema.decodeUnknown(SiteSettings)(rawSettings);
yield Console.log('Importing site settings: ', settings);
let siteIcon: string | undefined;
if (settings.site_icon_url) { siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(settings.site_icon_url, ASTRO_PUBLIC_FOLDER) ); }
if (!settings.site_icon_url && settings.site_logo) { const siteLogoUrl = yield apiEndpoint.pipe( APIEndpointConfig.makeProvide(endpoint, 'media', String(settings.site_logo)) ); const siteLogoResponse = yield Effect.tryPromise(() => fetch(siteLogoUrl)); const siteLogoData = yield Effect.tryPromise(() => siteLogoResponse.json());
siteIcon = yield downloadPostImage.pipe( DownloadPostImageConfig.makeProvide(siteLogoData.source_url, ASTRO_PUBLIC_FOLDER) ); }
const siteConfig: Partial<SiteConfig> = { title: settings.name, description: settings.description, };
if (siteIcon) { siteConfig.siteIcon = siteIcon; }
// @ts-expect-error - Drizzle broken types const insert = yield sdk.UPDATE.siteConfig(siteConfig);
if (insert.lastCacheUpdate) { yield Console.log('Updated site settings'); } else { yield Console.error('Failed to update site settings'); } });
/ Imports pages from a WordPress API endpoint.
This function fetches all pages from the specified WordPress API endpoint and imports each page individually.
@param endpoint - The WordPress API endpoint to fetch pages from. / const importPagesFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPagesFromWPAPI' )(function () { const { endpoint } = yield ImportEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'pages'));
yield Console.log('fetching pages from: ', url.origin);
const rawPages = yield fetchAll(url);
const { pages } = yield Schema.decodeUnknown(PagesSchema)({ pages: rawPages });
yield Console.log('Total pages: ', pages.length);
for (const page of pages) { yield Console.log('importing page:', page.title.rendered);
const pageData = yield convertToPageData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page) ); const pageContent = yield convertToPageContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new page from WP-API: ', page.title.rendered); } });
/ Imports a post from the WordPress API and inserts the post data and content into the database.
@param post - The post data to be imported. The structure of this object is determined by the generatePostFromData function. @param useBlogPkg - A boolean flag indicating whether to use the blog package for generating the post data. @param endpoint - The API endpoint to be used for generating the post data. / const importPostsFromWPAPI = genLogger( '@studiocms/devapps/effects/WordPressAPI.effect.importPostsFromWPAPI' )(function () { const { endpoint, useBlogPkg } = yield ImportPostsEndpointConfig; const url = yield apiEndpoint.pipe(APIEndpointConfig.makeProvide(endpoint, 'posts'));
yield Console.log('fetching posts from: ', url.origin);
const rawPages = yield fetchAll(url);
const { posts: pages } = yield Schema.decodeUnknown(PostsSchema)({ posts: rawPages });
yield Console.log('Total posts: ', pages.length);
for (const page of pages) { yield Console.log('importing post:', page.title.rendered);
const pageData = yield convertToPostData.pipe( ImportEndpointConfig.makeProvide(endpoint), RawPageData.makeProvide(page), UseBlogPkgConfig.makeProvide(useBlogPkg) ); const pageContent = yield convertToPostContent.pipe( RawPageData.makeProvide(page), FullPageData.makeProvide(pageData) );
// @ts-expect-error - Drizzle broken types yield sdk.POST.databaseEntry.pages(pageData, pageContent);
yield Console.log('- Imported new post from WP-API: ', page.title.rendered); } });
return { importSettingsFromWPAPI, importPagesFromWPAPI, importPostsFromWPAPI, }; }),}).toString
Type Aliases
Section titled “Type Aliases”PageContent
Section titled “PageContent”type PageContent = typeof tsPageContent.$inferInsert;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:21^
PageData
Section titled “PageData”type PageData = typeof tsPageData.$inferInsert;
Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:20^