@websolutespa/bom-next 3.0.0 → 3.0.2

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.
Files changed (313) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +24 -0
  3. package/dist/client/client.d.ts +9 -0
  4. package/dist/client/client.d.ts.map +1 -0
  5. package/dist/client/client.js +18 -0
  6. package/dist/client/client.js.map +1 -0
  7. package/dist/client/extra.d.ts +17 -0
  8. package/dist/client/extra.d.ts.map +1 -0
  9. package/dist/client/extra.js +13 -0
  10. package/dist/client/extra.js.map +1 -0
  11. package/dist/client/label.d.ts +15 -0
  12. package/dist/client/label.d.ts.map +1 -0
  13. package/dist/client/label.js +20 -0
  14. package/dist/client/label.js.map +1 -0
  15. package/dist/client/layout.d.ts +18 -0
  16. package/dist/client/layout.d.ts.map +1 -0
  17. package/dist/client/layout.js +13 -0
  18. package/dist/client/layout.js.map +1 -0
  19. package/dist/client/local.collection.d.ts +32 -0
  20. package/dist/client/local.collection.d.ts.map +1 -0
  21. package/dist/client/local.collection.js +49 -0
  22. package/dist/client/local.collection.js.map +1 -0
  23. package/dist/client/metadata.d.ts +43 -0
  24. package/dist/client/metadata.d.ts.map +1 -0
  25. package/dist/client/metadata.js +146 -0
  26. package/dist/client/metadata.js.map +1 -0
  27. package/dist/client/page.d.ts +404 -0
  28. package/dist/client/page.d.ts.map +1 -0
  29. package/dist/client/page.js +13 -0
  30. package/dist/client/page.js.map +1 -0
  31. package/dist/client/useApi.d.ts +21 -0
  32. package/dist/client/useApi.d.ts.map +1 -0
  33. package/dist/client/useApi.js +65 -0
  34. package/dist/client/useApi.js.map +1 -0
  35. package/dist/client/useCollectionApi.d.ts +21 -0
  36. package/dist/client/useCollectionApi.d.ts.map +1 -0
  37. package/dist/client/useCollectionApi.js +65 -0
  38. package/dist/client/useCollectionApi.js.map +1 -0
  39. package/dist/client/useExtra.d.ts +9 -0
  40. package/dist/client/useExtra.d.ts.map +1 -0
  41. package/dist/client/useExtra.js +13 -0
  42. package/dist/client/useExtra.js.map +1 -0
  43. package/dist/client/useHttp.d.ts +15 -0
  44. package/dist/client/useHttp.d.ts.map +1 -0
  45. package/dist/client/useHttp.js +70 -0
  46. package/dist/client/useHttp.js.map +1 -0
  47. package/dist/client/useLabel.d.ts +9 -0
  48. package/dist/client/useLabel.d.ts.map +1 -0
  49. package/dist/client/useLabel.js +13 -0
  50. package/dist/client/useLabel.js.map +1 -0
  51. package/dist/client/useLayout.d.ts +9 -0
  52. package/dist/client/useLayout.d.ts.map +1 -0
  53. package/dist/client/useLayout.js +13 -0
  54. package/dist/client/useLayout.js.map +1 -0
  55. package/dist/client/useLink.d.ts +7 -0
  56. package/dist/client/useLink.d.ts.map +1 -0
  57. package/dist/client/useLink.js +15 -0
  58. package/dist/client/useLink.js.map +1 -0
  59. package/dist/client/useMetaData.d.ts +9 -0
  60. package/dist/client/useMetaData.d.ts.map +1 -0
  61. package/dist/client/useMetaData.js +13 -0
  62. package/dist/client/useMetaData.js.map +1 -0
  63. package/dist/client/usePage.d.ts +394 -0
  64. package/dist/client/usePage.d.ts.map +1 -0
  65. package/dist/client/usePage.js +13 -0
  66. package/dist/client/usePage.js.map +1 -0
  67. package/dist/client/useUser.d.ts +9 -0
  68. package/dist/client/useUser.d.ts.map +1 -0
  69. package/dist/client/useUser.js +13 -0
  70. package/dist/client/useUser.js.map +1 -0
  71. package/dist/client/user.d.ts +20 -0
  72. package/dist/client/user.d.ts.map +1 -0
  73. package/dist/client/user.js +33 -0
  74. package/dist/client/user.js.map +1 -0
  75. package/dist/exports/client.d.ts +20 -0
  76. package/dist/exports/client.js +19 -5734
  77. package/dist/exports/instrumentation.d.ts +2 -0
  78. package/dist/exports/instrumentation.js +1 -24
  79. package/dist/exports/proxy.d.ts +5 -0
  80. package/dist/exports/proxy.js +4 -253
  81. package/dist/exports/server.d.ts +19 -0
  82. package/dist/exports/server.js +18 -1973
  83. package/dist/index.d.ts +18 -0
  84. package/dist/index.js +10 -200
  85. package/dist/instrumentation/client.d.ts +8 -0
  86. package/dist/instrumentation/client.d.ts.map +1 -0
  87. package/dist/instrumentation/client.js +15 -0
  88. package/dist/instrumentation/client.js.map +1 -0
  89. package/dist/instrumentation/sentry/capture.requestError.js +10 -0
  90. package/dist/instrumentation/sentry/capture.requestError.js.map +1 -0
  91. package/dist/instrumentation/sentry/capture.routerTransitionStart.js +7 -0
  92. package/dist/instrumentation/sentry/capture.routerTransitionStart.js.map +1 -0
  93. package/dist/{exports/instrumentation-DBO6QH4d.d.ts → instrumentation/server.d.ts} +2 -2
  94. package/dist/instrumentation/server.d.ts.map +1 -0
  95. package/dist/instrumentation/server.js +19 -0
  96. package/dist/instrumentation/server.js.map +1 -0
  97. package/dist/{types-BatUTdbZ.d.ts → instrumentation/types.d.ts} +2 -2
  98. package/dist/instrumentation/types.d.ts.map +1 -0
  99. package/dist/lib/breadcrumb.d.ts +15 -0
  100. package/dist/lib/breadcrumb.d.ts.map +1 -0
  101. package/dist/lib/breadcrumb.js +20 -0
  102. package/dist/lib/breadcrumb.js.map +1 -0
  103. package/dist/lib/const.d.ts +9 -0
  104. package/dist/lib/const.d.ts.map +1 -0
  105. package/dist/lib/const.js +9 -0
  106. package/dist/lib/const.js.map +1 -0
  107. package/dist/lib/http.d.ts +36 -0
  108. package/dist/lib/http.d.ts.map +1 -0
  109. package/dist/{http-_2M-UFRx.js → lib/http.js} +2 -2
  110. package/dist/lib/http.js.map +1 -0
  111. package/dist/lib/label.d.ts +16 -0
  112. package/dist/lib/label.d.ts.map +1 -0
  113. package/dist/lib/label.js +33 -0
  114. package/dist/lib/label.js.map +1 -0
  115. package/dist/lib/layout.defaults.d.ts +9 -0
  116. package/dist/lib/layout.defaults.d.ts.map +1 -0
  117. package/dist/lib/layout.defaults.js +161 -0
  118. package/dist/lib/layout.defaults.js.map +1 -0
  119. package/dist/lib/link.d.ts +9 -0
  120. package/dist/lib/link.d.ts.map +1 -0
  121. package/dist/lib/link.js +16 -0
  122. package/dist/lib/link.js.map +1 -0
  123. package/dist/lib/meta-data.d.ts +56 -0
  124. package/dist/lib/meta-data.d.ts.map +1 -0
  125. package/dist/lib/open-graph.d.ts +143 -0
  126. package/dist/lib/open-graph.d.ts.map +1 -0
  127. package/dist/lib/pagination.d.ts +27 -0
  128. package/dist/lib/pagination.d.ts.map +1 -0
  129. package/dist/lib/pagination.js +39 -0
  130. package/dist/lib/pagination.js.map +1 -0
  131. package/dist/lib/route.d.ts +17 -0
  132. package/dist/lib/route.d.ts.map +1 -0
  133. package/dist/{route-DzFwERQP.js → lib/route.js} +2 -2
  134. package/dist/lib/route.js.map +1 -0
  135. package/dist/lib/store.d.ts +27 -0
  136. package/dist/lib/store.d.ts.map +1 -0
  137. package/dist/{store-CJzqrHsl.js → lib/store.js} +2 -25
  138. package/dist/lib/store.js.map +1 -0
  139. package/dist/lib/structured-data.d.ts +9 -0
  140. package/dist/lib/structured-data.d.ts.map +1 -0
  141. package/dist/lib/twitter-card.d.ts +43 -0
  142. package/dist/lib/twitter-card.d.ts.map +1 -0
  143. package/dist/lib/utils.d.ts +13 -0
  144. package/dist/lib/utils.d.ts.map +1 -0
  145. package/dist/lib/utils.js +35 -0
  146. package/dist/lib/utils.js.map +1 -0
  147. package/dist/mock.d.ts +127 -0
  148. package/dist/mock.d.ts.map +1 -0
  149. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js +75 -0
  150. package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js.map +1 -0
  151. package/dist/node_modules/deepmerge/dist/cjs.js +86 -0
  152. package/dist/node_modules/deepmerge/dist/cjs.js.map +1 -0
  153. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js +105 -0
  154. package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js.map +1 -0
  155. package/dist/node_modules/dom-serializer/lib/esm/index.js +146 -0
  156. package/dist/node_modules/dom-serializer/lib/esm/index.js.map +1 -0
  157. package/dist/node_modules/domelementtype/lib/esm/index.js +53 -0
  158. package/dist/node_modules/domelementtype/lib/esm/index.js.map +1 -0
  159. package/dist/node_modules/domhandler/lib/esm/index.js +130 -0
  160. package/dist/node_modules/domhandler/lib/esm/index.js.map +1 -0
  161. package/dist/node_modules/domhandler/lib/esm/node.js +307 -0
  162. package/dist/node_modules/domhandler/lib/esm/node.js.map +1 -0
  163. package/dist/node_modules/entities/lib/esm/decode.js +363 -0
  164. package/dist/node_modules/entities/lib/esm/decode.js.map +1 -0
  165. package/dist/node_modules/entities/lib/esm/decode_codepoint.js +59 -0
  166. package/dist/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
  167. package/dist/node_modules/entities/lib/esm/escape.js +85 -0
  168. package/dist/node_modules/entities/lib/esm/escape.js.map +1 -0
  169. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +6 -0
  170. package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
  171. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +6 -0
  172. package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
  173. package/dist/node_modules/html-to-text/lib/html-to-text.js +1816 -0
  174. package/dist/node_modules/html-to-text/lib/html-to-text.js.map +1 -0
  175. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js +435 -0
  176. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js.map +1 -0
  177. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js +736 -0
  178. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js.map +1 -0
  179. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js +19 -0
  180. package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js.map +1 -0
  181. package/dist/node_modules/leac/lib/leac.js +101 -0
  182. package/dist/node_modules/leac/lib/leac.js.map +1 -0
  183. package/dist/node_modules/parseley/lib/parseley.js +310 -0
  184. package/dist/node_modules/parseley/lib/parseley.js.map +1 -0
  185. package/dist/node_modules/peberminta/lib/core.js +149 -0
  186. package/dist/node_modules/peberminta/lib/core.js.map +1 -0
  187. package/dist/node_modules/selderee/lib/selderee.js +319 -0
  188. package/dist/node_modules/selderee/lib/selderee.js.map +1 -0
  189. package/dist/proxy/protected-route.d.ts +9 -0
  190. package/dist/proxy/protected-route.d.ts.map +1 -0
  191. package/dist/proxy/protected-route.js +40 -0
  192. package/dist/proxy/protected-route.js.map +1 -0
  193. package/dist/proxy/proxy.d.ts +31 -0
  194. package/dist/proxy/proxy.d.ts.map +1 -0
  195. package/dist/proxy/proxy.js +49 -0
  196. package/dist/proxy/proxy.js.map +1 -0
  197. package/dist/proxy/route-auto-detection.d.ts +12 -0
  198. package/dist/proxy/route-auto-detection.d.ts.map +1 -0
  199. package/dist/proxy/route-auto-detection.js +82 -0
  200. package/dist/proxy/route-auto-detection.js.map +1 -0
  201. package/dist/proxy/route-proxy.d.ts +36 -0
  202. package/dist/proxy/route-proxy.d.ts.map +1 -0
  203. package/dist/proxy/route-proxy.js +103 -0
  204. package/dist/proxy/route-proxy.js.map +1 -0
  205. package/dist/server/context.d.ts +30 -0
  206. package/dist/server/context.d.ts.map +1 -0
  207. package/dist/server/context.js +106 -0
  208. package/dist/server/context.js.map +1 -0
  209. package/dist/server/handlers/auth.handler.d.ts +10 -0
  210. package/dist/server/handlers/auth.handler.d.ts.map +1 -0
  211. package/dist/server/handlers/auth.handler.js +29 -0
  212. package/dist/server/handlers/auth.handler.js.map +1 -0
  213. package/dist/server/handlers/captions.handler.d.ts +10 -0
  214. package/dist/server/handlers/captions.handler.d.ts.map +1 -0
  215. package/dist/server/handlers/captions.handler.js +33 -0
  216. package/dist/server/handlers/captions.handler.js.map +1 -0
  217. package/dist/server/handlers/collection.handler.d.ts +36 -0
  218. package/dist/server/handlers/collection.handler.d.ts.map +1 -0
  219. package/dist/server/handlers/collection.handler.js +166 -0
  220. package/dist/server/handlers/collection.handler.js.map +1 -0
  221. package/dist/server/handlers/error-response.js +24 -0
  222. package/dist/server/handlers/error-response.js.map +1 -0
  223. package/dist/server/handlers/index.handler.d.ts +9 -0
  224. package/dist/server/handlers/index.handler.d.ts.map +1 -0
  225. package/dist/server/handlers/index.handler.js +145 -0
  226. package/dist/server/handlers/index.handler.js.map +1 -0
  227. package/dist/server/handlers/preview.handler.d.ts +9 -0
  228. package/dist/server/handlers/preview.handler.d.ts.map +1 -0
  229. package/dist/server/handlers/preview.handler.js +15 -0
  230. package/dist/server/handlers/preview.handler.js.map +1 -0
  231. package/dist/server/handlers/registry.handler.d.ts +16 -0
  232. package/dist/server/handlers/registry.handler.d.ts.map +1 -0
  233. package/dist/server/handlers/registry.handler.js +260 -0
  234. package/dist/server/handlers/registry.handler.js.map +1 -0
  235. package/dist/server/handlers/route.handler.d.ts +20 -0
  236. package/dist/server/handlers/route.handler.d.ts.map +1 -0
  237. package/dist/server/handlers/route.handler.js +122 -0
  238. package/dist/server/handlers/route.handler.js.map +1 -0
  239. package/dist/server/handlers/sitemap.handler.d.ts +30 -0
  240. package/dist/server/handlers/sitemap.handler.d.ts.map +1 -0
  241. package/dist/server/handlers/sitemap.handler.js +338 -0
  242. package/dist/server/handlers/sitemap.handler.js.map +1 -0
  243. package/dist/server/handlers/static-params.handler.d.ts +24 -0
  244. package/dist/server/handlers/static-params.handler.d.ts.map +1 -0
  245. package/dist/server/handlers/static-params.handler.js +56 -0
  246. package/dist/server/handlers/static-params.handler.js.map +1 -0
  247. package/dist/server/handlers/vars.handler.d.ts +10 -0
  248. package/dist/server/handlers/vars.handler.d.ts.map +1 -0
  249. package/dist/server/handlers/vars.handler.js +159 -0
  250. package/dist/server/handlers/vars.handler.js.map +1 -0
  251. package/dist/server/layout.js +88 -0
  252. package/dist/server/layout.js.map +1 -0
  253. package/dist/server/lazy.d.ts +11 -0
  254. package/dist/server/lazy.d.ts.map +1 -0
  255. package/dist/server/lazy.js +33 -0
  256. package/dist/server/lazy.js.map +1 -0
  257. package/dist/server/local-api.d.ts +9 -0
  258. package/dist/server/local-api.d.ts.map +1 -0
  259. package/dist/server/local-api.js +60 -0
  260. package/dist/server/local-api.js.map +1 -0
  261. package/dist/server/metadata.d.ts +21 -0
  262. package/dist/server/metadata.d.ts.map +1 -0
  263. package/dist/server/metadata.js +20 -0
  264. package/dist/server/metadata.js.map +1 -0
  265. package/dist/server/mixer-payload.d.ts +63 -0
  266. package/dist/server/mixer-payload.d.ts.map +1 -0
  267. package/dist/server/mixer.d.ts +214 -0
  268. package/dist/server/mixer.d.ts.map +1 -0
  269. package/dist/server/mixer.js +355 -0
  270. package/dist/server/mixer.js.map +1 -0
  271. package/dist/server/page.d.ts +22 -0
  272. package/dist/server/page.d.ts.map +1 -0
  273. package/dist/server/page.js +57 -0
  274. package/dist/server/page.js.map +1 -0
  275. package/dist/server/utils.d.ts +12 -0
  276. package/dist/server/utils.d.ts.map +1 -0
  277. package/dist/{utils-YwteTbk7.js → server/utils.js} +3 -3
  278. package/dist/server/utils.js.map +1 -0
  279. package/dist/server/utmz.d.ts +9 -0
  280. package/dist/server/utmz.d.ts.map +1 -0
  281. package/dist/server/utmz.js +14 -0
  282. package/dist/server/utmz.js.map +1 -0
  283. package/dist/types.d.ts +136 -0
  284. package/dist/types.d.ts.map +1 -0
  285. package/package.json +1 -1
  286. package/src/index.ts +0 -1
  287. package/dist/exports/client-xcFJNcG7.d.ts +0 -979
  288. package/dist/exports/client-xcFJNcG7.d.ts.map +0 -1
  289. package/dist/exports/client.js.map +0 -1
  290. package/dist/exports/instrumentation-DBO6QH4d.d.ts.map +0 -1
  291. package/dist/exports/instrumentation.js.map +0 -1
  292. package/dist/exports/proxy-Cv7QFVci.d.ts +0 -71
  293. package/dist/exports/proxy-Cv7QFVci.d.ts.map +0 -1
  294. package/dist/exports/proxy.js.map +0 -1
  295. package/dist/exports/server-BHObJHJ6.d.ts +0 -402
  296. package/dist/exports/server-BHObJHJ6.d.ts.map +0 -1
  297. package/dist/exports/server.js.map +0 -1
  298. package/dist/http-_2M-UFRx.js.map +0 -1
  299. package/dist/index-CdYcvudT.d.ts +0 -4
  300. package/dist/index-CtfAJ0y7.d.ts +0 -499
  301. package/dist/index-CtfAJ0y7.d.ts.map +0 -1
  302. package/dist/index.js.map +0 -1
  303. package/dist/route-DzFwERQP.js.map +0 -1
  304. package/dist/store-CJzqrHsl.js.map +0 -1
  305. package/dist/types-BatUTdbZ.d.ts.map +0 -1
  306. package/dist/types-D29_snYY.d.ts +0 -191
  307. package/dist/types-D29_snYY.d.ts.map +0 -1
  308. package/dist/utils-Ca7xh5mm.js +0 -78
  309. package/dist/utils-Ca7xh5mm.js.map +0 -1
  310. package/dist/utils-YwteTbk7.js.map +0 -1
  311. /package/dist/{config.client-B8As5DY0.js → instrumentation/sentry/config.client.js} +0 -0
  312. /package/dist/{config.edge-B8As5DY0.js → instrumentation/sentry/config.edge.js} +0 -0
  313. /package/dist/{config.server-B8As5DY0.js → instrumentation/sentry/config.server.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vars.handler.js","names":["headers","getHeaders"],"sources":["../../../src/server/handlers/vars.handler.ts"],"sourcesContent":["import { getHost, getOrigin, isDevelopment, isProduction } from '@websolutespa/bom-core';\r\nimport { headers as getHeaders } from 'next/headers';\r\nimport { NextRequest } from 'next/server';\r\nimport { SanitizedConfig } from 'payload';\r\nimport { getLayout } from '../layout';\r\nimport { getPayload, getSearchParams } from '../mixer';\r\nimport { getHandlerErrorResponse } from './error-response';\r\n\r\nconst DISALLOWED_KEYS = [\r\n '__NEXT_PRIVATE_STANDALONE_CONFIG',\r\n];\r\n\r\nconst getFilteredEnv = (env: Record<string, unknown>): Record<string, unknown> => {\r\n const entries = Object.entries(env).filter(([k, v]) => (\r\n !DISALLOWED_KEYS.includes(k) && typeof v === 'string'\r\n ));\r\n entries.sort();\r\n return Object.fromEntries(entries);\r\n};\r\n\r\nconst sortKeys = (object?: Record<string, unknown>): Record<string, unknown> => {\r\n const entries = Object.entries(object || {});\r\n entries.sort();\r\n return Object.fromEntries(entries);\r\n};\r\n\r\nexport function getVarsHandler(config: Promise<SanitizedConfig>) {\r\n return async function (request: NextRequest) {\r\n try {\r\n const searchParams = request.nextUrl.searchParams;\r\n // console.log('getVarsHandler', searchParams);\r\n const { market, locale, defaultMarket, defaultLocale, params } = getSearchParams(request);\r\n const headers = await getHeaders();\r\n const { payload, user, getContext } = await getPayload({ config, headers });\r\n if (!(user?.roles || []).includes('admin')) {\r\n throw { status: 401, message: 'Unauthorized' };\r\n }\r\n const context = await getContext(market || defaultMarket, locale || defaultLocale);\r\n const layout = await getLayout(market || defaultMarket, locale || defaultLocale, payload, user, context);\r\n const info = {\r\n production: isProduction,\r\n development: isDevelopment,\r\n origin: getOrigin(headers),\r\n host: getHost(headers),\r\n params: {},\r\n searchParams: { ...sortKeys(Object.fromEntries(searchParams)) },\r\n headers: { ...sortKeys(Object.fromEntries(headers)) },\r\n env: { ...getFilteredEnv(process.env) },\r\n user: { ...sortKeys(user as unknown as Record<string, unknown>) },\r\n context: { ...sortKeys(context) },\r\n layout: { ...sortKeys(layout) },\r\n };\r\n const accept = headers.get('accept');\r\n if (!accept || !(accept.includes('text/html'))) {\r\n return Response.json(info, {\r\n status: 200,\r\n });\r\n }\r\n return new Response(`<!DOCTYPE html>\r\n<html>\r\n<head>\r\n <meta charSet=\"utf-8\"/>\r\n <style>\r\n html, body {\r\n background: #282828;\r\n color: #7cacf8;\r\n }\r\n body {\r\n padding: 0;\r\n margin: 0;\r\n font-family: monospace;\r\n font-size: 14px;\r\n line-height: 1.16;\r\n font-weight: 100;\r\n }\r\n json-viewer {\r\n padding: 20px;\r\n min-height: 100vh;\r\n box-sizing: border-box;\r\n line-height: 1.2;\r\n --background-color: #282828;\r\n --color: #e3e3e3;\r\n --property-color: #7cacf8;\r\n --string-color: #53d5fb;\r\n --number-color: #7b80ff;\r\n --boolean-color: #9980ff;\r\n --null-color: #6f6f6f;\r\n --preview-color: #8f8f8f;\r\n --highlight-color: #7b0000;\r\n --font-family: monospace;\r\n --font-size: 14px;\r\n --indent-size: 1em;\r\n --indentguide-size: 1px;\r\n --indentguide-style: solid;\r\n --indentguide-color: #333;\r\n --indentguide-color-active: #666;\r\n --indentguide: var(--indentguide-size) var(--indentguide-style) var(--indentguide-color);\r\n --indentguide-active: var(--indentguide-size) var(--indentguide-style) var(--indentguide-color-active);\r\n }\r\n\r\n :root {\r\n --scrollbar-size: 8px;\r\n --scrollbar-border-radius: 2px;\r\n --scrollbar-track-color: transparent;\r\n --scrollbar-track-hover-color: transparent;\r\n --scrollbar-thumb-color: #888888;\r\n --scrollbar-thumb-hover-color: #aaaaaa;\r\n }\r\n\r\n ::-webkit-scrollbar {\r\n width: var(--scrollbar-size);\r\n height: var(--scrollbar-size);\r\n border-radius: 0;\r\n }\r\n\r\n ::-webkit-scrollbar-button {\r\n display: none;\r\n }\r\n\r\n ::-webkit-scrollbar-button:hover {\r\n display: none;\r\n }\r\n\r\n ::-webkit-scrollbar-thumb {\r\n background-color: var(--scrollbar-thumb-color);\r\n box-shadow: none;\r\n border-radius: calc(var(--scrollbar-size) * 0.5);\r\n }\r\n\r\n ::-webkit-scrollbar-thumb:hover {\r\n background-color: var(--scrollbar-thumb-hover-color);\r\n }\r\n\r\n ::-webkit-scrollbar-track {\r\n background-color: var(--scrollbar-track-color);\r\n border-radius: 0;\r\n }\r\n\r\n ::-webkit-scrollbar-track:hover {\r\n background-color: var(--scrollbar-track-hover-color);\r\n }\r\n\r\n </style>\r\n <script src=\"https://unpkg.com/@alenaksu/json-viewer@2.0.0/dist/json-viewer.bundle.js\"></script>\r\n <script>\r\n document.addEventListener('DOMContentLoaded', () => {\r\n const viewer = document.querySelector('#json-viewer');\r\n viewer.data = ${JSON.stringify(info)};\r\n viewer.expand(/headers|env/);\r\n });\r\n </script>\r\n</head>\r\n<body>\r\n <json-viewer id=\"json-viewer\"></json-viewer>\r\n</body>\r\n</html>`, {\r\n status: 200,\r\n headers: {\r\n 'Content-Type': 'text/html',\r\n },\r\n });\r\n } catch (error: unknown) {\r\n console.log('getVarsHandler.error', error);\r\n return getHandlerErrorResponse(error);\r\n }\r\n };\r\n}\r\n"],"mappings":";;;;;;AAQA,MAAM,kBAAkB,CACtB,kCACF;AAEA,MAAM,kBAAkB,QAA0D;CAChF,MAAM,UAAU,OAAO,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,OAC9C,CAAC,gBAAgB,SAAS,CAAC,KAAK,OAAO,MAAM,QAC9C;CACD,QAAQ,KAAK;CACb,OAAO,OAAO,YAAY,OAAO;AACnC;AAEA,MAAM,YAAY,WAA8D;CAC9E,MAAM,UAAU,OAAO,QAAQ,UAAU,CAAC,CAAC;CAC3C,QAAQ,KAAK;CACb,OAAO,OAAO,YAAY,OAAO;AACnC;AAEA,SAAgB,eAAe,QAAkC;CAC/D,OAAO,eAAgB,SAAsB;EAC3C,IAAI;GACF,MAAM,eAAe,QAAQ,QAAQ;GAErC,MAAM,EAAE,QAAQ,QAAQ,eAAe,eAAe,WAAW,gBAAgB,OAAO;GACxF,MAAMA,YAAU,MAAMC,QAAW;GACjC,MAAM,EAAE,SAAS,MAAM,eAAe,MAAM,WAAW;IAAE;IAAQ,SAAA;GAAQ,CAAC;GAC1E,IAAI,EAAE,MAAM,SAAS,CAAC,EAAA,CAAG,SAAS,OAAO,GACvC,MAAM;IAAE,QAAQ;IAAK,SAAS;GAAe;GAE/C,MAAM,UAAU,MAAM,WAAW,UAAU,eAAe,UAAU,aAAa;GACjF,MAAM,SAAS,MAAM,UAAU,UAAU,eAAe,UAAU,eAAe,SAAS,MAAM,OAAO;GACvG,MAAM,OAAO;IACX,YAAY;IACZ,aAAa;IACb,QAAQ,UAAUD,SAAO;IACzB,MAAM,QAAQA,SAAO;IACrB,QAAQ,CAAC;IACT,cAAc,EAAE,GAAG,SAAS,OAAO,YAAY,YAAY,CAAC,EAAE;IAC9D,SAAS,EAAE,GAAG,SAAS,OAAO,YAAYA,SAAO,CAAC,EAAE;IACpD,KAAK,EAAE,GAAG,eAAe,QAAQ,GAAG,EAAE;IACtC,MAAM,EAAE,GAAG,SAAS,IAA0C,EAAE;IAChE,SAAS,EAAE,GAAG,SAAS,OAAO,EAAE;IAChC,QAAQ,EAAE,GAAG,SAAS,MAAM,EAAE;GAChC;GACA,MAAM,SAASA,UAAQ,IAAI,QAAQ;GACnC,IAAI,CAAC,UAAU,CAAE,OAAO,SAAS,WAAW,GAC1C,OAAO,SAAS,KAAK,MAAM,EACzB,QAAQ,IACV,CAAC;GAEH,OAAO,IAAI,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAyFJ,KAAK,UAAU,IAAI,EAAE;;;;;;;;UAQjC;IACF,QAAQ;IACR,SAAS,EACP,gBAAgB,YAClB;GACF,CAAC;EACH,SAAS,OAAgB;GACvB,QAAQ,IAAI,wBAAwB,KAAK;GACzC,OAAO,wBAAwB,KAAK;EACtC;CACF;AACF"}
@@ -0,0 +1,88 @@
1
+ "use server";
2
+ import { getRouteLinkCategory } from "../lib/route.js";
3
+ import { buildBaseOptions } from "./mixer.js";
4
+ import { getRootCategory } from "@websolutespa/bom-core";
5
+ //#region src/server/layout.ts
6
+ /**
7
+ * Builds the full ILayout object using Payload local API calls.
8
+ *
9
+ * All payload.find / payload.findGlobal calls pass `context: mixerContext` so
10
+ * payload-plugin-bowl can enrich results (hrefs, richText serialisation, etc.).
11
+ *
12
+ * Collection and global slugs use the payload-plugin-bowl defaults:
13
+ * market → 'market' (collection)
14
+ * locale → 'locale' (global)
15
+ * label → 'label' (collection)
16
+ * app → 'app' (global) ← defined in payload-plugin-bowl
17
+ * menu → 'menu' (collection)
18
+ *
19
+ * The route link tree is built from mixerContext.currentRoutes + mixerContext.categories
20
+ * using getRouteLinkCategory (pure fn, no store calls) from bom-mixer-models/server.
21
+ */
22
+ async function getLayout(market, locale, payload, user, mixerContext, draft) {
23
+ const base = buildBaseOptions(user, locale, draft);
24
+ const findOpts = {
25
+ ...base,
26
+ pagination: false,
27
+ limit: 1e4
28
+ };
29
+ const markets = (await payload.find({
30
+ ...findOpts,
31
+ collection: "market",
32
+ context: mixerContext
33
+ })).docs;
34
+ const locales = ((await payload.findGlobal({
35
+ ...base,
36
+ slug: "locale",
37
+ context: mixerContext
38
+ }))?.items ?? []).filter((x) => x.isActive);
39
+ const labels = (await payload.find({
40
+ ...findOpts,
41
+ collection: "label",
42
+ context: mixerContext
43
+ })).docs;
44
+ const app = await payload.findGlobal({
45
+ ...base,
46
+ slug: "app",
47
+ context: mixerContext
48
+ });
49
+ const menusResult = await payload.find({
50
+ ...findOpts,
51
+ collection: "menu",
52
+ context: mixerContext
53
+ });
54
+ const menu = {};
55
+ menusResult.docs.forEach((x) => {
56
+ menu[String(x.id)] = x;
57
+ });
58
+ const categories = mixerContext.categories ?? [];
59
+ const currentRoutes = mixerContext.currentRoutes ?? [];
60
+ const rootCategory = getRootCategory(categories);
61
+ const treeResult = rootCategory ? getRouteLinkCategory(locale, currentRoutes, categories, rootCategory, rootCategory) : void 0;
62
+ const tree = Array.isArray(treeResult) ? treeResult[0] : treeResult;
63
+ const firstLevelRoutes = tree?.items ?? [];
64
+ const flatTopLevelRoutes = tree ? [tree, ...firstLevelRoutes] : [];
65
+ const topLevelRoutes = flatTopLevelRoutes.reduce((object, routeLink) => {
66
+ if (!object[routeLink.schema] || routeLink.schema === String(routeLink.category)) object[routeLink.schema] = routeLink;
67
+ return object;
68
+ }, {});
69
+ return {
70
+ labels,
71
+ locale,
72
+ locales,
73
+ market,
74
+ markets,
75
+ app,
76
+ menu,
77
+ topLevelHrefs: flatTopLevelRoutes.reduce((object, routeLink) => {
78
+ if (routeLink.href && (!object[routeLink.schema] || routeLink.schema === String(routeLink.category))) object[routeLink.schema] = routeLink.href;
79
+ return object;
80
+ }, {}),
81
+ topLevelRoutes,
82
+ tree
83
+ };
84
+ }
85
+ //#endregion
86
+ export { getLayout };
87
+
88
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","names":[],"sources":["../../src/server/layout.ts"],"sourcesContent":["'use server';\r\n\r\nimport { IApp, IAppExtended, ICategory, ILabel, ILayout, ILocale, ILocalizedMenu, IMarket, IRoute, IRouteLink, getRootCategory } from '@websolutespa/bom-core';\r\nimport type { User } from '@websolutespa/payload-plugin-bowl';\r\nimport type { CollectionSlug, GlobalSlug } from 'payload';\r\nimport { getRouteLinkCategory } from '../lib/route';\r\nimport type { MixerContext } from '../types';\r\nimport { buildBaseOptions } from './mixer';\r\nimport type { MixerPayload } from './mixer-payload';\r\n\r\n/**\r\n * Builds the full ILayout object using Payload local API calls.\r\n *\r\n * All payload.find / payload.findGlobal calls pass `context: mixerContext` so\r\n * payload-plugin-bowl can enrich results (hrefs, richText serialisation, etc.).\r\n *\r\n * Collection and global slugs use the payload-plugin-bowl defaults:\r\n * market → 'market' (collection)\r\n * locale → 'locale' (global)\r\n * label → 'label' (collection)\r\n * app → 'app' (global) ← defined in payload-plugin-bowl\r\n * menu → 'menu' (collection)\r\n *\r\n * The route link tree is built from mixerContext.currentRoutes + mixerContext.categories\r\n * using getRouteLinkCategory (pure fn, no store calls) from bom-mixer-models/server.\r\n */\r\nexport async function getLayout<T extends IAppExtended = IAppExtended>(\r\n market: string,\r\n locale: string,\r\n payload: MixerPayload,\r\n user: User,\r\n mixerContext: MixerContext,\r\n draft?: boolean\r\n): Promise<ILayout<T>> {\r\n const base = buildBaseOptions(user, locale, draft);\r\n const findOpts = { ...base, pagination: false, limit: 10000 } as const;\r\n\r\n // markets\r\n const marketsResult = await payload.find({\r\n ...findOpts,\r\n collection: 'market' as CollectionSlug,\r\n context: mixerContext,\r\n });\r\n const markets = marketsResult.docs as unknown as IMarket[];\r\n\r\n // locales (global with an `items` array)\r\n const localeGlobal = await payload.findGlobal({\r\n ...base,\r\n slug: 'locale' as GlobalSlug,\r\n context: mixerContext,\r\n }) as unknown as { items: ILocale[] };\r\n const locales = (localeGlobal?.items ?? []).filter(x => x.isActive);\r\n\r\n // labels\r\n const labelsResult = await payload.find({\r\n ...findOpts,\r\n collection: 'label' as CollectionSlug,\r\n context: mixerContext,\r\n });\r\n const labels = labelsResult.docs as unknown as ILabel[];\r\n\r\n // app global (slug 'app', registered by payload-plugin-bowl)\r\n const app = await payload.findGlobal({\r\n ...base,\r\n slug: 'app' as GlobalSlug,\r\n context: mixerContext,\r\n }) as unknown as IApp<T>;\r\n\r\n // menus\r\n const menusResult = await payload.find({\r\n ...findOpts,\r\n collection: 'menu' as CollectionSlug,\r\n context: mixerContext,\r\n });\r\n\r\n const menu: Record<string, ILocalizedMenu> = {};\r\n (menusResult.docs as unknown as ILocalizedMenu[]).forEach(x => {\r\n menu[String(x.id)] = x;\r\n });\r\n\r\n // route link tree — pure computation from mixer context data (no store calls)\r\n const categories = (mixerContext.categories ?? []) as unknown as ICategory[];\r\n const currentRoutes = (mixerContext.currentRoutes ?? []) as IRoute[];\r\n const rootCategory = getRootCategory(categories);\r\n const treeResult = rootCategory\r\n ? getRouteLinkCategory(locale, currentRoutes, categories, rootCategory, rootCategory)\r\n : undefined;\r\n const tree = Array.isArray(treeResult) ? treeResult[0] : treeResult;\r\n\r\n // derive topLevelRoutes and topLevelHrefs from tree (mirrors layout.service.ts logic)\r\n const firstLevelRoutes = tree?.items ?? [];\r\n const flatTopLevelRoutes: IRouteLink[] = tree ? [tree, ...firstLevelRoutes] : [];\r\n\r\n const topLevelRoutes = flatTopLevelRoutes.reduce((object, routeLink) => {\r\n if (!object[routeLink.schema] || routeLink.schema === String(routeLink.category)) {\r\n object[routeLink.schema] = routeLink;\r\n }\r\n return object;\r\n }, {} as Record<string, IRouteLink>);\r\n\r\n const topLevelHrefs = flatTopLevelRoutes.reduce((object, routeLink) => {\r\n if (routeLink.href && (!object[routeLink.schema] || routeLink.schema === String(routeLink.category))) {\r\n object[routeLink.schema] = routeLink.href;\r\n }\r\n return object;\r\n }, {} as Record<string, string>);\r\n\r\n return {\r\n labels,\r\n locale,\r\n locales,\r\n market,\r\n markets,\r\n app,\r\n menu,\r\n topLevelHrefs,\r\n topLevelRoutes,\r\n tree,\r\n };\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA0BA,eAAsB,UACpB,QACA,QACA,SACA,MACA,cACA,OACqB;CACrB,MAAM,OAAO,iBAAiB,MAAM,QAAQ,KAAK;CACjD,MAAM,WAAW;EAAE,GAAG;EAAM,YAAY;EAAO,OAAO;CAAM;CAQ5D,MAAM,WAAU,MALY,QAAQ,KAAK;EACvC,GAAG;EACH,YAAY;EACZ,SAAS;CACX,CAAC,EAAA,CAC6B;CAQ9B,MAAM,YAAW,MALU,QAAQ,WAAW;EAC5C,GAAG;EACH,MAAM;EACN,SAAS;CACX,CAAC,EAAA,EAC8B,SAAS,CAAC,EAAA,CAAG,QAAO,MAAK,EAAE,QAAQ;CAQlE,MAAM,UAAS,MALY,QAAQ,KAAK;EACtC,GAAG;EACH,YAAY;EACZ,SAAS;CACX,CAAC,EAAA,CAC2B;CAG5B,MAAM,MAAM,MAAM,QAAQ,WAAW;EACnC,GAAG;EACH,MAAM;EACN,SAAS;CACX,CAAC;CAGD,MAAM,cAAc,MAAM,QAAQ,KAAK;EACrC,GAAG;EACH,YAAY;EACZ,SAAS;CACX,CAAC;CAED,MAAM,OAAuC,CAAC;CAC9C,YAAa,KAAqC,SAAQ,MAAK;EAC7D,KAAK,OAAO,EAAE,EAAE,KAAK;CACvB,CAAC;CAGD,MAAM,aAAc,aAAa,cAAc,CAAC;CAChD,MAAM,gBAAiB,aAAa,iBAAiB,CAAC;CACtD,MAAM,eAAe,gBAAgB,UAAU;CAC/C,MAAM,aAAa,eACf,qBAAqB,QAAQ,eAAe,YAAY,cAAc,YAAY,IAClF,KAAA;CACJ,MAAM,OAAO,MAAM,QAAQ,UAAU,IAAI,WAAW,KAAK;CAGzD,MAAM,mBAAmB,MAAM,SAAS,CAAC;CACzC,MAAM,qBAAmC,OAAO,CAAC,MAAM,GAAG,gBAAgB,IAAI,CAAC;CAE/E,MAAM,iBAAiB,mBAAmB,QAAQ,QAAQ,cAAc;EACtE,IAAI,CAAC,OAAO,UAAU,WAAW,UAAU,WAAW,OAAO,UAAU,QAAQ,GAC7E,OAAO,UAAU,UAAU;EAE7B,OAAO;CACT,GAAG,CAAC,CAA+B;CASnC,OAAO;EACL;EACA;EACA;EACA;EACA;EACA;EACA;EACA,eAfoB,mBAAmB,QAAQ,QAAQ,cAAc;GACrE,IAAI,UAAU,SAAS,CAAC,OAAO,UAAU,WAAW,UAAU,WAAW,OAAO,UAAU,QAAQ,IAChG,OAAO,UAAU,UAAU,UAAU;GAEvC,OAAO;EACT,GAAG,CAAC,CAUU;EACZ;EACA;CACF;AACF"}
@@ -0,0 +1,11 @@
1
+ import { ILazyStaticPropsFunc } from "../types.js";
2
+ import { IComponent } from "@websolutespa/bom-core";
3
+
4
+ //#region src/server/lazy.d.ts
5
+ declare function withLazyProps<T>(key: string, getComponentProps: ILazyStaticPropsFunc<T>): Promise<void>;
6
+ declare function decorateLazyComponents(extraComponents?: IComponent[]): Promise<void>;
7
+ //# sourceMappingURL=lazy.d.ts.map
8
+
9
+ //#endregion
10
+ export { decorateLazyComponents, withLazyProps };
11
+ //# sourceMappingURL=lazy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.d.ts","names":[],"sources":["../../src/server/lazy.ts"],"mappings":";;;;iBASsB,iDAAiD,qBAAqB,KAAE;iBAIxE,sBAAA,mBAAyC,eAAY;AAJ3E"}
@@ -0,0 +1,33 @@
1
+ "use server";
2
+ import { getContext } from "./mixer.js";
3
+ import { getPageContext } from "./context.js";
4
+ //#region src/server/lazy.ts
5
+ const LAZY_PROPS = {};
6
+ async function withLazyProps(key, getComponentProps) {
7
+ LAZY_PROPS[key] = getComponentProps;
8
+ }
9
+ async function decorateLazyComponents(extraComponents) {
10
+ const context = await getContext();
11
+ const pageContext = await getPageContext();
12
+ const page = pageContext.page;
13
+ if (!page) return;
14
+ const components = [...page.components || [], ...extraComponents || []];
15
+ const decoratedComponents = [];
16
+ for (const component of components) {
17
+ const key = component.blockType || component.schema || "unkown_type";
18
+ const getComponentProps = LAZY_PROPS[key];
19
+ if (typeof getComponentProps === "function") {
20
+ const decoratedComponent = await getComponentProps({
21
+ ...context,
22
+ ...pageContext,
23
+ component
24
+ });
25
+ decoratedComponents.push(decoratedComponent);
26
+ } else decoratedComponents.push(component);
27
+ }
28
+ page.components = decoratedComponents;
29
+ }
30
+ //#endregion
31
+ export { decorateLazyComponents, withLazyProps };
32
+
33
+ //# sourceMappingURL=lazy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lazy.js","names":[],"sources":["../../src/server/lazy.ts"],"sourcesContent":["'use server';\r\n\r\nimport type { IComponent } from '@websolutespa/bom-core';\r\nimport type { ILazyComponent, ILazyStaticProps, ILazyStaticPropsFunc } from '../types';\r\nimport { getPageContext } from './context';\r\nimport { getContext } from './mixer';\r\n\r\nconst LAZY_PROPS: ILazyStaticProps = {};\r\n\r\nexport async function withLazyProps<T>(key: string, getComponentProps: ILazyStaticPropsFunc<T>) {\r\n LAZY_PROPS[key] = getComponentProps;\r\n}\r\n\r\nexport async function decorateLazyComponents(extraComponents?: IComponent[]) {\r\n const context = await getContext();\r\n const pageContext = await getPageContext();\r\n const page = pageContext.page;\r\n if (!page) {\r\n return;\r\n }\r\n const components = [\r\n ...(page.components || []),\r\n ...(extraComponents || []),\r\n ];\r\n const decoratedComponents: ILazyComponent[] = [];\r\n for (const component of components) {\r\n const key = (component.blockType || component.schema || 'unkown_type') as keyof typeof LAZY_PROPS;\r\n const getComponentProps = LAZY_PROPS[key];\r\n if (typeof getComponentProps === 'function') {\r\n const decoratedComponent = await getComponentProps({\r\n ...context,\r\n ...pageContext,\r\n component,\r\n });\r\n decoratedComponents.push(decoratedComponent);\r\n } else {\r\n decoratedComponents.push(component);\r\n }\r\n }\r\n page.components = decoratedComponents;\r\n}\r\n"],"mappings":";;;;AAOA,MAAM,aAA+B,CAAC;AAEtC,eAAsB,cAAiB,KAAa,mBAA4C;CAC9F,WAAW,OAAO;AACpB;AAEA,eAAsB,uBAAuB,iBAAgC;CAC3E,MAAM,UAAU,MAAM,WAAW;CACjC,MAAM,cAAc,MAAM,eAAe;CACzC,MAAM,OAAO,YAAY;CACzB,IAAI,CAAC,MACH;CAEF,MAAM,aAAa,CACjB,GAAI,KAAK,cAAc,CAAC,GACxB,GAAI,mBAAmB,CAAC,CAC1B;CACA,MAAM,sBAAwC,CAAC;CAC/C,KAAK,MAAM,aAAa,YAAY;EAClC,MAAM,MAAO,UAAU,aAAa,UAAU,UAAU;EACxD,MAAM,oBAAoB,WAAW;EACrC,IAAI,OAAO,sBAAsB,YAAY;GAC3C,MAAM,qBAAqB,MAAM,kBAAkB;IACjD,GAAG;IACH,GAAG;IACH;GACF,CAAC;GACD,oBAAoB,KAAK,kBAAkB;EAC7C,OACE,oBAAoB,KAAK,SAAS;CAEtC;CACA,KAAK,aAAa;AACpB"}
@@ -0,0 +1,9 @@
1
+ import { SanitizedConfig } from "payload";
2
+
3
+ //#region src/server/local-api.d.ts
4
+ declare function getLocalApi(config: Promise<SanitizedConfig>, slug: string): Promise<any>;
5
+ //# sourceMappingURL=local-api.d.ts.map
6
+
7
+ //#endregion
8
+ export { getLocalApi };
9
+ //# sourceMappingURL=local-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api.d.ts","names":[],"sources":["../../src/server/local-api.ts"],"mappings":";;;iBAIsB,WAAA,SAAoB,QAAQ,iCAAiC"}
@@ -0,0 +1,60 @@
1
+ "use server";
2
+ import { getPayload } from "payload";
3
+ //#region src/server/local-api.ts
4
+ async function getLocalApi(config, slug) {
5
+ const payload = await getPayload({ config });
6
+ const collectionSlugs = payload.config.collections.map((x) => x.slug);
7
+ const globalSlugs = payload.config.globals.map((x) => x.slug);
8
+ [...collectionSlugs, ...globalSlugs].sort();
9
+ if (collectionSlugs.includes(slug)) {
10
+ const collectionSlug = slug;
11
+ return {
12
+ findMany: async (params) => {
13
+ return (await payload.find({
14
+ ...params,
15
+ collection: collectionSlug,
16
+ pagination: false,
17
+ limit: 1e4,
18
+ overrideAccess: false
19
+ })).docs;
20
+ },
21
+ findPaged: async (params) => {
22
+ return await payload.find({
23
+ ...params,
24
+ collection: collectionSlug,
25
+ overrideAccess: false
26
+ });
27
+ },
28
+ findOne: async (params) => {
29
+ return await payload.findByID({
30
+ id: "",
31
+ ...params,
32
+ collection: collectionSlug,
33
+ disableErrors: true,
34
+ overrideAccess: false
35
+ });
36
+ }
37
+ };
38
+ } else if (globalSlugs.includes(slug)) {
39
+ const globalSlug = slug;
40
+ return {
41
+ findMany: async (params) => {
42
+ return await payload.findGlobal({
43
+ slug: globalSlug,
44
+ ...params,
45
+ overrideAccess: false
46
+ });
47
+ },
48
+ findPaged: async (params) => {
49
+ throw "Not implemented";
50
+ },
51
+ findOne: async (params) => {
52
+ throw "Not implemented";
53
+ }
54
+ };
55
+ }
56
+ }
57
+ //#endregion
58
+ export { getLocalApi };
59
+
60
+ //# sourceMappingURL=local-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-api.js","names":[],"sources":["../../src/server/local-api.ts"],"sourcesContent":["'use server';\r\n\r\nimport { CollectionSlug, getPayload, GlobalSlug, SanitizedConfig } from 'payload';\r\n\r\nexport async function getLocalApi(config: Promise<SanitizedConfig>, slug: string): Promise<any> {\r\n const payload = await getPayload({ config });\r\n const collectionSlugs = payload.config.collections.map(x => x.slug);\r\n const globalSlugs = payload.config.globals.map(x => x.slug);\r\n const keys = [\r\n ...collectionSlugs,\r\n ...globalSlugs,\r\n ];\r\n keys.sort();\r\n if (collectionSlugs.includes(slug as CollectionSlug)) {\r\n const collectionSlug = slug as CollectionSlug;\r\n return {\r\n findMany: async (params: Parameters<typeof payload.find>) => {\r\n const response = await payload.find({\r\n ...(params as any),\r\n collection: collectionSlug,\r\n pagination: false,\r\n limit: 10000,\r\n overrideAccess: false,\r\n });\r\n return response.docs;\r\n },\r\n findPaged: async (params: Parameters<typeof payload.find>) => {\r\n const response = await payload.find({\r\n ...(params as any),\r\n collection: collectionSlug,\r\n overrideAccess: false,\r\n });\r\n return response;\r\n },\r\n findOne: async (params: Parameters<typeof payload.findByID>) => {\r\n return await payload.findByID({\r\n id: '',\r\n ...params,\r\n collection: collectionSlug,\r\n disableErrors: true,\r\n overrideAccess: false,\r\n });\r\n },\r\n };\r\n } else if (globalSlugs.includes(slug as GlobalSlug)) {\r\n const globalSlug = slug as GlobalSlug;\r\n return {\r\n findMany: async (params: Parameters<typeof payload.findGlobal>) => {\r\n return await payload.findGlobal({\r\n slug: globalSlug,\r\n ...params,\r\n overrideAccess: false,\r\n });\r\n },\r\n findPaged: async (params: Parameters<typeof payload.find>) => {\r\n throw 'Not implemented';\r\n },\r\n findOne: async (params: Parameters<typeof payload.findByID>) => {\r\n throw 'Not implemented';\r\n },\r\n };\r\n }\r\n}\r\n"],"mappings":";;;AAIA,eAAsB,YAAY,QAAkC,MAA4B;CAC9F,MAAM,UAAU,MAAM,WAAW,EAAE,OAAO,CAAC;CAC3C,MAAM,kBAAkB,QAAQ,OAAO,YAAY,KAAI,MAAK,EAAE,IAAI;CAClE,MAAM,cAAc,QAAQ,OAAO,QAAQ,KAAI,MAAK,EAAE,IAAI;CAK1D,CAHE,GAAG,iBACH,GAAG,WAEF,CAAC,CAAC,KAAK;CACV,IAAI,gBAAgB,SAAS,IAAsB,GAAG;EACpD,MAAM,iBAAiB;EACvB,OAAO;GACL,UAAU,OAAO,WAA4C;IAQ3D,QAAO,MAPgB,QAAQ,KAAK;KAClC,GAAI;KACJ,YAAY;KACZ,YAAY;KACZ,OAAO;KACP,gBAAgB;IAClB,CAAC,EAAA,CACe;GAClB;GACA,WAAW,OAAO,WAA4C;IAM5D,OAAO,MALgB,QAAQ,KAAK;KAClC,GAAI;KACJ,YAAY;KACZ,gBAAgB;IAClB,CAAC;GAEH;GACA,SAAS,OAAO,WAAgD;IAC9D,OAAO,MAAM,QAAQ,SAAS;KAC5B,IAAI;KACJ,GAAG;KACH,YAAY;KACZ,eAAe;KACf,gBAAgB;IAClB,CAAC;GACH;EACF;CACF,OAAO,IAAI,YAAY,SAAS,IAAkB,GAAG;EACnD,MAAM,aAAa;EACnB,OAAO;GACL,UAAU,OAAO,WAAkD;IACjE,OAAO,MAAM,QAAQ,WAAW;KAC9B,MAAM;KACN,GAAG;KACH,gBAAgB;IAClB,CAAC;GACH;GACA,WAAW,OAAO,WAA4C;IAC5D,MAAM;GACR;GACA,SAAS,OAAO,WAAgD;IAC9D,MAAM;GACR;EACF;CACF;AACF"}
@@ -0,0 +1,21 @@
1
+ import { PageParams } from "../types.js";
2
+ import { CollectionSlug, SanitizedConfig } from "payload";
3
+ import { ResolvingMetadata } from "next";
4
+
5
+ //#region src/server/metadata.d.ts
6
+
7
+ /**
8
+ * Returns a generateMetadata function for a given page collection slug.
9
+ * Uses bowl's createPageContext (Payload local API) instead of the store abstraction.
10
+ */
11
+ declare function getMetadata<TSlug extends CollectionSlug>(slug: TSlug, config: Promise<SanitizedConfig>): (props: Readonly<{
12
+ params: Promise<PageParams>;
13
+ }>, parent: ResolvingMetadata) => Promise<{
14
+ title: string;
15
+ description: string | undefined;
16
+ }>;
17
+ //# sourceMappingURL=metadata.d.ts.map
18
+
19
+ //#endregion
20
+ export { getMetadata };
21
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","names":[],"sources":["../../src/server/metadata.ts"],"mappings":";;;;;;;;AASA;AAA2B;AAAe,iBAA1B,WAA0B,CAAA,cAAA,cAAA,CAAA,CAAA,IAAA,EAAsB,KAAtB,EAAA,MAAA,EAAqC,OAArC,CAA6C,eAA7C,CAAA,CAAA,EAAA,CAAA,KAAA,EAE3B,QAF2B,CAAA;EAAsB,MAAA,EAE9B,OAF8B,CAEtB,UAFsB,CAAA;AAAuB,CAAA,CAAA,EAAA,MAAA,EAGvE,iBAHuE,EAAA,GAGtD,OAHsD,CAAA;EAAR,KAAA,EAAA,MAAA;EAErC,WAAA,EAAA,MAAA,GAAA,SAAA;AAAR,CAAA,CAAA;AAAnB"}
@@ -0,0 +1,20 @@
1
+ import { createPageContext } from "./context.js";
2
+ //#region src/server/metadata.ts
3
+ /**
4
+ * Returns a generateMetadata function for a given page collection slug.
5
+ * Uses bowl's createPageContext (Payload local API) instead of the store abstraction.
6
+ */
7
+ function getMetadata(slug, config) {
8
+ return async function generateMetadata(props, parent) {
9
+ const { market, locale, id } = await props.params;
10
+ const { page } = await createPageContext(market, locale, slug, id, config);
11
+ return {
12
+ title: page.meta?.title || page.title,
13
+ description: page.meta?.description || page.abstract
14
+ };
15
+ };
16
+ }
17
+ //#endregion
18
+ export { getMetadata };
19
+
20
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","names":[],"sources":["../../src/server/metadata.ts"],"sourcesContent":["import type { ResolvingMetadata } from 'next';\r\nimport type { CollectionSlug, SanitizedConfig } from 'payload';\r\nimport type { PageParams } from '../types';\r\nimport { createPageContext } from './context';\r\n\r\n/**\r\n * Returns a generateMetadata function for a given page collection slug.\r\n * Uses bowl's createPageContext (Payload local API) instead of the store abstraction.\r\n */\r\nexport function getMetadata<TSlug extends CollectionSlug>(slug: TSlug, config: Promise<SanitizedConfig>) {\r\n return async function generateMetadata(\r\n props: Readonly<{ params: Promise<PageParams>; }>,\r\n parent: ResolvingMetadata\r\n ) {\r\n const { market, locale, id } = await props.params;\r\n const { page } = await createPageContext(market, locale, slug, id, config);\r\n return {\r\n title: page!.meta?.title || page!.title,\r\n description: page!.meta?.description || page!.abstract,\r\n };\r\n };\r\n}\r\n\r\n/*\r\n\r\n{\r\n \"viewport\": null,\r\n \"themeColor\": null,\r\n \"colorScheme\": null,\r\n \"metadataBase\": null,\r\n \"title\": {\r\n \"absolute\": \"Mixer\",\r\n \"template\": null\r\n },\r\n \"description\": \"Generated by bom create\",\r\n \"applicationName\": \"Mixer\",\r\n \"authors\": [\r\n {\r\n \"name\": \"Websolute Spa\",\r\n \"url\": \"https://www.websolute.it\"\r\n }\r\n ],\r\n \"generator\": \"BOM\",\r\n \"keywords\": [\r\n \"Mixer\",\r\n \"Next.js\",\r\n \"React\",\r\n \"JavaScript\"\r\n ],\r\n \"referrer\": \"origin-when-cross-origin\",\r\n \"creator\": \"Luca Zampetti\",\r\n \"publisher\": \"Websolute Spa\",\r\n \"robots\": null,\r\n \"manifest\": null,\r\n \"alternates\": {\r\n \"canonical\": null,\r\n \"languages\": null,\r\n \"media\": null,\r\n \"types\": null\r\n },\r\n \"icons\": null,\r\n \"openGraph\": null,\r\n \"twitter\": null,\r\n \"verification\": {},\r\n \"appleWebApp\": null,\r\n \"formatDetection\": {\r\n \"email\": false,\r\n \"address\": false,\r\n \"telephone\": false\r\n },\r\n \"itunes\": null,\r\n \"facebook\": null,\r\n \"abstract\": null,\r\n \"appLinks\": null,\r\n \"archives\": null,\r\n \"assets\": null,\r\n \"bookmarks\": null,\r\n \"category\": null,\r\n \"classification\": null,\r\n \"pagination\": {\r\n \"previous\": null,\r\n \"next\": null\r\n },\r\n \"other\": {}\r\n}\r\n\r\n*/\r\n"],"mappings":";;;;;;AASA,SAAgB,YAA0C,MAAa,QAAkC;CACrG,OAAO,eAAe,iBAClB,OACA,QACF;EACE,MAAM,EAAE,QAAQ,QAAQ,OAAO,MAAM,MAAM;EAC3C,MAAM,EAAE,SAAS,MAAM,kBAAkB,QAAQ,QAAQ,MAAM,IAAI,MAAM;EACzE,OAAO;GACH,OAAO,KAAM,MAAM,SAAS,KAAM;GAClC,aAAa,KAAM,MAAM,eAAe,KAAM;EAClD;CACJ;AACJ"}
@@ -0,0 +1,63 @@
1
+ import { IMenu, IMenuItem } from "@websolutespa/bom-core";
2
+ import { MixerReadContext } from "@websolutespa/payload-plugin-bowl";
3
+ import { BasePayload, CollectionSlug, DataFromCollectionSlug, DataFromGlobalSlug, FindOptions, GlobalSlug, PaginatedDocs, RequestContext } from "payload";
4
+
5
+ //#region src/server/mixer-payload.d.ts
6
+ /** Fields added to the root document by Bowl's market- and locale-aware reads. */
7
+ type BowlDocumentDecoration = {
8
+ schema: string;
9
+ href?: string | null;
10
+ };
11
+ type BowlDecoratedCategory<T> = T extends null ? null : T extends string ? T : T extends readonly (infer TItem)[] ? BowlDecoratedCategory<TItem>[] : T extends object ? BowlDecoratedValue<T> & {
12
+ href: string | null;
13
+ } : T;
14
+ type BowlDecoratedNav<T> = Extract<T, null | undefined> | IMenuItem | IMenuItem[];
15
+ type BowlDecoratedNavs<T> = T extends null | undefined ? T : IMenuItem[];
16
+ type BowlDecoratedProperty<TKey, TValue> = TValue extends {
17
+ root: unknown;
18
+ } ? string : TKey extends 'category' ? BowlDecoratedCategory<TValue> : TKey extends 'nav' ? BowlDecoratedNav<TValue> : TKey extends 'navs' ? BowlDecoratedNavs<TValue> : BowlDecoratedValue<TValue>;
19
+ type BowlDecoratedObject<T> = { [TKey in keyof T]: BowlDecoratedProperty<TKey, T[TKey]> } & (T extends {
20
+ mimeType?: unknown;
21
+ filename?: unknown;
22
+ } ? {
23
+ type: string;
24
+ } : unknown);
25
+ type BowlDecoratedValue<T> = T extends Date ? T : T extends readonly (infer TItem)[] ? BowlDecoratedValue<TItem>[] : T extends object ? BowlDecoratedObject<T> : T;
26
+ /**
27
+ * Represents a document returned by a Bowl-decorated local Payload read.
28
+ *
29
+ * Localized values are selected by Payload's `locale` option. Bowl recursively
30
+ * serializes Lexical rich-text values to HTML, resolves populated category
31
+ * relationships, normalizes nav fields, and adds upload media types. Bowl menu
32
+ * collections return their `IMenu` projection rather than their stored shape.
33
+ */
34
+ type BowlDecorator<T, TSlug extends string = ''> = TSlug extends 'menu' ? IMenu : BowlDecoratedValue<T> & BowlDocumentDecoration;
35
+ /** @deprecated Use `BowlDecorator<T>` for a decorated document result. */
36
+
37
+ type DecorateForMixer<T, TSlug extends string, TContext> = TContext extends MixerReadContext ? BowlDecorator<T, TSlug> : T;
38
+ type MixerFindOptions<TSlug extends CollectionSlug, TContext> = Omit<FindOptions<TSlug, any>, 'context'> & {
39
+ context?: TContext;
40
+ };
41
+ type MixerFindByIDOptions<TSlug extends CollectionSlug, TContext> = Omit<FindOptions<TSlug, any>, 'context'> & {
42
+ context?: TContext;
43
+ disableErrors?: boolean;
44
+ id: number | string;
45
+ };
46
+ type MixerFindGlobalOptions<TSlug extends GlobalSlug, TContext> = Omit<FindOptions<CollectionSlug, any>, 'collection' | 'context'> & {
47
+ context?: TContext;
48
+ slug: TSlug;
49
+ };
50
+ /**
51
+ * Type-only view returned by BOM Next's getPayload loader.
52
+ *
53
+ * It is the same Payload instance at runtime. Standard local reads retain
54
+ * generated Payload types until their context includes market and locale.
55
+ */
56
+ type MixerPayload = Omit<BasePayload, 'find' | 'findByID' | 'findGlobal'> & {
57
+ find: <TSlug extends CollectionSlug, TContext extends RequestContext | undefined = undefined>(options: MixerFindOptions<TSlug, TContext>) => Promise<PaginatedDocs<DecorateForMixer<DataFromCollectionSlug<TSlug>, TSlug, TContext>>>;
58
+ findByID: <TSlug extends CollectionSlug, TContext extends RequestContext | undefined = undefined>(options: MixerFindByIDOptions<TSlug, TContext>) => Promise<DecorateForMixer<DataFromCollectionSlug<TSlug>, TSlug, TContext> | null>;
59
+ findGlobal: <TSlug extends GlobalSlug, TContext extends RequestContext | undefined = undefined>(options: MixerFindGlobalOptions<TSlug, TContext>) => Promise<DecorateForMixer<DataFromGlobalSlug<TSlug>, TSlug, TContext>>;
60
+ };
61
+ //#endregion
62
+ export { BowlDecorator, BowlDocumentDecoration, MixerPayload };
63
+ //# sourceMappingURL=mixer-payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixer-payload.d.ts","names":[],"sources":["../../src/server/mixer-payload.ts"],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ import { MixerPayload } from "./mixer-payload.js";
2
+ import { BaseOptions, IContext, MixerContext, ReadonlyHeaders } from "../types.js";
3
+ import { IRoute } from "@websolutespa/bom-core";
4
+ import { NextRequest } from "next/server";
5
+ import * as _websolutespa_payload_plugin_bowl0 from "@websolutespa/payload-plugin-bowl";
6
+ import { Config, User } from "@websolutespa/payload-plugin-bowl";
7
+ import { BasePayload, SanitizedConfig, TypedFallbackLocale, TypedLocale } from "payload";
8
+
9
+ //#region src/server/mixer.d.ts
10
+ declare function getCacheKey({
11
+ market,
12
+ locale,
13
+ user,
14
+ draft
15
+ }: {
16
+ market?: string;
17
+ locale?: string;
18
+ user?: User & Config['user'];
19
+ draft?: string;
20
+ }): string;
21
+ declare function getContext(): Promise<IContext>;
22
+ declare function setContext(data: Partial<IContext>): Promise<void>;
23
+ declare function getSearchParams(request: NextRequest): {
24
+ market: string;
25
+ locale: string;
26
+ defaultMarket: string;
27
+ defaultLocale: string;
28
+ params: {
29
+ [k: string]: string;
30
+ };
31
+ searchParams: URLSearchParams;
32
+ };
33
+ declare const getPayloadInstance: (props: {
34
+ config: SanitizedConfig | Promise<SanitizedConfig>;
35
+ }) => Promise<BasePayload>;
36
+ declare function getOptions({
37
+ locale,
38
+ user,
39
+ draft
40
+ }: {
41
+ locale?: string;
42
+ user?: User & Config['user'];
43
+ draft?: boolean;
44
+ }): {
45
+ localized: BaseOptions;
46
+ unlocalized: BaseOptions;
47
+ };
48
+ declare function getRoutes$1({
49
+ payload,
50
+ market,
51
+ locale,
52
+ user,
53
+ draft
54
+ }: {
55
+ payload: BasePayload;
56
+ market?: string;
57
+ locale?: string;
58
+ user?: User & Config['user'];
59
+ draft?: boolean;
60
+ }): Promise<IRoute[]>;
61
+ declare function getMixerContext({
62
+ payload,
63
+ market,
64
+ locale,
65
+ user,
66
+ draft
67
+ }: {
68
+ payload: BasePayload;
69
+ market: string;
70
+ locale: string;
71
+ user?: User & Config['user'];
72
+ draft?: boolean;
73
+ }): Promise<MixerContext>;
74
+ /**
75
+ * Runtime (request-time) payload accessor.
76
+ *
77
+ * By default, operates as the guest user for static generation. For auth:
78
+ * call getHeaders() directly in your page/route/layout, then pass it here.
79
+ *
80
+ * Example:
81
+ * const headers = await getHeaders();
82
+ * const { payload, user, getContext } = await getPayload({ config, headers });
83
+ */
84
+ declare function getPayload$1({
85
+ config,
86
+ headers
87
+ }: {
88
+ config: Promise<SanitizedConfig>;
89
+ headers?: ReadonlyHeaders;
90
+ }): Promise<{
91
+ payload: MixerPayload;
92
+ user: (User & {
93
+ collection: "users";
94
+ }) | (User & _websolutespa_payload_plugin_bowl0.EndUser & {
95
+ collection: "end_users";
96
+ });
97
+ getContext: (market: string, locale: string) => Promise<MixerContext>;
98
+ }>;
99
+ declare function filterRoutes(routes: IRoute[], market: string, locale: string): IRoute[];
100
+ declare function getAuthHeaders(token: {
101
+ value: string;
102
+ } | undefined): Headers;
103
+ /**
104
+ * Produces the common option block shared across all payload.find / payload.findGlobal calls.
105
+ * For payload.find, add pagination: false and limit: 10000 at the call site.
106
+ * For payload.findByID, spread directly — extra find-only fields are ignored.
107
+ */
108
+ declare function buildBaseOptions(user: any, locale: string, draft?: boolean): {
109
+ locale: TypedLocale;
110
+ fallbackLocale: TypedFallbackLocale;
111
+ draft: boolean;
112
+ depth: number;
113
+ user: any;
114
+ overrideAccess: boolean;
115
+ };
116
+ /**
117
+ * Payload proxy example
118
+ *
119
+ *
120
+ * import type { Payload, PayloadRequest } from '../types/index.js'
121
+
122
+ import { commitTransaction } from './commitTransaction.js'
123
+ import { initTransaction } from './initTransaction.js'
124
+ import { killTransaction } from './killTransaction.js'
125
+
126
+ const localOperations = [
127
+ 'count',
128
+ 'countGlobalVersions',
129
+ 'countVersions',
130
+ 'create',
131
+ 'delete',
132
+ 'duplicate',
133
+ 'find',
134
+ 'findByID',
135
+ 'delete',
136
+ 'duplicate',
137
+ 'find',
138
+ 'findByID',
139
+ 'findGlobal',
140
+ 'findGlobalVersionByID',
141
+ 'findGlobalVersions',
142
+ 'findVersionByID',
143
+ 'findVersionByID',
144
+ 'login',
145
+ 'update',
146
+ 'updateGlobal',
147
+ 'restoreVersion',
148
+ 'restoreGlobalVersion',
149
+ ] satisfies (keyof Payload)[]
150
+
151
+ type LocalOperation = (typeof localOperations)[number]
152
+
153
+ const isLocalOperation = (key: string): key is LocalOperation => {
154
+ return localOperations.includes(key as LocalOperation)
155
+ }
156
+
157
+ export const withTransaction = async <T>(
158
+ payload: Payload,
159
+ callback: (transaction: Payload) => Promise<T>,
160
+ ) => {
161
+ const transactionReq = { payload } as PayloadRequest
162
+ await initTransaction(transactionReq)
163
+
164
+ const proxy = new Proxy(payload, {
165
+ get(target, property: keyof Payload, receiver) {
166
+ if (isLocalOperation(property)) {
167
+ const operation = Reflect.get(target, property, receiver)
168
+
169
+ return function (options) {
170
+ let req: Partial<PayloadRequest> = options.req
171
+
172
+ if (!req) {
173
+ req = {}
174
+ }
175
+
176
+ if (!req.transactionID) {
177
+ req = { ...req, transactionID: transactionReq.transactionID }
178
+ }
179
+
180
+ return (operation as (...args: unknown[]) => void)({
181
+ ...options,
182
+ req,
183
+ })
184
+ }
185
+ }
186
+
187
+ return Reflect.get(target, property, receiver)
188
+ },
189
+ })
190
+
191
+ try {
192
+ const result = await callback(proxy)
193
+ await commitTransaction(transactionReq)
194
+ return result
195
+ } catch (e) {
196
+ await killTransaction(transactionReq)
197
+ throw e
198
+ }
199
+ }
200
+
201
+ // -----------------
202
+
203
+ const { one, two } = await withTransaction(payload, async (transaction) => {
204
+ const one = await transaction.create({ collection: 'posts', data: { title: 'one' } })
205
+ const two = await transaction.create({ collection: 'posts', data: { title: 'two' } })
206
+
207
+ return { one, two }
208
+ })
209
+
210
+ */
211
+ //# sourceMappingURL=mixer.d.ts.map
212
+ //#endregion
213
+ export { buildBaseOptions, filterRoutes, getAuthHeaders, getCacheKey, getContext, getMixerContext, getOptions, getPayload$1 as getPayload, getPayloadInstance, getRoutes$1 as getRoutes, getSearchParams, setContext };
214
+ //# sourceMappingURL=mixer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixer.d.ts","names":[],"sources":["../../src/server/mixer.ts"],"mappings":"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"}