diff --git a/packages/theme/src/cli/utilities/theme-selector/fetch.ts b/packages/theme/src/cli/utilities/theme-selector/fetch.ts index 857d4fd8f7..dbb47f2ab6 100644 --- a/packages/theme/src/cli/utilities/theme-selector/fetch.ts +++ b/packages/theme/src/cli/utilities/theme-selector/fetch.ts @@ -1,11 +1,22 @@ import {fetchThemes} from '@shopify/cli-kit/node/themes/api' -import {AdminSession} from '@shopify/cli-kit/node/session' +import {AdminSession, ensureAuthenticatedThemes} from '@shopify/cli-kit/node/session' import {AbortError} from '@shopify/cli-kit/node/error' import {Theme} from '@shopify/cli-kit/node/themes/types' export type Role = 'live' | 'development' | 'unpublished' export const ALLOWED_ROLES: Role[] = ['live', 'unpublished', 'development'] +/** + * Fetches the themes from the store. + * @param store - The store to fetch the themes from. + * @param password - The password to authenticate with. + * @returns The themes from the store. + */ +export async function publicFetchStoreThemes(store: string, password: string) { + const adminSession = await ensureAuthenticatedThemes(store, password) + return fetchStoreThemes(adminSession) +} + export async function fetchStoreThemes(session: AdminSession) { const store = session.storeFqdn const themes = (await fetchThemes(session)).filter(isRoleAllowed) diff --git a/packages/theme/src/index.ts b/packages/theme/src/index.ts index 5c391d9371..b5453c98ca 100644 --- a/packages/theme/src/index.ts +++ b/packages/theme/src/index.ts @@ -16,6 +16,7 @@ import Serve from './cli/commands/theme/serve.js' import Share from './cli/commands/theme/share.js' import {pull} from './cli/services/pull.js' import {push} from './cli/services/push.js' +import {publicFetchStoreThemes} from './cli/utilities/theme-selector/fetch.js' const COMMANDS = { 'theme:init': Init, @@ -39,6 +40,7 @@ const COMMANDS = { const PUBLIC_COMMANDS = { pull, push, + publicFetchStoreThemes, } export {PUBLIC_COMMANDS}