@yimingliao/cms 0.0.240 → 0.0.242

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.
@@ -7,9 +7,9 @@ import { sanitizeStringArray } from './utils/sanitize-string-array.js';
7
7
  import { toIsoTime } from './utils/to-iso-time.js';
8
8
  import { toOgLocale } from './utils/to-og-locale.js';
9
9
 
10
- function createBuildArticleMetadata(siteConfig, storageUrl) {
10
+ function createBuildArticleMetadata(siteConfig, storageUrl, author) {
11
11
  return function buildArticleMetadata(urls, post, locale) {
12
- const { defaultLocale, locales, siteUrl, siteName, siteDescription } = siteConfig;
12
+ const { defaultLocale, locales, site } = siteConfig;
13
13
  const resolvedLocale = locale || defaultLocale;
14
14
  const seoMetadata = findTranslation(post?.seoMetadatas, locale);
15
15
  const authorT = findTranslation(post?.author?.translations, locale);
@@ -18,21 +18,20 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
18
18
  post?.tags.map((t) => findTranslation(t.translations, locale).title)
19
19
  );
20
20
  return {
21
- metadataBase: siteUrl,
21
+ metadataBase: site.url,
22
22
  // -----------------------------------------------------------------------
23
23
  // Basic
24
24
  // -----------------------------------------------------------------------
25
- title: seoMetadata.title || siteName[resolvedLocale],
26
- description: seoMetadata.description || siteDescription[resolvedLocale],
25
+ title: seoMetadata.title || site.name[resolvedLocale],
26
+ description: seoMetadata.description || site.description[resolvedLocale],
27
27
  // identity
28
- authors: [
28
+ authors: author ? [author] : [
29
29
  {
30
30
  name: seoMetadata.author || authorT.authorName || void 0,
31
31
  url: authorT.url || void 0
32
32
  }
33
33
  ],
34
34
  // url
35
- // url
36
35
  alternates: {
37
36
  canonical: seoMetadata.canonical || urls.canonical,
38
37
  languages: seoMetadata.alternate?.length ? buildAlternateMap(seoMetadata.alternate) : urls.alternates
@@ -53,7 +52,7 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
53
52
  url: seoMetadata.ogUrl || seoMetadata.canonical || void 0,
54
53
  // identity
55
54
  type: ensureOgType("article", seoMetadata.ogType),
56
- siteName: seoMetadata.ogSiteName || siteName[resolvedLocale],
55
+ siteName: seoMetadata.ogSiteName || site.name[resolvedLocale],
57
56
  // image
58
57
  images: buildOgImages({
59
58
  url: seoMetadata.ogImage || `${storageUrl}/${post?.coverImage?.key}`,
@@ -71,7 +70,7 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
71
70
  // article
72
71
  publishedTime: toIsoTime(seoMetadata.ogArticlePublishedTime),
73
72
  modifiedTime: toIsoTime(seoMetadata.ogArticleModifiedTime),
74
- authors: [seoMetadata.ogArticleAuthor || authorT.authorName].filter(
73
+ authors: author ? [author.name] : [seoMetadata.ogArticleAuthor || authorT.authorName].filter(
75
74
  Boolean
76
75
  ),
77
76
  section: seoMetadata.ogArticleSection,
@@ -8,23 +8,16 @@ import { toOgLocale } from './utils/to-og-locale.js';
8
8
 
9
9
  function createBuildWebsiteMetadata(siteConfig) {
10
10
  return function buildWebsiteMetadata(urls, post, locale) {
11
- const {
12
- defaultLocale,
13
- locales,
14
- siteUrl,
15
- siteName,
16
- siteDescription,
17
- defaultImage
18
- } = siteConfig;
11
+ const { defaultLocale, locales, site } = siteConfig;
19
12
  const resolvedLocale = locale || defaultLocale;
20
13
  const seoMetadata = findTranslation(post?.seoMetadatas, locale);
21
14
  return {
22
- metadataBase: siteUrl,
15
+ metadataBase: site.url,
23
16
  // -----------------------------------------------------------------------
24
17
  // Basic
25
18
  // -----------------------------------------------------------------------
26
- title: seoMetadata.title || siteName[resolvedLocale],
27
- description: seoMetadata.description || siteDescription[resolvedLocale],
19
+ title: seoMetadata.title || site.name[resolvedLocale],
20
+ description: seoMetadata.description || site.description[resolvedLocale],
28
21
  // url
29
22
  alternates: {
30
23
  canonical: seoMetadata.canonical || urls.canonical,
@@ -46,7 +39,7 @@ function createBuildWebsiteMetadata(siteConfig) {
46
39
  url: seoMetadata.ogUrl || seoMetadata.canonical || void 0,
47
40
  // identity
48
41
  type: ensureOgType("website", seoMetadata.ogType),
49
- siteName: seoMetadata.ogSiteName || siteName[resolvedLocale],
42
+ siteName: seoMetadata.ogSiteName || site.name[resolvedLocale],
50
43
  // image
51
44
  images: seoMetadata.ogImage ? buildOgImages({
52
45
  url: seoMetadata.ogImage,
@@ -55,7 +48,14 @@ function createBuildWebsiteMetadata(siteConfig) {
55
48
  type: seoMetadata.ogImageType,
56
49
  width: seoMetadata.ogImageWidth,
57
50
  height: seoMetadata.ogImageHeight
58
- }) : buildOgImages(defaultImage),
51
+ }) : buildOgImages({
52
+ url: site.defaultImage.url,
53
+ secureUrl: site.defaultImage.url,
54
+ alt: site.defaultImage.alt,
55
+ type: site.defaultImage.mimeType,
56
+ width: site.defaultImage.width,
57
+ height: site.defaultImage.height
58
+ }),
59
59
  // locale
60
60
  locale: seoMetadata.ogLocale || toOgLocale(resolvedLocale),
61
61
  alternateLocale: sanitizeStringArray(
@@ -3,19 +3,43 @@ type LocalizedText<Locale extends string = string> = {
3
3
  };
4
4
  type ImageAsset = {
5
5
  url: string;
6
- secureUrl: string;
7
6
  alt: string;
8
- type: string;
9
7
  width: number;
10
8
  height: number;
9
+ mimeType: string;
11
10
  };
12
11
  export type SiteConfig<Locale extends string = string> = {
13
12
  defaultLocale: Locale;
14
13
  locales: readonly Locale[];
15
- siteUrl: string;
16
- siteName: LocalizedText<Locale>;
17
- siteDescription: LocalizedText<Locale>;
18
- defaultImage: ImageAsset;
14
+ site: {
15
+ url: string;
16
+ name: LocalizedText<Locale>;
17
+ description: LocalizedText<Locale>;
18
+ defaultImage: ImageAsset;
19
+ };
20
+ publisher: {
21
+ type: "organization";
22
+ name: LocalizedText<Locale>;
23
+ url?: string;
24
+ sameAs?: string[];
25
+ description?: LocalizedText<Locale>;
26
+ email?: string;
27
+ telephone?: string;
28
+ foundingDate?: string;
29
+ address?: {
30
+ streetAddress?: string;
31
+ addressLocality?: string;
32
+ addressRegion?: string;
33
+ postalCode?: string;
34
+ addressCountry?: string;
35
+ };
36
+ logo?: ImageAsset;
37
+ } | {
38
+ type: "person";
39
+ name: LocalizedText<Locale>;
40
+ sameAs?: string[];
41
+ avatar?: ImageAsset;
42
+ };
19
43
  };
20
44
  export {};
21
45
  //# sourceMappingURL=site-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../../../../src/domain/static/site-config.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;KAClD,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IAIvD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAK3B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAKvC,YAAY,EAAE,UAAU,CAAC;CAC1B,CAAC"}
1
+ {"version":3,"file":"site-config.d.ts","sourceRoot":"","sources":["../../../../../src/domain/static/site-config.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;KAClD,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,IAAI;IAIvD,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAK3B,IAAI,EAAE;QACJ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,YAAY,EAAE,UAAU,CAAC;KAC1B,CAAC;IAKF,SAAS,EACL;QACE,IAAI,EAAE,cAAc,CAAC;QACrB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,WAAW,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE;YACR,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,eAAe,CAAC,EAAE,MAAM,CAAC;YACzB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;QACF,IAAI,CAAC,EAAE,UAAU,CAAC;KACnB,GACD;QACE,IAAI,EAAE,QAAQ,CAAC;QACf,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,MAAM,CAAC,EAAE,UAAU,CAAC;KACrB,CAAC;CACP,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import type { SiteConfig } from "../../domain";
2
2
  import type { PostFull } from "../../domain/resources/post/full";
3
3
  import type { Metadata } from "next";
4
- export declare function createBuildArticleMetadata<Locale extends string = string>(siteConfig: SiteConfig<Locale>, storageUrl: string): (urls: {
4
+ export declare function createBuildArticleMetadata<Locale extends string = string>(siteConfig: SiteConfig<Locale>, storageUrl: string, author?: {
5
+ name: string;
6
+ url?: string;
7
+ }): (urls: {
5
8
  canonical: string;
6
9
  alternates: Record<string, string>;
7
10
  }, post?: PostFull, locale?: Locale) => Metadata;
@@ -1 +1 @@
1
- {"version":3,"file":"build-article-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/build-article-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAUrC,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACvE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,MAAM,IAGhB,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC/D,OAAO,QAAQ,EACf,SAAS,MAAM,KACd,QAAQ,CAmGZ"}
1
+ {"version":3,"file":"build-article-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/build-article-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAUrC,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACvE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,EAC9B,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,IAGrC,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC/D,OAAO,QAAQ,EACf,SAAS,MAAM,KACd,QAAQ,CAsGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"build-website-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/build-website-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AASrC,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACvE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAG5B,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC/D,OAAO,QAAQ,EACf,SAAS,MAAM,KACd,QAAQ,CAmFZ"}
1
+ {"version":3,"file":"build-website-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/build-website-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AASrC,wBAAgB,0BAA0B,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EACvE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,IAG5B,MAAM;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,EAC/D,OAAO,QAAQ,EACf,SAAS,MAAM,KACd,QAAQ,CAoFZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yimingliao/cms",
3
- "version": "0.0.240",
3
+ "version": "0.0.242",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",