Saltearse al contenido

effects/WordPressAPI/importers

Esta página aún no está disponible en tu idioma.

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:28^

  • { 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"; }

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

Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>

Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>

Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>

WordPressAPI

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

readonly _tag: "WordPressAPI";

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:26560

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: Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>;

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:192^

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: Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>;

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:193^

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: Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>;

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:191^

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

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

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

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]

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

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]

static optional [ignoreSymbol]: TagUnifyIgnore;

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:41

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]

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

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]

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>;
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]

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

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]

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

readonly _Identifier: Invariant<WordPressAPI>;
readonly _Service: Invariant<WordPressAPI>;
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]

static optional [typeSymbol]: unknown;

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:39

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]

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

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]

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

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

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

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

readonly static Identifier: WordPressAPI;

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:30

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

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

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

Effect<void, boolean | Error | ParseError | SDKCoreError, ImportEndpointConfig>

Effect<void, boolean | Error | ParseError | LibSQLDatabaseError | SDKCoreError, ImportPostsEndpointConfig>

Effect<void, boolean | AstroUserError | UnknownException | ParseError | SDKCoreError, ImportEndpointConfig>

WordPressAPI

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

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^

A

E

R

Effect<A, E, R>

Effect<A, E, Exclude<R, WordPressAPI>>

readonly static Service: WordPressAPI;

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:29

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

readonly static optional stack: string;

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:37

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

X

(_: 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>

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

static iterator: EffectGenerator<Tag<WordPressAPI, WordPressAPI>>

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Effect.d.ts:137

EffectGenerator<Tag<WordPressAPI, WordPressAPI>>

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]

static NodeInspectSymbol: unknown

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:22

unknown

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]

static context(self: WordPressAPI): Context<WordPressAPI>

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Context.d.ts:36

WordPressAPI

Context<WordPressAPI>

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

WordPressAPI

WordPressAPI

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

static pipe<A>(this: A): A

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Pipeable.d.ts:10

A

A

A

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
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

A

B = never

A

(_: A) => B

B

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
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

A

B = never

C = never

A

(_: A) => B

(_: B) => C

C

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
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

A

B = never

C = never

D = never

A

(_: A) => B

(_: B) => C

(_: C) => D

D

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
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

A

B = never

C = never

D = never

E = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

E

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
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

A

B = never

C = never

D = never

E = never

F = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

F

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

G

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

H = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

(_: G) => H

H

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

H = never

I = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

(_: G) => H

(_: H) => I

I

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

H = never

I = never

J = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

(_: G) => H

(_: H) => I

(_: I) => J

J

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

H = never

I = never

J = never

K = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

(_: G) => H

(_: H) => I

(_: I) => J

(_: J) => K

K

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
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

A

B = never

C = never

D = never

E = never

F = never

G = never

H = never

I = never

J = never

K = never

L = never

A

(_: A) => B

(_: B) => C

(_: C) => D

(_: D) => E

(_: E) => F

(_: F) => G

(_: G) => H

(_: H) => I

(_: I) => J

(_: J) => K

(_: K) => L

L

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

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
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

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

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

U

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
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

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

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

U

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

static toJSON(): unknown

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:21

unknown

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

static toString(): string

Defined in: node_modules/.pnpm/effect@3.17.3/node_modules/effect/dist/dts/Inspectable.d.ts:20

string

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 PageContent = typeof tsPageContent.$inferInsert;

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:21^


type PageData = typeof tsPageData.$inferInsert;

Defined in: studiocms/packages/@studiocms/devapps/src/effects/WordPressAPI/importers.ts:20^