@yimingliao/cms 0.0.243 → 0.0.244
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/export/index.js +1 -2
- package/dist/src/client/applications/cms/resources/seo-metadata/use-upsert-form-data.js +1 -1
- package/dist/src/client/interfaces/components/resources/seo-metadata/seo-form/seo-form.js +1 -1
- package/dist/src/client/interfaces/components/ui/features/file/file-info/file-info.js +1 -1
- package/dist/src/shared/seo-metadata/{build-article-metadata.js → build-metadata.js} +50 -21
- package/dist/types/export/index.d.ts +1 -1
- package/dist/types/export/index.d.ts.map +1 -1
- package/dist/types/src/shared/index.d.ts +1 -1
- package/dist/types/src/shared/index.d.ts.map +1 -1
- package/dist/types/src/shared/seo-metadata/build-metadata.d.ts +8 -0
- package/dist/types/src/shared/seo-metadata/build-metadata.d.ts.map +1 -0
- package/dist/types/src/shared/seo-metadata/index.d.ts +1 -3
- package/dist/types/src/shared/seo-metadata/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/src/shared/seo-metadata/build-website-metadata.js +0 -78
- package/dist/types/src/shared/seo-metadata/build-article-metadata.d.ts +0 -8
- package/dist/types/src/shared/seo-metadata/build-article-metadata.d.ts.map +0 -1
- package/dist/types/src/shared/seo-metadata/build-website-metadata.d.ts +0 -8
- package/dist/types/src/shared/seo-metadata/build-website-metadata.d.ts.map +0 -1
- package/dist/types/src/shared/seo-metadata/types.d.ts +0 -10
- package/dist/types/src/shared/seo-metadata/types.d.ts.map +0 -1
package/dist/export/index.js
CHANGED
|
@@ -18,8 +18,7 @@ export { getMediaInfo } from '../src/shared/blob-file/get-media-info/get-media-i
|
|
|
18
18
|
export { formatFileSize } from '../src/shared/blob-file/format-file-size.js';
|
|
19
19
|
export { result } from '../src/shared/result/result.js';
|
|
20
20
|
export { OG_TYPE_ARRAY, TWITTER_CARD_ARRAY } from '../src/shared/seo-metadata/standards.js';
|
|
21
|
-
export {
|
|
22
|
-
export { createBuildArticleMetadata } from '../src/shared/seo-metadata/build-article-metadata.js';
|
|
21
|
+
export { createBuildMetadata } from '../src/shared/seo-metadata/build-metadata.js';
|
|
23
22
|
export { serializeJsonLd } from '../src/shared/seo-metadata/serialize-json-ld.js';
|
|
24
23
|
export { toIsoTime } from '../src/shared/seo-metadata/utils/to-iso-time.js';
|
|
25
24
|
export { findTranslation } from '../src/shared/translation/find-translation.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useState, useEffect } from 'react';
|
|
2
2
|
import 'mime-types';
|
|
3
|
+
import { ensureArray } from '../../../../../shared/utils/ensure-array.js';
|
|
3
4
|
import { datetimeToUi } from '../../../../../shared/form/normalizers/datetime-to-ui.js';
|
|
4
5
|
import { jsonArrayToUi } from '../../../../../shared/form/normalizers/json-array-to-ui.js';
|
|
5
|
-
import { ensureArray } from '../../../../../shared/utils/ensure-array.js';
|
|
6
6
|
import { SEO_METADATA_EMPTY_TRANSLATIONS } from './seo-metadata-empty-translation.js';
|
|
7
7
|
|
|
8
8
|
function createUseSeoMetadataUpsertFormData({
|
|
@@ -7,8 +7,8 @@ import '../../../../../../constants/paths/resources.js';
|
|
|
7
7
|
import { CACHE_KEYS } from '../../../../../../constants/cache-keys.js';
|
|
8
8
|
import '../../../../../../constants/redirect-paths.js';
|
|
9
9
|
import 'mime-types';
|
|
10
|
-
import { datetimeToUi } from '../../../../../../shared/form/normalizers/datetime-to-ui.js';
|
|
11
10
|
import { ensureArray } from '../../../../../../shared/utils/ensure-array.js';
|
|
11
|
+
import { datetimeToUi } from '../../../../../../shared/form/normalizers/datetime-to-ui.js';
|
|
12
12
|
import 'intor/react';
|
|
13
13
|
import 'lucide-react';
|
|
14
14
|
import 'ua-parser-js';
|
|
@@ -11,8 +11,8 @@ import '../../../../../../../constants/redirect-paths.js';
|
|
|
11
11
|
import { mimeToExtension } from '../../../../../../../shared/blob-file/mime-to-extension.js';
|
|
12
12
|
import { classifyFileType } from '../../../../../../../shared/blob-file/classify-file-type.js';
|
|
13
13
|
import { formatFileSize } from '../../../../../../../shared/blob-file/format-file-size.js';
|
|
14
|
-
import 'mime-types';
|
|
15
14
|
import { joinUrl } from '../../../../../../../shared/utils/join-url.js';
|
|
15
|
+
import 'mime-types';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'ua-parser-js';
|
|
18
18
|
import { cn } from '../../../../../../applications/cms/shadcn/utils.js';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { findTranslation } from '../translation/find-translation.js';
|
|
2
|
+
import { joinUrl } from '../utils/join-url.js';
|
|
2
3
|
import { buildAlternateMap } from './utils/build-alternate-map.js';
|
|
3
4
|
import { buildOgImages } from './utils/build-og-image.js';
|
|
4
5
|
import { ensureOgType } from './utils/ensure-og-type.js';
|
|
@@ -7,8 +8,8 @@ import { sanitizeStringArray } from './utils/sanitize-string-array.js';
|
|
|
7
8
|
import { toIsoTime } from './utils/to-iso-time.js';
|
|
8
9
|
import { toOgLocale } from './utils/to-og-locale.js';
|
|
9
10
|
|
|
10
|
-
function
|
|
11
|
-
return function
|
|
11
|
+
function createBuildMetadata(siteConfig, storageUrl) {
|
|
12
|
+
return function buildMetadata(urls, post, locale, isArticle = false) {
|
|
12
13
|
const { defaultLocale, locales, site } = siteConfig;
|
|
13
14
|
const resolvedLocale = locale || defaultLocale;
|
|
14
15
|
const seoMetadata = findTranslation(post?.seoMetadatas, locale);
|
|
@@ -17,6 +18,7 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
|
|
|
17
18
|
const tags = sanitizeStringArray(
|
|
18
19
|
post?.tags.map((t) => findTranslation(t.translations, locale).title)
|
|
19
20
|
);
|
|
21
|
+
const articleCoverImageUrl = joinUrl(storageUrl, post?.coverImage?.key);
|
|
20
22
|
return {
|
|
21
23
|
metadataBase: site.url,
|
|
22
24
|
// -----------------------------------------------------------------------
|
|
@@ -25,12 +27,14 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
|
|
|
25
27
|
title: seoMetadata.title || site.name[resolvedLocale],
|
|
26
28
|
description: seoMetadata.description || site.description[resolvedLocale],
|
|
27
29
|
// identity
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
...isArticle ? {
|
|
31
|
+
authors: [
|
|
32
|
+
{
|
|
33
|
+
name: seoMetadata.author || authorT.authorName || void 0,
|
|
34
|
+
url: authorT.url || void 0
|
|
35
|
+
}
|
|
36
|
+
]
|
|
37
|
+
} : {},
|
|
34
38
|
// url
|
|
35
39
|
alternates: {
|
|
36
40
|
canonical: seoMetadata.canonical || urls.canonical,
|
|
@@ -51,30 +55,55 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
|
|
|
51
55
|
// url
|
|
52
56
|
url: seoMetadata.ogUrl || seoMetadata.canonical || void 0,
|
|
53
57
|
// identity
|
|
54
|
-
type: ensureOgType(
|
|
58
|
+
type: ensureOgType(
|
|
59
|
+
isArticle ? "article" : "website",
|
|
60
|
+
seoMetadata.ogType
|
|
61
|
+
),
|
|
55
62
|
siteName: seoMetadata.ogSiteName || site.name[resolvedLocale],
|
|
56
63
|
// image
|
|
57
|
-
images: buildOgImages({
|
|
58
|
-
url: seoMetadata.ogImage ||
|
|
59
|
-
secureUrl: seoMetadata.ogImage ||
|
|
64
|
+
images: isArticle ? buildOgImages({
|
|
65
|
+
url: seoMetadata.ogImage || articleCoverImageUrl,
|
|
66
|
+
secureUrl: seoMetadata.ogImage || articleCoverImageUrl,
|
|
60
67
|
alt: seoMetadata.ogImageAlt || coverImageT.alt,
|
|
61
68
|
type: seoMetadata.ogImageType,
|
|
62
69
|
width: seoMetadata.ogImageWidth,
|
|
63
70
|
height: seoMetadata.ogImageHeight
|
|
64
|
-
})
|
|
71
|
+
}) : (
|
|
72
|
+
// is `website`
|
|
73
|
+
seoMetadata.ogImage ? buildOgImages({
|
|
74
|
+
url: seoMetadata.ogImage,
|
|
75
|
+
secureUrl: seoMetadata.ogImage,
|
|
76
|
+
alt: seoMetadata.ogImageAlt,
|
|
77
|
+
type: seoMetadata.ogImageType,
|
|
78
|
+
width: seoMetadata.ogImageWidth,
|
|
79
|
+
height: seoMetadata.ogImageHeight
|
|
80
|
+
}) : (
|
|
81
|
+
// default
|
|
82
|
+
buildOgImages({
|
|
83
|
+
url: site.defaultImage.url,
|
|
84
|
+
secureUrl: site.defaultImage.url,
|
|
85
|
+
alt: site.defaultImage.alt,
|
|
86
|
+
type: site.defaultImage.mimeType,
|
|
87
|
+
width: site.defaultImage.width,
|
|
88
|
+
height: site.defaultImage.height
|
|
89
|
+
})
|
|
90
|
+
)
|
|
91
|
+
),
|
|
65
92
|
// locale
|
|
66
93
|
locale: seoMetadata.ogLocale || toOgLocale(resolvedLocale),
|
|
67
94
|
alternateLocale: sanitizeStringArray(
|
|
68
95
|
seoMetadata.ogLocaleAlternate?.length ? seoMetadata.ogLocaleAlternate : locales.filter((l) => l !== resolvedLocale).map(toOgLocale)
|
|
69
96
|
),
|
|
70
97
|
// article
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
98
|
+
...isArticle ? {
|
|
99
|
+
publishedTime: toIsoTime(seoMetadata.ogArticlePublishedTime),
|
|
100
|
+
modifiedTime: toIsoTime(seoMetadata.ogArticleModifiedTime),
|
|
101
|
+
authors: [
|
|
102
|
+
seoMetadata.ogArticleAuthor || authorT.authorName
|
|
103
|
+
].filter(Boolean),
|
|
104
|
+
section: seoMetadata.ogArticleSection,
|
|
105
|
+
tags: sanitizeStringArray(seoMetadata.ogArticleTag) || tags
|
|
106
|
+
} : {}
|
|
78
107
|
},
|
|
79
108
|
// -----------------------------------------------------------------------
|
|
80
109
|
// Twitter
|
|
@@ -89,4 +118,4 @@ function createBuildArticleMetadata(siteConfig, storageUrl) {
|
|
|
89
118
|
};
|
|
90
119
|
}
|
|
91
120
|
|
|
92
|
-
export {
|
|
121
|
+
export { createBuildMetadata };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { type MultiItems, type SingleItem, type BaseTranslation, type Translation, ADMIN_ROLES, type AdminRole, type Admin, type AdminTranslation, type AdminFull, type AdminCard, type AdminSafe, ADMIN_ROLE_ARRAY, ADMIN_ROLE_I18N_MAP, type AdminRefreshToken, type DeviceInfo, FILE_TYPES, type FileType, type File, type FileTranslation, type FileFull, type FileCard, isFileLocked, type Folder, type FolderFull, isFolderLocked, normalizeFolderKey, fileManagerDoubleClick, POST_TYPES, type PostType, type Post, type PostTranslation, type PostFull, type PostListCard, type ExternalLink, type Faq, type TocItem, type SeoMetadata, type Alternate, type Config, type ConfigTranslation, type ConfigFull, type Inquiry, type InquiryFields, ROOT_FOLDER, ROOT_FOLDER_ID, ROOT_FOLDER_NAME, SIMPLE_UPLOAD_FOLDER_KEY, SIMPLE_UPLOAD_FOLDER_NAME, type StaticTopics, type StaticPages, type StaticInquiry, type StaticConfigs, type StaticSeoMetadata, type SeoMetadataField, type PostField, type SiteConfig, } from "../src/domain";
|
|
2
2
|
export { CACHE_KEYS, KEYS, PATHS, PROTECTED_PATHS, LOGGED_IN_SKIP_PATHS, NEW_TAB_REL, NEW_TAB_TARGET, } from "../src/constants";
|
|
3
|
-
export { mimeToExtension, classifyFileType, getMediaInfo, formatFileSize, type BlobFile, result, type SuccessResultParams, type ErrorResultParams, type Result, type SuccessResult, type ErrorResult, type ErrorDetail, OG_TYPE_ARRAY, type OgType, TWITTER_CARD_ARRAY, type TwitterCard,
|
|
3
|
+
export { mimeToExtension, classifyFileType, getMediaInfo, formatFileSize, type BlobFile, result, type SuccessResultParams, type ErrorResultParams, type Result, type SuccessResult, type ErrorResult, type ErrorDetail, OG_TYPE_ARRAY, type OgType, TWITTER_CARD_ARRAY, type TwitterCard, createBuildMetadata, serializeJsonLd, toIsoTime, findTranslation, createBuildTranslations, datetimeToDb, datetimeToUi, jsonArrayToDb, jsonArrayToUi, type UIStates, type FormData, type FormFieldController, debounce, ensureArray, formatDateTime, joinUrl, normalizeSlug, parsePositiveInt, DO_NOT_FETCH_KEY, type ListItemsState, SIZE, type SizeUnit, } from "../src/shared";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../export/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,UAAU,EAIf,KAAK,eAAe,EACpB,KAAK,WAAW,EAKhB,WAAW,EACX,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,gBAAgB,EAChB,mBAAmB,EAEnB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEf,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,YAAY,EAEZ,KAAK,MAAM,EACX,KAAK,UAAU,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EAEtB,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,GAAG,EACR,KAAK,OAAO,EAEZ,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEf,KAAK,OAAO,EACZ,KAAK,aAAa,EAElB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAIzB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,UAAU,EACV,IAAI,EACJ,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,QAAQ,EAGb,MAAM,EACN,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAGhB,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../export/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,UAAU,EAIf,KAAK,eAAe,EACpB,KAAK,WAAW,EAKhB,WAAW,EACX,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,gBAAgB,EAChB,mBAAmB,EAEnB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEf,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,YAAY,EAEZ,KAAK,MAAM,EACX,KAAK,UAAU,EACf,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EAEtB,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,GAAG,EACR,KAAK,OAAO,EAEZ,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,KAAK,MAAM,EACX,KAAK,iBAAiB,EACtB,KAAK,UAAU,EAEf,KAAK,OAAO,EACZ,KAAK,aAAa,EAElB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,wBAAwB,EACxB,yBAAyB,EAIzB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,eAAe,CAAC;AAKvB,OAAO,EACL,UAAU,EACV,IAAI,EACJ,KAAK,EACL,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EAEL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,QAAQ,EAGb,MAAM,EACN,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAGhB,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,mBAAmB,EACnB,eAAe,EACf,SAAS,EAGT,eAAe,EACf,uBAAuB,EAGvB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,mBAAmB,EAGxB,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,gBAAgB,EAGhB,gBAAgB,EAChB,KAAK,cAAc,EAGnB,IAAI,EACJ,KAAK,QAAQ,GACd,MAAM,eAAe,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { mimeToExtension, classifyFileType, getMediaInfo, formatFileSize, type BlobFile, } from "./blob-file";
|
|
2
2
|
export { result, type SuccessResultParams, type ErrorResultParams, type Result, type SuccessResult, type ErrorResult, type ErrorDetail, } from "./result";
|
|
3
|
-
export { OG_TYPE_ARRAY, type OgType, TWITTER_CARD_ARRAY, type TwitterCard,
|
|
3
|
+
export { OG_TYPE_ARRAY, type OgType, TWITTER_CARD_ARRAY, type TwitterCard, createBuildMetadata, serializeJsonLd, toIsoTime, } from "./seo-metadata";
|
|
4
4
|
export { findTranslation, createBuildTranslations } from "./translation";
|
|
5
5
|
export { datetimeToDb, datetimeToUi, jsonArrayToDb, jsonArrayToUi, type UIStates, type FormData, type FormFieldController, } from "./form";
|
|
6
6
|
export { debounce, ensureArray, formatDateTime, joinUrl, normalizeSlug, parsePositiveInt, } from "./utils";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,KAAK,QAAQ,GACd,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,MAAM,EACN,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,EAChB,mBAAmB,EACnB,eAAe,EACf,SAAS,GACV,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAEL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,aAAa,EAEb,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,mBAAmB,GACzB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EACL,QAAQ,EACR,WAAW,EACX,cAAc,EACd,OAAO,EACP,aAAa,EACb,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,KAAK,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrE,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SiteConfig } from "../../domain";
|
|
2
|
+
import type { PostFull } from "../../domain/resources/post/full";
|
|
3
|
+
import type { Metadata } from "next";
|
|
4
|
+
export declare function createBuildMetadata<Locale extends string = string>(siteConfig: SiteConfig<Locale>, storageUrl: string): (urls: {
|
|
5
|
+
canonical: string;
|
|
6
|
+
alternates: Record<string, string>;
|
|
7
|
+
}, post?: PostFull, locale?: Locale, isArticle?: boolean) => Metadata;
|
|
8
|
+
//# sourceMappingURL=build-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-metadata.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/build-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;AAWrC,wBAAgB,mBAAmB,CAAC,MAAM,SAAS,MAAM,GAAG,MAAM,EAChE,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,EACf,mBAAiB,KAChB,QAAQ,CAuIZ"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export { OG_TYPE_ARRAY, type OgType, TWITTER_CARD_ARRAY, type TwitterCard, } from "./standards";
|
|
2
|
-
export {
|
|
3
|
-
export { createBuildArticleMetadata } from "./build-article-metadata";
|
|
4
|
-
export type { SeoMetadataDefaults } from "./types";
|
|
2
|
+
export { createBuildMetadata } from "./build-metadata";
|
|
5
3
|
export { serializeJsonLd } from "./serialize-json-ld";
|
|
6
4
|
export { toIsoTime } from "./utils/to-iso-time";
|
|
7
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,KAAK,MAAM,EACX,kBAAkB,EAClB,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yimingliao/cms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.244",
|
|
4
4
|
"author": "Yiming Liao",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
"eslint-plugin-unicorn": "^63.0.0",
|
|
120
120
|
"eslint-plugin-unused-imports": "^4.4.1",
|
|
121
121
|
"generic-pool": "^3.9.0",
|
|
122
|
-
"intor": "^2.
|
|
122
|
+
"intor": "^2.7.0",
|
|
123
123
|
"knip": "^5.86.0",
|
|
124
124
|
"magic-string": "^0.30.21",
|
|
125
125
|
"next": "^16.1.6",
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
import { findTranslation } from '../translation/find-translation.js';
|
|
2
|
-
import { buildAlternateMap } from './utils/build-alternate-map.js';
|
|
3
|
-
import { buildOgImages } from './utils/build-og-image.js';
|
|
4
|
-
import { ensureOgType } from './utils/ensure-og-type.js';
|
|
5
|
-
import { ensureTwitterCard } from './utils/ensure-twitter-card.js';
|
|
6
|
-
import { sanitizeStringArray } from './utils/sanitize-string-array.js';
|
|
7
|
-
import { toOgLocale } from './utils/to-og-locale.js';
|
|
8
|
-
|
|
9
|
-
function createBuildWebsiteMetadata(siteConfig) {
|
|
10
|
-
return function buildWebsiteMetadata(urls, post, locale) {
|
|
11
|
-
const { defaultLocale, locales, site } = siteConfig;
|
|
12
|
-
const resolvedLocale = locale || defaultLocale;
|
|
13
|
-
const seoMetadata = findTranslation(post?.seoMetadatas, locale);
|
|
14
|
-
return {
|
|
15
|
-
metadataBase: site.url,
|
|
16
|
-
// -----------------------------------------------------------------------
|
|
17
|
-
// Basic
|
|
18
|
-
// -----------------------------------------------------------------------
|
|
19
|
-
title: seoMetadata.title || site.name[resolvedLocale],
|
|
20
|
-
description: seoMetadata.description || site.description[resolvedLocale],
|
|
21
|
-
// url
|
|
22
|
-
alternates: {
|
|
23
|
-
canonical: seoMetadata.canonical || urls.canonical,
|
|
24
|
-
languages: seoMetadata.alternate?.length ? buildAlternateMap(seoMetadata.alternate) : urls.alternates
|
|
25
|
-
},
|
|
26
|
-
// robots
|
|
27
|
-
robots: seoMetadata.robots || {
|
|
28
|
-
index: true,
|
|
29
|
-
follow: true,
|
|
30
|
-
"max-image-preview": "large"
|
|
31
|
-
},
|
|
32
|
-
// -----------------------------------------------------------------------
|
|
33
|
-
// Open Graph
|
|
34
|
-
// -----------------------------------------------------------------------
|
|
35
|
-
openGraph: {
|
|
36
|
-
title: seoMetadata.ogTitle || void 0,
|
|
37
|
-
description: seoMetadata.ogDescription || void 0,
|
|
38
|
-
// url
|
|
39
|
-
url: seoMetadata.ogUrl || seoMetadata.canonical || void 0,
|
|
40
|
-
// identity
|
|
41
|
-
type: ensureOgType("website", seoMetadata.ogType),
|
|
42
|
-
siteName: seoMetadata.ogSiteName || site.name[resolvedLocale],
|
|
43
|
-
// image
|
|
44
|
-
images: seoMetadata.ogImage ? buildOgImages({
|
|
45
|
-
url: seoMetadata.ogImage,
|
|
46
|
-
secureUrl: seoMetadata.ogImage,
|
|
47
|
-
alt: seoMetadata.ogImageAlt,
|
|
48
|
-
type: seoMetadata.ogImageType,
|
|
49
|
-
width: seoMetadata.ogImageWidth,
|
|
50
|
-
height: seoMetadata.ogImageHeight
|
|
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
|
-
// locale
|
|
60
|
-
locale: seoMetadata.ogLocale || toOgLocale(resolvedLocale),
|
|
61
|
-
alternateLocale: sanitizeStringArray(
|
|
62
|
-
seoMetadata.ogLocaleAlternate?.length ? seoMetadata.ogLocaleAlternate : locales.filter((l) => l !== resolvedLocale).map(toOgLocale)
|
|
63
|
-
)
|
|
64
|
-
},
|
|
65
|
-
// -----------------------------------------------------------------------
|
|
66
|
-
// Twitter
|
|
67
|
-
// -----------------------------------------------------------------------
|
|
68
|
-
twitter: {
|
|
69
|
-
card: ensureTwitterCard("summary_large_image", seoMetadata.twitterCard),
|
|
70
|
-
// identity
|
|
71
|
-
site: seoMetadata.twitterSite || void 0,
|
|
72
|
-
creator: seoMetadata.twitterCreator || void 0
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export { createBuildWebsiteMetadata };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SiteConfig } from "../../domain";
|
|
2
|
-
import type { PostFull } from "../../domain/resources/post/full";
|
|
3
|
-
import type { Metadata } from "next";
|
|
4
|
-
export declare function createBuildArticleMetadata<Locale extends string = string>(siteConfig: SiteConfig<Locale>, storageUrl: string): (urls: {
|
|
5
|
-
canonical: string;
|
|
6
|
-
alternates: Record<string, string>;
|
|
7
|
-
}, post?: PostFull, locale?: Locale) => Metadata;
|
|
8
|
-
//# sourceMappingURL=build-article-metadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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,CAkGZ"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { SiteConfig } from "../../domain";
|
|
2
|
-
import type { PostFull } from "../../domain/resources/post/full";
|
|
3
|
-
import type { Metadata } from "next";
|
|
4
|
-
export declare function createBuildWebsiteMetadata<Locale extends string = string>(siteConfig: SiteConfig<Locale>): (urls: {
|
|
5
|
-
canonical: string;
|
|
6
|
-
alternates: Record<string, string>;
|
|
7
|
-
}, post?: PostFull, locale?: Locale) => Metadata;
|
|
8
|
-
//# sourceMappingURL=build-website-metadata.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { TwitterCard } from "./standards";
|
|
2
|
-
import type { Robots } from "next/dist/lib/metadata/types/metadata-types";
|
|
3
|
-
export interface SeoMetadataDefaults {
|
|
4
|
-
metadataBase: string | URL;
|
|
5
|
-
title: string;
|
|
6
|
-
robots: Robots;
|
|
7
|
-
ogSiteName: string;
|
|
8
|
-
twitterCard: TwitterCard;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/shared/seo-metadata/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6CAA6C,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;CAC1B"}
|