@softure-ai/blog 0.1.7 → 0.1.9

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 (140) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +98 -17
  3. package/dist/cli/run.js +1 -1
  4. package/dist/cli/run.js.map +1 -1
  5. package/dist/cli/skill.d.ts.map +1 -1
  6. package/dist/cli/skill.js +2 -1
  7. package/dist/cli/skill.js.map +1 -1
  8. package/dist/db/articles.d.ts.map +1 -1
  9. package/dist/db/articles.js +7 -3
  10. package/dist/db/articles.js.map +1 -1
  11. package/dist/db/history.d.ts +7 -4
  12. package/dist/db/history.d.ts.map +1 -1
  13. package/dist/db/history.js +8 -4
  14. package/dist/db/history.js.map +1 -1
  15. package/dist/index.d.ts +41 -5
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/messages/en.d.ts +2 -0
  19. package/dist/messages/en.d.ts.map +1 -1
  20. package/dist/messages/en.js +2 -0
  21. package/dist/messages/en.js.map +1 -1
  22. package/dist/messages/index.d.ts +2 -0
  23. package/dist/messages/index.d.ts.map +1 -1
  24. package/dist/messages/pl.d.ts +2 -0
  25. package/dist/messages/pl.d.ts.map +1 -1
  26. package/dist/messages/pl.js +2 -0
  27. package/dist/messages/pl.js.map +1 -1
  28. package/dist/next/context.d.ts.map +1 -1
  29. package/dist/next/context.js +1 -0
  30. package/dist/next/context.js.map +1 -1
  31. package/dist/next/discovery.js +2 -2
  32. package/dist/next/discovery.js.map +1 -1
  33. package/dist/next/index.d.ts +2 -0
  34. package/dist/next/index.d.ts.map +1 -1
  35. package/dist/next/index.js +2 -0
  36. package/dist/next/index.js.map +1 -1
  37. package/dist/next/json-ld.d.ts +13 -0
  38. package/dist/next/json-ld.d.ts.map +1 -0
  39. package/dist/next/json-ld.js +50 -0
  40. package/dist/next/json-ld.js.map +1 -0
  41. package/dist/next/metadata.d.ts +18 -0
  42. package/dist/next/metadata.d.ts.map +1 -0
  43. package/dist/next/metadata.js +86 -0
  44. package/dist/next/metadata.js.map +1 -0
  45. package/dist/next/pages.d.ts.map +1 -1
  46. package/dist/next/pages.js +17 -78
  47. package/dist/next/pages.js.map +1 -1
  48. package/dist/options.d.ts +53 -7
  49. package/dist/options.d.ts.map +1 -1
  50. package/dist/options.js +58 -0
  51. package/dist/options.js.map +1 -1
  52. package/dist/pages/body.d.ts +1 -1
  53. package/dist/pages/body.d.ts.map +1 -1
  54. package/dist/pages/body.js +1 -0
  55. package/dist/pages/body.js.map +1 -1
  56. package/dist/pages/index.d.ts +3 -3
  57. package/dist/pages/index.d.ts.map +1 -1
  58. package/dist/pages/index.js +2 -2
  59. package/dist/pages/index.js.map +1 -1
  60. package/dist/pages/json-ld.d.ts +11 -0
  61. package/dist/pages/json-ld.d.ts.map +1 -1
  62. package/dist/pages/json-ld.js +14 -7
  63. package/dist/pages/json-ld.js.map +1 -1
  64. package/dist/pages/listing.d.ts +9 -3
  65. package/dist/pages/listing.d.ts.map +1 -1
  66. package/dist/pages/listing.js +7 -5
  67. package/dist/pages/listing.js.map +1 -1
  68. package/dist/pages/redirects.d.ts +22 -6
  69. package/dist/pages/redirects.d.ts.map +1 -1
  70. package/dist/pages/redirects.js +5 -2
  71. package/dist/pages/redirects.js.map +1 -1
  72. package/dist/proxy/index.d.ts.map +1 -1
  73. package/dist/proxy/index.js +8 -1
  74. package/dist/proxy/index.js.map +1 -1
  75. package/dist/quality/index.d.ts +1 -1
  76. package/dist/quality/index.d.ts.map +1 -1
  77. package/dist/quality/index.js.map +1 -1
  78. package/dist/quality/link-targets.d.ts.map +1 -1
  79. package/dist/quality/link-targets.js +6 -5
  80. package/dist/quality/link-targets.js.map +1 -1
  81. package/dist/quality/options.d.ts +3 -3
  82. package/dist/quality/options.d.ts.map +1 -1
  83. package/dist/quality/options.js +6 -3
  84. package/dist/quality/options.js.map +1 -1
  85. package/dist/quality/settings.d.ts +11 -0
  86. package/dist/quality/settings.d.ts.map +1 -1
  87. package/dist/quality/settings.js +7 -1
  88. package/dist/quality/settings.js.map +1 -1
  89. package/dist/render/index.d.ts +1 -1
  90. package/dist/render/index.d.ts.map +1 -1
  91. package/dist/render/index.js +1 -1
  92. package/dist/render/index.js.map +1 -1
  93. package/dist/render/render-article.d.ts +8 -0
  94. package/dist/render/render-article.d.ts.map +1 -1
  95. package/dist/render/render-article.js +14 -7
  96. package/dist/render/render-article.js.map +1 -1
  97. package/dist/server/index.d.ts +1 -1
  98. package/dist/server/index.d.ts.map +1 -1
  99. package/dist/server/index.js +1 -1
  100. package/dist/server/index.js.map +1 -1
  101. package/dist/server/options.d.ts +9 -1
  102. package/dist/server/options.d.ts.map +1 -1
  103. package/dist/server/options.js +7 -1
  104. package/dist/server/options.js.map +1 -1
  105. package/dist/ui/blog-listing.js +2 -2
  106. package/dist/ui/blog-listing.js.map +1 -1
  107. package/dist/ui/page-context.d.ts +2 -0
  108. package/dist/ui/page-context.d.ts.map +1 -1
  109. package/module.json +1 -1
  110. package/package.json +1 -1
  111. package/src/cli/run.ts +1 -1
  112. package/src/cli/skill.ts +2 -1
  113. package/src/db/articles.ts +11 -6
  114. package/src/db/history.ts +15 -8
  115. package/src/index.ts +1 -1
  116. package/src/messages/en.ts +2 -0
  117. package/src/messages/pl.ts +2 -0
  118. package/src/next/context.ts +1 -0
  119. package/src/next/discovery.ts +2 -2
  120. package/src/next/index.ts +9 -0
  121. package/src/next/json-ld.ts +55 -0
  122. package/src/next/metadata.ts +105 -0
  123. package/src/next/pages.tsx +17 -83
  124. package/src/options.ts +68 -1
  125. package/src/pages/body.ts +2 -1
  126. package/src/pages/index.ts +6 -1
  127. package/src/pages/json-ld.ts +29 -8
  128. package/src/pages/listing.ts +18 -5
  129. package/src/pages/redirects.ts +27 -3
  130. package/src/proxy/index.ts +9 -1
  131. package/src/quality/index.ts +1 -1
  132. package/src/quality/link-targets.ts +6 -5
  133. package/src/quality/options.ts +6 -3
  134. package/src/quality/settings.ts +17 -1
  135. package/src/render/index.ts +2 -0
  136. package/src/render/render-article.ts +22 -7
  137. package/src/server/index.ts +1 -1
  138. package/src/server/options.ts +15 -2
  139. package/src/ui/blog-listing.tsx +2 -2
  140. package/src/ui/page-context.ts +2 -0
package/dist/index.d.ts CHANGED
@@ -68,6 +68,7 @@ export declare const blog: import("@softure-ai/core").ModuleFactory<{
68
68
  };
69
69
  glossary: {
70
70
  title: string;
71
+ termTitleWithBrand: string;
71
72
  description: string;
72
73
  empty: string;
73
74
  explainedIn: string;
@@ -112,7 +113,7 @@ export declare const blog: import("@softure-ai/core").ModuleFactory<{
112
113
  }, import("zod/v4/core").$strict>>;
113
114
  fonts: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
114
115
  name: import("zod").ZodString;
115
- weight: import("zod").ZodDefault<import("zod").ZodCustom<200 | 600 | 700 | 300 | 100 | 400 | 500 | 800 | 900, 200 | 600 | 700 | 300 | 100 | 400 | 500 | 800 | 900>>;
116
+ weight: import("zod").ZodDefault<import("zod").ZodCustom<200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900, 200 | 600 | 700 | 100 | 500 | 300 | 400 | 800 | 900>>;
116
117
  style: import("zod").ZodDefault<import("zod").ZodEnum<{
117
118
  normal: "normal";
118
119
  italic: "italic";
@@ -131,10 +132,45 @@ export declare const blog: import("@softure-ai/core").ModuleFactory<{
131
132
  }, import("zod/v4/core").$strict>>>;
132
133
  blocks: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodCustom<import("./render/render-article.js").BlockPlugin<unknown>, import("./render/render-article.js").BlockPlugin<unknown>>>>;
133
134
  siteHosts: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodString>>;
135
+ externalLinkMarker: import("zod").ZodDefault<import("zod").ZodEnum<{
136
+ "icon-and-text": "icon-and-text";
137
+ text: "text";
138
+ none: "none";
139
+ }>>;
134
140
  images: import("zod").ZodOptional<import("zod").ZodObject<{
135
141
  hosts: import("zod").ZodDefault<import("zod").ZodReadonly<import("zod").ZodArray<import("zod").ZodString>>>;
136
142
  dimensions: import("zod").ZodCustom<(src: string) => import("./render/images.js").ImageDimensions | null, (src: string) => import("./render/images.js").ImageDimensions | null>;
137
143
  }, import("zod/v4/core").$strict>>;
144
+ jsonLd: import("zod").ZodDefault<import("zod").ZodObject<{
145
+ ids: import("zod").ZodDefault<import("zod").ZodObject<{
146
+ article: import("zod").ZodDefault<import("zod").ZodString>;
147
+ term: import("zod").ZodDefault<import("zod").ZodString>;
148
+ glossary: import("zod").ZodDefault<import("zod").ZodString>;
149
+ }, import("zod/v4/core").$strict>>;
150
+ }, import("zod/v4/core").$strict>>;
151
+ anchors: import("zod").ZodDefault<import("zod").ZodObject<{
152
+ cluster: import("zod").ZodDefault<import("zod").ZodString>;
153
+ }, import("zod/v4/core").$strict>>;
154
+ locales: import("zod").ZodDefault<import("zod").ZodObject<{
155
+ en: import("zod").ZodOptional<import("zod").ZodObject<{
156
+ bcp47: import("zod").ZodOptional<import("zod").ZodString>;
157
+ openGraph: import("zod").ZodOptional<import("zod").ZodString>;
158
+ }, import("zod/v4/core").$strict>>;
159
+ pl: import("zod").ZodOptional<import("zod").ZodObject<{
160
+ bcp47: import("zod").ZodOptional<import("zod").ZodString>;
161
+ openGraph: import("zod").ZodOptional<import("zod").ZodString>;
162
+ }, import("zod/v4/core").$strict>>;
163
+ }, import("zod/v4/core").$strict>>;
164
+ gonePage: import("zod").ZodDefault<import("zod").ZodObject<{
165
+ links: import("zod").ZodDefault<import("zod").ZodArray<import("zod").ZodObject<{
166
+ href: import("zod").ZodString;
167
+ label: import("zod").ZodObject<{
168
+ en: import("zod").ZodString;
169
+ pl: import("zod").ZodOptional<import("zod").ZodString>;
170
+ }, import("zod/v4/core").$strict>;
171
+ }, import("zod/v4/core").$strict>>>;
172
+ render: import("zod").ZodOptional<import("zod").ZodCustom<(input: import("./pages/redirects.js").GonePageRenderInput) => string, (input: import("./pages/redirects.js").GonePageRenderInput) => string>>;
173
+ }, import("zod/v4/core").$strict>>;
138
174
  revalidateSeconds: import("zod").ZodDefault<import("zod").ZodNumber>;
139
175
  quality: import("zod").ZodDefault<import("zod").ZodType<false | {
140
176
  language: "en" | "pl";
@@ -182,8 +218,8 @@ export declare const blog: import("@softure-ai/core").ModuleFactory<{
182
218
  };
183
219
  severity: Record<string, "error" | "warning" | "off">;
184
220
  paths: {
185
- articles: string;
186
- terms: string;
221
+ articles?: string | undefined;
222
+ terms?: string | undefined;
187
223
  };
188
224
  ownOrigins: string[];
189
225
  privateRouteSegments: string[];
@@ -290,8 +326,8 @@ export declare const blog: import("@softure-ai/core").ModuleFactory<{
290
326
  };
291
327
  severity: Record<string, "error" | "warning" | "off">;
292
328
  paths: {
293
- articles: string;
294
- terms: string;
329
+ articles?: string | undefined;
330
+ terms?: string | undefined;
295
331
  };
296
332
  ownOrigins: string[];
297
333
  privateRouteSegments: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;CAE1B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAoCf,CAAC;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,2FAA2F;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,SAAS,SAAS,CAAC;AAEhC;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;CAE1B,CAAC;AAEX;;;;;;;GAOG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAoCf,CAAC;AAEH,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,aAAa,GACnB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACnE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC5D,2FAA2F;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -26,7 +26,7 @@ export const BLOG_RATE_LIMIT_BUCKETS = {
26
26
  export const blog = defineModule({
27
27
  manifest: {
28
28
  id: MODULE_ID,
29
- version: "0.1.7",
29
+ version: "0.1.9",
30
30
  // seo is optional: with it the sitemap lists the texts and a publish pings IndexNow. security is
31
31
  // optional too: only the cache refresh route needs it, for its rate limit.
32
32
  dependsOn: { seo: "^0.1.0?", security: "^0.1.0?" },
@@ -47,6 +47,8 @@ export declare const en: {
47
47
  };
48
48
  glossary: {
49
49
  title: string;
50
+ /** A glossary term's page title with the brand: `{title}` the term, `{brand}` the site. */
51
+ termTitleWithBrand: string;
50
52
  description: string;
51
53
  empty: string;
52
54
  explainedIn: string;
@@ -1 +1 @@
1
- {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;QAYX,uCAAuC;;;;;;;;;QASvC,2EAA2E;;;;;QAK3E,2FAA2F;;QAE3F,uDAAuD;;;;;;;;;;;QAWvD,wEAAwE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoCxE,kEAAkE;;;;;;CAMrE,CAAC"}
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;QAYX,uCAAuC;;;;;;;;;QASvC,2EAA2E;;;;;QAK3E,2FAA2F;;QAE3F,uDAAuD;;;;;;;;;;;QAWvD,wEAAwE;;;;;;;;;;QAUxE,2FAA2F;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B3F,kEAAkE;;;;;;CAMrE,CAAC"}
@@ -47,6 +47,8 @@ export const en = {
47
47
  },
48
48
  glossary: {
49
49
  title: "Glossary",
50
+ /** A glossary term's page title with the brand: `{title}` the term, `{brand}` the site. */
51
+ termTitleWithBrand: "{title} | {brand}",
50
52
  description: "Short definitions of the terms the texts use, each with the day it was checked and its sources.",
51
53
  empty: "The first definitions are on their way.",
52
54
  explainedIn: "Explained in these texts",
@@ -1 +1 @@
1
- {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,eAAe;KACtB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,WAAW;KACvB;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,OAAO;QACzB,uCAAuC;QACvC,aAAa,EAAE,mBAAmB;QAClC,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,UAAU;KAC5B;IACD,KAAK,EAAE;QACL,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,gGAAgG;QACjH,2EAA2E;QAC3E,cAAc,EAAE,mBAAmB;QACnC,KAAK,EAAE,mCAAmC;QAC1C,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,YAAY;QACvB,2FAA2F;QAC3F,WAAW,EAAE,oBAAoB;QACjC,uDAAuD;QACvD,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,eAAe;QAC5B,gBAAgB,EAAE,cAAc;QAChC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,SAAS;QAClB,wEAAwE;QACxE,SAAS,EAAE,wBAAwB;QACnC,UAAU,EAAE,wBAAwB;QACpC,eAAe,EAAE,YAAY;QAC7B,YAAY,EAAE,UAAU;QACxB,cAAc,EAAE,+CAA+C;QAC/D,QAAQ,EAAE,WAAW;KACtB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,WAAW,EAAE,iGAAiG;QAC9G,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,WAAW;KACtB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,iGAAiG;QAC9G,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,mFAAmF;QAC5F,UAAU,EAAE,2BAA2B;QACvC,SAAS,EAAE,kJAAkJ;QAC7J,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,oHAAoH;QACjI,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,sIAAsI;QAClJ,gBAAgB,EAAE,aAAa;QAC/B,eAAe,EAAE,4GAA4G;KAC9H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,8BAA8B;QACvC,IAAI,EAAE,8DAA8D;QACpE,IAAI,EAAE,iCAAiC;KACxC;IACD,IAAI,EAAE;QACJ,kEAAkE;QAClE,WAAW,EAAE,mEAAmE;KACjF;IACD,EAAE,EAAE;QACF,GAAG,EAAE,0BAA0B;KAChC;CACF,CAAC"}
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/messages/en.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,eAAe;KACtB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,WAAW;KACvB;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,OAAO;QACzB,uCAAuC;QACvC,aAAa,EAAE,mBAAmB;QAClC,UAAU,EAAE,cAAc;QAC1B,aAAa,EAAE,sBAAsB;QACrC,eAAe,EAAE,UAAU;KAC5B;IACD,KAAK,EAAE;QACL,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,gGAAgG;QACjH,2EAA2E;QAC3E,cAAc,EAAE,mBAAmB;QACnC,KAAK,EAAE,mCAAmC;QAC1C,YAAY,EAAE,aAAa;QAC3B,SAAS,EAAE,YAAY;QACvB,2FAA2F;QAC3F,WAAW,EAAE,oBAAoB;QACjC,uDAAuD;QACvD,SAAS,EAAE,gBAAgB;QAC3B,WAAW,EAAE,aAAa;QAC1B,SAAS,EAAE,WAAW;QACtB,OAAO,EAAE,SAAS;QAClB,WAAW,EAAE,eAAe;QAC5B,gBAAgB,EAAE,cAAc;QAChC,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,UAAU;QACnB,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,SAAS;QAClB,wEAAwE;QACxE,SAAS,EAAE,wBAAwB;QACnC,UAAU,EAAE,wBAAwB;QACpC,eAAe,EAAE,YAAY;QAC7B,YAAY,EAAE,UAAU;QACxB,cAAc,EAAE,+CAA+C;QAC/D,QAAQ,EAAE,WAAW;KACtB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,2FAA2F;QAC3F,kBAAkB,EAAE,mBAAmB;QACvC,WAAW,EAAE,iGAAiG;QAC9G,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,0BAA0B;QACvC,QAAQ,EAAE,WAAW;KACtB;IACD,MAAM,EAAE;QACN,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE,iGAAiG;QAC9G,QAAQ,EAAE,YAAY;QACtB,OAAO,EAAE,mFAAmF;QAC5F,UAAU,EAAE,2BAA2B;QACvC,SAAS,EAAE,kJAAkJ;QAC7J,YAAY,EAAE,SAAS;QACvB,WAAW,EAAE,oHAAoH;QACjI,WAAW,EAAE,0BAA0B;QACvC,UAAU,EAAE,sIAAsI;QAClJ,gBAAgB,EAAE,aAAa;QAC/B,eAAe,EAAE,4GAA4G;KAC9H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,8BAA8B;QACvC,IAAI,EAAE,8DAA8D;QACpE,IAAI,EAAE,iCAAiC;KACxC;IACD,IAAI,EAAE;QACJ,kEAAkE;QAClE,WAAW,EAAE,mEAAmE;KACjF;IACD,EAAE,EAAE;QACF,GAAG,EAAE,0BAA0B;KAChC;CACF,CAAC"}
@@ -46,6 +46,7 @@ export declare const blogMessages: {
46
46
  };
47
47
  glossary: {
48
48
  title: string;
49
+ termTitleWithBrand: string;
49
50
  description: string;
50
51
  empty: string;
51
52
  explainedIn: string;
@@ -122,6 +123,7 @@ export declare const blogMessages: {
122
123
  };
123
124
  glossary: {
124
125
  title: string;
126
+ termTitleWithBrand: string;
125
127
  description: string;
126
128
  empty: string;
127
129
  explainedIn: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAG7B,MAAM,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC;AAErC,6EAA6E;AAC7E,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/messages/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAC;AAG7B,MAAM,MAAM,YAAY,GAAG,OAAO,EAAE,CAAC;AAErC,6EAA6E;AAC7E,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAa,CAAC"}
@@ -42,6 +42,8 @@ export declare const pl: {
42
42
  };
43
43
  glossary: {
44
44
  title: string;
45
+ /** A glossary term's page title with the brand: `{title}` the term, `{brand}` the site. */
46
+ termTitleWithBrand: string;
45
47
  description: string;
46
48
  empty: string;
47
49
  explainedIn: string;
@@ -1 +1 @@
1
- {"version":3,"file":"pl.d.ts","sourceRoot":"","sources":["../../src/messages/pl.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsEX,kEAAkE;;;;;;CAMrE,CAAC"}
1
+ {"version":3,"file":"pl.d.ts","sourceRoot":"","sources":["../../src/messages/pl.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4CX,2FAA2F;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B3F,kEAAkE;;;;;;CAMrE,CAAC"}
@@ -42,6 +42,8 @@ export const pl = {
42
42
  },
43
43
  glossary: {
44
44
  title: "Słownik pojęć",
45
+ /** A glossary term's page title with the brand: `{title}` the term, `{brand}` the site. */
46
+ termTitleWithBrand: "{title} | {brand}",
45
47
  description: "Krótkie definicje pojęć, których używają teksty, każda z datą sprawdzenia i źródłami.",
46
48
  empty: "Pierwsze definicje są w drodze.",
47
49
  explainedIn: "Rozwijamy w tekstach",
@@ -1 +1 @@
1
- {"version":3,"file":"pl.js","sourceRoot":"","sources":["../../src/messages/pl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,oBAAoB;KAC3B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,UAAU;KACtB;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,UAAU;QAC5B,aAAa,EAAE,kBAAkB;QACjC,UAAU,EAAE,gBAAgB;QAC5B,aAAa,EAAE,8BAA8B;QAC7C,eAAe,EAAE,aAAa;KAC/B;IACD,KAAK,EAAE;QACL,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,sFAAsF;QACvG,cAAc,EAAE,mBAAmB;QACnC,KAAK,EAAE,8BAA8B;QACrC,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,iBAAiB;QAC5B,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,aAAa;QAC1B,gBAAgB,EAAE,eAAe;QACjC,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,WAAW;QACpB,GAAG,EAAE,sBAAsB;QAC3B,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,qBAAqB;QACjC,eAAe,EAAE,cAAc;QAC/B,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,kDAAkD;QAClE,QAAQ,EAAE,gBAAgB;KAC3B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,uFAAuF;QACpG,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,mBAAmB;KAC9B;IACD,MAAM,EAAE;QACN,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,4FAA4F;QACzG,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,qEAAqE;QAC9E,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,uJAAuJ;QAClK,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,+HAA+H;QAC5I,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE,uJAAuJ;QACnK,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,4GAA4G;KAC9H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,uDAAuD;QAC7D,IAAI,EAAE,kCAAkC;KACzC;IACD,IAAI,EAAE;QACJ,kEAAkE;QAClE,WAAW,EAAE,mEAAmE;KACjF;IACD,EAAE,EAAE;QACF,GAAG,EAAE,iBAAiB;KACvB;CACF,CAAC"}
1
+ {"version":3,"file":"pl.js","sourceRoot":"","sources":["../../src/messages/pl.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,KAAK,EAAE;QACL,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,oBAAoB;KAC3B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,OAAO;QACd,SAAS,EAAE,cAAc;QACzB,SAAS,EAAE,UAAU;KACtB;IACD,MAAM,EAAE;QACN,gBAAgB,EAAE,UAAU;QAC5B,aAAa,EAAE,kBAAkB;QACjC,UAAU,EAAE,gBAAgB;QAC5B,aAAa,EAAE,8BAA8B;QAC7C,eAAe,EAAE,aAAa;KAC/B;IACD,KAAK,EAAE;QACL,SAAS,EAAE,MAAM;QACjB,eAAe,EAAE,sFAAsF;QACvG,cAAc,EAAE,mBAAmB;QACnC,KAAK,EAAE,8BAA8B;QACrC,YAAY,EAAE,kBAAkB;QAChC,SAAS,EAAE,iBAAiB;QAC5B,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,cAAc;QACzB,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,aAAa;QAC1B,gBAAgB,EAAE,eAAe;QACjC,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,WAAW;QACpB,GAAG,EAAE,sBAAsB;QAC3B,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,kBAAkB;QAC7B,UAAU,EAAE,qBAAqB;QACjC,eAAe,EAAE,cAAc;QAC/B,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,kDAAkD;QAClE,QAAQ,EAAE,gBAAgB;KAC3B;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,eAAe;QACtB,2FAA2F;QAC3F,kBAAkB,EAAE,mBAAmB;QACvC,WAAW,EAAE,uFAAuF;QACpG,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,sBAAsB;QACnC,QAAQ,EAAE,mBAAmB;KAC9B;IACD,MAAM,EAAE;QACN,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,4FAA4F;QACzG,QAAQ,EAAE,WAAW;QACrB,OAAO,EAAE,qEAAqE;QAC9E,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,uJAAuJ;QAClK,YAAY,EAAE,QAAQ;QACtB,WAAW,EAAE,+HAA+H;QAC5I,WAAW,EAAE,8BAA8B;QAC3C,UAAU,EAAE,uJAAuJ;QACnK,gBAAgB,EAAE,UAAU;QAC5B,eAAe,EAAE,4GAA4G;KAC9H;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,gBAAgB;QACvB,OAAO,EAAE,2BAA2B;QACpC,IAAI,EAAE,uDAAuD;QAC7D,IAAI,EAAE,kCAAkC;KACzC;IACD,IAAI,EAAE;QACJ,kEAAkE;QAClE,WAAW,EAAE,mEAAmE;KACjF;IACD,EAAE,EAAE;QACF,GAAG,EAAE,iBAAiB;KACvB;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/next/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAsB,cAAc,CAAC,MAAM,GAAE,aAAkC,GAAG,OAAO,CAAC,WAAW,CAAC,CAOrG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAWrE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/next/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,wBAAsB,cAAc,CAAC,MAAM,GAAE,aAAkC,GAAG,OAAO,CAAC,WAAW,CAAC,CAOrG;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAYrE"}
@@ -22,6 +22,7 @@ export function getPageContext(config) {
22
22
  methodPath: options.methodPage ? routes.method : null,
23
23
  brand: options.brand?.name ?? null,
24
24
  disclaimer: options.disclaimer === undefined ? null : (options.disclaimer[config.locale] ?? options.disclaimer.en),
25
+ clusterAnchorPrefix: options.anchors.cluster,
25
26
  };
26
27
  }
27
28
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/next/context.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,uFAAuF;AACvF,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAwB,gBAAgB,EAAE;IAC7E,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,wEAAwE;QACxE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACrD,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;KACnH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/next/context.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,uFAAuF;AACvF,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGtF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,SAAwB,gBAAgB,EAAE;IAC7E,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAC7B,wEAAwE;QACxE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5D,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO;QACL,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;QACN,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACrD,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,IAAI;QAClC,UAAU,EAAE,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAClH,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO;KAC7C,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@ import { errorLogLabel, formatMessage, getSiteUrls } from "@softure-ai/core";
7
7
  import { getSoftureConfig } from "@softure-ai/core/next";
8
8
  import { buildBlogRss } from "../discovery/rss.js";
9
9
  import { getClusterLabel } from "../pages/listing.js";
10
- import { getBlogOptions } from "../server/options.js";
10
+ import { getBlogLocaleTags, getBlogOptions } from "../server/options.js";
11
11
  import { getPageContext } from "./context.js";
12
12
  import { getPublishedArticles, getPublishedTerms } from "./data.js";
13
13
  /** Seconds a feed reader should wait after a 503: the cache's own lifetime is a fair guess. */
@@ -32,7 +32,7 @@ export async function serveBlogRss() {
32
32
  channel: {
33
33
  title: context.brand === null ? copy.pages.blogTitle : formatMessage(copy.pages.titleWithBrand, { title: copy.pages.blogTitle, brand: context.brand }),
34
34
  description: copy.pages.blogDescription,
35
- language: config.locale,
35
+ language: getBlogLocaleTags(config).bcp47,
36
36
  },
37
37
  getCategory: (text) => (text.kind === "term" ? copy.glossary.title : text.cluster === null ? null : getClusterLabel(text.cluster, clusters, config.locale)),
38
38
  });
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/next/discovery.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wGAAwG;AACxG,EAAE;AACF,6FAA6F;AAC7F,wEAAwE;AACxE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpE,+FAA+F;AAC/F,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,MAAM,GAAG,GAAG,YAAY,CAAC;YACvB,QAAQ;YACR,KAAK;YACL,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;YAC5B,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtJ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;gBACvC,QAAQ,EAAE,MAAM,CAAC,MAAM;aACxB;YACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;SAC5J,CAAC,CAAC;QACH,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;YACrD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE;SACrG,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/next/discovery.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,wGAAwG;AACxG,EAAE;AACF,6FAA6F;AAC7F,wEAAwE;AACxE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpE,+FAA+F;AAC/F,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;QAC9B,MAAM,GAAG,GAAG,YAAY,CAAC;YACvB,QAAQ;YACR,KAAK;YACL,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;YACzB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;YAC5B,OAAO,EAAE;gBACP,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBACtJ,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;gBACvC,QAAQ,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK;aAC1C;YACD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;SAC5J,CAAC,CAAC;QACH,OAAO,IAAI,QAAQ,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,oCAAoC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gDAAgD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtF,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE;YACrD,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,CAAC,mBAAmB,CAAC,EAAE;SACrG,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export { getBlogContext, getPageContext } from "./context.js";
2
2
  export { serveBlogRss } from "./discovery.js";
3
+ export { buildArticleJsonLd, buildGlossaryJsonLd, buildTermJsonLd, getCrumbLabels } from "./json-ld.js";
4
+ export { buildArticleMetadata, buildBlogIndexMetadata, buildGlossaryIndexMetadata, buildMethodMetadata, buildTermMetadata, type ListingMetadataInput, } from "./metadata.js";
3
5
  export { refreshBlogCache } from "./refresh.js";
4
6
  export { BLOG_CACHE_TAG, getPublishedArticles, getPublishedTerms, getTextBySlug } from "./data.js";
5
7
  export { createOgFontLoader, loadBrandOgFonts, type OgFontLoaderOptions, type OgFontsResult } from "./og-fonts.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,MAAM,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACnK,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,oBAAoB,GAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,KAAK,MAAM,EAAE,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AACnK,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,YAAY,CAAC"}
@@ -2,6 +2,8 @@
2
2
  // feed, the cache refresh route and the cached reads (docs/02-module-standard.md §8).
3
3
  export { getBlogContext, getPageContext } from "./context.js";
4
4
  export { serveBlogRss } from "./discovery.js";
5
+ export { buildArticleJsonLd, buildGlossaryJsonLd, buildTermJsonLd, getCrumbLabels } from "./json-ld.js";
6
+ export { buildArticleMetadata, buildBlogIndexMetadata, buildGlossaryIndexMetadata, buildMethodMetadata, buildTermMetadata, } from "./metadata.js";
5
7
  export { refreshBlogCache } from "./refresh.js";
6
8
  export { BLOG_CACHE_TAG, getPublishedArticles, getPublishedTerms, getTextBySlug } from "./data.js";
7
9
  export { createOgFontLoader, loadBrandOgFonts } from "./og-fonts.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,sFAAsF;AACtF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAgD,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAA+C,MAAM,eAAe,CAAC;AAEnK,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GAIjB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/next/index.ts"],"names":[],"mappings":"AAAA,sGAAsG;AACtG,sFAAsF;AACtF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACxG,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,mBAAmB,EACnB,iBAAiB,GAElB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAgD,MAAM,eAAe,CAAC;AACnH,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAA+C,MAAM,eAAe,CAAC;AAEnK,OAAO,EACL,eAAe,EACf,aAAa,EACb,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GAIjB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type SoftureConfig } from "@softure-ai/core";
2
+ import type { BlogArticle } from "../contract.js";
3
+ import { type CrumbLabels } from "../pages/listing.js";
4
+ import type { BlogPageContext } from "../ui/page-context.js";
5
+ /** The breadcrumb names the pages show: the blog, the glossary and the clusters' display names. */
6
+ export declare function getCrumbLabels(config: SoftureConfig, context?: BlogPageContext): CrumbLabels;
7
+ /** An article's `BlogPosting`, breadcrumbs and FAQ, serialized. */
8
+ export declare function buildArticleJsonLd(config: SoftureConfig, article: BlogArticle): string;
9
+ /** A glossary term's `DefinedTerm` and breadcrumbs, serialized. */
10
+ export declare function buildTermJsonLd(config: SoftureConfig, term: BlogArticle): string;
11
+ /** The glossary's `DefinedTermSet` over the published terms, in the index's order, serialized; `null` without terms. */
12
+ export declare function buildGlossaryJsonLd(config: SoftureConfig, terms: readonly BlogArticle[]): string | null;
13
+ //# sourceMappingURL=json-ld.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-ld.d.ts","sourceRoot":"","sources":["../../src/next/json-ld.ts"],"names":[],"mappings":"AAKA,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAA+D,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEpH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,eAAwC,GAAG,WAAW,CAOpH;AAcD,mEAAmE;AACnE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAItF;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,MAAM,CAIhF;AAED,wHAAwH;AACxH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,GAAG,IAAI,CAIvG"}
@@ -0,0 +1,50 @@
1
+ // The structured data of the blog's pages, ready for `<script type="application/ld+json">`: built from
2
+ // what the caller already holds (no database read, no request scope) and serialized so no text can
3
+ // close the tag. The ready-made pages use these; an app with its own page components mounts them as
4
+ //
5
+ // <script type="application/ld+json" dangerouslySetInnerHTML={{ __html: buildArticleJsonLd(config, article) }} />
6
+ import { getSiteUrls } from "@softure-ai/core";
7
+ import { getArticleJsonLd, getGlossaryJsonLd, getTermJsonLd, serializeJsonLd } from "../pages/json-ld.js";
8
+ import { getArticleCrumbs, getClusterLabel, getTermCrumbs, sortTerms } from "../pages/listing.js";
9
+ import { getBlogLocaleTags, getBlogOptions } from "../server/options.js";
10
+ import { getPageContext } from "./context.js";
11
+ /** The breadcrumb names the pages show: the blog, the glossary and the clusters' display names. */
12
+ export function getCrumbLabels(config, context = getPageContext(config)) {
13
+ const clusters = getBlogOptions(config).clusters;
14
+ return {
15
+ blog: context.messages.pages.blogTitle,
16
+ glossary: context.messages.glossary.title,
17
+ cluster: (cluster) => getClusterLabel(cluster, clusters, config.locale),
18
+ };
19
+ }
20
+ function getJsonLdContext(config, context) {
21
+ return {
22
+ urls: getSiteUrls(config),
23
+ routes: context.routes,
24
+ locale: config.locale,
25
+ language: getBlogLocaleTags(config).bcp47,
26
+ ids: getBlogOptions(config).jsonLd.ids,
27
+ timezone: config.timezone,
28
+ brand: context.brand,
29
+ };
30
+ }
31
+ /** An article's `BlogPosting`, breadcrumbs and FAQ, serialized. */
32
+ export function buildArticleJsonLd(config, article) {
33
+ const context = getPageContext(config);
34
+ const crumbs = getArticleCrumbs(article, context.routes, getCrumbLabels(config, context), { clusterAnchorPrefix: context.clusterAnchorPrefix });
35
+ return serializeJsonLd(getArticleJsonLd(article, crumbs, getJsonLdContext(config, context)));
36
+ }
37
+ /** A glossary term's `DefinedTerm` and breadcrumbs, serialized. */
38
+ export function buildTermJsonLd(config, term) {
39
+ const context = getPageContext(config);
40
+ const crumbs = getTermCrumbs(term, context.routes, getCrumbLabels(config, context));
41
+ return serializeJsonLd(getTermJsonLd(term, crumbs, getJsonLdContext(config, context), context.messages.glossary.title));
42
+ }
43
+ /** The glossary's `DefinedTermSet` over the published terms, in the index's order, serialized; `null` without terms. */
44
+ export function buildGlossaryJsonLd(config, terms) {
45
+ if (terms.length === 0)
46
+ return null;
47
+ const context = getPageContext(config);
48
+ return serializeJsonLd(getGlossaryJsonLd(sortTerms(terms, config.locale), getJsonLdContext(config, context), context.messages.glossary.title));
49
+ }
50
+ //# sourceMappingURL=json-ld.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-ld.js","sourceRoot":"","sources":["../../src/next/json-ld.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { type SoftureConfig } from "@softure-ai/core";
2
+ import type { Metadata } from "next/types.js";
3
+ import type { BlogArticle } from "../contract.js";
4
+ /** Whether a listing has no entry: an empty listing stays out of the index (thin content). */
5
+ export interface ListingMetadataInput {
6
+ readonly isEmpty: boolean;
7
+ }
8
+ /** The listing's metadata, with the feed link. */
9
+ export declare function buildBlogIndexMetadata(config: SoftureConfig, { isEmpty }: ListingMetadataInput): Metadata;
10
+ /** An article's metadata, with the feed link. The caller checks the text is a published article. */
11
+ export declare function buildArticleMetadata(config: SoftureConfig, article: BlogArticle): Metadata;
12
+ /** The glossary index's metadata. */
13
+ export declare function buildGlossaryIndexMetadata(config: SoftureConfig, { isEmpty }: ListingMetadataInput): Metadata;
14
+ /** A glossary term's metadata, titled by `glossary.termTitleWithBrand`. The caller checks the text is a published term. */
15
+ export declare function buildTermMetadata(config: SoftureConfig, term: BlogArticle): Metadata;
16
+ /** The method page's metadata. */
17
+ export declare function buildMethodMetadata(config: SoftureConfig): Metadata;
18
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/next/metadata.ts"],"names":[],"mappings":"AAWA,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAOlD,8FAA8F;AAC9F,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAgDD,kDAAkD;AAClD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,EAAE,oBAAoB,GAAG,QAAQ,CAIzG;AAED,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,GAAG,QAAQ,CAG1F;AAED,qCAAqC;AACrC,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,EAAE,oBAAoB,GAAG,QAAQ,CAI7G;AAED,2HAA2H;AAC3H,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW,GAAG,QAAQ,CAGpF;AAED,kCAAkC;AAClC,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAInE"}
@@ -0,0 +1,86 @@
1
+ // The metadata of the blog's pages (`<title>`, description, robots, canonical, feed link, Open Graph),
2
+ // built from what the caller already holds: no database read, no request scope. The ready-made pages'
3
+ // `generate*Metadata` read the text and call these; an app with its own page components calls them
4
+ // with the text it read, and can extend the result:
5
+ //
6
+ // export async function generateMetadata({ params }) {
7
+ // const config = getSoftureConfig();
8
+ // const article = await getTextBySlug(config, (await params).slug);
9
+ // if (article?.status !== "published" || article.kind !== "article") return {};
10
+ // return { ...buildArticleMetadata(config, article), keywords: [...] };
11
+ // }
12
+ import { formatMessage, getSiteUrls } from "@softure-ai/core";
13
+ import { getArticleDates } from "../pages/dates.js";
14
+ import { getArticlePath, getTermPath } from "../pages/paths.js";
15
+ import { getBlogLocaleTags } from "../server/options.js";
16
+ import { getPageContext } from "./context.js";
17
+ /** `pattern`: the page kind's title message (`pages.titleWithBrand`, or `glossary.termTitleWithBrand` for a term). */
18
+ function withBrand(title, context, pattern = context.messages.pages.titleWithBrand) {
19
+ return context.brand === null ? title : formatMessage(pattern, { title, brand: context.brand });
20
+ }
21
+ /** A page's canonical URL: seo's host and trailing-slash rule when the app lists seo, else on `appOrigin`. */
22
+ function getCanonicalUrl(config, path) {
23
+ return getSiteUrls(config).getCanonicalUrl(path);
24
+ }
25
+ /** The feed link a reader finds in `<head>` (`<link rel="alternate" type="application/rss+xml">`); a file, so no trailing-slash rule. */
26
+ function getFeedAlternates(config, context) {
27
+ return { "application/rss+xml": [{ url: `${getSiteUrls(config).origin}${context.routes.rss}`, title: withBrand(context.messages.pages.blogTitle, context) }] };
28
+ }
29
+ function getStaticMetadata(config, context, page) {
30
+ return {
31
+ title: withBrand(page.title, context),
32
+ description: page.description,
33
+ robots: { index: page.isEmpty !== true, follow: true },
34
+ alternates: { canonical: getCanonicalUrl(config, page.path), ...(page.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
35
+ openGraph: { type: "website", title: page.title, description: page.description, url: getCanonicalUrl(config, page.path), ...(context.brand === null ? {} : { siteName: context.brand }) },
36
+ };
37
+ }
38
+ function getTextMetadata(config, context, text, path, options = {}) {
39
+ const dates = getArticleDates(text, config.timezone);
40
+ const url = getCanonicalUrl(config, path);
41
+ return {
42
+ title: withBrand(text.title, context, options.titlePattern),
43
+ description: text.description,
44
+ robots: { index: true, follow: true },
45
+ alternates: { canonical: url, ...(options.hasFeed === true ? { types: getFeedAlternates(config, context) } : {}) },
46
+ openGraph: {
47
+ type: "article",
48
+ title: text.title,
49
+ description: text.description,
50
+ url,
51
+ locale: getBlogLocaleTags(config).openGraph,
52
+ publishedTime: dates.published,
53
+ modifiedTime: dates.updated ?? dates.published,
54
+ ...(context.brand === null ? {} : { siteName: context.brand }),
55
+ },
56
+ };
57
+ }
58
+ /** The listing's metadata, with the feed link. */
59
+ export function buildBlogIndexMetadata(config, { isEmpty }) {
60
+ const context = getPageContext(config);
61
+ const copy = context.messages.pages;
62
+ return getStaticMetadata(config, context, { title: copy.blogTitle, description: copy.blogDescription, path: context.routes.index, isEmpty, hasFeed: true });
63
+ }
64
+ /** An article's metadata, with the feed link. The caller checks the text is a published article. */
65
+ export function buildArticleMetadata(config, article) {
66
+ const context = getPageContext(config);
67
+ return getTextMetadata(config, context, article, getArticlePath(context.routes, article.slug), { hasFeed: true });
68
+ }
69
+ /** The glossary index's metadata. */
70
+ export function buildGlossaryIndexMetadata(config, { isEmpty }) {
71
+ const context = getPageContext(config);
72
+ const copy = context.messages.glossary;
73
+ return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.glossary, isEmpty });
74
+ }
75
+ /** A glossary term's metadata, titled by `glossary.termTitleWithBrand`. The caller checks the text is a published term. */
76
+ export function buildTermMetadata(config, term) {
77
+ const context = getPageContext(config);
78
+ return getTextMetadata(config, context, term, getTermPath(context.routes, term.slug), { titlePattern: context.messages.glossary.termTitleWithBrand });
79
+ }
80
+ /** The method page's metadata. */
81
+ export function buildMethodMetadata(config) {
82
+ const context = getPageContext(config);
83
+ const copy = context.messages.method;
84
+ return getStaticMetadata(config, context, { title: copy.title, description: copy.description, path: context.routes.method });
85
+ }
86
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/next/metadata.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBvC,KAAK,UAAU,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAE7D;AAsED,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAMnE;AAED,uGAAuG;AACvG,wBAAsB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAE,kBAAuB,wCAOnE;AAED,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAO5G;AAED,oGAAoG;AACpG,wBAAsB,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,oBAAoB,wCAuBxF;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAMvE;AAED,kEAAkE;AAClE,wBAAsB,iBAAiB,yCAMtC;AAED,wBAAsB,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAOzG;AAED,mHAAmH;AACnH,wBAAsB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,qBAAqB,wCAsB5E;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAKjD;AAED,sGAAsG;AACtG,wBAAgB,cAAc,gCAK7B"}
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../../src/next/pages.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBvC,KAAK,UAAU,GAAG,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,qDAAqD;IACrD,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzB,+EAA+E;IAC/E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;CACnC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;CAC1B;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,IAAI;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAE7D;AAWD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAInE;AAED,uGAAuG;AACvG,wBAAsB,aAAa,CAAC,EAAE,GAAG,EAAE,GAAE,kBAAuB,wCAOnE;AAED,wBAAsB,uBAAuB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAK5G;AAED,oGAAoG;AACpG,wBAAsB,eAAe,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,oBAAoB,wCAuBxF;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,QAAQ,CAAC,CAIvE;AAED,kEAAkE;AAClE,wBAAsB,iBAAiB,yCAMtC;AAED,wBAAsB,oBAAoB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAKzG;AAED,mHAAmH;AACnH,wBAAsB,gBAAgB,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,qBAAqB,wCAsB5E;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,CAEjD;AAED,sGAAsG;AACtG,wBAAgB,cAAc,gCAK7B"}