@riverbankcms/sdk 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/dist/client/client.js +1 -1
  2. package/dist/client/client.js.map +1 -1
  3. package/dist/client/client.mjs +1 -1
  4. package/dist/client/client.mjs.map +1 -1
  5. package/dist/server/{chunk-Z5ZA6Q4D.mjs → chunk-74XUVNOO.mjs} +5 -3
  6. package/dist/server/chunk-74XUVNOO.mjs.map +1 -0
  7. package/dist/server/{chunk-3B364WO2.js → chunk-7BVRA5MY.js} +4 -49
  8. package/dist/server/chunk-7BVRA5MY.js.map +1 -0
  9. package/dist/server/{chunk-I7ZR2WO3.mjs → chunk-7FIJSGHU.mjs} +2 -2
  10. package/dist/server/{chunk-I7ZR2WO3.mjs.map → chunk-7FIJSGHU.mjs.map} +1 -1
  11. package/dist/server/chunk-ARNCLSQT.mjs +52 -0
  12. package/dist/server/chunk-ARNCLSQT.mjs.map +1 -0
  13. package/dist/server/chunk-BNQV3PXP.js +69 -0
  14. package/dist/server/chunk-BNQV3PXP.js.map +1 -0
  15. package/dist/server/{chunk-I2D7KOEA.js → chunk-JWRNMNWI.js} +5 -3
  16. package/dist/server/chunk-JWRNMNWI.js.map +1 -0
  17. package/dist/server/{chunk-IVHIQFJH.js → chunk-P7UVAMK6.js} +2 -2
  18. package/dist/server/{chunk-IVHIQFJH.js.map → chunk-P7UVAMK6.js.map} +1 -1
  19. package/dist/server/{chunk-XXFF4RVR.mjs → chunk-RBJFXNDM.mjs} +1 -46
  20. package/dist/server/chunk-RBJFXNDM.mjs.map +1 -0
  21. package/dist/server/chunk-SWYWZT3L.mjs +69 -0
  22. package/dist/server/chunk-SWYWZT3L.mjs.map +1 -0
  23. package/dist/server/chunk-T26N3P26.js +52 -0
  24. package/dist/server/chunk-T26N3P26.js.map +1 -0
  25. package/dist/server/components.js +5 -3
  26. package/dist/server/components.js.map +1 -1
  27. package/dist/server/components.mjs +5 -3
  28. package/dist/server/index-BTwWvSBu.d.ts +130 -0
  29. package/dist/server/index-DI_qlYx3.d.mts +130 -0
  30. package/dist/server/index.js +2 -2
  31. package/dist/server/index.mjs +1 -1
  32. package/dist/server/{loadContent-BS-3wesN.d.mts → loadContent-C-YYUKQa.d.mts} +10 -2
  33. package/dist/server/{loadContent-Buvmudee.d.ts → loadContent-DmgpFcFC.d.ts} +10 -2
  34. package/dist/server/metadata.d.mts +8 -135
  35. package/dist/server/metadata.d.ts +8 -135
  36. package/dist/server/metadata.js +5 -65
  37. package/dist/server/metadata.js.map +1 -1
  38. package/dist/server/metadata.mjs +4 -64
  39. package/dist/server/metadata.mjs.map +1 -1
  40. package/dist/server/next.d.mts +274 -0
  41. package/dist/server/next.d.ts +274 -0
  42. package/dist/server/next.js +150 -0
  43. package/dist/server/next.js.map +1 -0
  44. package/dist/server/next.mjs +150 -0
  45. package/dist/server/next.mjs.map +1 -0
  46. package/dist/server/rendering/server.js +5 -3
  47. package/dist/server/rendering/server.js.map +1 -1
  48. package/dist/server/rendering/server.mjs +5 -3
  49. package/dist/server/rendering.d.mts +1 -1
  50. package/dist/server/rendering.d.ts +1 -1
  51. package/dist/server/rendering.js +6 -4
  52. package/dist/server/rendering.js.map +1 -1
  53. package/dist/server/rendering.mjs +6 -4
  54. package/dist/server/server.d.mts +1 -1
  55. package/dist/server/server.d.ts +1 -1
  56. package/dist/server/server.js +3 -3
  57. package/dist/server/server.mjs +2 -2
  58. package/package.json +13 -1
  59. package/dist/server/chunk-3B364WO2.js.map +0 -1
  60. package/dist/server/chunk-I2D7KOEA.js.map +0 -1
  61. package/dist/server/chunk-XXFF4RVR.mjs.map +0 -1
  62. package/dist/server/chunk-Z5ZA6Q4D.mjs.map +0 -1
@@ -1,142 +1,15 @@
1
- import { a as LoadPageResult } from './loadPage-B8mQUUSo.mjs';
2
- import { S as SiteResponse } from './types-1cLz0vnq.mjs';
3
- import 'react/jsx-runtime';
4
- import 'react';
5
- import './schema-Z6-afHJG.mjs';
6
- import 'zod';
7
- import './core-DsNWrl3o.mjs';
1
+ export { P as PageMetadataInput, g as generatePageMetadata, a as generatePreviewMetadata } from './index-DI_qlYx3.mjs';
2
+ import './loadPage-B8mQUUSo.mjs';
3
+ import './types-1cLz0vnq.mjs';
8
4
  import './types-Dsu9wsUh.mjs';
9
5
  import '@riverbankcms/ai';
6
+ import './schema-Z6-afHJG.mjs';
7
+ import 'zod';
10
8
  import './link-DjxLyC82.mjs';
11
9
  import '@riverbankcms/media-storage-supabase';
12
10
  import '@riverbankcms/db';
11
+ import 'react/jsx-runtime';
12
+ import 'react';
13
+ import './core-DsNWrl3o.mjs';
13
14
  import './types-CbagRQ_7.mjs';
14
15
  import './blockKinds-B6MWzNWp.mjs';
15
-
16
- /**
17
- * Metadata generation helper for Next.js pages
18
- *
19
- * Generates SEO-optimized metadata from Builder page data for use in
20
- * Next.js generateMetadata() functions.
21
- */
22
-
23
- /**
24
- * Next.js Metadata type
25
- * Simplified version to avoid requiring Next.js as a dependency
26
- */
27
- type Metadata = {
28
- title?: string;
29
- description?: string;
30
- alternates?: {
31
- canonical?: string;
32
- };
33
- openGraph?: {
34
- title?: string;
35
- description?: string;
36
- url?: string;
37
- siteName?: string;
38
- type?: string;
39
- images?: Array<{
40
- url: string;
41
- alt?: string;
42
- }>;
43
- };
44
- twitter?: {
45
- card?: string;
46
- title?: string;
47
- description?: string;
48
- images?: string[];
49
- };
50
- robots?: {
51
- index?: boolean;
52
- follow?: boolean;
53
- };
54
- verification?: {
55
- google?: string;
56
- };
57
- };
58
- type PageMetadataInput = {
59
- /**
60
- * Page data from loadPage() or custom page object
61
- */
62
- page: LoadPageResult['page'] | {
63
- name: string;
64
- purpose?: string;
65
- };
66
- /**
67
- * Site data from client.getSite()
68
- */
69
- site: SiteResponse['site'];
70
- /**
71
- * Current URL path (e.g., '/about', '/blog/post-1')
72
- */
73
- path: string;
74
- /**
75
- * Full site URL for canonical and OG URLs
76
- * Example: 'https://example.com'
77
- */
78
- siteUrl: string;
79
- /**
80
- * Optional custom metadata overrides
81
- */
82
- overrides?: {
83
- title?: string;
84
- description?: string;
85
- ogImage?: string;
86
- canonicalUrl?: string;
87
- robots?: {
88
- index?: boolean;
89
- follow?: boolean;
90
- };
91
- };
92
- /**
93
- * Optional Google site verification token
94
- */
95
- googleSiteVerification?: string;
96
- };
97
- /**
98
- * Generate Next.js Metadata object from Builder page data
99
- *
100
- * @example
101
- * ```tsx
102
- * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
103
- * import { loadPage } from '@riverbankcms/sdk';
104
- *
105
- * export async function generateMetadata({ params }) {
106
- * const pageData = await loadPage({ client, siteId, path: params.slug });
107
- * const siteData = await client.getSite({ id: siteId });
108
- *
109
- * return generatePageMetadata({
110
- * page: pageData.page,
111
- * site: siteData.site,
112
- * path: params.slug,
113
- * siteUrl: 'https://example.com',
114
- * });
115
- * }
116
- * ```
117
- */
118
- declare function generatePageMetadata(input: PageMetadataInput): Metadata;
119
- /**
120
- * Generate metadata for preview/staging environments
121
- *
122
- * This helper adds noindex/nofollow robots tags to prevent search engines
123
- * from indexing preview or staging URLs.
124
- *
125
- * @example
126
- * ```tsx
127
- * export async function generateMetadata({ params }) {
128
- * const pageData = await loadPage({ client, siteId, path: params.slug });
129
- * const isPreview = process.env.VERCEL_ENV !== 'production';
130
- *
131
- * return generatePreviewMetadata({
132
- * page: pageData.page,
133
- * site: siteData.site,
134
- * path: params.slug,
135
- * siteUrl: 'https://example.com',
136
- * });
137
- * }
138
- * ```
139
- */
140
- declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
141
-
142
- export { type PageMetadataInput, generatePageMetadata, generatePreviewMetadata };
@@ -1,142 +1,15 @@
1
- import { a as LoadPageResult } from './loadPage-DP3nrHBi.js';
2
- import { S as SiteResponse } from './types-BvcJU7zk.js';
3
- import 'react/jsx-runtime';
4
- import 'react';
5
- import './schema-Z6-afHJG.js';
6
- import 'zod';
7
- import './core-DsNWrl3o.js';
1
+ export { P as PageMetadataInput, g as generatePageMetadata, a as generatePreviewMetadata } from './index-BTwWvSBu.js';
2
+ import './loadPage-DP3nrHBi.js';
3
+ import './types-BvcJU7zk.js';
8
4
  import './types-CVykEqXN.js';
9
5
  import '@riverbankcms/ai';
6
+ import './schema-Z6-afHJG.js';
7
+ import 'zod';
10
8
  import './link-DjxLyC82.js';
11
9
  import '@riverbankcms/media-storage-supabase';
12
10
  import '@riverbankcms/db';
11
+ import 'react/jsx-runtime';
12
+ import 'react';
13
+ import './core-DsNWrl3o.js';
13
14
  import './types-DuQCNVV0.js';
14
15
  import './blockKinds-B6MWzNWp.js';
15
-
16
- /**
17
- * Metadata generation helper for Next.js pages
18
- *
19
- * Generates SEO-optimized metadata from Builder page data for use in
20
- * Next.js generateMetadata() functions.
21
- */
22
-
23
- /**
24
- * Next.js Metadata type
25
- * Simplified version to avoid requiring Next.js as a dependency
26
- */
27
- type Metadata = {
28
- title?: string;
29
- description?: string;
30
- alternates?: {
31
- canonical?: string;
32
- };
33
- openGraph?: {
34
- title?: string;
35
- description?: string;
36
- url?: string;
37
- siteName?: string;
38
- type?: string;
39
- images?: Array<{
40
- url: string;
41
- alt?: string;
42
- }>;
43
- };
44
- twitter?: {
45
- card?: string;
46
- title?: string;
47
- description?: string;
48
- images?: string[];
49
- };
50
- robots?: {
51
- index?: boolean;
52
- follow?: boolean;
53
- };
54
- verification?: {
55
- google?: string;
56
- };
57
- };
58
- type PageMetadataInput = {
59
- /**
60
- * Page data from loadPage() or custom page object
61
- */
62
- page: LoadPageResult['page'] | {
63
- name: string;
64
- purpose?: string;
65
- };
66
- /**
67
- * Site data from client.getSite()
68
- */
69
- site: SiteResponse['site'];
70
- /**
71
- * Current URL path (e.g., '/about', '/blog/post-1')
72
- */
73
- path: string;
74
- /**
75
- * Full site URL for canonical and OG URLs
76
- * Example: 'https://example.com'
77
- */
78
- siteUrl: string;
79
- /**
80
- * Optional custom metadata overrides
81
- */
82
- overrides?: {
83
- title?: string;
84
- description?: string;
85
- ogImage?: string;
86
- canonicalUrl?: string;
87
- robots?: {
88
- index?: boolean;
89
- follow?: boolean;
90
- };
91
- };
92
- /**
93
- * Optional Google site verification token
94
- */
95
- googleSiteVerification?: string;
96
- };
97
- /**
98
- * Generate Next.js Metadata object from Builder page data
99
- *
100
- * @example
101
- * ```tsx
102
- * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
103
- * import { loadPage } from '@riverbankcms/sdk';
104
- *
105
- * export async function generateMetadata({ params }) {
106
- * const pageData = await loadPage({ client, siteId, path: params.slug });
107
- * const siteData = await client.getSite({ id: siteId });
108
- *
109
- * return generatePageMetadata({
110
- * page: pageData.page,
111
- * site: siteData.site,
112
- * path: params.slug,
113
- * siteUrl: 'https://example.com',
114
- * });
115
- * }
116
- * ```
117
- */
118
- declare function generatePageMetadata(input: PageMetadataInput): Metadata;
119
- /**
120
- * Generate metadata for preview/staging environments
121
- *
122
- * This helper adds noindex/nofollow robots tags to prevent search engines
123
- * from indexing preview or staging URLs.
124
- *
125
- * @example
126
- * ```tsx
127
- * export async function generateMetadata({ params }) {
128
- * const pageData = await loadPage({ client, siteId, path: params.slug });
129
- * const isPreview = process.env.VERCEL_ENV !== 'production';
130
- *
131
- * return generatePreviewMetadata({
132
- * page: pageData.page,
133
- * site: siteData.site,
134
- * path: params.slug,
135
- * siteUrl: 'https://example.com',
136
- * });
137
- * }
138
- * ```
139
- */
140
- declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
141
-
142
- export { type PageMetadataInput, generatePageMetadata, generatePreviewMetadata };
@@ -1,70 +1,10 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }require('./chunk-DGUM43GV.js');
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- // src/metadata/generatePageMetadata.ts
4
- function generatePageMetadata(input) {
5
- const { page, site, path, siteUrl, overrides, googleSiteVerification } = input;
6
- const pageTitle = _nullishCoalesce(_optionalChain([overrides, 'optionalAccess', _ => _.title]), () => ( page.name));
7
- const fullTitle = pageTitle === site.title ? pageTitle : `${pageTitle} | ${site.title}`;
8
- const description = _nullishCoalesce(_optionalChain([overrides, 'optionalAccess', _2 => _2.description]), () => ( page.purpose));
9
- const canonicalUrl = _nullishCoalesce(_optionalChain([overrides, 'optionalAccess', _3 => _3.canonicalUrl]), () => ( `${siteUrl}${path}`));
10
- const fullUrl = `${siteUrl}${path}`;
11
- const metadata = {
12
- title: fullTitle,
13
- description: _nullishCoalesce(description, () => ( void 0)),
14
- alternates: {
15
- canonical: canonicalUrl
16
- },
17
- openGraph: {
18
- title: pageTitle,
19
- description: _nullishCoalesce(description, () => ( void 0)),
20
- url: fullUrl,
21
- siteName: site.title,
22
- type: "website",
23
- ..._optionalChain([overrides, 'optionalAccess', _4 => _4.ogImage]) ? {
24
- images: [
25
- {
26
- url: overrides.ogImage,
27
- alt: pageTitle
28
- }
29
- ]
30
- } : {}
31
- },
32
- twitter: {
33
- card: "summary_large_image",
34
- title: pageTitle,
35
- description: _nullishCoalesce(description, () => ( void 0)),
36
- ..._optionalChain([overrides, 'optionalAccess', _5 => _5.ogImage]) ? {
37
- images: [overrides.ogImage]
38
- } : {}
39
- }
40
- };
41
- if (_optionalChain([overrides, 'optionalAccess', _6 => _6.robots])) {
42
- metadata.robots = {
43
- index: _nullishCoalesce(overrides.robots.index, () => ( true)),
44
- follow: _nullishCoalesce(overrides.robots.follow, () => ( true))
45
- };
46
- }
47
- if (googleSiteVerification) {
48
- metadata.verification = {
49
- google: googleSiteVerification
50
- };
51
- }
52
- return metadata;
53
- }
54
- function generatePreviewMetadata(input) {
55
- return generatePageMetadata({
56
- ...input,
57
- overrides: {
58
- ...input.overrides,
59
- robots: {
60
- index: false,
61
- follow: false
62
- }
63
- }
64
- });
65
- }
66
3
 
4
+ var _chunkBNQV3PXPjs = require('./chunk-BNQV3PXP.js');
5
+ require('./chunk-DGUM43GV.js');
67
6
 
68
7
 
69
- exports.generatePageMetadata = generatePageMetadata; exports.generatePreviewMetadata = generatePreviewMetadata;
8
+
9
+ exports.generatePageMetadata = _chunkBNQV3PXPjs.generatePageMetadata; exports.generatePreviewMetadata = _chunkBNQV3PXPjs.generatePreviewMetadata;
70
10
  //# sourceMappingURL=metadata.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/metadata.js","../../src/metadata/generatePageMetadata.ts"],"names":[],"mappings":"AAAA,gtBAA4B;AAC5B;AACA;AC8GO,SAAS,oBAAA,CAAqB,KAAA,EAAoC;AACvE,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,SAAA,EAAW,uBAAuB,EAAA,EAAI,KAAA;AAGzE,EAAA,MAAM,UAAA,mCAAY,SAAA,2BAAW,OAAA,UAAS,IAAA,CAAK,MAAA;AAC3C,EAAA,MAAM,UAAA,EAAY,UAAA,IAAc,IAAA,CAAK,MAAA,EAAQ,UAAA,EAAY,CAAA,EAAA;AAGN,EAAA;AAGO,EAAA;AACzB,EAAA;AAGN,EAAA;AAClB,IAAA;AACqB,IAAA;AAChB,IAAA;AACC,MAAA;AACb,IAAA;AACW,IAAA;AACF,MAAA;AACqB,MAAA;AACvB,MAAA;AACU,MAAA;AACT,MAAA;AAEF,MAAA;AACU,QAAA;AACN,UAAA;AACiB,YAAA;AACV,YAAA;AACP,UAAA;AACF,QAAA;AAED,MAAA;AACP,IAAA;AACS,IAAA;AACD,MAAA;AACC,MAAA;AACqB,MAAA;AAExB,MAAA;AAC4B,QAAA;AAE3B,MAAA;AACP,IAAA;AACF,EAAA;AAGuB,EAAA;AACH,IAAA;AACiB,MAAA;AACE,MAAA;AACrC,IAAA;AACF,EAAA;AAG4B,EAAA;AACF,IAAA;AACd,MAAA;AACV,IAAA;AACF,EAAA;AAEO,EAAA;AACT;AAuB4E;AAC9C,EAAA;AACvB,IAAA;AACQ,IAAA;AACA,MAAA;AACD,MAAA;AACC,QAAA;AACC,QAAA;AACV,MAAA;AACF,IAAA;AACD,EAAA;AACH;ADnJ4D;AACA;AACA;AACA","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/metadata.js","sourcesContent":[null,"/**\n * Metadata generation helper for Next.js pages\n *\n * Generates SEO-optimized metadata from Builder page data for use in\n * Next.js generateMetadata() functions.\n */\n\nimport type { LoadPageResult } from '../rendering/helpers/loadPage';\nimport type { SiteResponse } from '../client/types';\n\n/**\n * Next.js Metadata type\n * Simplified version to avoid requiring Next.js as a dependency\n */\nexport type Metadata = {\n title?: string;\n description?: string;\n alternates?: {\n canonical?: string;\n };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n type?: string;\n images?: Array<{\n url: string;\n alt?: string;\n }>;\n };\n twitter?: {\n card?: string;\n title?: string;\n description?: string;\n images?: string[];\n };\n robots?: {\n index?: boolean;\n follow?: boolean;\n };\n verification?: {\n google?: string;\n };\n};\n\nexport type PageMetadataInput = {\n /**\n * Page data from loadPage() or custom page object\n */\n page: LoadPageResult['page'] | {\n name: string;\n purpose?: string;\n };\n\n /**\n * Site data from client.getSite()\n */\n site: SiteResponse['site'];\n\n /**\n * Current URL path (e.g., '/about', '/blog/post-1')\n */\n path: string;\n\n /**\n * Full site URL for canonical and OG URLs\n * Example: 'https://example.com'\n */\n siteUrl: string;\n\n /**\n * Optional custom metadata overrides\n */\n overrides?: {\n title?: string;\n description?: string;\n ogImage?: string;\n canonicalUrl?: string;\n robots?: {\n index?: boolean;\n follow?: boolean;\n };\n };\n\n /**\n * Optional Google site verification token\n */\n googleSiteVerification?: string;\n};\n\n/**\n * Generate Next.js Metadata object from Builder page data\n *\n * @example\n * ```tsx\n * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';\n * import { loadPage } from '@riverbankcms/sdk';\n *\n * export async function generateMetadata({ params }) {\n * const pageData = await loadPage({ client, siteId, path: params.slug });\n * const siteData = await client.getSite({ id: siteId });\n *\n * return generatePageMetadata({\n * page: pageData.page,\n * site: siteData.site,\n * path: params.slug,\n * siteUrl: 'https://example.com',\n * });\n * }\n * ```\n */\nexport function generatePageMetadata(input: PageMetadataInput): Metadata {\n const { page, site, path, siteUrl, overrides, googleSiteVerification } = input;\n\n // Build page title\n const pageTitle = overrides?.title ?? page.name;\n const fullTitle = pageTitle === site.title ? pageTitle : `${pageTitle} | ${site.title}`;\n\n // Use page purpose as description fallback\n const description = overrides?.description ?? page.purpose;\n\n // Build full URLs\n const canonicalUrl = overrides?.canonicalUrl ?? `${siteUrl}${path}`;\n const fullUrl = `${siteUrl}${path}`;\n\n // Build metadata object\n const metadata: Metadata = {\n title: fullTitle,\n description: description ?? undefined,\n alternates: {\n canonical: canonicalUrl,\n },\n openGraph: {\n title: pageTitle,\n description: description ?? undefined,\n url: fullUrl,\n siteName: site.title,\n type: 'website',\n ...(overrides?.ogImage\n ? {\n images: [\n {\n url: overrides.ogImage,\n alt: pageTitle,\n },\n ],\n }\n : {}),\n },\n twitter: {\n card: 'summary_large_image',\n title: pageTitle,\n description: description ?? undefined,\n ...(overrides?.ogImage\n ? {\n images: [overrides.ogImage],\n }\n : {}),\n },\n };\n\n // Add robots meta if specified\n if (overrides?.robots) {\n metadata.robots = {\n index: overrides.robots.index ?? true,\n follow: overrides.robots.follow ?? true,\n };\n }\n\n // Add Google site verification if provided\n if (googleSiteVerification) {\n metadata.verification = {\n google: googleSiteVerification,\n };\n }\n\n return metadata;\n}\n\n/**\n * Generate metadata for preview/staging environments\n *\n * This helper adds noindex/nofollow robots tags to prevent search engines\n * from indexing preview or staging URLs.\n *\n * @example\n * ```tsx\n * export async function generateMetadata({ params }) {\n * const pageData = await loadPage({ client, siteId, path: params.slug });\n * const isPreview = process.env.VERCEL_ENV !== 'production';\n *\n * return generatePreviewMetadata({\n * page: pageData.page,\n * site: siteData.site,\n * path: params.slug,\n * siteUrl: 'https://example.com',\n * });\n * }\n * ```\n */\nexport function generatePreviewMetadata(input: PageMetadataInput): Metadata {\n return generatePageMetadata({\n ...input,\n overrides: {\n ...input.overrides,\n robots: {\n index: false,\n follow: false,\n },\n },\n });\n}\n"]}
1
+ {"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/metadata.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,iJAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/metadata.js"}
@@ -1,68 +1,8 @@
1
+ import {
2
+ generatePageMetadata,
3
+ generatePreviewMetadata
4
+ } from "./chunk-SWYWZT3L.mjs";
1
5
  import "./chunk-BJTO5JO5.mjs";
2
-
3
- // src/metadata/generatePageMetadata.ts
4
- function generatePageMetadata(input) {
5
- const { page, site, path, siteUrl, overrides, googleSiteVerification } = input;
6
- const pageTitle = overrides?.title ?? page.name;
7
- const fullTitle = pageTitle === site.title ? pageTitle : `${pageTitle} | ${site.title}`;
8
- const description = overrides?.description ?? page.purpose;
9
- const canonicalUrl = overrides?.canonicalUrl ?? `${siteUrl}${path}`;
10
- const fullUrl = `${siteUrl}${path}`;
11
- const metadata = {
12
- title: fullTitle,
13
- description: description ?? void 0,
14
- alternates: {
15
- canonical: canonicalUrl
16
- },
17
- openGraph: {
18
- title: pageTitle,
19
- description: description ?? void 0,
20
- url: fullUrl,
21
- siteName: site.title,
22
- type: "website",
23
- ...overrides?.ogImage ? {
24
- images: [
25
- {
26
- url: overrides.ogImage,
27
- alt: pageTitle
28
- }
29
- ]
30
- } : {}
31
- },
32
- twitter: {
33
- card: "summary_large_image",
34
- title: pageTitle,
35
- description: description ?? void 0,
36
- ...overrides?.ogImage ? {
37
- images: [overrides.ogImage]
38
- } : {}
39
- }
40
- };
41
- if (overrides?.robots) {
42
- metadata.robots = {
43
- index: overrides.robots.index ?? true,
44
- follow: overrides.robots.follow ?? true
45
- };
46
- }
47
- if (googleSiteVerification) {
48
- metadata.verification = {
49
- google: googleSiteVerification
50
- };
51
- }
52
- return metadata;
53
- }
54
- function generatePreviewMetadata(input) {
55
- return generatePageMetadata({
56
- ...input,
57
- overrides: {
58
- ...input.overrides,
59
- robots: {
60
- index: false,
61
- follow: false
62
- }
63
- }
64
- });
65
- }
66
6
  export {
67
7
  generatePageMetadata,
68
8
  generatePreviewMetadata
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/metadata/generatePageMetadata.ts"],"sourcesContent":["/**\n * Metadata generation helper for Next.js pages\n *\n * Generates SEO-optimized metadata from Builder page data for use in\n * Next.js generateMetadata() functions.\n */\n\nimport type { LoadPageResult } from '../rendering/helpers/loadPage';\nimport type { SiteResponse } from '../client/types';\n\n/**\n * Next.js Metadata type\n * Simplified version to avoid requiring Next.js as a dependency\n */\nexport type Metadata = {\n title?: string;\n description?: string;\n alternates?: {\n canonical?: string;\n };\n openGraph?: {\n title?: string;\n description?: string;\n url?: string;\n siteName?: string;\n type?: string;\n images?: Array<{\n url: string;\n alt?: string;\n }>;\n };\n twitter?: {\n card?: string;\n title?: string;\n description?: string;\n images?: string[];\n };\n robots?: {\n index?: boolean;\n follow?: boolean;\n };\n verification?: {\n google?: string;\n };\n};\n\nexport type PageMetadataInput = {\n /**\n * Page data from loadPage() or custom page object\n */\n page: LoadPageResult['page'] | {\n name: string;\n purpose?: string;\n };\n\n /**\n * Site data from client.getSite()\n */\n site: SiteResponse['site'];\n\n /**\n * Current URL path (e.g., '/about', '/blog/post-1')\n */\n path: string;\n\n /**\n * Full site URL for canonical and OG URLs\n * Example: 'https://example.com'\n */\n siteUrl: string;\n\n /**\n * Optional custom metadata overrides\n */\n overrides?: {\n title?: string;\n description?: string;\n ogImage?: string;\n canonicalUrl?: string;\n robots?: {\n index?: boolean;\n follow?: boolean;\n };\n };\n\n /**\n * Optional Google site verification token\n */\n googleSiteVerification?: string;\n};\n\n/**\n * Generate Next.js Metadata object from Builder page data\n *\n * @example\n * ```tsx\n * import { generatePageMetadata } from '@riverbankcms/sdk/metadata';\n * import { loadPage } from '@riverbankcms/sdk';\n *\n * export async function generateMetadata({ params }) {\n * const pageData = await loadPage({ client, siteId, path: params.slug });\n * const siteData = await client.getSite({ id: siteId });\n *\n * return generatePageMetadata({\n * page: pageData.page,\n * site: siteData.site,\n * path: params.slug,\n * siteUrl: 'https://example.com',\n * });\n * }\n * ```\n */\nexport function generatePageMetadata(input: PageMetadataInput): Metadata {\n const { page, site, path, siteUrl, overrides, googleSiteVerification } = input;\n\n // Build page title\n const pageTitle = overrides?.title ?? page.name;\n const fullTitle = pageTitle === site.title ? pageTitle : `${pageTitle} | ${site.title}`;\n\n // Use page purpose as description fallback\n const description = overrides?.description ?? page.purpose;\n\n // Build full URLs\n const canonicalUrl = overrides?.canonicalUrl ?? `${siteUrl}${path}`;\n const fullUrl = `${siteUrl}${path}`;\n\n // Build metadata object\n const metadata: Metadata = {\n title: fullTitle,\n description: description ?? undefined,\n alternates: {\n canonical: canonicalUrl,\n },\n openGraph: {\n title: pageTitle,\n description: description ?? undefined,\n url: fullUrl,\n siteName: site.title,\n type: 'website',\n ...(overrides?.ogImage\n ? {\n images: [\n {\n url: overrides.ogImage,\n alt: pageTitle,\n },\n ],\n }\n : {}),\n },\n twitter: {\n card: 'summary_large_image',\n title: pageTitle,\n description: description ?? undefined,\n ...(overrides?.ogImage\n ? {\n images: [overrides.ogImage],\n }\n : {}),\n },\n };\n\n // Add robots meta if specified\n if (overrides?.robots) {\n metadata.robots = {\n index: overrides.robots.index ?? true,\n follow: overrides.robots.follow ?? true,\n };\n }\n\n // Add Google site verification if provided\n if (googleSiteVerification) {\n metadata.verification = {\n google: googleSiteVerification,\n };\n }\n\n return metadata;\n}\n\n/**\n * Generate metadata for preview/staging environments\n *\n * This helper adds noindex/nofollow robots tags to prevent search engines\n * from indexing preview or staging URLs.\n *\n * @example\n * ```tsx\n * export async function generateMetadata({ params }) {\n * const pageData = await loadPage({ client, siteId, path: params.slug });\n * const isPreview = process.env.VERCEL_ENV !== 'production';\n *\n * return generatePreviewMetadata({\n * page: pageData.page,\n * site: siteData.site,\n * path: params.slug,\n * siteUrl: 'https://example.com',\n * });\n * }\n * ```\n */\nexport function generatePreviewMetadata(input: PageMetadataInput): Metadata {\n return generatePageMetadata({\n ...input,\n overrides: {\n ...input.overrides,\n robots: {\n index: false,\n follow: false,\n },\n },\n });\n}\n"],"mappings":";;;AAgHO,SAAS,qBAAqB,OAAoC;AACvE,QAAM,EAAE,MAAM,MAAM,MAAM,SAAS,WAAW,uBAAuB,IAAI;AAGzE,QAAM,YAAY,WAAW,SAAS,KAAK;AAC3C,QAAM,YAAY,cAAc,KAAK,QAAQ,YAAY,GAAG,SAAS,MAAM,KAAK,KAAK;AAGrF,QAAM,cAAc,WAAW,eAAe,KAAK;AAGnD,QAAM,eAAe,WAAW,gBAAgB,GAAG,OAAO,GAAG,IAAI;AACjE,QAAM,UAAU,GAAG,OAAO,GAAG,IAAI;AAGjC,QAAM,WAAqB;AAAA,IACzB,OAAO;AAAA,IACP,aAAa,eAAe;AAAA,IAC5B,YAAY;AAAA,MACV,WAAW;AAAA,IACb;AAAA,IACA,WAAW;AAAA,MACT,OAAO;AAAA,MACP,aAAa,eAAe;AAAA,MAC5B,KAAK;AAAA,MACL,UAAU,KAAK;AAAA,MACf,MAAM;AAAA,MACN,GAAI,WAAW,UACX;AAAA,QACE,QAAQ;AAAA,UACN;AAAA,YACE,KAAK,UAAU;AAAA,YACf,KAAK;AAAA,UACP;AAAA,QACF;AAAA,MACF,IACA,CAAC;AAAA,IACP;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa,eAAe;AAAA,MAC5B,GAAI,WAAW,UACX;AAAA,QACE,QAAQ,CAAC,UAAU,OAAO;AAAA,MAC5B,IACA,CAAC;AAAA,IACP;AAAA,EACF;AAGA,MAAI,WAAW,QAAQ;AACrB,aAAS,SAAS;AAAA,MAChB,OAAO,UAAU,OAAO,SAAS;AAAA,MACjC,QAAQ,UAAU,OAAO,UAAU;AAAA,IACrC;AAAA,EACF;AAGA,MAAI,wBAAwB;AAC1B,aAAS,eAAe;AAAA,MACtB,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,SAAO;AACT;AAuBO,SAAS,wBAAwB,OAAoC;AAC1E,SAAO,qBAAqB;AAAA,IAC1B,GAAG;AAAA,IACH,WAAW;AAAA,MACT,GAAG,MAAM;AAAA,MACT,QAAQ;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF,CAAC;AACH;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}