[**@wocart/storefront v3.1.0**](../../README)

***

[@wocart/storefront](../../README) / [astro](../README) / StorefrontMiddlewareOptions

# Interface: StorefrontMiddlewareOptions\<TContext, TStore, TResult, TSerialized\>

## Type Parameters

### TContext

`TContext` *extends* [`StorefrontMiddlewareContext`](StorefrontMiddlewareContext)

### TStore

`TStore`

### TResult

`TResult` *extends* `ActionHandlerResult`

### TSerialized

`TSerialized`

## Properties

### client

> **client**: (`locale?`) => `object`

The theme's one client factory: in `locale`, or in the store's primary language when absent.

#### Parameters

##### locale?

`string`

#### Returns

`object`

##### cart

> **cart**: `CartNamespace`

##### categories

> **categories**: `CategoriesNamespace`

##### collections

> **collections**: `CollectionsNamespace`

##### config

> **config**: `ConfigNamespace`

##### geo

> **geo**: `GeoNamespace`

##### menus

> **menus**: `MenusNamespace`

##### orders

> **orders**: `OrdersNamespace`

##### pageData

> **pageData**: `PageDataNamespace`

##### pages

> **pages**: `PagesNamespace`

##### products

> **products**: `ProductsNamespace`

##### shipping

> **shipping**: `ShippingNamespace`

***

### context

> **context**: (`store`) => `TStore`

The theme's context for a resolved store; it becomes `locals.store`.

#### Parameters

##### store

[`ResolvedStore`](ResolvedStore)

#### Returns

`TStore`

***

### embedded?

> `optional` **embedded?**: (`pathname`) => `boolean`

Whether a path serves part of a page rather than a page. Default: `/api/` and `/_server-islands/`.

#### Parameters

##### pathname

`string`

#### Returns

`boolean`

***

### fallback

> **fallback**: [`StoreConfig`](../../index/interfaces/StoreConfig)

What renders when the store's config cannot be read: `unavailableStoreConfig(…)`.

***

### getActionContext

> **getActionContext**: (`context`) => [`StorefrontActionContext`](StorefrontActionContext)\<`TResult`, `TSerialized`\>

Astro's `getActionContext`, from `astro:actions`.

#### Parameters

##### context

`TContext`

#### Returns

[`StorefrontActionContext`](StorefrontActionContext)\<`TResult`, `TSerialized`\>

***

### preview

> **preview**: `object` & `Pick`\<[`PreviewRequestOptions`](../../server/interfaces/PreviewRequestOptions), `"theme"` \| `"maxBytes"`\>

The editor's preview route (`THEME_PREVIEW_PATH`) and how its token is
checked; no `publicKey`: the route answers 404. Pass the key as a
function to read it on each request: a secret from `astro:env/server`
can be set after the module loads.

#### Type Declaration

##### path

> **path**: `string`

##### publicKey

> **publicKey**: `string` \| `JsonWebKey` \| (() => `string` \| `JsonWebKey`)
