@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.
- package/CHANGELOG.md +1 -1
- package/dist/_virtual/_rolldown/runtime.js +24 -0
- package/dist/client/client.d.ts +9 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +18 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/extra.d.ts +17 -0
- package/dist/client/extra.d.ts.map +1 -0
- package/dist/client/extra.js +13 -0
- package/dist/client/extra.js.map +1 -0
- package/dist/client/label.d.ts +15 -0
- package/dist/client/label.d.ts.map +1 -0
- package/dist/client/label.js +20 -0
- package/dist/client/label.js.map +1 -0
- package/dist/client/layout.d.ts +18 -0
- package/dist/client/layout.d.ts.map +1 -0
- package/dist/client/layout.js +13 -0
- package/dist/client/layout.js.map +1 -0
- package/dist/client/local.collection.d.ts +32 -0
- package/dist/client/local.collection.d.ts.map +1 -0
- package/dist/client/local.collection.js +49 -0
- package/dist/client/local.collection.js.map +1 -0
- package/dist/client/metadata.d.ts +43 -0
- package/dist/client/metadata.d.ts.map +1 -0
- package/dist/client/metadata.js +146 -0
- package/dist/client/metadata.js.map +1 -0
- package/dist/client/page.d.ts +404 -0
- package/dist/client/page.d.ts.map +1 -0
- package/dist/client/page.js +13 -0
- package/dist/client/page.js.map +1 -0
- package/dist/client/useApi.d.ts +21 -0
- package/dist/client/useApi.d.ts.map +1 -0
- package/dist/client/useApi.js +65 -0
- package/dist/client/useApi.js.map +1 -0
- package/dist/client/useCollectionApi.d.ts +21 -0
- package/dist/client/useCollectionApi.d.ts.map +1 -0
- package/dist/client/useCollectionApi.js +65 -0
- package/dist/client/useCollectionApi.js.map +1 -0
- package/dist/client/useExtra.d.ts +9 -0
- package/dist/client/useExtra.d.ts.map +1 -0
- package/dist/client/useExtra.js +13 -0
- package/dist/client/useExtra.js.map +1 -0
- package/dist/client/useHttp.d.ts +15 -0
- package/dist/client/useHttp.d.ts.map +1 -0
- package/dist/client/useHttp.js +70 -0
- package/dist/client/useHttp.js.map +1 -0
- package/dist/client/useLabel.d.ts +9 -0
- package/dist/client/useLabel.d.ts.map +1 -0
- package/dist/client/useLabel.js +13 -0
- package/dist/client/useLabel.js.map +1 -0
- package/dist/client/useLayout.d.ts +9 -0
- package/dist/client/useLayout.d.ts.map +1 -0
- package/dist/client/useLayout.js +13 -0
- package/dist/client/useLayout.js.map +1 -0
- package/dist/client/useLink.d.ts +7 -0
- package/dist/client/useLink.d.ts.map +1 -0
- package/dist/client/useLink.js +15 -0
- package/dist/client/useLink.js.map +1 -0
- package/dist/client/useMetaData.d.ts +9 -0
- package/dist/client/useMetaData.d.ts.map +1 -0
- package/dist/client/useMetaData.js +13 -0
- package/dist/client/useMetaData.js.map +1 -0
- package/dist/client/usePage.d.ts +394 -0
- package/dist/client/usePage.d.ts.map +1 -0
- package/dist/client/usePage.js +13 -0
- package/dist/client/usePage.js.map +1 -0
- package/dist/client/useUser.d.ts +9 -0
- package/dist/client/useUser.d.ts.map +1 -0
- package/dist/client/useUser.js +13 -0
- package/dist/client/useUser.js.map +1 -0
- package/dist/client/user.d.ts +20 -0
- package/dist/client/user.d.ts.map +1 -0
- package/dist/client/user.js +33 -0
- package/dist/client/user.js.map +1 -0
- package/dist/exports/client.d.ts +20 -0
- package/dist/exports/client.js +19 -5734
- package/dist/exports/instrumentation.d.ts +2 -0
- package/dist/exports/instrumentation.js +1 -24
- package/dist/exports/proxy.d.ts +5 -0
- package/dist/exports/proxy.js +4 -253
- package/dist/exports/server.d.ts +19 -0
- package/dist/exports/server.js +18 -1973
- package/dist/index.d.ts +18 -0
- package/dist/index.js +10 -200
- package/dist/instrumentation/client.d.ts +8 -0
- package/dist/instrumentation/client.d.ts.map +1 -0
- package/dist/instrumentation/client.js +15 -0
- package/dist/instrumentation/client.js.map +1 -0
- package/dist/instrumentation/sentry/capture.requestError.js +10 -0
- package/dist/instrumentation/sentry/capture.requestError.js.map +1 -0
- package/dist/instrumentation/sentry/capture.routerTransitionStart.js +7 -0
- package/dist/instrumentation/sentry/capture.routerTransitionStart.js.map +1 -0
- package/dist/{exports/instrumentation-DBO6QH4d.d.ts → instrumentation/server.d.ts} +2 -2
- package/dist/instrumentation/server.d.ts.map +1 -0
- package/dist/instrumentation/server.js +19 -0
- package/dist/instrumentation/server.js.map +1 -0
- package/dist/{types-BatUTdbZ.d.ts → instrumentation/types.d.ts} +2 -2
- package/dist/instrumentation/types.d.ts.map +1 -0
- package/dist/lib/breadcrumb.d.ts +15 -0
- package/dist/lib/breadcrumb.d.ts.map +1 -0
- package/dist/lib/breadcrumb.js +20 -0
- package/dist/lib/breadcrumb.js.map +1 -0
- package/dist/lib/const.d.ts +9 -0
- package/dist/lib/const.d.ts.map +1 -0
- package/dist/lib/const.js +9 -0
- package/dist/lib/const.js.map +1 -0
- package/dist/lib/http.d.ts +36 -0
- package/dist/lib/http.d.ts.map +1 -0
- package/dist/{http-_2M-UFRx.js → lib/http.js} +2 -2
- package/dist/lib/http.js.map +1 -0
- package/dist/lib/label.d.ts +16 -0
- package/dist/lib/label.d.ts.map +1 -0
- package/dist/lib/label.js +33 -0
- package/dist/lib/label.js.map +1 -0
- package/dist/lib/layout.defaults.d.ts +9 -0
- package/dist/lib/layout.defaults.d.ts.map +1 -0
- package/dist/lib/layout.defaults.js +161 -0
- package/dist/lib/layout.defaults.js.map +1 -0
- package/dist/lib/link.d.ts +9 -0
- package/dist/lib/link.d.ts.map +1 -0
- package/dist/lib/link.js +16 -0
- package/dist/lib/link.js.map +1 -0
- package/dist/lib/meta-data.d.ts +56 -0
- package/dist/lib/meta-data.d.ts.map +1 -0
- package/dist/lib/open-graph.d.ts +143 -0
- package/dist/lib/open-graph.d.ts.map +1 -0
- package/dist/lib/pagination.d.ts +27 -0
- package/dist/lib/pagination.d.ts.map +1 -0
- package/dist/lib/pagination.js +39 -0
- package/dist/lib/pagination.js.map +1 -0
- package/dist/lib/route.d.ts +17 -0
- package/dist/lib/route.d.ts.map +1 -0
- package/dist/{route-DzFwERQP.js → lib/route.js} +2 -2
- package/dist/lib/route.js.map +1 -0
- package/dist/lib/store.d.ts +27 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/{store-CJzqrHsl.js → lib/store.js} +2 -25
- package/dist/lib/store.js.map +1 -0
- package/dist/lib/structured-data.d.ts +9 -0
- package/dist/lib/structured-data.d.ts.map +1 -0
- package/dist/lib/twitter-card.d.ts +43 -0
- package/dist/lib/twitter-card.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +13 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +35 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/mock.d.ts +127 -0
- package/dist/mock.d.ts.map +1 -0
- package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js +75 -0
- package/dist/node_modules/@selderee/plugin-htmlparser2/lib/hp2-builder.js.map +1 -0
- package/dist/node_modules/deepmerge/dist/cjs.js +86 -0
- package/dist/node_modules/deepmerge/dist/cjs.js.map +1 -0
- package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js +105 -0
- package/dist/node_modules/dom-serializer/lib/esm/foreignNames.js.map +1 -0
- package/dist/node_modules/dom-serializer/lib/esm/index.js +146 -0
- package/dist/node_modules/dom-serializer/lib/esm/index.js.map +1 -0
- package/dist/node_modules/domelementtype/lib/esm/index.js +53 -0
- package/dist/node_modules/domelementtype/lib/esm/index.js.map +1 -0
- package/dist/node_modules/domhandler/lib/esm/index.js +130 -0
- package/dist/node_modules/domhandler/lib/esm/index.js.map +1 -0
- package/dist/node_modules/domhandler/lib/esm/node.js +307 -0
- package/dist/node_modules/domhandler/lib/esm/node.js.map +1 -0
- package/dist/node_modules/entities/lib/esm/decode.js +363 -0
- package/dist/node_modules/entities/lib/esm/decode.js.map +1 -0
- package/dist/node_modules/entities/lib/esm/decode_codepoint.js +59 -0
- package/dist/node_modules/entities/lib/esm/decode_codepoint.js.map +1 -0
- package/dist/node_modules/entities/lib/esm/escape.js +85 -0
- package/dist/node_modules/entities/lib/esm/escape.js.map +1 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js +6 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-html.js.map +1 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js +6 -0
- package/dist/node_modules/entities/lib/esm/generated/decode-data-xml.js.map +1 -0
- package/dist/node_modules/html-to-text/lib/html-to-text.js +1816 -0
- package/dist/node_modules/html-to-text/lib/html-to-text.js.map +1 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js +435 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Parser.js.map +1 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js +736 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/Tokenizer.js.map +1 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js +19 -0
- package/dist/node_modules/html-to-text/node_modules/htmlparser2/lib/esm/index.js.map +1 -0
- package/dist/node_modules/leac/lib/leac.js +101 -0
- package/dist/node_modules/leac/lib/leac.js.map +1 -0
- package/dist/node_modules/parseley/lib/parseley.js +310 -0
- package/dist/node_modules/parseley/lib/parseley.js.map +1 -0
- package/dist/node_modules/peberminta/lib/core.js +149 -0
- package/dist/node_modules/peberminta/lib/core.js.map +1 -0
- package/dist/node_modules/selderee/lib/selderee.js +319 -0
- package/dist/node_modules/selderee/lib/selderee.js.map +1 -0
- package/dist/proxy/protected-route.d.ts +9 -0
- package/dist/proxy/protected-route.d.ts.map +1 -0
- package/dist/proxy/protected-route.js +40 -0
- package/dist/proxy/protected-route.js.map +1 -0
- package/dist/proxy/proxy.d.ts +31 -0
- package/dist/proxy/proxy.d.ts.map +1 -0
- package/dist/proxy/proxy.js +49 -0
- package/dist/proxy/proxy.js.map +1 -0
- package/dist/proxy/route-auto-detection.d.ts +12 -0
- package/dist/proxy/route-auto-detection.d.ts.map +1 -0
- package/dist/proxy/route-auto-detection.js +82 -0
- package/dist/proxy/route-auto-detection.js.map +1 -0
- package/dist/proxy/route-proxy.d.ts +36 -0
- package/dist/proxy/route-proxy.d.ts.map +1 -0
- package/dist/proxy/route-proxy.js +103 -0
- package/dist/proxy/route-proxy.js.map +1 -0
- package/dist/server/context.d.ts +30 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +106 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/handlers/auth.handler.d.ts +10 -0
- package/dist/server/handlers/auth.handler.d.ts.map +1 -0
- package/dist/server/handlers/auth.handler.js +29 -0
- package/dist/server/handlers/auth.handler.js.map +1 -0
- package/dist/server/handlers/captions.handler.d.ts +10 -0
- package/dist/server/handlers/captions.handler.d.ts.map +1 -0
- package/dist/server/handlers/captions.handler.js +33 -0
- package/dist/server/handlers/captions.handler.js.map +1 -0
- package/dist/server/handlers/collection.handler.d.ts +36 -0
- package/dist/server/handlers/collection.handler.d.ts.map +1 -0
- package/dist/server/handlers/collection.handler.js +166 -0
- package/dist/server/handlers/collection.handler.js.map +1 -0
- package/dist/server/handlers/error-response.js +24 -0
- package/dist/server/handlers/error-response.js.map +1 -0
- package/dist/server/handlers/index.handler.d.ts +9 -0
- package/dist/server/handlers/index.handler.d.ts.map +1 -0
- package/dist/server/handlers/index.handler.js +145 -0
- package/dist/server/handlers/index.handler.js.map +1 -0
- package/dist/server/handlers/preview.handler.d.ts +9 -0
- package/dist/server/handlers/preview.handler.d.ts.map +1 -0
- package/dist/server/handlers/preview.handler.js +15 -0
- package/dist/server/handlers/preview.handler.js.map +1 -0
- package/dist/server/handlers/registry.handler.d.ts +16 -0
- package/dist/server/handlers/registry.handler.d.ts.map +1 -0
- package/dist/server/handlers/registry.handler.js +260 -0
- package/dist/server/handlers/registry.handler.js.map +1 -0
- package/dist/server/handlers/route.handler.d.ts +20 -0
- package/dist/server/handlers/route.handler.d.ts.map +1 -0
- package/dist/server/handlers/route.handler.js +122 -0
- package/dist/server/handlers/route.handler.js.map +1 -0
- package/dist/server/handlers/sitemap.handler.d.ts +30 -0
- package/dist/server/handlers/sitemap.handler.d.ts.map +1 -0
- package/dist/server/handlers/sitemap.handler.js +338 -0
- package/dist/server/handlers/sitemap.handler.js.map +1 -0
- package/dist/server/handlers/static-params.handler.d.ts +24 -0
- package/dist/server/handlers/static-params.handler.d.ts.map +1 -0
- package/dist/server/handlers/static-params.handler.js +56 -0
- package/dist/server/handlers/static-params.handler.js.map +1 -0
- package/dist/server/handlers/vars.handler.d.ts +10 -0
- package/dist/server/handlers/vars.handler.d.ts.map +1 -0
- package/dist/server/handlers/vars.handler.js +159 -0
- package/dist/server/handlers/vars.handler.js.map +1 -0
- package/dist/server/layout.js +88 -0
- package/dist/server/layout.js.map +1 -0
- package/dist/server/lazy.d.ts +11 -0
- package/dist/server/lazy.d.ts.map +1 -0
- package/dist/server/lazy.js +33 -0
- package/dist/server/lazy.js.map +1 -0
- package/dist/server/local-api.d.ts +9 -0
- package/dist/server/local-api.d.ts.map +1 -0
- package/dist/server/local-api.js +60 -0
- package/dist/server/local-api.js.map +1 -0
- package/dist/server/metadata.d.ts +21 -0
- package/dist/server/metadata.d.ts.map +1 -0
- package/dist/server/metadata.js +20 -0
- package/dist/server/metadata.js.map +1 -0
- package/dist/server/mixer-payload.d.ts +63 -0
- package/dist/server/mixer-payload.d.ts.map +1 -0
- package/dist/server/mixer.d.ts +214 -0
- package/dist/server/mixer.d.ts.map +1 -0
- package/dist/server/mixer.js +355 -0
- package/dist/server/mixer.js.map +1 -0
- package/dist/server/page.d.ts +22 -0
- package/dist/server/page.d.ts.map +1 -0
- package/dist/server/page.js +57 -0
- package/dist/server/page.js.map +1 -0
- package/dist/server/utils.d.ts +12 -0
- package/dist/server/utils.d.ts.map +1 -0
- package/dist/{utils-YwteTbk7.js → server/utils.js} +3 -3
- package/dist/server/utils.js.map +1 -0
- package/dist/server/utmz.d.ts +9 -0
- package/dist/server/utmz.d.ts.map +1 -0
- package/dist/server/utmz.js +14 -0
- package/dist/server/utmz.js.map +1 -0
- package/dist/types.d.ts +136 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/index.ts +0 -1
- package/dist/exports/client-xcFJNcG7.d.ts +0 -979
- package/dist/exports/client-xcFJNcG7.d.ts.map +0 -1
- package/dist/exports/client.js.map +0 -1
- package/dist/exports/instrumentation-DBO6QH4d.d.ts.map +0 -1
- package/dist/exports/instrumentation.js.map +0 -1
- package/dist/exports/proxy-Cv7QFVci.d.ts +0 -71
- package/dist/exports/proxy-Cv7QFVci.d.ts.map +0 -1
- package/dist/exports/proxy.js.map +0 -1
- package/dist/exports/server-BHObJHJ6.d.ts +0 -402
- package/dist/exports/server-BHObJHJ6.d.ts.map +0 -1
- package/dist/exports/server.js.map +0 -1
- package/dist/http-_2M-UFRx.js.map +0 -1
- package/dist/index-CdYcvudT.d.ts +0 -4
- package/dist/index-CtfAJ0y7.d.ts +0 -499
- package/dist/index-CtfAJ0y7.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/route-DzFwERQP.js.map +0 -1
- package/dist/store-CJzqrHsl.js.map +0 -1
- package/dist/types-BatUTdbZ.d.ts.map +0 -1
- package/dist/types-D29_snYY.d.ts +0 -191
- package/dist/types-D29_snYY.d.ts.map +0 -1
- package/dist/utils-Ca7xh5mm.js +0 -78
- package/dist/utils-Ca7xh5mm.js.map +0 -1
- package/dist/utils-YwteTbk7.js.map +0 -1
- /package/dist/{config.client-B8As5DY0.js → instrumentation/sentry/config.client.js} +0 -0
- /package/dist/{config.edge-B8As5DY0.js → instrumentation/sentry/config.edge.js} +0 -0
- /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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"}
|