@websolutespa/bom-mixer-store 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -150,7 +150,6 @@ declare enum BuildStrategy {
150
150
  }
151
151
  declare const buildStrategy: BuildStrategy;
152
152
  declare enum StoreStrategy {
153
- Local = "local",
154
153
  Api = "api",
155
154
  DecoratedApi = "decoratedApi",
156
155
  Data = "data",
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/api/api.ts","../src/cache/cache.service.ts","../src/decorators/category.ts","../src/decorators/consts.ts","../src/decorators/href.ts","../src/decorators/localizable.ts","../src/decorators/menu.ts","../src/decorators/nav.ts","../src/decorators/optimize.ts","../src/decorators/relation.ts","../src/decorators/schema.ts","../src/local/local.api.ts","../src/mock/mock.api.ts","../src/remote/remote.api.ts","../src/store/store.ts","../src/store/store.api.ts"],"sourcesContent":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/api/api.ts","../src/cache/cache.service.ts","../src/decorators/category.ts","../src/decorators/consts.ts","../src/decorators/href.ts","../src/decorators/localizable.ts","../src/decorators/menu.ts","../src/decorators/nav.ts","../src/decorators/optimize.ts","../src/decorators/relation.ts","../src/decorators/schema.ts","../src/local/local.api.ts","../src/mock/mock.api.ts","../src/remote/remote.api.ts","../src/store/store.ts","../src/store/store.api.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import { BuildStrategy, COLLECTIONS, DEFAULT_DEPTH, KNOWN_COLLECTIONS, MAX_INT, MOCK_COLLECTIONS, NextPhase, STATIC_COLLECTIONS, StoreStrategy, buildStrategy, collectCategory_, decorateCategories_, decorateCategory_, decorateHref_, decorateHrefs_, decorateLocalizable_, decorateLocalizables_, decorateMenu_, decorateMenus_, decorateNav_, decorateNavs_, decorateRelation_, decorateRelations_, decorateSchema_, decorateSchemas_, fromCache, getLocalApiRequestOptions, getLocalApiUrl, getRemoteApiRequestOptions, getRemoteApiUrl, localApiDelete, localApiFetch, localApiGet, localApiPatch, localApiPost, localApiPut, mockApiDelete, mockApiFetch, mockApiGet, mockApiPatch, mockApiPost, mockApiPut, nextPhase, optimizeMany_, optimizeOne_, remoteApiDelete, remoteApiFetch, remoteApiGet, remoteApiPatch, remoteApiPost, remoteApiPut, staticCollections, storeApiDelete, storeApiGet, storeApiPatch, storeApiPost, storeApiPut, storeCacheDuration, storeStrategy } from "./src-bMn1KJCJ.js";
1
+ import { BuildStrategy, COLLECTIONS, DEFAULT_DEPTH, KNOWN_COLLECTIONS, MAX_INT, MOCK_COLLECTIONS, NextPhase, STATIC_COLLECTIONS, StoreStrategy, buildStrategy, collectCategory_, decorateCategories_, decorateCategory_, decorateHref_, decorateHrefs_, decorateLocalizable_, decorateLocalizables_, decorateMenu_, decorateMenus_, decorateNav_, decorateNavs_, decorateRelation_, decorateRelations_, decorateSchema_, decorateSchemas_, fromCache, getLocalApiRequestOptions, getLocalApiUrl, getRemoteApiRequestOptions, getRemoteApiUrl, localApiDelete, localApiFetch, localApiGet, localApiPatch, localApiPost, localApiPut, mockApiDelete, mockApiFetch, mockApiGet, mockApiPatch, mockApiPost, mockApiPut, nextPhase, optimizeMany_, optimizeOne_, remoteApiDelete, remoteApiFetch, remoteApiGet, remoteApiPatch, remoteApiPost, remoteApiPut, staticCollections, storeApiDelete, storeApiGet, storeApiPatch, storeApiPost, storeApiPut, storeCacheDuration, storeStrategy } from "./src-D-0XSCD9.js";
2
2
 
3
3
  export { BuildStrategy, COLLECTIONS, DEFAULT_DEPTH, KNOWN_COLLECTIONS, MAX_INT, MOCK_COLLECTIONS, NextPhase, STATIC_COLLECTIONS, StoreStrategy, buildStrategy, collectCategory_, decorateCategories_, decorateCategory_, decorateHref_, decorateHrefs_, decorateLocalizable_, decorateLocalizables_, decorateMenu_, decorateMenus_, decorateNav_, decorateNavs_, decorateRelation_, decorateRelations_, decorateSchema_, decorateSchemas_, fromCache, getLocalApiRequestOptions, getLocalApiUrl, getRemoteApiRequestOptions, getRemoteApiUrl, localApiDelete, localApiFetch, localApiGet, localApiPatch, localApiPost, localApiPut, mockApiDelete, mockApiFetch, mockApiGet, mockApiPatch, mockApiPost, mockApiPut, nextPhase, optimizeMany_, optimizeOne_, remoteApiDelete, remoteApiFetch, remoteApiGet, remoteApiPatch, remoteApiPost, remoteApiPut, staticCollections, storeApiDelete, storeApiGet, storeApiPatch, storeApiPost, storeApiPut, storeCacheDuration, storeStrategy };
@@ -854,7 +854,6 @@ function getBuildStrategy() {
854
854
  }
855
855
  const buildStrategy = getBuildStrategy();
856
856
  let StoreStrategy = /* @__PURE__ */ function(StoreStrategy$1) {
857
- StoreStrategy$1["Local"] = "local";
858
857
  StoreStrategy$1["Api"] = "api";
859
858
  StoreStrategy$1["DecoratedApi"] = "decoratedApi";
860
859
  StoreStrategy$1["Data"] = "data";
@@ -929,4 +928,4 @@ async function storeApiDelete(url, options = {}) {
929
928
 
930
929
  //#endregion
931
930
  export { BuildStrategy, COLLECTIONS, DEFAULT_DEPTH, KNOWN_COLLECTIONS, MAX_INT, MOCK_COLLECTIONS, NextPhase, STATIC_COLLECTIONS, StoreStrategy, buildStrategy, collectCategory_, decorateCategories_, decorateCategory_, decorateHref_, decorateHrefs_, decorateLocalizable_, decorateLocalizables_, decorateMenu_, decorateMenus_, decorateNav_, decorateNavs_, decorateRelation_, decorateRelations_, decorateSchema_, decorateSchemas_, fromCache, getLocalApiRequestOptions, getLocalApiUrl, getRemoteApiRequestOptions, getRemoteApiUrl, localApiDelete, localApiFetch, localApiGet, localApiPatch, localApiPost, localApiPut, mockApiDelete, mockApiFetch, mockApiGet, mockApiPatch, mockApiPost, mockApiPut, nextPhase, optimizeMany_, optimizeOne_, remoteApiDelete, remoteApiFetch, remoteApiGet, remoteApiPatch, remoteApiPost, remoteApiPut, staticCollections, storeApiDelete, storeApiGet, storeApiPatch, storeApiPost, storeApiPut, storeCacheDuration, storeStrategy };
932
- //# sourceMappingURL=src-bMn1KJCJ.js.map
931
+ //# sourceMappingURL=src-D-0XSCD9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"src-bMn1KJCJ.js","names":["token?: string","CACHE_: Map<string, unknown>","callback: () => Promise<T>","key?: string","store: IStore","item: T","params: QueryParams","items: T[]","categories: ICategory[]","routes: IRoute[]","depth: number","store: IStore","item: T","params: QueryParams","items: T[]","item: B","params: QueryParams","items: B[]","decoratedItems: B[]","store: IStore","item: IUndecoratedMenu","params: { market: string, locale: string }","decoratedItem: IMenu","items: IUndecoratedMenu[]","decoratedItems: IMenu[]","items: IUndecoratedMenuItem[]","market: string","item: IUndecoratedMenuItem","undecoratedCategories: IUndecoratedMenuCategory[]","undecoratedPages: IUndecoratedMenuPage[]","item: IUndecoratedMenuCategory","category: ICategory","items: IMenuItem[]","categories: ICategory[]","routes: IRoute[]","depth: number","route: IRoute","route","childRouteItems: IMenuItem[]","item: IRoute","decoratedItem: IMenuRoute","item: IUndecoratedMenuPage","params: QueryParams","decoratedItem: IMenuPage","store: IStore","item: T","params: QueryParams","routes?: IRoute[]","items: T[]","item: unknown","navs: IUndecoratedNav[]","item: IUndecoratedNav","routes: IRoute[]","item: T","items: T[]","optimizedItems: T[]","store: IStore","item: T","params: QueryParams","items: T[]","context: {\r\n store: IStore;\r\n params: QueryParams;\r\n depth: number;\r\n}","relations: IPageResolvedRelation[]","items: ICategorized[]","store: IStore","item: T","schema: string","items: T[]","API_URL","API_BASE","pathname: string","options: ApiRequestOptions","serviceOptions?: { locale: string, market: string }","url: string","payload?: unknown","API_URL","API_BASE","pathname: string","options: ApiRequestOptions","url: string","payload: unknown","pathname: string","options: ApiRequestOptions","url: string","payload: unknown","staticCollections: StaticServiceConfig[]","nextPhase","nextPhase: NextPhase","buildStrategy","buildStrategy: BuildStrategy","storeStrategy","storeStrategy: StoreStrategy","storeCacheDuration","storeCacheDuration: number","ENV_COLLECTIONS: string[]","MOCK_COLLECTIONS: string[]","STATIC_COLLECTIONS: string[]","KNOWN_COLLECTIONS: string[]","url: string","options: ApiRequestOptions","payload: unknown"],"sources":["../src/api/api.ts","../src/cache/cache.service.ts","../src/decorators/consts.ts","../src/decorators/category.ts","../src/decorators/href.ts","../src/decorators/localizable.ts","../src/decorators/menu.ts","../src/decorators/nav.ts","../src/decorators/optimize.ts","../src/decorators/relation.ts","../src/decorators/schema.ts","../src/local/local.api.ts","../src/mock/mock.api.ts","../src/remote/remote.api.ts","../src/static/static.ts","../src/store/store.ts","../src/store/store.api.ts"],"sourcesContent":["import { FetchRequestOptions } from '@websolutespa/bom-core';\r\n\r\nexport type ApiRequestOptions = FetchRequestOptions;\r\n\r\nexport function getLocalApiRequestOptions(): ApiRequestOptions {\r\n return {\r\n headers: {\r\n },\r\n };\r\n}\r\n\r\nexport function getRemoteApiRequestOptions(token?: string): ApiRequestOptions {\r\n if (token) {\r\n // authenticated end user JWT token bearer (end_users)\r\n return {\r\n // mode: 'cors',\r\n headers: {\r\n Authorization: `JWT ${token}`,\r\n // Authorization: `Bearer ${token}`,\r\n },\r\n };\r\n } else {\r\n // guest user api key (users)\r\n return {\r\n // mode: 'cors',\r\n headers: {\r\n Authorization: `users API-Key ${process.env.STORE_API_KEY}`,\r\n },\r\n };\r\n }\r\n}\r\n","const CACHE_: Map<string, unknown> = new Map<string, unknown>();\r\n\r\nexport async function fromCache<T = unknown>(callback: () => Promise<T>, key?: string): Promise<T> {\r\n if (key && CACHE_.has(key)) {\r\n return CACHE_.get(key) as T;\r\n } else {\r\n const t = await callback();\r\n if (key) {\r\n CACHE_.set(key, t);\r\n }\r\n return t;\r\n }\r\n}\r\n","\r\nexport const DEFAULT_DEPTH = 3;\r\n","import { ICategorized, ICategory, IEquatable, IRoute, IStore, QueryParams, findRouteOfCategory, isUnresolvedCategory } from '@websolutespa/bom-core';\r\nimport { DEFAULT_DEPTH } from './consts';\r\n\r\nexport async function decorateCategory_<T extends { category?: IEquatable | ICategory } = { category?: IEquatable | ICategory }>(store: IStore, item: T, params: QueryParams = {}): Promise<T | (T & { category: ICategory })> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n if (depth === 0) {\r\n return item;\r\n }\r\n const categories = await store.category!.findMany<ICategory>({\r\n market: params.market,\r\n locale: params.locale,\r\n depth: 0,\r\n });\r\n const routes = await store.route!.findMany<IRoute>();\r\n const decoratedItem = await collectCategory_(categories, routes, item, params, depth);\r\n return decoratedItem as T & { category: ICategory };\r\n}\r\n\r\nexport async function decorateCategories_<T extends ICategorized = ICategorized>(store: IStore, items: T[], params: QueryParams = {}): Promise<(T | (T & { category: ICategory }))[]> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n if (depth === 0) {\r\n return items;\r\n }\r\n const categories = await store.category!.findMany<ICategory>({\r\n market: params.market,\r\n locale: params.locale,\r\n depth: 0,\r\n });\r\n const routes = await store.route!.findMany<IRoute>();\r\n const decoratedItems = [];\r\n for (const item of items) {\r\n const decoratedItem = await collectCategory_(categories, routes, item, params, depth);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n\r\nexport async function collectCategory_<\r\n T extends { category?: IEquatable | ICategory } = { category?: IEquatable | ICategory }\r\n>(\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n item: T,\r\n params: QueryParams = {},\r\n depth: number\r\n): Promise<T> {\r\n if (depth === 0) {\r\n return item;\r\n }\r\n if (isUnresolvedCategory(item.category)) {\r\n const category = categories.find(x => x.id === item.category);\r\n if (category) {\r\n const route = findRouteOfCategory(routes, category.id, params.market, params.locale);\r\n if (route) {\r\n category.href = route.id;\r\n }\r\n const decoratedCategory = await collectCategory_(categories, routes, category, params, depth - 1);\r\n return { ...item, category: decoratedCategory };\r\n }\r\n }\r\n return item;\r\n}\r\n","import { IRoute, ISchema, IStore, QueryParams } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateHref_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}): Promise<T | T & { href: string | null }> {\r\n if (params.market && params.locale) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n market: {\r\n equals: params.market,\r\n },\r\n locale: {\r\n equals: params.locale,\r\n },\r\n schema: {\r\n equals: item.schema,\r\n },\r\n page: {\r\n equals: item.id,\r\n },\r\n },\r\n });\r\n const href = routes.length ? routes[0]!.id : null;\r\n return { ...item, href };\r\n } else {\r\n return item;\r\n }\r\n}\r\n\r\nexport async function decorateHrefs_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[] | (T & { href: string | null })[]> {\r\n if (params.market && params.locale) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n market: {\r\n equals: params.market,\r\n },\r\n locale: {\r\n equals: params.locale,\r\n },\r\n },\r\n });\r\n return items.map(item => {\r\n const route = routes.find(x =>\r\n x.schema === item.schema &&\r\n x.page === item.id\r\n );\r\n const href = route ? route.id : null;\r\n return { ...item, href };\r\n });\r\n } else {\r\n return items;\r\n }\r\n}\r\n","import { QueryParams, cloneItem, localizeItem } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateLocalizable_<B>(item: B, params: QueryParams = {}): Promise<B> {\r\n if (params.locale) {\r\n return localizeItem(item, params.locale);\r\n } else {\r\n return cloneItem(item);\r\n }\r\n}\r\n\r\nexport async function decorateLocalizables_<B>(items: B[], params: QueryParams = {}): Promise<B[]> {\r\n const decoratedItems: B[] = [];\r\n for (const item of items) {\r\n const decoratedItem = params.locale ?\r\n localizeItem(item, params.locale) :\r\n cloneItem(item);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n","import {\r\n ICategorized, ICategory, IMenu, IMenuCategory, IMenuGroup, IMenuItem, IMenuPage, IMenuRoute, IRoute, IStore,\r\n IUndecoratedMenu, IUndecoratedMenuCategory, IUndecoratedMenuItem, IUndecoratedMenuPage, MenuCategoryStrategy, QueryParams,\r\n asCategoryId,\r\n findCategoryInCategories,\r\n findChildCategories,\r\n findRouteOfCategory,\r\n isEquatable, isUndecoratedMenuCategory, isUndecoratedMenuPage,\r\n uuidv4\r\n} from '@websolutespa/bom-core';\r\n\r\nexport async function decorateMenu_(store: IStore, item: IUndecoratedMenu, params: { market: string, locale: string }): Promise<IMenu> {\r\n const { market, locale } = params;\r\n const items = itemsFilteredByMarket_(item.items || [], market);\r\n const decoratedItem: IMenu = {\r\n id: item.id,\r\n items: [],\r\n };\r\n const undecoratedCategories = collectUndecoratedCategories(items);\r\n const undecoratedPages = collectUndecoratedPages(items);\r\n if (\r\n undecoratedCategories.length > 0 ||\r\n undecoratedPages.length > 0\r\n ) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(market ? { market: { equals: market } } : {}),\r\n ...(locale ? { locale: { equals: locale } } : {}),\r\n },\r\n });\r\n if (undecoratedCategories.length > 0) {\r\n const categories = await store.category!.findMany<ICategory>(params);\r\n for (const undecoratedMenuCategory of undecoratedCategories) {\r\n const decoratedMenuCategory = decorateMenuCategory_(undecoratedMenuCategory, categories, routes, market);\r\n Object.assign(undecoratedMenuCategory, decoratedMenuCategory);\r\n }\r\n }\r\n for (const undecoratedMenuPage of undecoratedPages) {\r\n const decoratedMenuPage = await decorateMenuPage_(undecoratedMenuPage, routes, store, { ...params });\r\n Object.assign(undecoratedMenuPage, decoratedMenuPage);\r\n }\r\n }\r\n decoratedItem.items = items as IMenuItem[];\r\n return decoratedItem;\r\n}\r\n\r\nexport async function decorateMenus_(store: IStore, items: IUndecoratedMenu[], params: { market: string, locale: string }): Promise<IMenu[]> {\r\n const decoratedItems: IMenu[] = [];\r\n for (const item of items) {\r\n const decoratedItem = await decorateMenu_(store, item, params);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n\r\nfunction itemsFilteredByMarket_(items: IUndecoratedMenuItem[], market: string): IUndecoratedMenuItem[] {\r\n return items.filter(x => {\r\n const hasMarket = itemHasMarket_(x, market);\r\n if (hasMarket && x.items) {\r\n x.items = itemsFilteredByMarket_(x.items || [], market);\r\n }\r\n return hasMarket;\r\n });\r\n}\r\n\r\nfunction itemHasMarket_(item: IUndecoratedMenuItem, market: string): boolean {\r\n return (Array.isArray(item.markets) && item.markets.length > 0) ? item.markets.includes(market) : true;\r\n}\r\n\r\nfunction collectUndecoratedCategories(items: IUndecoratedMenuItem[], undecoratedCategories: IUndecoratedMenuCategory[] = []): IUndecoratedMenuCategory[] {\r\n items.forEach(item => {\r\n if (isUndecoratedMenuCategory(item)) {\r\n undecoratedCategories.push(item);\r\n }\r\n if (item.items) {\r\n collectUndecoratedCategories(item.items, undecoratedCategories);\r\n }\r\n });\r\n return undecoratedCategories;\r\n}\r\n\r\nfunction collectUndecoratedPages(items: IUndecoratedMenuItem[], undecoratedPages: IUndecoratedMenuPage[] = []): IUndecoratedMenuPage[] {\r\n items.forEach(item => {\r\n if (isUndecoratedMenuPage(item)) {\r\n undecoratedPages.push(item);\r\n }\r\n if (item.items) {\r\n collectUndecoratedPages(item.items, undecoratedPages);\r\n }\r\n });\r\n return undecoratedPages;\r\n}\r\n\r\nexport const MAX_INT = 1000000000000; // 9007199254740991\r\n\r\nfunction makeCategoryMenuItem_(item: IUndecoratedMenuCategory, category: ICategory): IMenuCategory | IMenuGroup {\r\n const id = item.id || uuidv4();\r\n const title = item.title || category.title || '';\r\n const abstract = item.abstract || undefined;\r\n const customClass = item.customClass || undefined;\r\n const media = item.media || category.media;\r\n const items: IMenuItem[] = [];\r\n return category.isHidden ?\r\n {\r\n type: 'group',\r\n id,\r\n title,\r\n abstract,\r\n media,\r\n customClass,\r\n items,\r\n } : {\r\n type: 'category',\r\n category: category.id,\r\n id,\r\n href: '',\r\n title,\r\n abstract,\r\n media,\r\n customClass,\r\n items,\r\n };\r\n}\r\n\r\nfunction decorateMenuCategory_(\r\n item: IUndecoratedMenuCategory,\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n market: string,\r\n depth: number = 0\r\n): IMenuItem | undefined {\r\n const strategy = item.strategy || MenuCategoryStrategy.Default;\r\n const categoryId = asCategoryId(item.category);\r\n // find category\r\n const category = categoryId ? categories.find(x => x.id === categoryId) : undefined;\r\n if (category) {\r\n const decoratedItem = makeCategoryMenuItem_(item, category);\r\n if (!category.isHidden) {\r\n const route = routes.find((route: IRoute) => route.isDefault && route.resolvedCategory === category.id);\r\n if (route) {\r\n (decoratedItem as IMenuCategory).href = route.id;\r\n if (!decoratedItem.media) {\r\n decoratedItem.media = route.media;\r\n }\r\n }\r\n }\r\n // checking for max depth recursion\r\n let maxDepth = item.maxDepth;\r\n if (typeof maxDepth === 'number') {\r\n if (depth > maxDepth) {\r\n return decoratedItem;\r\n }\r\n maxDepth--;\r\n }\r\n // search child categories\r\n const childCategories = (category.id ?\r\n categories.filter(x => asCategoryId(x.category) === category.id) : []\r\n ).filter(x => {\r\n switch (strategy) {\r\n case MenuCategoryStrategy.ExcludeHidden:\r\n return Boolean(x.isHidden) === false;\r\n case MenuCategoryStrategy.Default:\r\n return true;\r\n }\r\n });\r\n // sort child categories\r\n childCategories.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n // define sub strategy (!!! todo)\r\n const subStrategy = strategy;\r\n // decorate child categories\r\n const childCategoryItems = childCategories.map(c => decorateMenuCategory_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n strategy: subStrategy, // dispatch sub strategy\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1));\r\n // find child routes\r\n const childRoutes = routes.filter((route: IRoute) => {\r\n switch (strategy) {\r\n case MenuCategoryStrategy.ExcludeHidden:\r\n return route.resolvedCategory === category.id && Boolean(route.isDefault) === false;\r\n case MenuCategoryStrategy.Default:\r\n return route.category === category.id && (category.isHidden || Boolean(route.isDefault) === false);\r\n }\r\n });\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n // decorate child routes\r\n const childRouteItems: IMenuItem[] = childRoutes.map(x => decorateMenuRoute_(x));\r\n // filter items\r\n decoratedItem.items = [\r\n ...childCategoryItems,\r\n ...childRouteItems,\r\n ].filter(x => Boolean(x)) as IMenuItem[];\r\n return decoratedItem;\r\n }\r\n // return unresolved category as group\r\n return {\r\n id: item.id || uuidv4(),\r\n type: 'group',\r\n title: item.title || '',\r\n items: [],\r\n };\r\n}\r\n\r\nfunction decorateMenuCategoryWithHiddenSubCategories_(\r\n item: IUndecoratedMenuCategory,\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n market: string,\r\n depth: number = 0\r\n): IMenuItem {\r\n const decoratedItem: IMenuCategory = {\r\n abstract: item.abstract,\r\n category: '',\r\n customClass: item.customClass,\r\n href: '',\r\n id: item.id || uuidv4(),\r\n items: [],\r\n title: '',\r\n type: item.type,\r\n };\r\n /*\r\n const categoryId = asCategoryId(item.category);\r\n const category = categoryId ? categories.find(x => x.id === categoryId) : undefined;\r\n */\r\n const category = findCategoryInCategories(categories, item.category);\r\n if (category) {\r\n // assigning category id\r\n decoratedItem.category = category.id;\r\n // assigning category title\r\n decoratedItem.title = item.title || category.title || '';\r\n // assigning current or category media\r\n decoratedItem.media = item.media || category.media;\r\n // find category's index page route\r\n const route = findRouteOfCategory(routes, category.id);\r\n if (route) {\r\n // hasLink\r\n decoratedItem.href = route.id;\r\n } else {\r\n // isGroup\r\n }\r\n // checking for max depth recursion\r\n let maxDepth = item.maxDepth;\r\n if (typeof maxDepth === 'number') {\r\n if (depth > maxDepth) {\r\n return decoratedItem;\r\n }\r\n maxDepth--;\r\n }\r\n // search child categories\r\n const childCategories = findChildCategories(categories, category.id);\r\n if (childCategories.length) {\r\n // sort child categories\r\n childCategories.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n decoratedItem.items = childCategories.map(c => {\r\n const menuCategory = decorateMenuCategoryWithHiddenSubCategories_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1);\r\n if (c.isHidden) {\r\n const group: IMenuGroup = {\r\n id: c.id,\r\n type: 'group',\r\n title: c.title,\r\n items: [\r\n ...(menuCategory.items || []),\r\n ],\r\n };\r\n // find child routes\r\n // const childRoutes = findRoutesOfCategory(routes, c.id, false);\r\n const childRoutes = routes.filter((route: IRoute) =>\r\n route.category === c.id &&\r\n Boolean(route.isDefault) === false\r\n );\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n const routeLinks = childRoutes.map(x => decorateMenuRoute_(x));\r\n group.items?.push(...routeLinks);\r\n return group;\r\n } else {\r\n return decorateMenuCategoryWithHiddenSubCategories_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1);\r\n }\r\n });\r\n }\r\n // find child routes\r\n // const childRoutes = findRoutesOfCategory(routes, category.id, false);\r\n const childRoutes = routes.filter((route: IRoute) =>\r\n route.category === category.id &&\r\n Boolean(route.isDefault) === false\r\n );\r\n // console.log('childRoutes', childRoutes, category.id);\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n decoratedItem.items = [\r\n ...(decoratedItem.items || []),\r\n ...childRoutes.map(x => decorateMenuRoute_(x)),\r\n ];\r\n\r\n }\r\n return decoratedItem;\r\n}\r\n\r\nfunction decorateMenuRoute_(\r\n item: IRoute\r\n): IMenuItem {\r\n const decoratedItem: IMenuRoute = {\r\n id: uuidv4(),\r\n type: 'route',\r\n title: item.title,\r\n href: item.id,\r\n media: item.media,\r\n page: item.page,\r\n schema: item.schema,\r\n items: [],\r\n };\r\n return decoratedItem;\r\n}\r\n\r\nasync function decorateMenuPage_(\r\n item: IUndecoratedMenuPage,\r\n routes: IRoute[],\r\n store: IStore,\r\n params: QueryParams = {}\r\n): Promise<IMenuItem> {\r\n const values = Array.isArray(item.page.value) ? item.page.value : [item.page.value];\r\n const value = values[0]!; // !!!\r\n const id = isEquatable(value) ? value : value.id;\r\n const route = routes.find(x =>\r\n x.schema === item.page.relationTo &&\r\n x.page === id\r\n );\r\n const page = await store[item.page.relationTo]!.findOne<ICategorized>(id, { ...params });\r\n const decoratedItem: IMenuPage = {\r\n id: item.id || uuidv4(),\r\n type: item.type,\r\n title: item.title || page?.title || '',\r\n abstract: item.abstract || page?.abstract || '',\r\n customClass: item.customClass,\r\n href: route?.id || '',\r\n media: page?.media,\r\n page: route?.page || '',\r\n schema: route?.schema || '',\r\n items: (item.items || []) as IMenuItem[],\r\n };\r\n return decoratedItem;\r\n}\r\n","import { IDecoratedNav, IEquatable, IRoute, ISchema, IStore, IUndecoratedNav, QueryParams, isArray, isObject, isUndecoratedNav } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateNav_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}, routes?: IRoute[]): Promise<T> {\r\n if (!routes) {\r\n routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(params.market ? { market: { equals: params.market } } : {}),\r\n ...(params.locale ? { locale: { equals: params.locale } } : {}),\r\n },\r\n });\r\n }\r\n const navs = collectNavs_(item);\r\n for (const nav of navs) {\r\n const decoratedNav = decorateNav__(nav, routes);\r\n Object.assign(nav, decoratedNav);\r\n // (nav as IDecoratedNav<T>).nav = decoratedNav.nav;\r\n }\r\n return item;\r\n}\r\n\r\nexport async function decorateNavs_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[]> {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(params.market ? { market: { equals: params.market } } : {}),\r\n ...(params.locale ? { locale: { equals: params.locale } } : {}),\r\n },\r\n });\r\n for (const item of items) {\r\n await decorateNav_<T>(store, item, params, routes);\r\n }\r\n return items;\r\n}\r\n\r\n// collecting navs recursively\r\nfunction collectNavs_(item: unknown, navs: IUndecoratedNav[] = []): IUndecoratedNav[] {\r\n if (isUndecoratedNav(item)) {\r\n navs.push(item);\r\n }\r\n // console.log(item, isUndecoratedNav<T>(item));\r\n if (isArray(item)) {\r\n item.forEach(x => collectNavs_(x, navs));\r\n } else if (isObject(item)) {\r\n Object.values(item).forEach(value => {\r\n collectNavs_(value, navs);\r\n });\r\n }\r\n return navs;\r\n}\r\n\r\nfunction decorateNav__(item: IUndecoratedNav, routes: IRoute[]): IDecoratedNav {\r\n let decoratedNav = item as unknown as IDecoratedNav;\r\n if (item !== undefined) {\r\n const route = routes.find(x =>\r\n x.page === (item.page.value as unknown as IEquatable) &&\r\n x.schema === item.page.relationTo\r\n );\r\n if (route) {\r\n decoratedNav = {\r\n type: 'page',\r\n id: route.page,\r\n href: route.id,\r\n title: route.title,\r\n page: route.page,\r\n schema: route.schema,\r\n };\r\n }\r\n }\r\n return decoratedNav;\r\n}\r\n","import { ICategorized } from '@websolutespa/bom-core';\r\n\r\nexport async function optimizeOne_<T extends ICategorized = ICategorized>(item: T): Promise<T> {\r\n const validEntries = Object.entries(item).filter(([key, value]) => {\r\n switch (key) {\r\n case 'components':\r\n case 'meta':\r\n return false;\r\n /*\r\n default:\r\n if (\r\n isUnresolvedRelation(value) ||\r\n (\r\n Array.isArray(value) &&\r\n value.reduce((p, c) => p && isUnresolvedRelation(c), true)\r\n )\r\n ) {\r\n return false;\r\n }\r\n */\r\n }\r\n return true;\r\n });\r\n return Object.fromEntries(validEntries) as T;\r\n}\r\n\r\nexport async function optimizeMany_<T extends ICategorized = ICategorized>(items: T[]): Promise<T[]> {\r\n const optimizedItems: T[] = [];\r\n for (const item of items) {\r\n const optimizedItem = await optimizeOne_<T>(item);\r\n optimizedItems.push(optimizedItem);\r\n }\r\n return optimizedItems;\r\n}\r\n","import { ICategorized, IEquatable, ISchema, IStore, QueryParams, isArray, isObject, isUnresolvedRelation } from '@websolutespa/bom-core';\r\nimport { DEFAULT_DEPTH } from './consts';\r\n\r\nexport async function decorateRelation_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}): Promise<T> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n // console.log('decorateRelation_', depth, typeof depth);\r\n item = await collectRelations_({ store, params, depth }, item);\r\n return item;\r\n}\r\n\r\nexport async function decorateRelations_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[]> {\r\n for (const item of items) {\r\n await decorateRelation_<T>(store, item, params);\r\n }\r\n return items;\r\n}\r\n\r\nexport type IPageResolvedRelation = {\r\n relationTo: string;\r\n value: IEquatable | IEquatable[];\r\n resolvedValue: ICategorized | ICategorized[] | null;\r\n};\r\n\r\n// collecting relations recursively\r\nasync function collectRelations_<T = any>(context: {\r\n store: IStore;\r\n params: QueryParams;\r\n depth: number;\r\n}, item: T, relations: IPageResolvedRelation[] = []): Promise<T> {\r\n if (isUnresolvedRelation(item)) {\r\n if (context.depth === 0) {\r\n return item.value as T;\r\n }\r\n // skip circular reference\r\n const index = relations.findIndex(x =>\r\n x.relationTo === item.relationTo && x.value === item.value\r\n );\r\n if (index === -1) {\r\n const isMany = Array.isArray(item.value);\r\n const values = isMany ? item.value : [item.value];\r\n let items: ICategorized[] = [];\r\n const collection = context.store[item.relationTo];\r\n if (collection) {\r\n items = await collection.findMany<ICategorized>({\r\n ...context.params,\r\n where: {\r\n id: { in: values },\r\n },\r\n depth: context.depth - 1,\r\n });\r\n } else {\r\n console.log('collectRelations_', `unknown relation \"${item.relationTo}\"`);\r\n }\r\n const resolvedValue = isMany ? items : (items.length > 0 ? items[0]! : null);\r\n // console.log('resolvedValue', resolvedValue);\r\n relations.push({\r\n ...item,\r\n resolvedValue,\r\n });\r\n return resolvedValue as T;\r\n } else {\r\n return relations[index]!.resolvedValue as T;\r\n }\r\n } else if (isArray(item)) {\r\n const items = [];\r\n for (let i = 0; i < item.length; i++) {\r\n items[i] = await collectRelations_(context, item[i], relations);\r\n }\r\n return items as T;\r\n } else if (isObject(item)) {\r\n for (const [key, value] of Object.entries(item)) {\r\n (item[key] as any) = await collectRelations_(context, value, relations);\r\n }\r\n }\r\n return item;\r\n}\r\n","import { ISchema, IStore } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateSchema_<T extends ISchema = ISchema>(store: IStore, item: T, schema: string): Promise<T | T & { schema: string }> {\r\n return { ...item, schema: item.schema || schema };\r\n}\r\n\r\nexport async function decorateSchemas_<T extends ISchema = ISchema>(store: IStore, items: T[], schema: string): Promise<(T & { schema: string })[]> {\r\n return items.map(item => {\r\n return { ...item, schema: item.schema || schema };\r\n });\r\n}\r\n","import { httpFetch, isBrowser, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to local api (mixer)\r\n */\r\n\r\nconst API_URL = (\r\n process.env.NEXT_PUBLIC_URL === 'https://' ?\r\n process.env.NEXT_PUBLIC_MOCK_FALLBACK_URL :\r\n process.env.NEXT_PUBLIC_URL\r\n);\r\nconst API_BASE = process.env.NEXT_PUBLIC_API || '/api';\r\n\r\nexport function getLocalApiUrl(pathname: string): string {\r\n const url = `${isBrowser ? window.location.origin : API_URL}${API_BASE}${pathname}`;\r\n // console.log('getLocalApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function localApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n // console.log('localApiFetch', pathname, options, serviceOptions);\r\n const url = new URL(getLocalApiUrl(pathname));\r\n if (serviceOptions) {\r\n url.searchParams.append('locale', serviceOptions.locale);\r\n url.searchParams.append('market', serviceOptions.market);\r\n }\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n console.log('localApiFetch', apiOptions.method, url.href);\r\n const apiResponse = await httpFetch(url.href, apiOptions);\r\n // console.log('localApiFetch', pathname, apiResponse);\r\n return apiResponse;\r\n}\r\n\r\nexport async function localApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'GET' }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPost<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'POST', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPut<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'PUT', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPatch<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'PATCH', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'DELETE' }, serviceOptions);\r\n}\r\n","import { httpFetch, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to local /api/_mock data\r\n */\r\nconst API_URL = process.env.NEXT_PUBLIC_URL;\r\nconst API_BASE = process.env.NEXT_PUBLIC_API || '/api';\r\n\r\nfunction getMockApiUrl(pathname: string): string {\r\n const url = `${API_URL}${API_BASE}/_mock${pathname}`;\r\n // console.log('getMockApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function mockApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}): Promise<T> {\r\n const url = getMockApiUrl(pathname);\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n console.log('mockApiFetch', apiOptions.method, url);\r\n const apiResponse = await httpFetch(url, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function mockApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function mockApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n","import { httpFetch, isBrowser, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getRemoteApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to remote api (bowl or over)\r\n */\r\n\r\nconst API_URL = process.env.STORE_URL;\r\nconst API_BASE = process.env.STORE_API || '/api';\r\n\r\nexport function getRemoteApiUrl(pathname: string): string {\r\n const url = `${API_URL}${API_BASE}${pathname}`;\r\n // console.log('getRemoteApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function remoteApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}): Promise<T> {\r\n if (isBrowser) {\r\n throw 'Unauthorized: remote api cannot be fetched client side';\r\n }\r\n const url = getRemoteApiUrl(pathname);\r\n const apiOptions = merge({ ...getRemoteApiRequestOptions() }, options);\r\n // console.log('remoteApiFetch', apiOptions.method, url);\r\n // console.log('remoteApiFetch', 'Authorization', apiOptions.headers?.Authorization);\r\n const apiResponse = await httpFetch(url, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function remoteApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function remoteApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n","import type { IEntity } from '@websolutespa/bom-core';\r\n\r\nexport type IField = {\r\n name: string,\r\n type: 'text' | 'number' | 'relationship',\r\n localized?: boolean,\r\n relationTo?: string,\r\n hasMany?: boolean,\r\n required?: boolean\r\n};\r\n\r\nexport type MapTo = Record<string, string>;\r\n\r\nexport type StaticServiceSrc<T extends IEntity = IEntity> = string | T[] | ((config: StaticServiceConfig<T>) => T[]) | ((config: StaticServiceConfig<T>) => Promise<T[]>);\r\n\r\nexport type StaticServiceConfig<T extends IEntity = IEntity> = {\r\n src: StaticServiceSrc<T>;\r\n slug: string;\r\n fields: IField[];\r\n map?: MapTo;\r\n};\r\n\r\nexport const staticCollections: StaticServiceConfig[] = [{\r\n src: 'https://actarian.github.io/cms-i18n-react/api/continent.json',\r\n slug: 'i18n_continent',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/country.json',\r\n slug: 'i18n_country',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n localized: true,\r\n },\r\n {\r\n name: 'englishName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'nativeName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'alpha2Code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'alpha3Code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'continent',\r\n type: 'relationship',\r\n relationTo: 'i18n_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'subContinent',\r\n type: 'relationship',\r\n relationTo: 'i18n_sub_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/countryZone.json',\r\n slug: 'i18n_country_zone',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/language.json',\r\n slug: 'i18n_country_zone',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n localized: true,\r\n },\r\n {\r\n name: 'englishName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'nativeName',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/municipality.json',\r\n slug: 'i18n_municipality',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'region',\r\n type: 'relationship',\r\n relationTo: 'i18n_region',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'province',\r\n type: 'relationship',\r\n relationTo: 'i18n_province',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/province.json',\r\n slug: 'i18n_province',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'region',\r\n type: 'relationship',\r\n relationTo: 'i18n_region',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/region.json',\r\n slug: 'i18n_region',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/subContinent.json',\r\n slug: 'i18n_sub_continent',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'continent',\r\n type: 'relationship',\r\n relationTo: 'i18n_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}];\r\n","import { staticCollections } from '../static/static';\r\n\r\n// nextPhase\r\nexport enum NextPhase {\r\n Export = 'phase-export',\r\n ProductionBuild = 'phase-production-build',\r\n ProductionServer = 'phase-production-server',\r\n DevelopmentServer = 'phase-development-server',\r\n Test = 'phase-test',\r\n}\r\n\r\nfunction getNextPhase(): NextPhase {\r\n let nextPhase = NextPhase.Export;\r\n if (typeof process !== 'undefined' && process.env.NEXT_PHASE) {\r\n nextPhase = process.env.NEXT_PHASE as NextPhase;\r\n }\r\n return nextPhase;\r\n}\r\n\r\nexport const nextPhase: NextPhase = getNextPhase();\r\n\r\n// buildStrategy\r\nexport enum BuildStrategy {\r\n Static = 'static',\r\n Runtime = 'runtime',\r\n}\r\n\r\nfunction getBuildStrategy(): BuildStrategy {\r\n let buildStrategy = BuildStrategy.Static;\r\n if (typeof process !== 'undefined' && process.env.BUILD_STRATEGY) {\r\n buildStrategy = process.env.BUILD_STRATEGY as BuildStrategy;\r\n }\r\n return buildStrategy;\r\n}\r\n\r\nexport const buildStrategy: BuildStrategy = getBuildStrategy();\r\n\r\n// storeStrategy\r\nexport enum StoreStrategy {\r\n Local = 'local',\r\n Api = 'api',\r\n DecoratedApi = 'decoratedApi',\r\n Data = 'data',\r\n Mock = 'mock',\r\n}\r\n\r\nfunction getStoreStrategy(): StoreStrategy {\r\n let storeStrategy = StoreStrategy.Mock;\r\n if (typeof process !== 'undefined' && process.env.STORE_STRATEGY) {\r\n storeStrategy = process.env.STORE_STRATEGY as StoreStrategy;\r\n }\r\n return storeStrategy;\r\n}\r\n\r\nexport const storeStrategy: StoreStrategy = getStoreStrategy();\r\n\r\n// storeCacheDuration\r\nfunction getStoreCacheDuration(): number {\r\n let storeCacheDuration = (1 * 60 * 1000);\r\n if (typeof process !== 'undefined' && process.env.STORE_CACHE_DURATION) {\r\n storeCacheDuration = parseInt(process.env.STORE_CACHE_DURATION);\r\n }\r\n return storeCacheDuration;\r\n}\r\n\r\nexport const storeCacheDuration: number = getStoreCacheDuration();\r\n\r\n// collections\r\nconst ENV_COLLECTIONS: string[] = process.env.COLLECTIONS ? process.env.COLLECTIONS.split(',') : [];\r\nexport const MOCK_COLLECTIONS: string[] = process.env.MOCKS ? process.env.MOCKS.split(',') : [];\r\nexport const STATIC_COLLECTIONS: string[] = staticCollections.map(x => x.slug);\r\nexport const KNOWN_COLLECTIONS: string[] = [\r\n 'app',\r\n 'category',\r\n 'label',\r\n 'locale',\r\n 'market',\r\n 'menu',\r\n 'redirect',\r\n 'route',\r\n 'template',\r\n ...STATIC_COLLECTIONS,\r\n];\r\nexport const COLLECTIONS = [...ENV_COLLECTIONS, ...KNOWN_COLLECTIONS];\r\n","import { ApiRequestOptions } from '../api/api';\r\nimport { localApiFetch } from '../local/local.api';\r\nimport { remoteApiFetch } from '../remote/remote.api';\r\nimport { StoreStrategy, storeStrategy } from './store';\r\n\r\nconst storeApiFetch = storeStrategy === StoreStrategy.Mock ? localApiFetch : remoteApiFetch;\r\n\r\nexport async function storeApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function storeApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n"],"mappings":"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MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,WAAW;GACZ;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;EACP,GACD;GACE,MAAM;GACN,MAAM;EACP,CACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,WAAW;GACZ;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;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"}
1
+ {"version":3,"file":"src-D-0XSCD9.js","names":["token?: string","CACHE_: Map<string, unknown>","callback: () => Promise<T>","key?: string","store: IStore","item: T","params: QueryParams","items: T[]","categories: ICategory[]","routes: IRoute[]","depth: number","store: IStore","item: T","params: QueryParams","items: T[]","item: B","params: QueryParams","items: B[]","decoratedItems: B[]","store: IStore","item: IUndecoratedMenu","params: { market: string, locale: string }","decoratedItem: IMenu","items: IUndecoratedMenu[]","decoratedItems: IMenu[]","items: IUndecoratedMenuItem[]","market: string","item: IUndecoratedMenuItem","undecoratedCategories: IUndecoratedMenuCategory[]","undecoratedPages: IUndecoratedMenuPage[]","item: IUndecoratedMenuCategory","category: ICategory","items: IMenuItem[]","categories: ICategory[]","routes: IRoute[]","depth: number","route: IRoute","route","childRouteItems: IMenuItem[]","item: IRoute","decoratedItem: IMenuRoute","item: IUndecoratedMenuPage","params: QueryParams","decoratedItem: IMenuPage","store: IStore","item: T","params: QueryParams","routes?: IRoute[]","items: T[]","item: unknown","navs: IUndecoratedNav[]","item: IUndecoratedNav","routes: IRoute[]","item: T","items: T[]","optimizedItems: T[]","store: IStore","item: T","params: QueryParams","items: T[]","context: {\r\n store: IStore;\r\n params: QueryParams;\r\n depth: number;\r\n}","relations: IPageResolvedRelation[]","items: ICategorized[]","store: IStore","item: T","schema: string","items: T[]","API_URL","API_BASE","pathname: string","options: ApiRequestOptions","serviceOptions?: { locale: string, market: string }","url: string","payload?: unknown","API_URL","API_BASE","pathname: string","options: ApiRequestOptions","url: string","payload: unknown","pathname: string","options: ApiRequestOptions","url: string","payload: unknown","staticCollections: StaticServiceConfig[]","nextPhase","nextPhase: NextPhase","buildStrategy","buildStrategy: BuildStrategy","storeStrategy","storeStrategy: StoreStrategy","storeCacheDuration","storeCacheDuration: number","ENV_COLLECTIONS: string[]","MOCK_COLLECTIONS: string[]","STATIC_COLLECTIONS: string[]","KNOWN_COLLECTIONS: string[]","url: string","options: ApiRequestOptions","payload: unknown"],"sources":["../src/api/api.ts","../src/cache/cache.service.ts","../src/decorators/consts.ts","../src/decorators/category.ts","../src/decorators/href.ts","../src/decorators/localizable.ts","../src/decorators/menu.ts","../src/decorators/nav.ts","../src/decorators/optimize.ts","../src/decorators/relation.ts","../src/decorators/schema.ts","../src/local/local.api.ts","../src/mock/mock.api.ts","../src/remote/remote.api.ts","../src/static/static.ts","../src/store/store.ts","../src/store/store.api.ts"],"sourcesContent":["import { FetchRequestOptions } from '@websolutespa/bom-core';\r\n\r\nexport type ApiRequestOptions = FetchRequestOptions;\r\n\r\nexport function getLocalApiRequestOptions(): ApiRequestOptions {\r\n return {\r\n headers: {\r\n },\r\n };\r\n}\r\n\r\nexport function getRemoteApiRequestOptions(token?: string): ApiRequestOptions {\r\n if (token) {\r\n // authenticated end user JWT token bearer (end_users)\r\n return {\r\n // mode: 'cors',\r\n headers: {\r\n Authorization: `JWT ${token}`,\r\n // Authorization: `Bearer ${token}`,\r\n },\r\n };\r\n } else {\r\n // guest user api key (users)\r\n return {\r\n // mode: 'cors',\r\n headers: {\r\n Authorization: `users API-Key ${process.env.STORE_API_KEY}`,\r\n },\r\n };\r\n }\r\n}\r\n","const CACHE_: Map<string, unknown> = new Map<string, unknown>();\r\n\r\nexport async function fromCache<T = unknown>(callback: () => Promise<T>, key?: string): Promise<T> {\r\n if (key && CACHE_.has(key)) {\r\n return CACHE_.get(key) as T;\r\n } else {\r\n const t = await callback();\r\n if (key) {\r\n CACHE_.set(key, t);\r\n }\r\n return t;\r\n }\r\n}\r\n","\r\nexport const DEFAULT_DEPTH = 3;\r\n","import { ICategorized, ICategory, IEquatable, IRoute, IStore, QueryParams, findRouteOfCategory, isUnresolvedCategory } from '@websolutespa/bom-core';\r\nimport { DEFAULT_DEPTH } from './consts';\r\n\r\nexport async function decorateCategory_<T extends { category?: IEquatable | ICategory } = { category?: IEquatable | ICategory }>(store: IStore, item: T, params: QueryParams = {}): Promise<T | (T & { category: ICategory })> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n if (depth === 0) {\r\n return item;\r\n }\r\n const categories = await store.category!.findMany<ICategory>({\r\n market: params.market,\r\n locale: params.locale,\r\n depth: 0,\r\n });\r\n const routes = await store.route!.findMany<IRoute>();\r\n const decoratedItem = await collectCategory_(categories, routes, item, params, depth);\r\n return decoratedItem as T & { category: ICategory };\r\n}\r\n\r\nexport async function decorateCategories_<T extends ICategorized = ICategorized>(store: IStore, items: T[], params: QueryParams = {}): Promise<(T | (T & { category: ICategory }))[]> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n if (depth === 0) {\r\n return items;\r\n }\r\n const categories = await store.category!.findMany<ICategory>({\r\n market: params.market,\r\n locale: params.locale,\r\n depth: 0,\r\n });\r\n const routes = await store.route!.findMany<IRoute>();\r\n const decoratedItems = [];\r\n for (const item of items) {\r\n const decoratedItem = await collectCategory_(categories, routes, item, params, depth);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n\r\nexport async function collectCategory_<\r\n T extends { category?: IEquatable | ICategory } = { category?: IEquatable | ICategory }\r\n>(\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n item: T,\r\n params: QueryParams = {},\r\n depth: number\r\n): Promise<T> {\r\n if (depth === 0) {\r\n return item;\r\n }\r\n if (isUnresolvedCategory(item.category)) {\r\n const category = categories.find(x => x.id === item.category);\r\n if (category) {\r\n const route = findRouteOfCategory(routes, category.id, params.market, params.locale);\r\n if (route) {\r\n category.href = route.id;\r\n }\r\n const decoratedCategory = await collectCategory_(categories, routes, category, params, depth - 1);\r\n return { ...item, category: decoratedCategory };\r\n }\r\n }\r\n return item;\r\n}\r\n","import { IRoute, ISchema, IStore, QueryParams } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateHref_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}): Promise<T | T & { href: string | null }> {\r\n if (params.market && params.locale) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n market: {\r\n equals: params.market,\r\n },\r\n locale: {\r\n equals: params.locale,\r\n },\r\n schema: {\r\n equals: item.schema,\r\n },\r\n page: {\r\n equals: item.id,\r\n },\r\n },\r\n });\r\n const href = routes.length ? routes[0]!.id : null;\r\n return { ...item, href };\r\n } else {\r\n return item;\r\n }\r\n}\r\n\r\nexport async function decorateHrefs_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[] | (T & { href: string | null })[]> {\r\n if (params.market && params.locale) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n market: {\r\n equals: params.market,\r\n },\r\n locale: {\r\n equals: params.locale,\r\n },\r\n },\r\n });\r\n return items.map(item => {\r\n const route = routes.find(x =>\r\n x.schema === item.schema &&\r\n x.page === item.id\r\n );\r\n const href = route ? route.id : null;\r\n return { ...item, href };\r\n });\r\n } else {\r\n return items;\r\n }\r\n}\r\n","import { QueryParams, cloneItem, localizeItem } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateLocalizable_<B>(item: B, params: QueryParams = {}): Promise<B> {\r\n if (params.locale) {\r\n return localizeItem(item, params.locale);\r\n } else {\r\n return cloneItem(item);\r\n }\r\n}\r\n\r\nexport async function decorateLocalizables_<B>(items: B[], params: QueryParams = {}): Promise<B[]> {\r\n const decoratedItems: B[] = [];\r\n for (const item of items) {\r\n const decoratedItem = params.locale ?\r\n localizeItem(item, params.locale) :\r\n cloneItem(item);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n","import {\r\n ICategorized, ICategory, IMenu, IMenuCategory, IMenuGroup, IMenuItem, IMenuPage, IMenuRoute, IRoute, IStore,\r\n IUndecoratedMenu, IUndecoratedMenuCategory, IUndecoratedMenuItem, IUndecoratedMenuPage, MenuCategoryStrategy, QueryParams,\r\n asCategoryId,\r\n findCategoryInCategories,\r\n findChildCategories,\r\n findRouteOfCategory,\r\n isEquatable, isUndecoratedMenuCategory, isUndecoratedMenuPage,\r\n uuidv4\r\n} from '@websolutespa/bom-core';\r\n\r\nexport async function decorateMenu_(store: IStore, item: IUndecoratedMenu, params: { market: string, locale: string }): Promise<IMenu> {\r\n const { market, locale } = params;\r\n const items = itemsFilteredByMarket_(item.items || [], market);\r\n const decoratedItem: IMenu = {\r\n id: item.id,\r\n items: [],\r\n };\r\n const undecoratedCategories = collectUndecoratedCategories(items);\r\n const undecoratedPages = collectUndecoratedPages(items);\r\n if (\r\n undecoratedCategories.length > 0 ||\r\n undecoratedPages.length > 0\r\n ) {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(market ? { market: { equals: market } } : {}),\r\n ...(locale ? { locale: { equals: locale } } : {}),\r\n },\r\n });\r\n if (undecoratedCategories.length > 0) {\r\n const categories = await store.category!.findMany<ICategory>(params);\r\n for (const undecoratedMenuCategory of undecoratedCategories) {\r\n const decoratedMenuCategory = decorateMenuCategory_(undecoratedMenuCategory, categories, routes, market);\r\n Object.assign(undecoratedMenuCategory, decoratedMenuCategory);\r\n }\r\n }\r\n for (const undecoratedMenuPage of undecoratedPages) {\r\n const decoratedMenuPage = await decorateMenuPage_(undecoratedMenuPage, routes, store, { ...params });\r\n Object.assign(undecoratedMenuPage, decoratedMenuPage);\r\n }\r\n }\r\n decoratedItem.items = items as IMenuItem[];\r\n return decoratedItem;\r\n}\r\n\r\nexport async function decorateMenus_(store: IStore, items: IUndecoratedMenu[], params: { market: string, locale: string }): Promise<IMenu[]> {\r\n const decoratedItems: IMenu[] = [];\r\n for (const item of items) {\r\n const decoratedItem = await decorateMenu_(store, item, params);\r\n decoratedItems.push(decoratedItem);\r\n }\r\n return decoratedItems;\r\n}\r\n\r\nfunction itemsFilteredByMarket_(items: IUndecoratedMenuItem[], market: string): IUndecoratedMenuItem[] {\r\n return items.filter(x => {\r\n const hasMarket = itemHasMarket_(x, market);\r\n if (hasMarket && x.items) {\r\n x.items = itemsFilteredByMarket_(x.items || [], market);\r\n }\r\n return hasMarket;\r\n });\r\n}\r\n\r\nfunction itemHasMarket_(item: IUndecoratedMenuItem, market: string): boolean {\r\n return (Array.isArray(item.markets) && item.markets.length > 0) ? item.markets.includes(market) : true;\r\n}\r\n\r\nfunction collectUndecoratedCategories(items: IUndecoratedMenuItem[], undecoratedCategories: IUndecoratedMenuCategory[] = []): IUndecoratedMenuCategory[] {\r\n items.forEach(item => {\r\n if (isUndecoratedMenuCategory(item)) {\r\n undecoratedCategories.push(item);\r\n }\r\n if (item.items) {\r\n collectUndecoratedCategories(item.items, undecoratedCategories);\r\n }\r\n });\r\n return undecoratedCategories;\r\n}\r\n\r\nfunction collectUndecoratedPages(items: IUndecoratedMenuItem[], undecoratedPages: IUndecoratedMenuPage[] = []): IUndecoratedMenuPage[] {\r\n items.forEach(item => {\r\n if (isUndecoratedMenuPage(item)) {\r\n undecoratedPages.push(item);\r\n }\r\n if (item.items) {\r\n collectUndecoratedPages(item.items, undecoratedPages);\r\n }\r\n });\r\n return undecoratedPages;\r\n}\r\n\r\nexport const MAX_INT = 1000000000000; // 9007199254740991\r\n\r\nfunction makeCategoryMenuItem_(item: IUndecoratedMenuCategory, category: ICategory): IMenuCategory | IMenuGroup {\r\n const id = item.id || uuidv4();\r\n const title = item.title || category.title || '';\r\n const abstract = item.abstract || undefined;\r\n const customClass = item.customClass || undefined;\r\n const media = item.media || category.media;\r\n const items: IMenuItem[] = [];\r\n return category.isHidden ?\r\n {\r\n type: 'group',\r\n id,\r\n title,\r\n abstract,\r\n media,\r\n customClass,\r\n items,\r\n } : {\r\n type: 'category',\r\n category: category.id,\r\n id,\r\n href: '',\r\n title,\r\n abstract,\r\n media,\r\n customClass,\r\n items,\r\n };\r\n}\r\n\r\nfunction decorateMenuCategory_(\r\n item: IUndecoratedMenuCategory,\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n market: string,\r\n depth: number = 0\r\n): IMenuItem | undefined {\r\n const strategy = item.strategy || MenuCategoryStrategy.Default;\r\n const categoryId = asCategoryId(item.category);\r\n // find category\r\n const category = categoryId ? categories.find(x => x.id === categoryId) : undefined;\r\n if (category) {\r\n const decoratedItem = makeCategoryMenuItem_(item, category);\r\n if (!category.isHidden) {\r\n const route = routes.find((route: IRoute) => route.isDefault && route.resolvedCategory === category.id);\r\n if (route) {\r\n (decoratedItem as IMenuCategory).href = route.id;\r\n if (!decoratedItem.media) {\r\n decoratedItem.media = route.media;\r\n }\r\n }\r\n }\r\n // checking for max depth recursion\r\n let maxDepth = item.maxDepth;\r\n if (typeof maxDepth === 'number') {\r\n if (depth > maxDepth) {\r\n return decoratedItem;\r\n }\r\n maxDepth--;\r\n }\r\n // search child categories\r\n const childCategories = (category.id ?\r\n categories.filter(x => asCategoryId(x.category) === category.id) : []\r\n ).filter(x => {\r\n switch (strategy) {\r\n case MenuCategoryStrategy.ExcludeHidden:\r\n return Boolean(x.isHidden) === false;\r\n case MenuCategoryStrategy.Default:\r\n return true;\r\n }\r\n });\r\n // sort child categories\r\n childCategories.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n // define sub strategy (!!! todo)\r\n const subStrategy = strategy;\r\n // decorate child categories\r\n const childCategoryItems = childCategories.map(c => decorateMenuCategory_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n strategy: subStrategy, // dispatch sub strategy\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1));\r\n // find child routes\r\n const childRoutes = routes.filter((route: IRoute) => {\r\n switch (strategy) {\r\n case MenuCategoryStrategy.ExcludeHidden:\r\n return route.resolvedCategory === category.id && Boolean(route.isDefault) === false;\r\n case MenuCategoryStrategy.Default:\r\n return route.category === category.id && (category.isHidden || Boolean(route.isDefault) === false);\r\n }\r\n });\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n // decorate child routes\r\n const childRouteItems: IMenuItem[] = childRoutes.map(x => decorateMenuRoute_(x));\r\n // filter items\r\n decoratedItem.items = [\r\n ...childCategoryItems,\r\n ...childRouteItems,\r\n ].filter(x => Boolean(x)) as IMenuItem[];\r\n return decoratedItem;\r\n }\r\n // return unresolved category as group\r\n return {\r\n id: item.id || uuidv4(),\r\n type: 'group',\r\n title: item.title || '',\r\n items: [],\r\n };\r\n}\r\n\r\nfunction decorateMenuCategoryWithHiddenSubCategories_(\r\n item: IUndecoratedMenuCategory,\r\n categories: ICategory[],\r\n routes: IRoute[],\r\n market: string,\r\n depth: number = 0\r\n): IMenuItem {\r\n const decoratedItem: IMenuCategory = {\r\n abstract: item.abstract,\r\n category: '',\r\n customClass: item.customClass,\r\n href: '',\r\n id: item.id || uuidv4(),\r\n items: [],\r\n title: '',\r\n type: item.type,\r\n };\r\n /*\r\n const categoryId = asCategoryId(item.category);\r\n const category = categoryId ? categories.find(x => x.id === categoryId) : undefined;\r\n */\r\n const category = findCategoryInCategories(categories, item.category);\r\n if (category) {\r\n // assigning category id\r\n decoratedItem.category = category.id;\r\n // assigning category title\r\n decoratedItem.title = item.title || category.title || '';\r\n // assigning current or category media\r\n decoratedItem.media = item.media || category.media;\r\n // find category's index page route\r\n const route = findRouteOfCategory(routes, category.id);\r\n if (route) {\r\n // hasLink\r\n decoratedItem.href = route.id;\r\n } else {\r\n // isGroup\r\n }\r\n // checking for max depth recursion\r\n let maxDepth = item.maxDepth;\r\n if (typeof maxDepth === 'number') {\r\n if (depth > maxDepth) {\r\n return decoratedItem;\r\n }\r\n maxDepth--;\r\n }\r\n // search child categories\r\n const childCategories = findChildCategories(categories, category.id);\r\n if (childCategories.length) {\r\n // sort child categories\r\n childCategories.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n decoratedItem.items = childCategories.map(c => {\r\n const menuCategory = decorateMenuCategoryWithHiddenSubCategories_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1);\r\n if (c.isHidden) {\r\n const group: IMenuGroup = {\r\n id: c.id,\r\n type: 'group',\r\n title: c.title,\r\n items: [\r\n ...(menuCategory.items || []),\r\n ],\r\n };\r\n // find child routes\r\n // const childRoutes = findRoutesOfCategory(routes, c.id, false);\r\n const childRoutes = routes.filter((route: IRoute) =>\r\n route.category === c.id &&\r\n Boolean(route.isDefault) === false\r\n );\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n const routeLinks = childRoutes.map(x => decorateMenuRoute_(x));\r\n group.items?.push(...routeLinks);\r\n return group;\r\n } else {\r\n return decorateMenuCategoryWithHiddenSubCategories_({\r\n id: c.id,\r\n type: 'category',\r\n category: c.id,\r\n maxDepth,\r\n items: [],\r\n } as IUndecoratedMenuCategory, categories, routes, market, depth + 1);\r\n }\r\n });\r\n }\r\n // find child routes\r\n // const childRoutes = findRoutesOfCategory(routes, category.id, false);\r\n const childRoutes = routes.filter((route: IRoute) =>\r\n route.category === category.id &&\r\n Boolean(route.isDefault) === false\r\n );\r\n // console.log('childRoutes', childRoutes, category.id);\r\n // sort child routes\r\n childRoutes.sort((a, b) => {\r\n return (a.order || MAX_INT) - (b.order || MAX_INT);\r\n });\r\n decoratedItem.items = [\r\n ...(decoratedItem.items || []),\r\n ...childRoutes.map(x => decorateMenuRoute_(x)),\r\n ];\r\n\r\n }\r\n return decoratedItem;\r\n}\r\n\r\nfunction decorateMenuRoute_(\r\n item: IRoute\r\n): IMenuItem {\r\n const decoratedItem: IMenuRoute = {\r\n id: uuidv4(),\r\n type: 'route',\r\n title: item.title,\r\n href: item.id,\r\n media: item.media,\r\n page: item.page,\r\n schema: item.schema,\r\n items: [],\r\n };\r\n return decoratedItem;\r\n}\r\n\r\nasync function decorateMenuPage_(\r\n item: IUndecoratedMenuPage,\r\n routes: IRoute[],\r\n store: IStore,\r\n params: QueryParams = {}\r\n): Promise<IMenuItem> {\r\n const values = Array.isArray(item.page.value) ? item.page.value : [item.page.value];\r\n const value = values[0]!; // !!!\r\n const id = isEquatable(value) ? value : value.id;\r\n const route = routes.find(x =>\r\n x.schema === item.page.relationTo &&\r\n x.page === id\r\n );\r\n const page = await store[item.page.relationTo]!.findOne<ICategorized>(id, { ...params });\r\n const decoratedItem: IMenuPage = {\r\n id: item.id || uuidv4(),\r\n type: item.type,\r\n title: item.title || page?.title || '',\r\n abstract: item.abstract || page?.abstract || '',\r\n customClass: item.customClass,\r\n href: route?.id || '',\r\n media: page?.media,\r\n page: route?.page || '',\r\n schema: route?.schema || '',\r\n items: (item.items || []) as IMenuItem[],\r\n };\r\n return decoratedItem;\r\n}\r\n","import { IDecoratedNav, IEquatable, IRoute, ISchema, IStore, IUndecoratedNav, QueryParams, isArray, isObject, isUndecoratedNav } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateNav_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}, routes?: IRoute[]): Promise<T> {\r\n if (!routes) {\r\n routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(params.market ? { market: { equals: params.market } } : {}),\r\n ...(params.locale ? { locale: { equals: params.locale } } : {}),\r\n },\r\n });\r\n }\r\n const navs = collectNavs_(item);\r\n for (const nav of navs) {\r\n const decoratedNav = decorateNav__(nav, routes);\r\n Object.assign(nav, decoratedNav);\r\n // (nav as IDecoratedNav<T>).nav = decoratedNav.nav;\r\n }\r\n return item;\r\n}\r\n\r\nexport async function decorateNavs_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[]> {\r\n const routes = await store.route!.findMany<IRoute>({\r\n where: {\r\n ...(params.market ? { market: { equals: params.market } } : {}),\r\n ...(params.locale ? { locale: { equals: params.locale } } : {}),\r\n },\r\n });\r\n for (const item of items) {\r\n await decorateNav_<T>(store, item, params, routes);\r\n }\r\n return items;\r\n}\r\n\r\n// collecting navs recursively\r\nfunction collectNavs_(item: unknown, navs: IUndecoratedNav[] = []): IUndecoratedNav[] {\r\n if (isUndecoratedNav(item)) {\r\n navs.push(item);\r\n }\r\n // console.log(item, isUndecoratedNav<T>(item));\r\n if (isArray(item)) {\r\n item.forEach(x => collectNavs_(x, navs));\r\n } else if (isObject(item)) {\r\n Object.values(item).forEach(value => {\r\n collectNavs_(value, navs);\r\n });\r\n }\r\n return navs;\r\n}\r\n\r\nfunction decorateNav__(item: IUndecoratedNav, routes: IRoute[]): IDecoratedNav {\r\n let decoratedNav = item as unknown as IDecoratedNav;\r\n if (item !== undefined) {\r\n const route = routes.find(x =>\r\n x.page === (item.page.value as unknown as IEquatable) &&\r\n x.schema === item.page.relationTo\r\n );\r\n if (route) {\r\n decoratedNav = {\r\n type: 'page',\r\n id: route.page,\r\n href: route.id,\r\n title: route.title,\r\n page: route.page,\r\n schema: route.schema,\r\n };\r\n }\r\n }\r\n return decoratedNav;\r\n}\r\n","import { ICategorized } from '@websolutespa/bom-core';\r\n\r\nexport async function optimizeOne_<T extends ICategorized = ICategorized>(item: T): Promise<T> {\r\n const validEntries = Object.entries(item).filter(([key, value]) => {\r\n switch (key) {\r\n case 'components':\r\n case 'meta':\r\n return false;\r\n /*\r\n default:\r\n if (\r\n isUnresolvedRelation(value) ||\r\n (\r\n Array.isArray(value) &&\r\n value.reduce((p, c) => p && isUnresolvedRelation(c), true)\r\n )\r\n ) {\r\n return false;\r\n }\r\n */\r\n }\r\n return true;\r\n });\r\n return Object.fromEntries(validEntries) as T;\r\n}\r\n\r\nexport async function optimizeMany_<T extends ICategorized = ICategorized>(items: T[]): Promise<T[]> {\r\n const optimizedItems: T[] = [];\r\n for (const item of items) {\r\n const optimizedItem = await optimizeOne_<T>(item);\r\n optimizedItems.push(optimizedItem);\r\n }\r\n return optimizedItems;\r\n}\r\n","import { ICategorized, IEquatable, ISchema, IStore, QueryParams, isArray, isObject, isUnresolvedRelation } from '@websolutespa/bom-core';\r\nimport { DEFAULT_DEPTH } from './consts';\r\n\r\nexport async function decorateRelation_<T extends ISchema = ISchema>(store: IStore, item: T, params: QueryParams = {}): Promise<T> {\r\n const depth = params.depth != null ? params.depth : DEFAULT_DEPTH;\r\n // console.log('decorateRelation_', depth, typeof depth);\r\n item = await collectRelations_({ store, params, depth }, item);\r\n return item;\r\n}\r\n\r\nexport async function decorateRelations_<T extends ISchema = ISchema>(store: IStore, items: T[], params: QueryParams = {}): Promise<T[]> {\r\n for (const item of items) {\r\n await decorateRelation_<T>(store, item, params);\r\n }\r\n return items;\r\n}\r\n\r\nexport type IPageResolvedRelation = {\r\n relationTo: string;\r\n value: IEquatable | IEquatable[];\r\n resolvedValue: ICategorized | ICategorized[] | null;\r\n};\r\n\r\n// collecting relations recursively\r\nasync function collectRelations_<T = any>(context: {\r\n store: IStore;\r\n params: QueryParams;\r\n depth: number;\r\n}, item: T, relations: IPageResolvedRelation[] = []): Promise<T> {\r\n if (isUnresolvedRelation(item)) {\r\n if (context.depth === 0) {\r\n return item.value as T;\r\n }\r\n // skip circular reference\r\n const index = relations.findIndex(x =>\r\n x.relationTo === item.relationTo && x.value === item.value\r\n );\r\n if (index === -1) {\r\n const isMany = Array.isArray(item.value);\r\n const values = isMany ? item.value : [item.value];\r\n let items: ICategorized[] = [];\r\n const collection = context.store[item.relationTo];\r\n if (collection) {\r\n items = await collection.findMany<ICategorized>({\r\n ...context.params,\r\n where: {\r\n id: { in: values },\r\n },\r\n depth: context.depth - 1,\r\n });\r\n } else {\r\n console.log('collectRelations_', `unknown relation \"${item.relationTo}\"`);\r\n }\r\n const resolvedValue = isMany ? items : (items.length > 0 ? items[0]! : null);\r\n // console.log('resolvedValue', resolvedValue);\r\n relations.push({\r\n ...item,\r\n resolvedValue,\r\n });\r\n return resolvedValue as T;\r\n } else {\r\n return relations[index]!.resolvedValue as T;\r\n }\r\n } else if (isArray(item)) {\r\n const items = [];\r\n for (let i = 0; i < item.length; i++) {\r\n items[i] = await collectRelations_(context, item[i], relations);\r\n }\r\n return items as T;\r\n } else if (isObject(item)) {\r\n for (const [key, value] of Object.entries(item)) {\r\n (item[key] as any) = await collectRelations_(context, value, relations);\r\n }\r\n }\r\n return item;\r\n}\r\n","import { ISchema, IStore } from '@websolutespa/bom-core';\r\n\r\nexport async function decorateSchema_<T extends ISchema = ISchema>(store: IStore, item: T, schema: string): Promise<T | T & { schema: string }> {\r\n return { ...item, schema: item.schema || schema };\r\n}\r\n\r\nexport async function decorateSchemas_<T extends ISchema = ISchema>(store: IStore, items: T[], schema: string): Promise<(T & { schema: string })[]> {\r\n return items.map(item => {\r\n return { ...item, schema: item.schema || schema };\r\n });\r\n}\r\n","import { httpFetch, isBrowser, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to local api (mixer)\r\n */\r\n\r\nconst API_URL = (\r\n process.env.NEXT_PUBLIC_URL === 'https://' ?\r\n process.env.NEXT_PUBLIC_MOCK_FALLBACK_URL :\r\n process.env.NEXT_PUBLIC_URL\r\n);\r\nconst API_BASE = process.env.NEXT_PUBLIC_API || '/api';\r\n\r\nexport function getLocalApiUrl(pathname: string): string {\r\n const url = `${isBrowser ? window.location.origin : API_URL}${API_BASE}${pathname}`;\r\n // console.log('getLocalApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function localApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n // console.log('localApiFetch', pathname, options, serviceOptions);\r\n const url = new URL(getLocalApiUrl(pathname));\r\n if (serviceOptions) {\r\n url.searchParams.append('locale', serviceOptions.locale);\r\n url.searchParams.append('market', serviceOptions.market);\r\n }\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n console.log('localApiFetch', apiOptions.method, url.href);\r\n const apiResponse = await httpFetch(url.href, apiOptions);\r\n // console.log('localApiFetch', pathname, apiResponse);\r\n return apiResponse;\r\n}\r\n\r\nexport async function localApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'GET' }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPost<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'POST', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPut<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'PUT', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiPatch<T = unknown>(url: string, payload?: unknown, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'PATCH', body: payload ? JSON.stringify(payload) : undefined }, serviceOptions);\r\n}\r\n\r\nexport async function localApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}, serviceOptions?: { locale: string, market: string }): Promise<T> {\r\n return await localApiFetch<T>(url, { ...options, method: 'DELETE' }, serviceOptions);\r\n}\r\n","import { httpFetch, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getLocalApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to local /api/_mock data\r\n */\r\nconst API_URL = process.env.NEXT_PUBLIC_URL;\r\nconst API_BASE = process.env.NEXT_PUBLIC_API || '/api';\r\n\r\nfunction getMockApiUrl(pathname: string): string {\r\n const url = `${API_URL}${API_BASE}/_mock${pathname}`;\r\n // console.log('getMockApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function mockApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}): Promise<T> {\r\n const url = getMockApiUrl(pathname);\r\n const apiOptions = merge({ ...getLocalApiRequestOptions() }, options);\r\n console.log('mockApiFetch', apiOptions.method, url);\r\n const apiResponse = await httpFetch(url, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function mockApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function mockApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function mockApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await mockApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n","import { httpFetch, isBrowser, merge } from '@websolutespa/bom-core';\r\nimport { ApiRequestOptions, getRemoteApiRequestOptions } from '../api/api';\r\n\r\n/**\r\n * This methods handle api requests / responses to remote api (bowl or over)\r\n */\r\n\r\nconst API_URL = process.env.STORE_URL;\r\nconst API_BASE = process.env.STORE_API || '/api';\r\n\r\nexport function getRemoteApiUrl(pathname: string): string {\r\n const url = `${API_URL}${API_BASE}${pathname}`;\r\n // console.log('getRemoteApiUrl', url);\r\n return url;\r\n}\r\n\r\nexport async function remoteApiFetch<T = unknown>(pathname: string, options: ApiRequestOptions = {}): Promise<T> {\r\n if (isBrowser) {\r\n throw 'Unauthorized: remote api cannot be fetched client side';\r\n }\r\n const url = getRemoteApiUrl(pathname);\r\n const apiOptions = merge({ ...getRemoteApiRequestOptions() }, options);\r\n // console.log('remoteApiFetch', apiOptions.method, url);\r\n // console.log('remoteApiFetch', 'Authorization', apiOptions.headers?.Authorization);\r\n const apiResponse = await httpFetch(url, apiOptions);\r\n return apiResponse;\r\n}\r\n\r\nexport async function remoteApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function remoteApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function remoteApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await remoteApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n","import type { IEntity } from '@websolutespa/bom-core';\r\n\r\nexport type IField = {\r\n name: string,\r\n type: 'text' | 'number' | 'relationship',\r\n localized?: boolean,\r\n relationTo?: string,\r\n hasMany?: boolean,\r\n required?: boolean\r\n};\r\n\r\nexport type MapTo = Record<string, string>;\r\n\r\nexport type StaticServiceSrc<T extends IEntity = IEntity> = string | T[] | ((config: StaticServiceConfig<T>) => T[]) | ((config: StaticServiceConfig<T>) => Promise<T[]>);\r\n\r\nexport type StaticServiceConfig<T extends IEntity = IEntity> = {\r\n src: StaticServiceSrc<T>;\r\n slug: string;\r\n fields: IField[];\r\n map?: MapTo;\r\n};\r\n\r\nexport const staticCollections: StaticServiceConfig[] = [{\r\n src: 'https://actarian.github.io/cms-i18n-react/api/continent.json',\r\n slug: 'i18n_continent',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/country.json',\r\n slug: 'i18n_country',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n localized: true,\r\n },\r\n {\r\n name: 'englishName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'nativeName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'alpha2Code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'alpha3Code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'continent',\r\n type: 'relationship',\r\n relationTo: 'i18n_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'subContinent',\r\n type: 'relationship',\r\n relationTo: 'i18n_sub_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/countryZone.json',\r\n slug: 'i18n_country_zone',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/language.json',\r\n slug: 'i18n_country_zone',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n localized: true,\r\n },\r\n {\r\n name: 'englishName',\r\n type: 'text',\r\n },\r\n {\r\n name: 'nativeName',\r\n type: 'text',\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/municipality.json',\r\n slug: 'i18n_municipality',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'region',\r\n type: 'relationship',\r\n relationTo: 'i18n_region',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'province',\r\n type: 'relationship',\r\n relationTo: 'i18n_province',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/province.json',\r\n slug: 'i18n_province',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'code',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'region',\r\n type: 'relationship',\r\n relationTo: 'i18n_region',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/region.json',\r\n slug: 'i18n_region',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'country',\r\n type: 'relationship',\r\n relationTo: 'i18n_country',\r\n hasMany: false,\r\n required: true,\r\n },\r\n {\r\n name: 'countryZone',\r\n type: 'relationship',\r\n relationTo: 'i18n_country_zone',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}, {\r\n src: 'https://actarian.github.io/cms-i18n-react/api/subContinent.json',\r\n slug: 'i18n_sub_continent',\r\n fields: [\r\n {\r\n name: 'id',\r\n type: 'text',\r\n },\r\n {\r\n name: 'name',\r\n type: 'text',\r\n },\r\n {\r\n name: 'continent',\r\n type: 'relationship',\r\n relationTo: 'i18n_continent',\r\n hasMany: false,\r\n required: true,\r\n },\r\n ],\r\n}];\r\n","import { staticCollections } from '../static/static';\r\n\r\n// nextPhase\r\nexport enum NextPhase {\r\n Export = 'phase-export',\r\n ProductionBuild = 'phase-production-build',\r\n ProductionServer = 'phase-production-server',\r\n DevelopmentServer = 'phase-development-server',\r\n Test = 'phase-test',\r\n}\r\n\r\nfunction getNextPhase(): NextPhase {\r\n let nextPhase = NextPhase.Export;\r\n if (typeof process !== 'undefined' && process.env.NEXT_PHASE) {\r\n nextPhase = process.env.NEXT_PHASE as NextPhase;\r\n }\r\n return nextPhase;\r\n}\r\n\r\nexport const nextPhase: NextPhase = getNextPhase();\r\n\r\n// buildStrategy\r\nexport enum BuildStrategy {\r\n Static = 'static',\r\n Runtime = 'runtime',\r\n}\r\n\r\nfunction getBuildStrategy(): BuildStrategy {\r\n let buildStrategy = BuildStrategy.Static;\r\n if (typeof process !== 'undefined' && process.env.BUILD_STRATEGY) {\r\n buildStrategy = process.env.BUILD_STRATEGY as BuildStrategy;\r\n }\r\n return buildStrategy;\r\n}\r\n\r\nexport const buildStrategy: BuildStrategy = getBuildStrategy();\r\n\r\n// storeStrategy\r\nexport enum StoreStrategy {\r\n // Local = 'local',\r\n Api = 'api',\r\n DecoratedApi = 'decoratedApi',\r\n Data = 'data',\r\n Mock = 'mock',\r\n}\r\n\r\nfunction getStoreStrategy(): StoreStrategy {\r\n let storeStrategy = StoreStrategy.Mock;\r\n if (typeof process !== 'undefined' && process.env.STORE_STRATEGY) {\r\n storeStrategy = process.env.STORE_STRATEGY as StoreStrategy;\r\n }\r\n return storeStrategy;\r\n}\r\n\r\nexport const storeStrategy: StoreStrategy = getStoreStrategy();\r\n\r\n// storeCacheDuration\r\nfunction getStoreCacheDuration(): number {\r\n let storeCacheDuration = (1 * 60 * 1000);\r\n if (typeof process !== 'undefined' && process.env.STORE_CACHE_DURATION) {\r\n storeCacheDuration = parseInt(process.env.STORE_CACHE_DURATION);\r\n }\r\n return storeCacheDuration;\r\n}\r\n\r\nexport const storeCacheDuration: number = getStoreCacheDuration();\r\n\r\n// collections\r\nconst ENV_COLLECTIONS: string[] = process.env.COLLECTIONS ? process.env.COLLECTIONS.split(',') : [];\r\nexport const MOCK_COLLECTIONS: string[] = process.env.MOCKS ? process.env.MOCKS.split(',') : [];\r\nexport const STATIC_COLLECTIONS: string[] = staticCollections.map(x => x.slug);\r\nexport const KNOWN_COLLECTIONS: string[] = [\r\n 'app',\r\n 'category',\r\n 'label',\r\n 'locale',\r\n 'market',\r\n 'menu',\r\n 'redirect',\r\n 'route',\r\n 'template',\r\n ...STATIC_COLLECTIONS,\r\n];\r\nexport const COLLECTIONS = [...ENV_COLLECTIONS, ...KNOWN_COLLECTIONS];\r\n","import { ApiRequestOptions } from '../api/api';\r\nimport { localApiFetch } from '../local/local.api';\r\nimport { remoteApiFetch } from '../remote/remote.api';\r\nimport { StoreStrategy, storeStrategy } from './store';\r\n\r\nconst storeApiFetch = storeStrategy === StoreStrategy.Mock ? localApiFetch : remoteApiFetch;\r\n\r\nexport async function storeApiGet<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'GET' });\r\n}\r\n\r\nexport async function storeApiPost<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'POST', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiPut<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'PUT', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiPatch<T = unknown>(url: string, payload: unknown, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'PATCH', body: JSON.stringify(payload) });\r\n}\r\n\r\nexport async function storeApiDelete<T = unknown>(url: string, options: ApiRequestOptions = {}): Promise<T> {\r\n return await storeApiFetch<T>(url, { ...options, method: 'DELETE' });\r\n}\r\n"],"mappings":"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MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,WAAW;GACZ;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ,CACN;GACE,MAAM;GACN,MAAM;EACP,GACD;GACE,MAAM;GACN,MAAM;EACP,CACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,WAAW;GACZ;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;EACF;CACF;CAAE;EACD,KAAK;EACL,MAAM;EACN,QAAQ;GACN;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;GACP;GACD;IACE,MAAM;IACN,MAAM;IACN,YAAY;IACZ,SAAS;IACT,UAAU;GACX;GACD;IACE,MAAM;IACN,MAAM;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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@websolutespa/bom-mixer-store",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Mixer Store module of the BOM Repository",
5
5
  "keywords": [
6
6
  "bom",
@@ -29,8 +29,7 @@
29
29
  "peerDependencies": {
30
30
  "@websolutespa/bom-core": "^3.0.1",
31
31
  "iron-session": "8.0.4",
32
- "next": "16.1.6",
33
- "payload": "3.74.0"
32
+ "next": "16.1.6"
34
33
  },
35
34
  "devDependencies": {
36
35
  "@types/mime": "^3.0.1",
@@ -1,6 +1,6 @@
1
1
 
2
2
  export * from '../api/api.handler';
3
- export * from '../local_/local.service';
3
+ // export * from '../local_/local.service';
4
4
  export * from '../mock/mock-menu.service';
5
5
  export * from '../mock/mock-page.service';
6
6
  export * from '../mock/mock.handler';
@@ -1,5 +1,5 @@
1
1
  import { IStore } from '@websolutespa/bom-core';
2
- import { getLocalStore } from '../local_/local.store';
2
+ // import { getLocalStore } from '../local_/local.store';
3
3
  import { getMockStore } from '../mock/mock.store';
4
4
  import { getRemoteStore } from '../remote/remote.store';
5
5
  import { StoreStrategy, storeStrategy } from './store';
@@ -9,8 +9,10 @@ export async function getStore<T extends IStore>(): Promise<T> {
9
9
  switch (storeStrategy) {
10
10
  case StoreStrategy.Mock:
11
11
  return await getMockStore<T>();
12
- case StoreStrategy.Local:
13
- return await getLocalStore<T>();
12
+ /*
13
+ case StoreStrategy.Local:
14
+ return await getLocalStore<T>();
15
+ */
14
16
  default:
15
17
  return await getRemoteStore<T>();
16
18
  }
@@ -37,7 +37,7 @@ export const buildStrategy: BuildStrategy = getBuildStrategy();
37
37
 
38
38
  // storeStrategy
39
39
  export enum StoreStrategy {
40
- Local = 'local',
40
+ // Local = 'local',
41
41
  Api = 'api',
42
42
  DecoratedApi = 'decoratedApi',
43
43
  Data = 'data',