@sonordev/site-kit 5.8.2 → 5.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-manifest.json +6 -1
- package/dist/{AnalyticsProvider-4JV3OFCG.js → AnalyticsProvider-DPXR6FSV.js} +10 -10
- package/dist/{AnalyticsProvider-4JV3OFCG.js.map → AnalyticsProvider-DPXR6FSV.js.map} +1 -1
- package/dist/{AnalyticsProvider-LUEUDZZC.mjs → AnalyticsProvider-IGOD64MY.mjs} +6 -6
- package/dist/{AnalyticsProvider-LUEUDZZC.mjs.map → AnalyticsProvider-IGOD64MY.mjs.map} +1 -1
- package/dist/{BlogViewTracker-YQMTEGYZ.mjs → BlogViewTracker-Q7Y4MN4B.mjs} +5 -5
- package/dist/{BlogViewTracker-YQMTEGYZ.mjs.map → BlogViewTracker-Q7Y4MN4B.mjs.map} +1 -1
- package/dist/{BlogViewTracker-32C4SCHA.js → BlogViewTracker-S3CSRBIZ.js} +6 -6
- package/dist/{BlogViewTracker-32C4SCHA.js.map → BlogViewTracker-S3CSRBIZ.js.map} +1 -1
- package/dist/ChatWidget-76R7NOWD.js +24 -0
- package/dist/{ChatWidget-KCXQXNUF.js.map → ChatWidget-76R7NOWD.js.map} +1 -1
- package/dist/ChatWidget-G3KOUDX5.mjs +15 -0
- package/dist/{ChatWidget-IRTAMRQS.mjs.map → ChatWidget-G3KOUDX5.mjs.map} +1 -1
- package/dist/EngageWidget-HD4F2ZVE.js +21 -0
- package/dist/{EngageWidget-EUUZHQOU.js.map → EngageWidget-HD4F2ZVE.js.map} +1 -1
- package/dist/EngageWidget-UJ47PQFG.mjs +12 -0
- package/dist/{EngageWidget-7AIUJRXV.mjs.map → EngageWidget-UJ47PQFG.mjs.map} +1 -1
- package/dist/{FileField-SNI5XCHQ.js → FileField-FV6WSZMX.js} +6 -6
- package/dist/{FileField-SNI5XCHQ.js.map → FileField-FV6WSZMX.js.map} +1 -1
- package/dist/{FileField-XJYJO5HE.mjs → FileField-WNMEA3PK.mjs} +5 -5
- package/dist/{FileField-XJYJO5HE.mjs.map → FileField-WNMEA3PK.mjs.map} +1 -1
- package/dist/{FormSpotlight-S64G4CMM.js → FormSpotlight-2VRQXEFI.js} +9 -9
- package/dist/{FormSpotlight-S64G4CMM.js.map → FormSpotlight-2VRQXEFI.js.map} +1 -1
- package/dist/{FormSpotlight-BCXI4A4R.mjs → FormSpotlight-NGWEPGI4.mjs} +3 -3
- package/dist/{FormSpotlight-BCXI4A4R.mjs.map → FormSpotlight-NGWEPGI4.mjs.map} +1 -1
- package/dist/{FormStage-RHARCSPS.mjs → FormStage-7L4BBOLC.mjs} +3 -3
- package/dist/{FormStage-RHARCSPS.mjs.map → FormStage-7L4BBOLC.mjs.map} +1 -1
- package/dist/{FormStage-PX5TVY25.js → FormStage-Q3KQVFVW.js} +9 -9
- package/dist/{FormStage-PX5TVY25.js.map → FormStage-Q3KQVFVW.js.map} +1 -1
- package/dist/ManagedForm-4ZGU4R3G.js +25 -0
- package/dist/{ManagedForm-RI2TSUZD.js.map → ManagedForm-4ZGU4R3G.js.map} +1 -1
- package/dist/ManagedForm-Z7QE4KYI.mjs +16 -0
- package/dist/{ManagedForm-7IDXBQS6.mjs.map → ManagedForm-Z7QE4KYI.mjs.map} +1 -1
- package/dist/{ManagedNewsletterForm-IAGIHBNT.js → ManagedNewsletterForm-22EPZB7Z.js} +8 -8
- package/dist/{ManagedNewsletterForm-IAGIHBNT.js.map → ManagedNewsletterForm-22EPZB7Z.js.map} +1 -1
- package/dist/{ManagedNewsletterForm-UXBJ5OJB.mjs → ManagedNewsletterForm-4TVO2VL4.mjs} +7 -7
- package/dist/{ManagedNewsletterForm-UXBJ5OJB.mjs.map → ManagedNewsletterForm-4TVO2VL4.mjs.map} +1 -1
- package/dist/{SignalCore-Q2BQMPCJ.js → SignalCore-2N7UZGF3.js} +11 -11
- package/dist/{SignalCore-Q2BQMPCJ.js.map → SignalCore-2N7UZGF3.js.map} +1 -1
- package/dist/{SignalCore-37WGILFY.mjs → SignalCore-57OK3DHA.mjs} +5 -5
- package/dist/{SignalCore-37WGILFY.mjs.map → SignalCore-57OK3DHA.mjs.map} +1 -1
- package/dist/SitemapSync-GF4OKN4Z.js +18 -0
- package/dist/{SitemapSync-DWEL7HTB.js.map → SitemapSync-GF4OKN4Z.js.map} +1 -1
- package/dist/SitemapSync-WIUEYOBS.mjs +9 -0
- package/dist/{SitemapSync-YIAI7PMT.mjs.map → SitemapSync-WIUEYOBS.mjs.map} +1 -1
- package/dist/analytics/index.js +9 -9
- package/dist/analytics/index.mjs +4 -4
- package/dist/blog/index.js +18 -18
- package/dist/blog/index.mjs +4 -4
- package/dist/blog/server-ui.js +14 -14
- package/dist/blog/server-ui.mjs +2 -2
- package/dist/{chunk-EZ5DX7ED.mjs → chunk-25F2EXOC.mjs} +3 -3
- package/dist/{chunk-EZ5DX7ED.mjs.map → chunk-25F2EXOC.mjs.map} +1 -1
- package/dist/{chunk-3Y7IKQDD.js → chunk-2TS4ALOA.js} +14 -14
- package/dist/{chunk-3Y7IKQDD.js.map → chunk-2TS4ALOA.js.map} +1 -1
- package/dist/{chunk-NHX6YJ7G.mjs → chunk-3OO5EDKD.mjs} +8 -8
- package/dist/{chunk-NHX6YJ7G.mjs.map → chunk-3OO5EDKD.mjs.map} +1 -1
- package/dist/{chunk-3EXBBFXX.mjs → chunk-4C5CZJIN.mjs} +4 -4
- package/dist/{chunk-3EXBBFXX.mjs.map → chunk-4C5CZJIN.mjs.map} +1 -1
- package/dist/{chunk-7SLYI62M.mjs → chunk-4NVMAYMQ.mjs} +4 -4
- package/dist/{chunk-7SLYI62M.mjs.map → chunk-4NVMAYMQ.mjs.map} +1 -1
- package/dist/chunk-5FETEH3Y.mjs +6 -0
- package/dist/{chunk-TAPCWMBV.mjs.map → chunk-5FETEH3Y.mjs.map} +1 -1
- package/dist/{chunk-D7CF3OPZ.js → chunk-5HFD36AN.js} +5 -5
- package/dist/{chunk-D7CF3OPZ.js.map → chunk-5HFD36AN.js.map} +1 -1
- package/dist/{chunk-PXWYMOZY.js → chunk-6CCS2EGF.js} +11 -11
- package/dist/{chunk-PXWYMOZY.js.map → chunk-6CCS2EGF.js.map} +1 -1
- package/dist/chunk-7R6H3GQ4.js +8 -0
- package/dist/{chunk-TJVZEDE3.js.map → chunk-7R6H3GQ4.js.map} +1 -1
- package/dist/{chunk-U6O5NG56.js → chunk-7VZYP4K5.js} +15 -15
- package/dist/{chunk-U6O5NG56.js.map → chunk-7VZYP4K5.js.map} +1 -1
- package/dist/chunk-AJBOEV4I.mjs +453 -0
- package/dist/chunk-AJBOEV4I.mjs.map +1 -0
- package/dist/{chunk-3HGHWDCY.js → chunk-CNTDV7HM.js} +4 -4
- package/dist/{chunk-3HGHWDCY.js.map → chunk-CNTDV7HM.js.map} +1 -1
- package/dist/{chunk-QWXTQC3N.js → chunk-CY2RFEW6.js} +3 -3
- package/dist/{chunk-QWXTQC3N.js.map → chunk-CY2RFEW6.js.map} +1 -1
- package/dist/{chunk-7BI2RVQD.js → chunk-CZEIHFLW.js} +4 -4
- package/dist/{chunk-7BI2RVQD.js.map → chunk-CZEIHFLW.js.map} +1 -1
- package/dist/{chunk-NM567VXC.mjs → chunk-F2KW4OJF.mjs} +4 -4
- package/dist/{chunk-NM567VXC.mjs.map → chunk-F2KW4OJF.mjs.map} +1 -1
- package/dist/{chunk-3Z3TOPND.js → chunk-F3KA6V2Y.js} +3 -3
- package/dist/{chunk-3Z3TOPND.js.map → chunk-F3KA6V2Y.js.map} +1 -1
- package/dist/{chunk-5BZNVKNK.mjs → chunk-FD72QL42.mjs} +3 -3
- package/dist/{chunk-5BZNVKNK.mjs.map → chunk-FD72QL42.mjs.map} +1 -1
- package/dist/{chunk-U5WMGUDV.js → chunk-FTB5LAD3.js} +4 -4
- package/dist/{chunk-U5WMGUDV.js.map → chunk-FTB5LAD3.js.map} +1 -1
- package/dist/{chunk-TCVOGK6U.mjs → chunk-HBHS5VRN.mjs} +3 -3
- package/dist/{chunk-TCVOGK6U.mjs.map → chunk-HBHS5VRN.mjs.map} +1 -1
- package/dist/{chunk-4PXUMDHL.mjs → chunk-HEOLGDUX.mjs} +3 -3
- package/dist/{chunk-4PXUMDHL.mjs.map → chunk-HEOLGDUX.mjs.map} +1 -1
- package/dist/{chunk-GDH42JAS.js → chunk-I7HOMMIK.js} +15 -15
- package/dist/{chunk-GDH42JAS.js.map → chunk-I7HOMMIK.js.map} +1 -1
- package/dist/{chunk-73EBIAF3.js → chunk-IIHIRHSW.js} +18 -18
- package/dist/{chunk-73EBIAF3.js.map → chunk-IIHIRHSW.js.map} +1 -1
- package/dist/{chunk-M45AL7EA.js → chunk-LB44BNJ2.js} +2 -2
- package/dist/{chunk-M45AL7EA.js.map → chunk-LB44BNJ2.js.map} +1 -1
- package/dist/{chunk-6FTC6EYD.mjs → chunk-LGOQ65JQ.mjs} +7 -7
- package/dist/{chunk-6FTC6EYD.mjs.map → chunk-LGOQ65JQ.mjs.map} +1 -1
- package/dist/{chunk-X6NPTILR.mjs → chunk-MQS6AF5K.mjs} +3 -3
- package/dist/{chunk-X6NPTILR.mjs.map → chunk-MQS6AF5K.mjs.map} +1 -1
- package/dist/{chunk-RA4DCRMR.mjs → chunk-MWKI6ZIS.mjs} +3 -3
- package/dist/{chunk-RA4DCRMR.mjs.map → chunk-MWKI6ZIS.mjs.map} +1 -1
- package/dist/{chunk-GKVEWOYN.js → chunk-MYMZRHTC.js} +8 -8
- package/dist/{chunk-GKVEWOYN.js.map → chunk-MYMZRHTC.js.map} +1 -1
- package/dist/{chunk-LUF22UGR.js → chunk-NBT4L2D7.js} +8 -8
- package/dist/{chunk-LUF22UGR.js.map → chunk-NBT4L2D7.js.map} +1 -1
- package/dist/{chunk-SCVSPTXJ.mjs → chunk-NCDF2RK4.mjs} +3 -3
- package/dist/{chunk-SCVSPTXJ.mjs.map → chunk-NCDF2RK4.mjs.map} +1 -1
- package/dist/{chunk-ZTY4YS7Q.js → chunk-NMM27UOF.js} +3 -3
- package/dist/{chunk-ZTY4YS7Q.js.map → chunk-NMM27UOF.js.map} +1 -1
- package/dist/{chunk-ZDXY44FH.js → chunk-NR7YZQRR.js} +4 -4
- package/dist/{chunk-ZDXY44FH.js.map → chunk-NR7YZQRR.js.map} +1 -1
- package/dist/{chunk-PXK4WNSU.js → chunk-PI3FHABB.js} +10 -10
- package/dist/{chunk-PXK4WNSU.js.map → chunk-PI3FHABB.js.map} +1 -1
- package/dist/{chunk-DTWR7VRQ.js → chunk-PIEHBSCN.js} +5 -5
- package/dist/{chunk-DTWR7VRQ.js.map → chunk-PIEHBSCN.js.map} +1 -1
- package/dist/{chunk-OX2GTNMB.mjs → chunk-PIPERXI7.mjs} +3 -3
- package/dist/{chunk-OX2GTNMB.mjs.map → chunk-PIPERXI7.mjs.map} +1 -1
- package/dist/{chunk-FWFJZV52.mjs → chunk-POJZA67T.mjs} +4 -4
- package/dist/{chunk-FWFJZV52.mjs.map → chunk-POJZA67T.mjs.map} +1 -1
- package/dist/{chunk-HOJ4J4X2.mjs → chunk-PQYQHZWV.mjs} +2 -2
- package/dist/{chunk-HOJ4J4X2.mjs.map → chunk-PQYQHZWV.mjs.map} +1 -1
- package/dist/{chunk-YVQNOB3Q.mjs → chunk-QOOLMSBY.mjs} +3 -3
- package/dist/{chunk-YVQNOB3Q.mjs.map → chunk-QOOLMSBY.mjs.map} +1 -1
- package/dist/{chunk-JR2FT6T5.js → chunk-QQQAW6WY.js} +6 -6
- package/dist/{chunk-JR2FT6T5.js.map → chunk-QQQAW6WY.js.map} +1 -1
- package/dist/{chunk-SJPI34DL.mjs → chunk-QXMWNIKL.mjs} +3 -3
- package/dist/{chunk-SJPI34DL.mjs.map → chunk-QXMWNIKL.mjs.map} +1 -1
- package/dist/{chunk-AHKVOYFO.mjs → chunk-R5IPDAMM.mjs} +3 -3
- package/dist/{chunk-AHKVOYFO.mjs.map → chunk-R5IPDAMM.mjs.map} +1 -1
- package/dist/{chunk-RQOKQC7J.mjs → chunk-RFAAY3BW.mjs} +3 -3
- package/dist/{chunk-RQOKQC7J.mjs.map → chunk-RFAAY3BW.mjs.map} +1 -1
- package/dist/{chunk-QK54SZPF.mjs → chunk-ROSYCNXG.mjs} +4 -4
- package/dist/{chunk-QK54SZPF.mjs.map → chunk-ROSYCNXG.mjs.map} +1 -1
- package/dist/{chunk-OBNMSO66.js → chunk-S2Y7LVQ2.js} +14 -14
- package/dist/{chunk-OBNMSO66.js.map → chunk-S2Y7LVQ2.js.map} +1 -1
- package/dist/{chunk-ALVQOG4M.mjs → chunk-SFC3OWSE.mjs} +3 -3
- package/dist/{chunk-ALVQOG4M.mjs.map → chunk-SFC3OWSE.mjs.map} +1 -1
- package/dist/{chunk-F2ZFMPW4.js → chunk-TR3F3CLV.js} +7 -7
- package/dist/{chunk-F2ZFMPW4.js.map → chunk-TR3F3CLV.js.map} +1 -1
- package/dist/{chunk-RI25UGHE.mjs → chunk-UEUWC3PH.mjs} +3 -3
- package/dist/{chunk-RI25UGHE.mjs.map → chunk-UEUWC3PH.mjs.map} +1 -1
- package/dist/{chunk-YC2CKOX6.js → chunk-UHM3CCCC.js} +12 -12
- package/dist/{chunk-YC2CKOX6.js.map → chunk-UHM3CCCC.js.map} +1 -1
- package/dist/{chunk-AUTJQGZ2.mjs → chunk-UQY5KC64.mjs} +4 -4
- package/dist/{chunk-AUTJQGZ2.mjs.map → chunk-UQY5KC64.mjs.map} +1 -1
- package/dist/{chunk-HQ2EPU5R.js → chunk-VVBMWV4O.js} +5 -5
- package/dist/{chunk-HQ2EPU5R.js.map → chunk-VVBMWV4O.js.map} +1 -1
- package/dist/{chunk-KPWK23G7.js → chunk-W2U5SLMY.js} +3 -3
- package/dist/{chunk-KPWK23G7.js.map → chunk-W2U5SLMY.js.map} +1 -1
- package/dist/{chunk-FX232N4P.mjs → chunk-WINDP776.mjs} +4 -4
- package/dist/{chunk-FX232N4P.mjs.map → chunk-WINDP776.mjs.map} +1 -1
- package/dist/chunk-XEB77DQS.js +468 -0
- package/dist/chunk-XEB77DQS.js.map +1 -0
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.mjs +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +57 -57
- package/dist/commerce/index.mjs +5 -5
- package/dist/commerce/server.d.ts +1 -1
- package/dist/commerce/server.js +7 -7
- package/dist/commerce/server.js.map +1 -1
- package/dist/commerce/server.mjs +7 -7
- package/dist/commerce/server.mjs.map +1 -1
- package/dist/engage/index.js +10 -10
- package/dist/engage/index.mjs +7 -7
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/index.js +21 -21
- package/dist/forms/index.mjs +10 -10
- package/dist/forms/server.js +10 -10
- package/dist/forms/server.mjs +8 -8
- package/dist/forms/static.js +7 -7
- package/dist/forms/static.mjs +6 -6
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +63 -63
- package/dist/index.mjs +9 -9
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/llms/client.d.ts +18 -0
- package/dist/llms/client.d.ts.map +1 -0
- package/dist/llms/client.js +66 -0
- package/dist/llms/client.js.map +1 -0
- package/dist/llms/client.mjs +5 -0
- package/dist/llms/client.mjs.map +1 -0
- package/dist/llms/index.js +58 -462
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +3 -449
- package/dist/llms/index.mjs.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/search/index.js +4 -4
- package/dist/search/index.mjs +3 -3
- package/dist/seo/ManagedSchema.d.ts.map +1 -1
- package/dist/seo/client.js +5 -5
- package/dist/seo/client.mjs +4 -4
- package/dist/seo/index.js +25 -17
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +17 -9
- package/dist/seo/index.mjs.map +1 -1
- package/dist/seo/server.js +5 -5
- package/dist/seo/server.mjs +1 -1
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/shared/build-entries.d.ts +6 -0
- package/dist/shared/build-entries.d.ts.map +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sync/index.js +17 -17
- package/dist/sync/index.mjs +4 -4
- package/package.json +6 -1
- package/dist/ChatWidget-IRTAMRQS.mjs +0 -15
- package/dist/ChatWidget-KCXQXNUF.js +0 -24
- package/dist/EngageWidget-7AIUJRXV.mjs +0 -12
- package/dist/EngageWidget-EUUZHQOU.js +0 -21
- package/dist/ManagedForm-7IDXBQS6.mjs +0 -16
- package/dist/ManagedForm-RI2TSUZD.js +0 -25
- package/dist/SitemapSync-DWEL7HTB.js +0 -18
- package/dist/SitemapSync-YIAI7PMT.mjs +0 -9
- package/dist/chunk-TAPCWMBV.mjs +0 -6
- package/dist/chunk-TJVZEDE3.js +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/commerce/server.ts"],"names":[],"mappings":"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","file":"server.mjs","sourcesContent":["/**\n * @sonordev/site-kit/commerce - Server-side utilities\n * \n * Helpers for server-side rendering and dynamic routes.\n * Use in Next.js getStaticPaths, getStaticProps, or App Router.\n * \n * All data fetching goes through the Portal API.\n */\n\nimport type { CommerceOffering, OfferingType } from './types'\n\ninterface ServerConfig {\n apiUrl: string\n apiKey: string\n projectId: string\n}\n\ninterface SlugItem {\n slug: string\n}\n\n/**\n * Outcome of a server-side fetch.\n *\n * `ok` is the entire point. A helper that returns an empty array on failure lets\n * the calling page state a business fact it does not know: \"no upcoming events\",\n * \"no products available\" — when the truth is only that the API was unreachable.\n * QCR's /public-cruises told customers the business had no cruises during a\n * transient failure while three were on sale (2026-08-27).\n *\n * Branch on `ok` in new code. The legacy helpers returning a bare array or null\n * are kept for compatibility, but they cannot express this difference — an empty\n * result from them is indistinguishable from an outage.\n */\nexport interface ServerResult<T> {\n /** false = the request failed. `ok: true` with empty data means genuinely empty. */\n ok: boolean\n data: T\n}\n\n/**\n * Next throws to signal control flow, not failure — a DynamicServerError during\n * the static pass means \"this route can't be prerendered\", and redirect()/\n * notFound() throw too. Catching those and returning a failure logs a fake fetch\n * error on every build and makes a real API outage look identical to the\n * framework doing its job. Always rethrow.\n */\nfunction isFrameworkSignal(err: unknown): boolean {\n const digest = (err as { digest?: unknown } | null)?.digest\n return (\n typeof digest === 'string' &&\n (digest === 'DYNAMIC_SERVER_USAGE' || digest.startsWith('NEXT_'))\n )\n}\n\nasync function apiFetch<T>(\n config: ServerConfig,\n endpoint: string,\n): Promise<ServerResult<T | null>> {\n try {\n const response = await fetch(`${config.apiUrl}${endpoint}`, {\n headers: {\n 'X-API-Key': config.apiKey,\n 'X-Project-ID': config.projectId,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n console.error(`[site-kit/commerce] GET ${endpoint} failed: ${response.status}`)\n return { ok: false, data: null }\n }\n return { ok: true, data: (await response.json()) as T }\n } catch (error) {\n if (isFrameworkSignal(error)) throw error\n console.error(`[site-kit/commerce] GET ${endpoint} failed:`, error)\n return { ok: false, data: null }\n }\n}\n\nasync function apiPost<T>(\n config: ServerConfig,\n endpoint: string,\n body: Record<string, unknown>,\n): Promise<ServerResult<T | null>> {\n try {\n const response = await fetch(`${config.apiUrl}${endpoint}`, {\n method: 'POST',\n headers: {\n 'X-API-Key': config.apiKey,\n 'X-Project-ID': config.projectId,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n\n if (!response.ok) {\n console.error(`[site-kit/commerce] POST ${endpoint} failed: ${response.status}`)\n return { ok: false, data: null }\n }\n return { ok: true, data: (await response.json()) as T }\n } catch (error) {\n if (isFrameworkSignal(error)) throw error\n console.error(`[site-kit/commerce] POST ${endpoint} failed:`, error)\n return { ok: false, data: null }\n }\n}\n\nfunction transformOffering(data: Record<string, unknown>): CommerceOffering {\n return {\n id: data.id as string,\n project_id: data.project_id as string,\n type: data.type as OfferingType,\n status: data.status as 'draft' | 'active' | 'archived' | 'sold_out',\n name: data.name as string,\n slug: data.slug as string,\n description: data.description as string | undefined,\n short_description: data.short_description as string | undefined,\n long_description: data.long_description as string | undefined,\n featured_image_url: data.featured_image_url as string | undefined,\n gallery_images: (data.gallery_image_urls as string[]) || [],\n price_type: (data.price_type as 'fixed' | 'variable' | 'quote' | 'free') || 'fixed',\n price: data.price as number | undefined,\n compare_at_price: data.compare_at_price as number | undefined,\n currency: (data.currency as string) || 'USD',\n price_is_public: (data.price_is_public as boolean) ?? true,\n billing_period: data.billing_period as 'weekly' | 'monthly' | 'quarterly' | 'yearly' | undefined,\n track_inventory: data.track_inventory as boolean | undefined,\n inventory_count: data.inventory_count as number | undefined,\n allow_backorder: data.allow_backorder as boolean | undefined,\n duration_minutes: data.duration_minutes as number | undefined,\n capacity: data.capacity as number | undefined,\n location: data.location as string | undefined,\n is_virtual: data.is_virtual as boolean | undefined,\n virtual_meeting_url: data.virtual_meeting_url as string | undefined,\n requires_booking: data.requires_booking as boolean | undefined,\n booking_lead_time_hours: data.booking_lead_time_hours as number | undefined,\n category: data.category as CommerceOffering['category'],\n category_id: data.category_id as string | undefined,\n tags: (data.tags as string[]) || [],\n seo_title: data.seo_title as string | undefined,\n seo_description: data.seo_description as string | undefined,\n features: (data.features as string[]) || [],\n specifications: (data.specifications as Record<string, string>) || {},\n schedules: (data.schedules as CommerceOffering['schedules']) || [],\n variants: (data.variants as CommerceOffering['variants']) || [],\n created_at: data.created_at as string,\n updated_at: data.updated_at as string,\n }\n}\n\n// ============================================\n// Static Path Generators\n// ============================================\n\n/**\n * Get all product slugs for static generation\n * \n * @example Next.js Pages Router\n * export async function getStaticPaths() {\n * const paths = await getProductPaths(config)\n * return { paths, fallback: 'blocking' }\n * }\n */\nexport async function getProductPaths(config: ServerConfig): Promise<{ params: { slug: string } }[]> {\n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/public/commerce/offerings?type=product&status=active&fields=slug`\n )\n\n // A failed path fetch prerenders ZERO product pages and looks like a healthy\n // build. Say so loudly rather than shipping a site with its catalogue missing.\n if (!ok) console.error('[site-kit/commerce] getProductPaths failed — 0 product pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n/**\n * Get all event slugs for static generation\n */\nexport async function getEventPaths(config: ServerConfig): Promise<{ params: { slug: string } }[]> {\n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/public/commerce/offerings?type=event&status=active&fields=slug`\n )\n\n if (!ok) console.error('[site-kit/commerce] getEventPaths failed — 0 event pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n/**\n * Get all offering slugs for static generation (any type)\n */\nexport async function getOfferingPaths(\n config: ServerConfig,\n type?: OfferingType | OfferingType[]\n): Promise<{ params: { slug: string } }[]> {\n let typeParam = ''\n if (type) {\n if (Array.isArray(type)) {\n typeParam = `&type=${type.join(',')}`\n } else {\n typeParam = `&type=${type}`\n }\n }\n \n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/public/commerce/offerings?status=active&fields=slug${typeParam}`\n )\n\n if (!ok) console.error('[site-kit/commerce] getOfferingPaths failed — 0 pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n// ============================================\n// Data Fetchers\n// ============================================\n\n/**\n * Fetch a single offering by slug (server-side)\n * \n * @example Next.js Pages Router\n * export async function getStaticProps({ params }) {\n * const product = await getOfferingBySlug(config, params.slug)\n * if (!product) return { notFound: true }\n * return { props: { product }, revalidate: 60 }\n * }\n */\nexport async function getOfferingBySlug(\n config: ServerConfig,\n slug: string\n): Promise<CommerceOffering | null> {\n return (await getOfferingBySlugResult(config, slug)).data\n}\n\n/**\n * As getOfferingBySlug, but distinguishes \"no such offering\" (ok: true, null)\n * from \"could not reach the API\" (ok: false, null). Use this before rendering a\n * 404 — a notFound() on a transient failure de-indexes a page that exists.\n */\nexport async function getOfferingBySlugResult(\n config: ServerConfig,\n slug: string\n): Promise<ServerResult<CommerceOffering | null>> {\n const { ok, data } = await apiFetch<{ offering: Record<string, unknown> }>(\n config,\n `/public/commerce/offerings/${slug}`\n )\n\n if (!data?.offering) return { ok, data: null }\n\n return { ok: true, data: transformOffering(data.offering) }\n}\n\n/**\n * Fetch all offerings of a type (server-side)\n */\nexport async function getOfferings(\n config: ServerConfig,\n options: {\n type?: OfferingType | OfferingType[]\n category?: string\n limit?: number\n status?: string\n } = {}\n): Promise<CommerceOffering[]> {\n return (await getOfferingsResult(config, options)).data\n}\n\n/**\n * As getOfferings, but distinguishes an empty catalogue from a failed request.\n * Branch on `ok` before rendering \"nothing available\" copy.\n */\nexport async function getOfferingsResult(\n config: ServerConfig,\n options: {\n type?: OfferingType | OfferingType[]\n category?: string\n limit?: number\n status?: string\n } = {}\n): Promise<ServerResult<CommerceOffering[]>> {\n const params = new URLSearchParams()\n params.set('status', options.status || 'active')\n \n if (options.type) {\n if (Array.isArray(options.type)) {\n params.set('type', options.type.join(','))\n } else {\n params.set('type', options.type)\n }\n }\n \n if (options.category) {\n params.set('category', options.category)\n }\n \n if (options.limit) {\n params.set('limit', options.limit.toString())\n }\n \n const { ok, data } = await apiFetch<{ offerings: Record<string, unknown>[] }>(\n config,\n `/public/commerce/offerings?${params.toString()}`\n )\n\n if (!data?.offerings) return { ok, data: [] }\n\n return { ok: true, data: data.offerings.map(transformOffering) }\n}\n\n/**\n * Fetch upcoming events (server-side), WITH schedules and category embedded.\n *\n * Uses POST /public/commerce/events — the same endpoint the client fetcher\n * uses — because the GET offerings list does NOT embed commerce_schedules,\n * which made this helper return events with empty `schedules[]` and forced\n * sites to hand-roll their own fetcher for any calendar UI (the Ludlow PTO\n * lesson). Falls back to the legacy offerings query if the events endpoint\n * is unavailable (older self-hosted API).\n */\nexport async function getUpcomingEvents(\n config: ServerConfig,\n options: { limit?: number; category?: string } = {}\n): Promise<CommerceOffering[]> {\n return (await getUpcomingEventsResult(config, options)).data\n}\n\n/**\n * As getUpcomingEvents, but tells you whether the list is empty because there is\n * nothing scheduled or because the API could not be reached.\n *\n * ALWAYS prefer this when the UI renders copy like \"no upcoming events\". Doing\n * otherwise is what put \"No public cruises currently on the schedule\" in front\n * of QCR's customers while three cruises were on sale — and, because the page\n * was statically revalidated, cached that claim for the whole revalidate window.\n */\nexport async function getUpcomingEventsResult(\n config: ServerConfig,\n options: { limit?: number; category?: string } = {}\n): Promise<ServerResult<CommerceOffering[]>> {\n const primary = await apiPost<{ events: Record<string, unknown>[] }>(\n config,\n '/public/commerce/events',\n {\n type: 'event',\n category: options.category,\n limit: options.limit,\n includePast: false,\n },\n )\n\n if (primary.ok && primary.data?.events) {\n return { ok: true, data: primary.data.events.map(transformOffering) }\n }\n\n // Legacy fallback: offerings list (no schedules embedded).\n const params = new URLSearchParams()\n params.set('type', 'event')\n params.set('status', 'active')\n params.set('upcoming', 'true')\n\n if (options.category) {\n params.set('category', options.category)\n }\n\n if (options.limit) {\n params.set('limit', options.limit.toString())\n }\n\n const legacy = await apiFetch<{ offerings: Record<string, unknown>[] }>(\n config,\n `/public/commerce/offerings?${params.toString()}`\n )\n\n if (legacy.ok && legacy.data?.offerings) {\n return { ok: true, data: legacy.data.offerings.map(transformOffering) }\n }\n\n // Nothing usable came back. It is only honestly \"empty\" if at least one call\n // actually reached the API; if both failed the caller must not claim empty.\n return { ok: primary.ok || legacy.ok, data: [] }\n}\n\n/**\n * Get next upcoming event (server-side)\n */\nexport async function getNextEvent(\n config: ServerConfig,\n category?: string\n): Promise<CommerceOffering | null> {\n return (await getNextEventResult(config, category)).data\n}\n\n/**\n * As getNextEvent, but distinguishes \"nothing scheduled\" from \"fetch failed\".\n */\nexport async function getNextEventResult(\n config: ServerConfig,\n category?: string\n): Promise<ServerResult<CommerceOffering | null>> {\n const { ok, data } = await getUpcomingEventsResult(config, { limit: 1, category })\n return { ok, data: data[0] || null }\n}\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\n/**\n * Generate page metadata for an offering\n * \n * @example Next.js App Router\n * export async function generateMetadata({ params }) {\n * const product = await getOfferingBySlug(config, params.slug)\n * return generateOfferingMetadata(product, 'https://example.com')\n * }\n */\nexport function generateOfferingMetadata(\n offering: CommerceOffering | null,\n siteUrl: string\n): {\n title: string\n description: string\n openGraph: {\n title: string\n description: string\n images: string[]\n type: string\n url: string\n }\n} | null {\n if (!offering) return null\n \n const title = offering.seo_title || offering.name\n const description = offering.seo_description || offering.short_description || offering.description || ''\n const images = offering.featured_image_url ? [offering.featured_image_url] : []\n \n const typeMap: Record<OfferingType, string> = {\n product: 'product',\n service: 'website',\n event: 'website',\n class: 'website',\n subscription: 'product',\n }\n \n return {\n title,\n description,\n openGraph: {\n title,\n description,\n images,\n type: typeMap[offering.type] || 'website',\n url: `${siteUrl}/${offering.type}s/${offering.slug}`,\n },\n }\n}\n\n// ============================================\n// Export config builder\n// ============================================\n\n/**\n * Create a server config for API calls\n * \n * @param apiUrl - Portal API URL (e.g., 'https://api.sonor.io')\n * @param apiKey - Project API key\n * @param projectId - Project ID\n */\nexport function createServerConfig(\n apiUrl: string,\n apiKey: string,\n projectId: string\n): ServerConfig {\n return { apiUrl, apiKey, projectId }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/commerce/server.ts"],"names":[],"mappings":"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","file":"server.mjs","sourcesContent":["/**\n * @sonordev/site-kit/commerce - Server-side utilities\n * \n * Helpers for server-side rendering and dynamic routes.\n * Use in Next.js getStaticPaths, getStaticProps, or App Router.\n * \n * All data fetching goes through the Portal API.\n */\n\nimport type { CommerceOffering, OfferingType } from './types'\n\ninterface ServerConfig {\n apiUrl: string\n apiKey: string\n projectId: string\n}\n\ninterface SlugItem {\n slug: string\n}\n\n/**\n * Outcome of a server-side fetch.\n *\n * `ok` is the entire point. A helper that returns an empty array on failure lets\n * the calling page state a business fact it does not know: \"no upcoming events\",\n * \"no products available\" — when the truth is only that the API was unreachable.\n * QCR's /public-cruises told customers the business had no cruises during a\n * transient failure while three were on sale (2026-08-27).\n *\n * Branch on `ok` in new code. The legacy helpers returning a bare array or null\n * are kept for compatibility, but they cannot express this difference — an empty\n * result from them is indistinguishable from an outage.\n */\nexport interface ServerResult<T> {\n /** false = the request failed. `ok: true` with empty data means genuinely empty. */\n ok: boolean\n data: T\n}\n\n/**\n * Next throws to signal control flow, not failure — a DynamicServerError during\n * the static pass means \"this route can't be prerendered\", and redirect()/\n * notFound() throw too. Catching those and returning a failure logs a fake fetch\n * error on every build and makes a real API outage look identical to the\n * framework doing its job. Always rethrow.\n */\nfunction isFrameworkSignal(err: unknown): boolean {\n const digest = (err as { digest?: unknown } | null)?.digest\n return (\n typeof digest === 'string' &&\n (digest === 'DYNAMIC_SERVER_USAGE' || digest.startsWith('NEXT_'))\n )\n}\n\nasync function apiFetch<T>(\n config: ServerConfig,\n endpoint: string,\n): Promise<ServerResult<T | null>> {\n try {\n const response = await fetch(`${config.apiUrl}${endpoint}`, {\n headers: {\n 'X-API-Key': config.apiKey,\n 'X-Project-ID': config.projectId,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n console.error(`[site-kit/commerce] GET ${endpoint} failed: ${response.status}`)\n return { ok: false, data: null }\n }\n return { ok: true, data: (await response.json()) as T }\n } catch (error) {\n if (isFrameworkSignal(error)) throw error\n console.error(`[site-kit/commerce] GET ${endpoint} failed:`, error)\n return { ok: false, data: null }\n }\n}\n\nasync function apiPost<T>(\n config: ServerConfig,\n endpoint: string,\n body: Record<string, unknown>,\n): Promise<ServerResult<T | null>> {\n try {\n const response = await fetch(`${config.apiUrl}${endpoint}`, {\n method: 'POST',\n headers: {\n 'X-API-Key': config.apiKey,\n 'X-Project-ID': config.projectId,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(body),\n })\n\n if (!response.ok) {\n console.error(`[site-kit/commerce] POST ${endpoint} failed: ${response.status}`)\n return { ok: false, data: null }\n }\n return { ok: true, data: (await response.json()) as T }\n } catch (error) {\n if (isFrameworkSignal(error)) throw error\n console.error(`[site-kit/commerce] POST ${endpoint} failed:`, error)\n return { ok: false, data: null }\n }\n}\n\nfunction transformOffering(data: Record<string, unknown>): CommerceOffering {\n return {\n id: data.id as string,\n project_id: data.project_id as string,\n type: data.type as OfferingType,\n status: data.status as 'draft' | 'active' | 'archived' | 'sold_out',\n name: data.name as string,\n slug: data.slug as string,\n description: data.description as string | undefined,\n short_description: data.short_description as string | undefined,\n long_description: data.long_description as string | undefined,\n featured_image_url: data.featured_image_url as string | undefined,\n gallery_images: (data.gallery_image_urls as string[]) || [],\n price_type: (data.price_type as 'fixed' | 'variable' | 'quote' | 'free') || 'fixed',\n price: data.price as number | undefined,\n compare_at_price: data.compare_at_price as number | undefined,\n currency: (data.currency as string) || 'USD',\n price_is_public: (data.price_is_public as boolean) ?? true,\n billing_period: data.billing_period as 'weekly' | 'monthly' | 'quarterly' | 'yearly' | undefined,\n track_inventory: data.track_inventory as boolean | undefined,\n inventory_count: data.inventory_count as number | undefined,\n allow_backorder: data.allow_backorder as boolean | undefined,\n duration_minutes: data.duration_minutes as number | undefined,\n capacity: data.capacity as number | undefined,\n location: data.location as string | undefined,\n is_virtual: data.is_virtual as boolean | undefined,\n virtual_meeting_url: data.virtual_meeting_url as string | undefined,\n requires_booking: data.requires_booking as boolean | undefined,\n booking_lead_time_hours: data.booking_lead_time_hours as number | undefined,\n category: data.category as CommerceOffering['category'],\n category_id: data.category_id as string | undefined,\n tags: (data.tags as string[]) || [],\n seo_title: data.seo_title as string | undefined,\n seo_description: data.seo_description as string | undefined,\n features: (data.features as string[]) || [],\n specifications: (data.specifications as Record<string, string>) || {},\n schedules: (data.schedules as CommerceOffering['schedules']) || [],\n variants: (data.variants as CommerceOffering['variants']) || [],\n created_at: data.created_at as string,\n updated_at: data.updated_at as string,\n }\n}\n\n// ============================================\n// Static Path Generators\n// ============================================\n\n/**\n * Get all product slugs for static generation\n * \n * @example Next.js Pages Router\n * export async function getStaticPaths() {\n * const paths = await getProductPaths(config)\n * return { paths, fallback: 'blocking' }\n * }\n */\nexport async function getProductPaths(config: ServerConfig): Promise<{ params: { slug: string } }[]> {\n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/api/public/commerce/offerings?type=product&status=active&fields=slug`\n )\n\n // A failed path fetch prerenders ZERO product pages and looks like a healthy\n // build. Say so loudly rather than shipping a site with its catalogue missing.\n if (!ok) console.error('[site-kit/commerce] getProductPaths failed — 0 product pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n/**\n * Get all event slugs for static generation\n */\nexport async function getEventPaths(config: ServerConfig): Promise<{ params: { slug: string } }[]> {\n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/api/public/commerce/offerings?type=event&status=active&fields=slug`\n )\n\n if (!ok) console.error('[site-kit/commerce] getEventPaths failed — 0 event pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n/**\n * Get all offering slugs for static generation (any type)\n */\nexport async function getOfferingPaths(\n config: ServerConfig,\n type?: OfferingType | OfferingType[]\n): Promise<{ params: { slug: string } }[]> {\n let typeParam = ''\n if (type) {\n if (Array.isArray(type)) {\n typeParam = `&type=${type.join(',')}`\n } else {\n typeParam = `&type=${type}`\n }\n }\n \n const { ok, data } = await apiFetch<{ offerings: SlugItem[] }>(\n config,\n `/api/public/commerce/offerings?status=active&fields=slug${typeParam}`\n )\n\n if (!ok) console.error('[site-kit/commerce] getOfferingPaths failed — 0 pages will be prerendered')\n if (!data?.offerings) return []\n\n return data.offerings.map((item: SlugItem) => ({ params: { slug: item.slug } }))\n}\n\n// ============================================\n// Data Fetchers\n// ============================================\n\n/**\n * Fetch a single offering by slug (server-side)\n * \n * @example Next.js Pages Router\n * export async function getStaticProps({ params }) {\n * const product = await getOfferingBySlug(config, params.slug)\n * if (!product) return { notFound: true }\n * return { props: { product }, revalidate: 60 }\n * }\n */\nexport async function getOfferingBySlug(\n config: ServerConfig,\n slug: string\n): Promise<CommerceOffering | null> {\n return (await getOfferingBySlugResult(config, slug)).data\n}\n\n/**\n * As getOfferingBySlug, but distinguishes \"no such offering\" (ok: true, null)\n * from \"could not reach the API\" (ok: false, null). Use this before rendering a\n * 404 — a notFound() on a transient failure de-indexes a page that exists.\n */\nexport async function getOfferingBySlugResult(\n config: ServerConfig,\n slug: string\n): Promise<ServerResult<CommerceOffering | null>> {\n const { ok, data } = await apiFetch<{ offering: Record<string, unknown> }>(\n config,\n `/api/public/commerce/offerings/${slug}`\n )\n\n if (!data?.offering) return { ok, data: null }\n\n return { ok: true, data: transformOffering(data.offering) }\n}\n\n/**\n * Fetch all offerings of a type (server-side)\n */\nexport async function getOfferings(\n config: ServerConfig,\n options: {\n type?: OfferingType | OfferingType[]\n category?: string\n limit?: number\n status?: string\n } = {}\n): Promise<CommerceOffering[]> {\n return (await getOfferingsResult(config, options)).data\n}\n\n/**\n * As getOfferings, but distinguishes an empty catalogue from a failed request.\n * Branch on `ok` before rendering \"nothing available\" copy.\n */\nexport async function getOfferingsResult(\n config: ServerConfig,\n options: {\n type?: OfferingType | OfferingType[]\n category?: string\n limit?: number\n status?: string\n } = {}\n): Promise<ServerResult<CommerceOffering[]>> {\n const params = new URLSearchParams()\n params.set('status', options.status || 'active')\n \n if (options.type) {\n if (Array.isArray(options.type)) {\n params.set('type', options.type.join(','))\n } else {\n params.set('type', options.type)\n }\n }\n \n if (options.category) {\n params.set('category', options.category)\n }\n \n if (options.limit) {\n params.set('limit', options.limit.toString())\n }\n \n const { ok, data } = await apiFetch<{ offerings: Record<string, unknown>[] }>(\n config,\n `/api/public/commerce/offerings?${params.toString()}`\n )\n\n if (!data?.offerings) return { ok, data: [] }\n\n return { ok: true, data: data.offerings.map(transformOffering) }\n}\n\n/**\n * Fetch upcoming events (server-side), WITH schedules and category embedded.\n *\n * Uses POST /api/public/commerce/events — the same endpoint the client fetcher\n * uses — because the GET offerings list does NOT embed commerce_schedules,\n * which made this helper return events with empty `schedules[]` and forced\n * sites to hand-roll their own fetcher for any calendar UI (the Ludlow PTO\n * lesson). Falls back to the legacy offerings query if the events endpoint\n * is unavailable (older self-hosted API).\n */\nexport async function getUpcomingEvents(\n config: ServerConfig,\n options: { limit?: number; category?: string } = {}\n): Promise<CommerceOffering[]> {\n return (await getUpcomingEventsResult(config, options)).data\n}\n\n/**\n * As getUpcomingEvents, but tells you whether the list is empty because there is\n * nothing scheduled or because the API could not be reached.\n *\n * ALWAYS prefer this when the UI renders copy like \"no upcoming events\". Doing\n * otherwise is what put \"No public cruises currently on the schedule\" in front\n * of QCR's customers while three cruises were on sale — and, because the page\n * was statically revalidated, cached that claim for the whole revalidate window.\n */\nexport async function getUpcomingEventsResult(\n config: ServerConfig,\n options: { limit?: number; category?: string } = {}\n): Promise<ServerResult<CommerceOffering[]>> {\n const primary = await apiPost<{ events: Record<string, unknown>[] }>(\n config,\n '/api/public/commerce/events',\n {\n type: 'event',\n category: options.category,\n limit: options.limit,\n includePast: false,\n },\n )\n\n if (primary.ok && primary.data?.events) {\n return { ok: true, data: primary.data.events.map(transformOffering) }\n }\n\n // Legacy fallback: offerings list (no schedules embedded).\n const params = new URLSearchParams()\n params.set('type', 'event')\n params.set('status', 'active')\n params.set('upcoming', 'true')\n\n if (options.category) {\n params.set('category', options.category)\n }\n\n if (options.limit) {\n params.set('limit', options.limit.toString())\n }\n\n const legacy = await apiFetch<{ offerings: Record<string, unknown>[] }>(\n config,\n `/api/public/commerce/offerings?${params.toString()}`\n )\n\n if (legacy.ok && legacy.data?.offerings) {\n return { ok: true, data: legacy.data.offerings.map(transformOffering) }\n }\n\n // Nothing usable came back. It is only honestly \"empty\" if at least one call\n // actually reached the API; if both failed the caller must not claim empty.\n return { ok: primary.ok || legacy.ok, data: [] }\n}\n\n/**\n * Get next upcoming event (server-side)\n */\nexport async function getNextEvent(\n config: ServerConfig,\n category?: string\n): Promise<CommerceOffering | null> {\n return (await getNextEventResult(config, category)).data\n}\n\n/**\n * As getNextEvent, but distinguishes \"nothing scheduled\" from \"fetch failed\".\n */\nexport async function getNextEventResult(\n config: ServerConfig,\n category?: string\n): Promise<ServerResult<CommerceOffering | null>> {\n const { ok, data } = await getUpcomingEventsResult(config, { limit: 1, category })\n return { ok, data: data[0] || null }\n}\n\n// ============================================\n// Metadata Helpers\n// ============================================\n\n/**\n * Generate page metadata for an offering\n * \n * @example Next.js App Router\n * export async function generateMetadata({ params }) {\n * const product = await getOfferingBySlug(config, params.slug)\n * return generateOfferingMetadata(product, 'https://example.com')\n * }\n */\nexport function generateOfferingMetadata(\n offering: CommerceOffering | null,\n siteUrl: string\n): {\n title: string\n description: string\n openGraph: {\n title: string\n description: string\n images: string[]\n type: string\n url: string\n }\n} | null {\n if (!offering) return null\n \n const title = offering.seo_title || offering.name\n const description = offering.seo_description || offering.short_description || offering.description || ''\n const images = offering.featured_image_url ? [offering.featured_image_url] : []\n \n const typeMap: Record<OfferingType, string> = {\n product: 'product',\n service: 'website',\n event: 'website',\n class: 'website',\n subscription: 'product',\n }\n \n return {\n title,\n description,\n openGraph: {\n title,\n description,\n images,\n type: typeMap[offering.type] || 'website',\n url: `${siteUrl}/${offering.type}s/${offering.slug}`,\n },\n }\n}\n\n// ============================================\n// Export config builder\n// ============================================\n\n/**\n * Create a server config for API calls\n * \n * @param apiUrl - Portal API URL (e.g., 'https://api.sonor.io')\n * @param apiKey - Project API key\n * @param projectId - Project ID\n */\nexport function createServerConfig(\n apiUrl: string,\n apiKey: string,\n projectId: string\n): ServerConfig {\n return { apiUrl, apiKey, projectId }\n}\n"]}
|
package/dist/engage/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk7VZYP4K5_js = require('../chunk-7VZYP4K5.js');
|
|
5
|
+
var chunkQQQAW6WY_js = require('../chunk-QQQAW6WY.js');
|
|
6
6
|
require('../chunk-ESP5RMB7.js');
|
|
7
7
|
require('../chunk-G6WF4G3E.js');
|
|
8
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-UHM3CCCC.js');
|
|
9
9
|
require('../chunk-5XFFUP6D.js');
|
|
10
|
-
require('../chunk-
|
|
10
|
+
require('../chunk-CNTDV7HM.js');
|
|
11
11
|
require('../chunk-KHPJ3CEL.js');
|
|
12
12
|
require('../chunk-RC4WWQXR.js');
|
|
13
13
|
require('../chunk-P4Y75QSU.js');
|
|
14
14
|
require('../chunk-VJMPIRSD.js');
|
|
15
15
|
require('../chunk-5RNAUYWE.js');
|
|
16
|
-
require('../chunk-
|
|
17
|
-
require('../chunk-
|
|
18
|
-
require('../chunk-
|
|
16
|
+
require('../chunk-I7HOMMIK.js');
|
|
17
|
+
require('../chunk-CZEIHFLW.js');
|
|
18
|
+
require('../chunk-7R6H3GQ4.js');
|
|
19
19
|
require('../chunk-SNAQBZPT.js');
|
|
20
20
|
|
|
21
21
|
// src/engage/echo-config.ts
|
|
@@ -47,15 +47,15 @@ function getEchoWidgetProps(config = SONOR_PUBLIC_ECHO_DEFAULTS) {
|
|
|
47
47
|
|
|
48
48
|
Object.defineProperty(exports, "ChatWidget", {
|
|
49
49
|
enumerable: true,
|
|
50
|
-
get: function () { return
|
|
50
|
+
get: function () { return chunk7VZYP4K5_js.ChatWidget; }
|
|
51
51
|
});
|
|
52
52
|
Object.defineProperty(exports, "DesignRenderer", {
|
|
53
53
|
enumerable: true,
|
|
54
|
-
get: function () { return
|
|
54
|
+
get: function () { return chunkQQQAW6WY_js.DesignRenderer; }
|
|
55
55
|
});
|
|
56
56
|
Object.defineProperty(exports, "EngageWidget", {
|
|
57
57
|
enumerable: true,
|
|
58
|
-
get: function () { return
|
|
58
|
+
get: function () { return chunkQQQAW6WY_js.EngageWidget; }
|
|
59
59
|
});
|
|
60
60
|
exports.SONOR_PUBLIC_ECHO_DEFAULTS = SONOR_PUBLIC_ECHO_DEFAULTS;
|
|
61
61
|
exports.getEchoWidgetProps = getEchoWidgetProps;
|
package/dist/engage/index.mjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { ChatWidget } from '../chunk-
|
|
3
|
-
export { DesignRenderer, EngageWidget } from '../chunk-
|
|
2
|
+
export { ChatWidget } from '../chunk-4NVMAYMQ.mjs';
|
|
3
|
+
export { DesignRenderer, EngageWidget } from '../chunk-F2KW4OJF.mjs';
|
|
4
4
|
import '../chunk-4U5NCKQY.mjs';
|
|
5
5
|
import '../chunk-NSWO43XW.mjs';
|
|
6
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-UQY5KC64.mjs';
|
|
7
7
|
import '../chunk-QRHVMTHF.mjs';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-25F2EXOC.mjs';
|
|
9
9
|
import '../chunk-TMVKRQGJ.mjs';
|
|
10
10
|
import '../chunk-ZZQAGCSI.mjs';
|
|
11
11
|
import '../chunk-5SANRSX3.mjs';
|
|
12
12
|
import '../chunk-6EDVCUAG.mjs';
|
|
13
13
|
import '../chunk-A6UYV475.mjs';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-4C5CZJIN.mjs';
|
|
15
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
16
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
17
17
|
import '../chunk-BEXTDHO4.mjs';
|
|
18
18
|
|
|
19
19
|
// src/engage/echo-config.ts
|
package/dist/fleet/index.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var chunkTR3F3CLV_js = require('../chunk-TR3F3CLV.js');
|
|
5
5
|
var chunkQ2NBD54V_js = require('../chunk-Q2NBD54V.js');
|
|
6
6
|
require('../chunk-HGNSJXWT.js');
|
|
7
7
|
require('../chunk-5RNAUYWE.js');
|
|
8
|
-
require('../chunk-
|
|
9
|
-
require('../chunk-
|
|
10
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-I7HOMMIK.js');
|
|
9
|
+
require('../chunk-CZEIHFLW.js');
|
|
10
|
+
require('../chunk-7R6H3GQ4.js');
|
|
11
11
|
require('../chunk-SNAQBZPT.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
Object.defineProperty(exports, "FLEET_HEARTBEAT_PATH", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkTR3F3CLV_js.FLEET_HEARTBEAT_PATH; }
|
|
18
18
|
});
|
|
19
19
|
Object.defineProperty(exports, "FleetHeartbeat", {
|
|
20
20
|
enumerable: true,
|
|
21
|
-
get: function () { return
|
|
21
|
+
get: function () { return chunkTR3F3CLV_js.FleetHeartbeat; }
|
|
22
22
|
});
|
|
23
23
|
Object.defineProperty(exports, "detectNextVersion", {
|
|
24
24
|
enumerable: true,
|
|
25
|
-
get: function () { return
|
|
25
|
+
get: function () { return chunkTR3F3CLV_js.detectNextVersion; }
|
|
26
26
|
});
|
|
27
27
|
Object.defineProperty(exports, "sendFleetHeartbeat", {
|
|
28
28
|
enumerable: true,
|
|
29
|
-
get: function () { return
|
|
29
|
+
get: function () { return chunkTR3F3CLV_js.sendFleetHeartbeat; }
|
|
30
30
|
});
|
|
31
31
|
Object.defineProperty(exports, "FLEET_CONTRACT_VERSION", {
|
|
32
32
|
enumerable: true,
|
package/dist/fleet/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-
|
|
2
|
+
export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-WINDP776.mjs';
|
|
3
3
|
export { FLEET_CONTRACT_VERSION, FLEET_MODULES, FLEET_MODULES_MAX, FLEET_SITE_MAX_LENGTH, FLEET_VERSION_MAX_LENGTH, FLEET_VERSION_PATTERN, buildFleetHeartbeatPayload, isFleetModule, normalizeFleetModules, normalizeFleetSite, sanitizeFleetVersion } from '../chunk-ZPLN537Q.mjs';
|
|
4
4
|
import '../chunk-ZVBLXXNJ.mjs';
|
|
5
5
|
import '../chunk-A6UYV475.mjs';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-4C5CZJIN.mjs';
|
|
7
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
8
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
9
9
|
import '../chunk-BEXTDHO4.mjs';
|
|
10
10
|
//# sourceMappingURL=index.mjs.map
|
|
11
11
|
//# sourceMappingURL=index.mjs.map
|
package/dist/forms/index.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var chunkYVJASVVK_js = require('../chunk-YVJASVVK.js');
|
|
5
|
-
var chunk73EBIAF3_js = require('../chunk-73EBIAF3.js');
|
|
6
|
-
require('../chunk-3Z3TOPND.js');
|
|
7
4
|
var chunkDVYYGHSG_js = require('../chunk-DVYYGHSG.js');
|
|
8
|
-
var
|
|
5
|
+
var chunkYVJASVVK_js = require('../chunk-YVJASVVK.js');
|
|
6
|
+
var chunkIIHIRHSW_js = require('../chunk-IIHIRHSW.js');
|
|
7
|
+
require('../chunk-F3KA6V2Y.js');
|
|
8
|
+
var chunkCY2RFEW6_js = require('../chunk-CY2RFEW6.js');
|
|
9
9
|
require('../chunk-HGNSJXWT.js');
|
|
10
|
-
require('../chunk-
|
|
10
|
+
require('../chunk-NR7YZQRR.js');
|
|
11
11
|
var chunkXA2GJFVM_js = require('../chunk-XA2GJFVM.js');
|
|
12
|
-
var
|
|
12
|
+
var chunkUHM3CCCC_js = require('../chunk-UHM3CCCC.js');
|
|
13
13
|
require('../chunk-5XFFUP6D.js');
|
|
14
|
-
var
|
|
14
|
+
var chunkCNTDV7HM_js = require('../chunk-CNTDV7HM.js');
|
|
15
15
|
require('../chunk-KHPJ3CEL.js');
|
|
16
16
|
require('../chunk-P4Y75QSU.js');
|
|
17
17
|
require('../chunk-VJMPIRSD.js');
|
|
18
|
-
var
|
|
19
|
-
require('../chunk-
|
|
20
|
-
require('../chunk-
|
|
18
|
+
var chunkI7HOMMIK_js = require('../chunk-I7HOMMIK.js');
|
|
19
|
+
require('../chunk-CZEIHFLW.js');
|
|
20
|
+
require('../chunk-7R6H3GQ4.js');
|
|
21
21
|
require('../chunk-SNAQBZPT.js');
|
|
22
22
|
|
|
23
23
|
// src/forms/formsApi.ts
|
|
@@ -49,7 +49,7 @@ async function apiRequest(method, path, body) {
|
|
|
49
49
|
const token = await getAuthToken();
|
|
50
50
|
headers["Authorization"] = `Bearer ${token}`;
|
|
51
51
|
}
|
|
52
|
-
const response = await
|
|
52
|
+
const response = await chunkI7HOMMIK_js.sonorFetch(`${baseUrl}${path}`, {
|
|
53
53
|
method,
|
|
54
54
|
headers,
|
|
55
55
|
body: body ? JSON.stringify(body) : void 0
|
|
@@ -338,25 +338,25 @@ async function initializeForms(forms) {
|
|
|
338
338
|
}
|
|
339
339
|
}
|
|
340
340
|
|
|
341
|
+
Object.defineProperty(exports, "DatePicker", {
|
|
342
|
+
enumerable: true,
|
|
343
|
+
get: function () { return chunkDVYYGHSG_js.DatePicker; }
|
|
344
|
+
});
|
|
341
345
|
Object.defineProperty(exports, "FormCelebration", {
|
|
342
346
|
enumerable: true,
|
|
343
347
|
get: function () { return chunkYVJASVVK_js.FormCelebration; }
|
|
344
348
|
});
|
|
345
349
|
Object.defineProperty(exports, "FormClient", {
|
|
346
350
|
enumerable: true,
|
|
347
|
-
get: function () { return
|
|
351
|
+
get: function () { return chunkIIHIRHSW_js.FormClient; }
|
|
348
352
|
});
|
|
349
353
|
Object.defineProperty(exports, "ManagedForm", {
|
|
350
354
|
enumerable: true,
|
|
351
|
-
get: function () { return
|
|
352
|
-
});
|
|
353
|
-
Object.defineProperty(exports, "DatePicker", {
|
|
354
|
-
enumerable: true,
|
|
355
|
-
get: function () { return chunkDVYYGHSG_js.DatePicker; }
|
|
355
|
+
get: function () { return chunkIIHIRHSW_js.ManagedForm; }
|
|
356
356
|
});
|
|
357
357
|
Object.defineProperty(exports, "FormEnhancer", {
|
|
358
358
|
enumerable: true,
|
|
359
|
-
get: function () { return
|
|
359
|
+
get: function () { return chunkCY2RFEW6_js.FormEnhancer; }
|
|
360
360
|
});
|
|
361
361
|
Object.defineProperty(exports, "FormFieldComponent", {
|
|
362
362
|
enumerable: true,
|
|
@@ -364,15 +364,15 @@ Object.defineProperty(exports, "FormFieldComponent", {
|
|
|
364
364
|
});
|
|
365
365
|
Object.defineProperty(exports, "useForm", {
|
|
366
366
|
enumerable: true,
|
|
367
|
-
get: function () { return
|
|
367
|
+
get: function () { return chunkUHM3CCCC_js.useForm; }
|
|
368
368
|
});
|
|
369
369
|
Object.defineProperty(exports, "useFormTracking", {
|
|
370
370
|
enumerable: true,
|
|
371
|
-
get: function () { return
|
|
371
|
+
get: function () { return chunkUHM3CCCC_js.useFormTracking; }
|
|
372
372
|
});
|
|
373
373
|
Object.defineProperty(exports, "DEFAULT_FORM_SUCCESS_MESSAGE", {
|
|
374
374
|
enumerable: true,
|
|
375
|
-
get: function () { return
|
|
375
|
+
get: function () { return chunkCNTDV7HM_js.DEFAULT_FORM_SUCCESS_MESSAGE; }
|
|
376
376
|
});
|
|
377
377
|
exports.configureFormsApi = configureFormsApi;
|
|
378
378
|
exports.defineForm = defineForm;
|
package/dist/forms/index.mjs
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { FormCelebration } from '../chunk-54CARHDR.mjs';
|
|
3
|
-
export { FormClient, ManagedForm } from '../chunk-6FTC6EYD.mjs';
|
|
4
|
-
import '../chunk-YVQNOB3Q.mjs';
|
|
5
2
|
export { DatePicker } from '../chunk-MU3D5IO7.mjs';
|
|
6
|
-
export {
|
|
3
|
+
export { FormCelebration } from '../chunk-54CARHDR.mjs';
|
|
4
|
+
export { FormClient, ManagedForm } from '../chunk-LGOQ65JQ.mjs';
|
|
5
|
+
import '../chunk-QOOLMSBY.mjs';
|
|
6
|
+
export { FormEnhancer } from '../chunk-PIPERXI7.mjs';
|
|
7
7
|
import '../chunk-ZVBLXXNJ.mjs';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-QXMWNIKL.mjs';
|
|
9
9
|
export { FormField as FormFieldComponent } from '../chunk-VJV7WUR2.mjs';
|
|
10
|
-
export { useForm, useFormTracking } from '../chunk-
|
|
10
|
+
export { useForm, useFormTracking } from '../chunk-UQY5KC64.mjs';
|
|
11
11
|
import '../chunk-QRHVMTHF.mjs';
|
|
12
|
-
export { DEFAULT_FORM_SUCCESS_MESSAGE } from '../chunk-
|
|
12
|
+
export { DEFAULT_FORM_SUCCESS_MESSAGE } from '../chunk-25F2EXOC.mjs';
|
|
13
13
|
import '../chunk-TMVKRQGJ.mjs';
|
|
14
14
|
import '../chunk-5SANRSX3.mjs';
|
|
15
15
|
import '../chunk-6EDVCUAG.mjs';
|
|
16
|
-
import { sonorFetch } from '../chunk-
|
|
17
|
-
import '../chunk-
|
|
18
|
-
import '../chunk-
|
|
16
|
+
import { sonorFetch } from '../chunk-4C5CZJIN.mjs';
|
|
17
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
18
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
19
19
|
import '../chunk-BEXTDHO4.mjs';
|
|
20
20
|
|
|
21
21
|
// src/forms/formsApi.ts
|
package/dist/forms/server.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkCY2RFEW6_js = require('../chunk-CY2RFEW6.js');
|
|
4
4
|
require('../chunk-HGNSJXWT.js');
|
|
5
|
-
var
|
|
6
|
-
require('../chunk-
|
|
5
|
+
var chunkNBT4L2D7_js = require('../chunk-NBT4L2D7.js');
|
|
6
|
+
require('../chunk-NR7YZQRR.js');
|
|
7
7
|
require('../chunk-XA2GJFVM.js');
|
|
8
8
|
var chunkO5GHP7UO_js = require('../chunk-O5GHP7UO.js');
|
|
9
|
-
require('../chunk-
|
|
9
|
+
require('../chunk-CNTDV7HM.js');
|
|
10
10
|
require('../chunk-KHPJ3CEL.js');
|
|
11
|
-
require('../chunk-
|
|
12
|
-
require('../chunk-
|
|
13
|
-
require('../chunk-
|
|
11
|
+
require('../chunk-I7HOMMIK.js');
|
|
12
|
+
require('../chunk-CZEIHFLW.js');
|
|
13
|
+
require('../chunk-7R6H3GQ4.js');
|
|
14
14
|
require('../chunk-SNAQBZPT.js');
|
|
15
15
|
var jsxRuntime = require('react/jsx-runtime');
|
|
16
16
|
|
|
@@ -27,10 +27,10 @@ async function ServerForm({
|
|
|
27
27
|
defaultValues
|
|
28
28
|
}) {
|
|
29
29
|
const config = initialConfig ?? await getFormConfig(formId, configOptions);
|
|
30
|
-
const shell = /* @__PURE__ */ jsxRuntime.jsx(
|
|
30
|
+
const shell = /* @__PURE__ */ jsxRuntime.jsx(chunkNBT4L2D7_js.StaticForm, { config, className, nativeReturnTo: returnTo });
|
|
31
31
|
if (!enhance) return shell;
|
|
32
32
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
-
|
|
33
|
+
chunkCY2RFEW6_js.FormEnhancer,
|
|
34
34
|
{
|
|
35
35
|
formId,
|
|
36
36
|
initialConfig: config,
|
|
@@ -64,7 +64,7 @@ async function getFormConfig(formIdOrSlug, options = {}) {
|
|
|
64
64
|
|
|
65
65
|
Object.defineProperty(exports, "StaticForm", {
|
|
66
66
|
enumerable: true,
|
|
67
|
-
get: function () { return
|
|
67
|
+
get: function () { return chunkNBT4L2D7_js.StaticForm; }
|
|
68
68
|
});
|
|
69
69
|
exports.ServerForm = ServerForm;
|
|
70
70
|
exports.getFormConfig = getFormConfig;
|
package/dist/forms/server.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { FormEnhancer } from '../chunk-
|
|
1
|
+
import { FormEnhancer } from '../chunk-PIPERXI7.mjs';
|
|
2
2
|
import '../chunk-ZVBLXXNJ.mjs';
|
|
3
|
-
import { StaticForm } from '../chunk-
|
|
4
|
-
export { StaticForm } from '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import { StaticForm } from '../chunk-ROSYCNXG.mjs';
|
|
4
|
+
export { StaticForm } from '../chunk-ROSYCNXG.mjs';
|
|
5
|
+
import '../chunk-QXMWNIKL.mjs';
|
|
6
6
|
import '../chunk-VJV7WUR2.mjs';
|
|
7
7
|
import { serverApiFetch } from '../chunk-6XNEGG5B.mjs';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-25F2EXOC.mjs';
|
|
9
9
|
import '../chunk-TMVKRQGJ.mjs';
|
|
10
|
-
import '../chunk-
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
10
|
+
import '../chunk-4C5CZJIN.mjs';
|
|
11
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
12
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
13
13
|
import '../chunk-BEXTDHO4.mjs';
|
|
14
14
|
import { jsx } from 'react/jsx-runtime';
|
|
15
15
|
|
package/dist/forms/static.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
require('../chunk-
|
|
3
|
+
var chunkNBT4L2D7_js = require('../chunk-NBT4L2D7.js');
|
|
4
|
+
require('../chunk-NR7YZQRR.js');
|
|
5
5
|
require('../chunk-XA2GJFVM.js');
|
|
6
|
-
require('../chunk-
|
|
6
|
+
require('../chunk-CNTDV7HM.js');
|
|
7
7
|
require('../chunk-KHPJ3CEL.js');
|
|
8
|
-
require('../chunk-
|
|
9
|
-
require('../chunk-
|
|
10
|
-
require('../chunk-
|
|
8
|
+
require('../chunk-I7HOMMIK.js');
|
|
9
|
+
require('../chunk-CZEIHFLW.js');
|
|
10
|
+
require('../chunk-7R6H3GQ4.js');
|
|
11
11
|
require('../chunk-SNAQBZPT.js');
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
Object.defineProperty(exports, "StaticForm", {
|
|
16
16
|
enumerable: true,
|
|
17
|
-
get: function () { return
|
|
17
|
+
get: function () { return chunkNBT4L2D7_js.StaticForm; }
|
|
18
18
|
});
|
|
19
19
|
//# sourceMappingURL=static.js.map
|
|
20
20
|
//# sourceMappingURL=static.js.map
|
package/dist/forms/static.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { StaticForm } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
1
|
+
export { StaticForm } from '../chunk-ROSYCNXG.mjs';
|
|
2
|
+
import '../chunk-QXMWNIKL.mjs';
|
|
3
3
|
import '../chunk-VJV7WUR2.mjs';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-25F2EXOC.mjs';
|
|
5
5
|
import '../chunk-TMVKRQGJ.mjs';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-4C5CZJIN.mjs';
|
|
7
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
8
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
9
9
|
import '../chunk-BEXTDHO4.mjs';
|
|
10
10
|
//# sourceMappingURL=static.mjs.map
|
|
11
11
|
//# sourceMappingURL=static.mjs.map
|
package/dist/images/index.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk2TS4ALOA_js = require('../chunk-2TS4ALOA.js');
|
|
4
4
|
var chunkGCPPXUAI_js = require('../chunk-GCPPXUAI.js');
|
|
5
|
-
require('../chunk-
|
|
6
|
-
require('../chunk-
|
|
7
|
-
require('../chunk-
|
|
5
|
+
require('../chunk-I7HOMMIK.js');
|
|
6
|
+
require('../chunk-CZEIHFLW.js');
|
|
7
|
+
require('../chunk-7R6H3GQ4.js');
|
|
8
8
|
require('../chunk-SNAQBZPT.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
Object.defineProperty(exports, "ManagedImage", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunk2TS4ALOA_js.ManagedImage; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "assignImageToSlot", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunk2TS4ALOA_js.assignImageToSlot; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "clearImageSlot", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunk2TS4ALOA_js.clearImageSlot; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "fetchManagedImage", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunk2TS4ALOA_js.fetchManagedImage; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "fetchManagedImages", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunk2TS4ALOA_js.fetchManagedImages; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "listImageFiles", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunk2TS4ALOA_js.listImageFiles; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "uploadImage", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunk2TS4ALOA_js.uploadImage; }
|
|
39
39
|
});
|
|
40
40
|
Object.defineProperty(exports, "ManagedFavicon", {
|
|
41
41
|
enumerable: true,
|
package/dist/images/index.mjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-
|
|
1
|
+
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-R5IPDAMM.mjs';
|
|
2
2
|
export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-CU6OGBKK.mjs';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-4C5CZJIN.mjs';
|
|
4
|
+
import '../chunk-NCDF2RK4.mjs';
|
|
5
|
+
import '../chunk-5FETEH3Y.mjs';
|
|
6
6
|
import '../chunk-BEXTDHO4.mjs';
|
|
7
7
|
//# sourceMappingURL=index.mjs.map
|
|
8
8
|
//# sourceMappingURL=index.mjs.map
|