@sittari/payload-seo 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +38 -0
- package/dist/admin/ResetRawJson.d.ts +4 -0
- package/dist/admin/ResetRawJson.d.ts.map +1 -0
- package/dist/admin/ResetRawJson.js +53 -0
- package/dist/admin/ResetRawJson.js.map +1 -0
- package/dist/admin/SchemaValueOverrides.d.ts +4 -0
- package/dist/admin/SchemaValueOverrides.d.ts.map +1 -0
- package/dist/admin/SchemaValueOverrides.js +46 -0
- package/dist/admin/SchemaValueOverrides.js.map +1 -0
- package/dist/admin/SeoPreviews.d.ts +4 -0
- package/dist/admin/SeoPreviews.d.ts.map +1 -0
- package/dist/admin/SeoPreviews.js +172 -0
- package/dist/admin/SeoPreviews.js.map +1 -0
- package/dist/admin/preview-document.d.ts +7 -0
- package/dist/admin/preview-document.d.ts.map +1 -0
- package/dist/admin/preview-document.js +50 -0
- package/dist/admin/preview-document.js.map +1 -0
- package/dist/admin/translations.d.ts +236 -0
- package/dist/admin/translations.d.ts.map +1 -0
- package/dist/admin/translations.js +67 -0
- package/dist/admin/translations.js.map +1 -0
- package/dist/admin/use-admin-text.d.ts +4 -0
- package/dist/admin/use-admin-text.d.ts.map +1 -0
- package/dist/admin/use-admin-text.js +9 -0
- package/dist/admin/use-admin-text.js.map +1 -0
- package/dist/collections/redirects.d.ts +7 -0
- package/dist/collections/redirects.d.ts.map +1 -0
- package/dist/collections/redirects.js +71 -0
- package/dist/collections/redirects.js.map +1 -0
- package/dist/endpoints/preview.d.ts +4 -0
- package/dist/endpoints/preview.d.ts.map +1 -0
- package/dist/endpoints/preview.js +170 -0
- package/dist/endpoints/preview.js.map +1 -0
- package/dist/exports/client.d.ts +4 -0
- package/dist/exports/client.d.ts.map +1 -0
- package/dist/exports/client.js +5 -0
- package/dist/exports/client.js.map +1 -0
- package/dist/exports/types.d.ts +3 -0
- package/dist/exports/types.d.ts.map +1 -0
- package/dist/exports/types.js +2 -0
- package/dist/exports/types.js.map +1 -0
- package/dist/fields/seo.d.ts +11 -0
- package/dist/fields/seo.d.ts.map +1 -0
- package/dist/fields/seo.js +187 -0
- package/dist/fields/seo.js.map +1 -0
- package/dist/globals/seo-settings.d.ts +8 -0
- package/dist/globals/seo-settings.d.ts.map +1 -0
- package/dist/globals/seo-settings.js +73 -0
- package/dist/globals/seo-settings.js.map +1 -0
- package/dist/helpers/config.d.ts +5 -0
- package/dist/helpers/config.d.ts.map +1 -0
- package/dist/helpers/config.js +7 -0
- package/dist/helpers/config.js.map +1 -0
- package/dist/helpers/metadata.d.ts +27 -0
- package/dist/helpers/metadata.d.ts.map +1 -0
- package/dist/helpers/metadata.js +50 -0
- package/dist/helpers/metadata.js.map +1 -0
- package/dist/helpers/preview.d.ts +18 -0
- package/dist/helpers/preview.d.ts.map +1 -0
- package/dist/helpers/preview.js +23 -0
- package/dist/helpers/preview.js.map +1 -0
- package/dist/helpers/redirects.d.ts +10 -0
- package/dist/helpers/redirects.d.ts.map +1 -0
- package/dist/helpers/redirects.js +27 -0
- package/dist/helpers/redirects.js.map +1 -0
- package/dist/helpers/robots.d.ts +6 -0
- package/dist/helpers/robots.d.ts.map +1 -0
- package/dist/helpers/robots.js +46 -0
- package/dist/helpers/robots.js.map +1 -0
- package/dist/helpers/schema.d.ts +15 -0
- package/dist/helpers/schema.d.ts.map +1 -0
- package/dist/helpers/schema.js +5 -0
- package/dist/helpers/schema.js.map +1 -0
- package/dist/helpers/sitemap.d.ts +11 -0
- package/dist/helpers/sitemap.d.ts.map +1 -0
- package/dist/helpers/sitemap.js +131 -0
- package/dist/helpers/sitemap.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/next.d.ts +14 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +24 -0
- package/dist/next.js.map +1 -0
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +260 -0
- package/dist/plugin.js.map +1 -0
- package/dist/resolvers/document.d.ts +5 -0
- package/dist/resolvers/document.d.ts.map +1 -0
- package/dist/resolvers/document.js +15 -0
- package/dist/resolvers/document.js.map +1 -0
- package/dist/resolvers/effective.d.ts +33 -0
- package/dist/resolvers/effective.d.ts.map +1 -0
- package/dist/resolvers/effective.js +225 -0
- package/dist/resolvers/effective.js.map +1 -0
- package/dist/resolvers/metadata.d.ts +13 -0
- package/dist/resolvers/metadata.d.ts.map +1 -0
- package/dist/resolvers/metadata.js +24 -0
- package/dist/resolvers/metadata.js.map +1 -0
- package/dist/types.d.ts +261 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/generated-schema.d.ts +11 -0
- package/dist/utils/generated-schema.d.ts.map +1 -0
- package/dist/utils/generated-schema.js +69 -0
- package/dist/utils/generated-schema.js.map +1 -0
- package/dist/utils/locale.d.ts +17 -0
- package/dist/utils/locale.d.ts.map +1 -0
- package/dist/utils/locale.js +5 -0
- package/dist/utils/locale.js.map +1 -0
- package/dist/utils/robots.d.ts +11 -0
- package/dist/utils/robots.d.ts.map +1 -0
- package/dist/utils/robots.js +35 -0
- package/dist/utils/robots.js.map +1 -0
- package/dist/utils/urls.d.ts +9 -0
- package/dist/utils/urls.d.ts.map +1 -0
- package/dist/utils/urls.js +48 -0
- package/dist/utils/urls.js.map +1 -0
- package/dist/utils/validation.d.ts +20 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +56 -0
- package/dist/utils/validation.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { LabelFunction } from 'payload';
|
|
2
|
+
declare const en: {
|
|
3
|
+
readonly contentTab: "Content";
|
|
4
|
+
readonly seoTab: "SEO";
|
|
5
|
+
readonly seo: "SEO";
|
|
6
|
+
readonly general: "General";
|
|
7
|
+
readonly canonical: "Canonical";
|
|
8
|
+
readonly robots: "Robots";
|
|
9
|
+
readonly openGraph: "Open Graph";
|
|
10
|
+
readonly twitter: "X / Twitter";
|
|
11
|
+
readonly schema: "Schema";
|
|
12
|
+
readonly previews: "Previews";
|
|
13
|
+
readonly title: "Title";
|
|
14
|
+
readonly description: "Description";
|
|
15
|
+
readonly focusKeyword: "Focus keyword";
|
|
16
|
+
readonly image: "Image";
|
|
17
|
+
readonly card: "Card";
|
|
18
|
+
readonly canonicalMode: "Canonical mode";
|
|
19
|
+
readonly canonicalUrl: "Canonical URL";
|
|
20
|
+
readonly auto: "Auto";
|
|
21
|
+
readonly manual: "Manual";
|
|
22
|
+
readonly none: "None";
|
|
23
|
+
readonly robotsIndex: "Index directive";
|
|
24
|
+
readonly robotsFollow: "Follow directive";
|
|
25
|
+
readonly index: "Index";
|
|
26
|
+
readonly noindex: "No index";
|
|
27
|
+
readonly follow: "Follow";
|
|
28
|
+
readonly nofollow: "No follow";
|
|
29
|
+
readonly summary: "Summary";
|
|
30
|
+
readonly summaryLargeImage: "Summary large image";
|
|
31
|
+
readonly schemaType: "Schema type";
|
|
32
|
+
readonly schemaOverrides: "Schema overrides";
|
|
33
|
+
readonly rawJson: "Raw JSON override";
|
|
34
|
+
readonly name: "Name";
|
|
35
|
+
readonly about: "About";
|
|
36
|
+
readonly headline: "Headline";
|
|
37
|
+
readonly author: "Author";
|
|
38
|
+
readonly datePublished: "Published date";
|
|
39
|
+
readonly dateModified: "Modified date";
|
|
40
|
+
readonly productDescription: "Product description";
|
|
41
|
+
readonly sku: "SKU";
|
|
42
|
+
readonly brand: "Brand";
|
|
43
|
+
readonly price: "Price";
|
|
44
|
+
readonly priceCurrency: "Price currency";
|
|
45
|
+
readonly telephone: "Telephone";
|
|
46
|
+
readonly address: "Address";
|
|
47
|
+
readonly question: "Question";
|
|
48
|
+
readonly answer: "Answer";
|
|
49
|
+
readonly seoSettings: "SEO settings";
|
|
50
|
+
readonly siteDefaults: "Site defaults";
|
|
51
|
+
readonly siteName: "Site name";
|
|
52
|
+
readonly titleTemplate: "Title template";
|
|
53
|
+
readonly defaultDescription: "Default description";
|
|
54
|
+
readonly socialDefaults: "Social defaults";
|
|
55
|
+
readonly defaultOpenGraphImage: "Default Open Graph image";
|
|
56
|
+
readonly defaultTwitterCard: "Default X / Twitter card";
|
|
57
|
+
readonly defaultRobots: "Default robots";
|
|
58
|
+
readonly organizationSchema: "Organization schema";
|
|
59
|
+
readonly organizationName: "Organization name";
|
|
60
|
+
readonly organizationUrl: "Organization URL";
|
|
61
|
+
readonly organizationLogo: "Organization logo";
|
|
62
|
+
readonly robotsTxt: "robots.txt";
|
|
63
|
+
readonly robotsMode: "Robots mode";
|
|
64
|
+
readonly generated: "Generated";
|
|
65
|
+
readonly override: "Override";
|
|
66
|
+
readonly groups: "Groups";
|
|
67
|
+
readonly userAgent: "User-agent";
|
|
68
|
+
readonly allow: "Allow";
|
|
69
|
+
readonly disallow: "Disallow";
|
|
70
|
+
readonly path: "Path";
|
|
71
|
+
readonly appendText: "Append text";
|
|
72
|
+
readonly overrideText: "Override text";
|
|
73
|
+
readonly seoRedirect: "SEO redirect";
|
|
74
|
+
readonly seoRedirects: "SEO redirects";
|
|
75
|
+
readonly source: "Source";
|
|
76
|
+
readonly destinationType: "Destination type";
|
|
77
|
+
readonly destination: "Destination";
|
|
78
|
+
readonly internal: "Internal";
|
|
79
|
+
readonly external: "External";
|
|
80
|
+
readonly statusCode: "Status code";
|
|
81
|
+
readonly permanentRedirect: "301 Permanent";
|
|
82
|
+
readonly temporaryRedirect: "302 Temporary";
|
|
83
|
+
readonly enabled: "Enabled";
|
|
84
|
+
readonly notes: "Notes";
|
|
85
|
+
readonly validationAbsoluteHttpUrl: "Enter an absolute HTTP or HTTPS URL.";
|
|
86
|
+
readonly validationJson: "Enter valid JSON.";
|
|
87
|
+
readonly validationManualCanonical: "A manual canonical URL is required.";
|
|
88
|
+
readonly validationInternalPath: "Enter an internal path beginning with one slash, without an origin, query string, or fragment.";
|
|
89
|
+
readonly validationRedirectLoop: "Redirects cannot form a loop.";
|
|
90
|
+
readonly previewAriaLabel: "SEO previews";
|
|
91
|
+
readonly previewTitle: "Page title";
|
|
92
|
+
readonly previewDescription: "Add a concise description to preview how this document may appear when shared.";
|
|
93
|
+
readonly previewImageMissing: "No image selected";
|
|
94
|
+
readonly googleResult: "Google result";
|
|
95
|
+
readonly openGraphPreview: "Open Graph · example.com";
|
|
96
|
+
readonly twitterPreview: "X card · example.com";
|
|
97
|
+
readonly generatedJson: "Generated JSON";
|
|
98
|
+
readonly copy: "Copy";
|
|
99
|
+
readonly copied: "Copied";
|
|
100
|
+
readonly generatedJsonDescription: "This reflects the visual schema fields. A raw override takes precedence when saved.";
|
|
101
|
+
readonly useGeneratedJson: "Use generated JSON as override";
|
|
102
|
+
readonly rawJsonDescription: "Optional. Valid JSON here replaces the generated schema entirely.";
|
|
103
|
+
readonly clearRawJson: "Clear raw JSON override";
|
|
104
|
+
readonly schemaOverridesDescription: "Values configured by your developer are inherited from this document. Leave a field empty to use its mapped value.";
|
|
105
|
+
readonly schemaOverrideValue: "Using {path}: {value}. Enter a value only to override it.";
|
|
106
|
+
readonly yes: "Yes";
|
|
107
|
+
readonly no: "No";
|
|
108
|
+
};
|
|
109
|
+
type AdminText = {
|
|
110
|
+
[Key in keyof typeof en]: string;
|
|
111
|
+
};
|
|
112
|
+
/** The single typed catalog for every plugin-owned Payload Admin string. */
|
|
113
|
+
export declare const adminTranslations: {
|
|
114
|
+
en: {
|
|
115
|
+
readonly contentTab: "Content";
|
|
116
|
+
readonly seoTab: "SEO";
|
|
117
|
+
readonly seo: "SEO";
|
|
118
|
+
readonly general: "General";
|
|
119
|
+
readonly canonical: "Canonical";
|
|
120
|
+
readonly robots: "Robots";
|
|
121
|
+
readonly openGraph: "Open Graph";
|
|
122
|
+
readonly twitter: "X / Twitter";
|
|
123
|
+
readonly schema: "Schema";
|
|
124
|
+
readonly previews: "Previews";
|
|
125
|
+
readonly title: "Title";
|
|
126
|
+
readonly description: "Description";
|
|
127
|
+
readonly focusKeyword: "Focus keyword";
|
|
128
|
+
readonly image: "Image";
|
|
129
|
+
readonly card: "Card";
|
|
130
|
+
readonly canonicalMode: "Canonical mode";
|
|
131
|
+
readonly canonicalUrl: "Canonical URL";
|
|
132
|
+
readonly auto: "Auto";
|
|
133
|
+
readonly manual: "Manual";
|
|
134
|
+
readonly none: "None";
|
|
135
|
+
readonly robotsIndex: "Index directive";
|
|
136
|
+
readonly robotsFollow: "Follow directive";
|
|
137
|
+
readonly index: "Index";
|
|
138
|
+
readonly noindex: "No index";
|
|
139
|
+
readonly follow: "Follow";
|
|
140
|
+
readonly nofollow: "No follow";
|
|
141
|
+
readonly summary: "Summary";
|
|
142
|
+
readonly summaryLargeImage: "Summary large image";
|
|
143
|
+
readonly schemaType: "Schema type";
|
|
144
|
+
readonly schemaOverrides: "Schema overrides";
|
|
145
|
+
readonly rawJson: "Raw JSON override";
|
|
146
|
+
readonly name: "Name";
|
|
147
|
+
readonly about: "About";
|
|
148
|
+
readonly headline: "Headline";
|
|
149
|
+
readonly author: "Author";
|
|
150
|
+
readonly datePublished: "Published date";
|
|
151
|
+
readonly dateModified: "Modified date";
|
|
152
|
+
readonly productDescription: "Product description";
|
|
153
|
+
readonly sku: "SKU";
|
|
154
|
+
readonly brand: "Brand";
|
|
155
|
+
readonly price: "Price";
|
|
156
|
+
readonly priceCurrency: "Price currency";
|
|
157
|
+
readonly telephone: "Telephone";
|
|
158
|
+
readonly address: "Address";
|
|
159
|
+
readonly question: "Question";
|
|
160
|
+
readonly answer: "Answer";
|
|
161
|
+
readonly seoSettings: "SEO settings";
|
|
162
|
+
readonly siteDefaults: "Site defaults";
|
|
163
|
+
readonly siteName: "Site name";
|
|
164
|
+
readonly titleTemplate: "Title template";
|
|
165
|
+
readonly defaultDescription: "Default description";
|
|
166
|
+
readonly socialDefaults: "Social defaults";
|
|
167
|
+
readonly defaultOpenGraphImage: "Default Open Graph image";
|
|
168
|
+
readonly defaultTwitterCard: "Default X / Twitter card";
|
|
169
|
+
readonly defaultRobots: "Default robots";
|
|
170
|
+
readonly organizationSchema: "Organization schema";
|
|
171
|
+
readonly organizationName: "Organization name";
|
|
172
|
+
readonly organizationUrl: "Organization URL";
|
|
173
|
+
readonly organizationLogo: "Organization logo";
|
|
174
|
+
readonly robotsTxt: "robots.txt";
|
|
175
|
+
readonly robotsMode: "Robots mode";
|
|
176
|
+
readonly generated: "Generated";
|
|
177
|
+
readonly override: "Override";
|
|
178
|
+
readonly groups: "Groups";
|
|
179
|
+
readonly userAgent: "User-agent";
|
|
180
|
+
readonly allow: "Allow";
|
|
181
|
+
readonly disallow: "Disallow";
|
|
182
|
+
readonly path: "Path";
|
|
183
|
+
readonly appendText: "Append text";
|
|
184
|
+
readonly overrideText: "Override text";
|
|
185
|
+
readonly seoRedirect: "SEO redirect";
|
|
186
|
+
readonly seoRedirects: "SEO redirects";
|
|
187
|
+
readonly source: "Source";
|
|
188
|
+
readonly destinationType: "Destination type";
|
|
189
|
+
readonly destination: "Destination";
|
|
190
|
+
readonly internal: "Internal";
|
|
191
|
+
readonly external: "External";
|
|
192
|
+
readonly statusCode: "Status code";
|
|
193
|
+
readonly permanentRedirect: "301 Permanent";
|
|
194
|
+
readonly temporaryRedirect: "302 Temporary";
|
|
195
|
+
readonly enabled: "Enabled";
|
|
196
|
+
readonly notes: "Notes";
|
|
197
|
+
readonly validationAbsoluteHttpUrl: "Enter an absolute HTTP or HTTPS URL.";
|
|
198
|
+
readonly validationJson: "Enter valid JSON.";
|
|
199
|
+
readonly validationManualCanonical: "A manual canonical URL is required.";
|
|
200
|
+
readonly validationInternalPath: "Enter an internal path beginning with one slash, without an origin, query string, or fragment.";
|
|
201
|
+
readonly validationRedirectLoop: "Redirects cannot form a loop.";
|
|
202
|
+
readonly previewAriaLabel: "SEO previews";
|
|
203
|
+
readonly previewTitle: "Page title";
|
|
204
|
+
readonly previewDescription: "Add a concise description to preview how this document may appear when shared.";
|
|
205
|
+
readonly previewImageMissing: "No image selected";
|
|
206
|
+
readonly googleResult: "Google result";
|
|
207
|
+
readonly openGraphPreview: "Open Graph · example.com";
|
|
208
|
+
readonly twitterPreview: "X card · example.com";
|
|
209
|
+
readonly generatedJson: "Generated JSON";
|
|
210
|
+
readonly copy: "Copy";
|
|
211
|
+
readonly copied: "Copied";
|
|
212
|
+
readonly generatedJsonDescription: "This reflects the visual schema fields. A raw override takes precedence when saved.";
|
|
213
|
+
readonly useGeneratedJson: "Use generated JSON as override";
|
|
214
|
+
readonly rawJsonDescription: "Optional. Valid JSON here replaces the generated schema entirely.";
|
|
215
|
+
readonly clearRawJson: "Clear raw JSON override";
|
|
216
|
+
readonly schemaOverridesDescription: "Values configured by your developer are inherited from this document. Leave a field empty to use its mapped value.";
|
|
217
|
+
readonly schemaOverrideValue: "Using {path}: {value}. Enter a value only to override it.";
|
|
218
|
+
readonly yes: "Yes";
|
|
219
|
+
readonly no: "No";
|
|
220
|
+
};
|
|
221
|
+
ru: AdminText;
|
|
222
|
+
uk: AdminText;
|
|
223
|
+
};
|
|
224
|
+
export type AdminLanguage = keyof typeof adminTranslations;
|
|
225
|
+
export type AdminTextKey = keyof typeof en;
|
|
226
|
+
export declare const resolveAdminLanguage: (language?: string) => AdminLanguage;
|
|
227
|
+
export declare const adminText: (key: AdminTextKey, language?: string, variables?: Record<string, string>) => string;
|
|
228
|
+
/**
|
|
229
|
+
* Payload v3 serializes tab-label callbacks with only `{ t }`, omitting i18n.
|
|
230
|
+
* Keep tab labels as language maps so the Tabs client resolves them itself.
|
|
231
|
+
*/
|
|
232
|
+
export declare const adminTabLabel: (key: AdminTextKey) => Record<string, string>;
|
|
233
|
+
/** Lets Payload resolve generated labels using the active Admin interface language. */
|
|
234
|
+
export declare const adminLabel: (key: AdminTextKey) => LabelFunction;
|
|
235
|
+
export {};
|
|
236
|
+
//# sourceMappingURL=translations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../src/admin/translations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,QAAA,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcE,CAAA;AAEV,KAAK,SAAS,GAAG;KAAG,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG,MAAM;CAAE,CAAA;AAkCrD,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiE,CAAA;AAE/F,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,iBAAiB,CAAA;AAC1D,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,EAAE,CAAA;AAE1C,eAAO,MAAM,oBAAoB,GAAI,WAAW,MAAM,KAAG,aAGxD,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,KAAK,YAAY,EAAE,WAAW,MAAM,EAAE,YAAW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,KAAG,MAC0B,CAAA;AAEnI;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,KAAK,YAAY,KAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAOrE,CAAA;AAEF,uFAAuF;AACvF,eAAO,MAAM,UAAU,GAAI,KAAK,YAAY,KAAG,aACsC,CAAA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
contentTab: 'Content', seoTab: 'SEO', seo: 'SEO', general: 'General', canonical: 'Canonical', robots: 'Robots', openGraph: 'Open Graph', twitter: 'X / Twitter', schema: 'Schema', previews: 'Previews',
|
|
3
|
+
title: 'Title', description: 'Description', focusKeyword: 'Focus keyword', image: 'Image', card: 'Card',
|
|
4
|
+
canonicalMode: 'Canonical mode', canonicalUrl: 'Canonical URL', auto: 'Auto', manual: 'Manual', none: 'None',
|
|
5
|
+
robotsIndex: 'Index directive', robotsFollow: 'Follow directive', index: 'Index', noindex: 'No index', follow: 'Follow', nofollow: 'No follow',
|
|
6
|
+
summary: 'Summary', summaryLargeImage: 'Summary large image',
|
|
7
|
+
schemaType: 'Schema type', schemaOverrides: 'Schema overrides', rawJson: 'Raw JSON override',
|
|
8
|
+
name: 'Name', about: 'About', headline: 'Headline', author: 'Author', datePublished: 'Published date', dateModified: 'Modified date', productDescription: 'Product description', sku: 'SKU', brand: 'Brand', price: 'Price', priceCurrency: 'Price currency', telephone: 'Telephone', address: 'Address', question: 'Question', answer: 'Answer',
|
|
9
|
+
seoSettings: 'SEO settings', siteDefaults: 'Site defaults', siteName: 'Site name', titleTemplate: 'Title template', defaultDescription: 'Default description', socialDefaults: 'Social defaults', defaultOpenGraphImage: 'Default Open Graph image', defaultTwitterCard: 'Default X / Twitter card', defaultRobots: 'Default robots', organizationSchema: 'Organization schema', organizationName: 'Organization name', organizationUrl: 'Organization URL', organizationLogo: 'Organization logo', robotsTxt: 'robots.txt', robotsMode: 'Robots mode', generated: 'Generated', override: 'Override', groups: 'Groups', userAgent: 'User-agent', allow: 'Allow', disallow: 'Disallow', path: 'Path', appendText: 'Append text', overrideText: 'Override text',
|
|
10
|
+
seoRedirect: 'SEO redirect', seoRedirects: 'SEO redirects', source: 'Source', destinationType: 'Destination type', destination: 'Destination', internal: 'Internal', external: 'External', statusCode: 'Status code', permanentRedirect: '301 Permanent', temporaryRedirect: '302 Temporary', enabled: 'Enabled', notes: 'Notes',
|
|
11
|
+
validationAbsoluteHttpUrl: 'Enter an absolute HTTP or HTTPS URL.', validationJson: 'Enter valid JSON.', validationManualCanonical: 'A manual canonical URL is required.', validationInternalPath: 'Enter an internal path beginning with one slash, without an origin, query string, or fragment.', validationRedirectLoop: 'Redirects cannot form a loop.',
|
|
12
|
+
previewAriaLabel: 'SEO previews', previewTitle: 'Page title', previewDescription: 'Add a concise description to preview how this document may appear when shared.', previewImageMissing: 'No image selected', googleResult: 'Google result', openGraphPreview: 'Open Graph · example.com', twitterPreview: 'X card · example.com',
|
|
13
|
+
generatedJson: 'Generated JSON', copy: 'Copy', copied: 'Copied', generatedJsonDescription: 'This reflects the visual schema fields. A raw override takes precedence when saved.', useGeneratedJson: 'Use generated JSON as override', rawJsonDescription: 'Optional. Valid JSON here replaces the generated schema entirely.', clearRawJson: 'Clear raw JSON override',
|
|
14
|
+
schemaOverridesDescription: 'Values configured by your developer are inherited from this document. Leave a field empty to use its mapped value.', schemaOverrideValue: 'Using {path}: {value}. Enter a value only to override it.', yes: 'Yes', no: 'No',
|
|
15
|
+
};
|
|
16
|
+
const ru = {
|
|
17
|
+
contentTab: 'Содержимое', seoTab: 'SEO', seo: 'SEO', general: 'Основное', canonical: 'Канонический URL', robots: 'Robots', openGraph: 'Open Graph', twitter: 'X / Twitter', schema: 'Schema', previews: 'Предпросмотр',
|
|
18
|
+
title: 'Заголовок', description: 'Описание', focusKeyword: 'Ключевое слово', image: 'Изображение', card: 'Карточка',
|
|
19
|
+
canonicalMode: 'Режим канонического URL', canonicalUrl: 'Канонический URL', auto: 'Автоматически', manual: 'Вручную', none: 'Нет',
|
|
20
|
+
robotsIndex: 'Директива индексации', robotsFollow: 'Директива ссылок', index: 'Индексировать', noindex: 'Не индексировать', follow: 'Переходить по ссылкам', nofollow: 'Не переходить по ссылкам',
|
|
21
|
+
summary: 'Краткая', summaryLargeImage: 'Краткая с большим изображением',
|
|
22
|
+
schemaType: 'Тип Schema', schemaOverrides: 'Переопределения Schema', rawJson: 'Переопределение Raw JSON',
|
|
23
|
+
name: 'Название', about: 'О странице', headline: 'Заголовок', author: 'Автор', datePublished: 'Дата публикации', dateModified: 'Дата изменения', productDescription: 'Описание товара', sku: 'Артикул', brand: 'Бренд', price: 'Цена', priceCurrency: 'Валюта цены', telephone: 'Телефон', address: 'Адрес', question: 'Вопрос', answer: 'Ответ',
|
|
24
|
+
seoSettings: 'Настройки SEO', siteDefaults: 'Настройки сайта', siteName: 'Название сайта', titleTemplate: 'Шаблон заголовка', defaultDescription: 'Описание по умолчанию', socialDefaults: 'Настройки соцсетей', defaultOpenGraphImage: 'Изображение Open Graph по умолчанию', defaultTwitterCard: 'Карточка X / Twitter по умолчанию', defaultRobots: 'Robots по умолчанию', organizationSchema: 'Schema организации', organizationName: 'Название организации', organizationUrl: 'URL организации', organizationLogo: 'Логотип организации', robotsTxt: 'robots.txt', robotsMode: 'Режим robots', generated: 'Сгенерированный', override: 'Переопределение', groups: 'Группы', userAgent: 'User-agent', allow: 'Разрешить', disallow: 'Запретить', path: 'Путь', appendText: 'Добавить текст', overrideText: 'Текст переопределения',
|
|
25
|
+
seoRedirect: 'SEO-перенаправление', seoRedirects: 'SEO-перенаправления', source: 'Источник', destinationType: 'Тип назначения', destination: 'Назначение', internal: 'Внутреннее', external: 'Внешнее', statusCode: 'Код статуса', permanentRedirect: '301 Постоянное', temporaryRedirect: '302 Временное', enabled: 'Включено', notes: 'Заметки',
|
|
26
|
+
validationAbsoluteHttpUrl: 'Введите абсолютный URL HTTP или HTTPS.', validationJson: 'Введите корректный JSON.', validationManualCanonical: 'Требуется канонический URL, заданный вручную.', validationInternalPath: 'Введите внутренний путь, начинающийся с одного слеша, без домена, строки запроса или фрагмента.', validationRedirectLoop: 'Перенаправления не могут образовывать цикл.',
|
|
27
|
+
previewAriaLabel: 'Предпросмотры SEO', previewTitle: 'Заголовок страницы', previewDescription: 'Добавьте краткое описание, чтобы увидеть, как документ может выглядеть при публикации.', previewImageMissing: 'Изображение не выбрано', googleResult: 'Результат Google', openGraphPreview: 'Open Graph · example.com', twitterPreview: 'Карточка X · example.com',
|
|
28
|
+
generatedJson: 'Сгенерированный JSON', copy: 'Копировать', copied: 'Скопировано', generatedJsonDescription: 'Это отражает визуальные поля Schema. При сохранении Raw JSON имеет приоритет.', useGeneratedJson: 'Использовать сгенерированный JSON как переопределение', rawJsonDescription: 'Необязательно. Корректный JSON здесь полностью заменяет сгенерированную Schema.', clearRawJson: 'Очистить переопределение Raw JSON',
|
|
29
|
+
schemaOverridesDescription: 'Значения, настроенные разработчиком, наследуются из этого документа. Оставьте поле пустым, чтобы использовать сопоставленное значение.', schemaOverrideValue: 'Используется {path}: {value}. Введите значение, только чтобы переопределить его.', yes: 'Да', no: 'Нет',
|
|
30
|
+
};
|
|
31
|
+
const uk = {
|
|
32
|
+
contentTab: 'Вміст', seoTab: 'SEO', seo: 'SEO', general: 'Загальне', canonical: 'Канонічний URL', robots: 'Robots', openGraph: 'Open Graph', twitter: 'X / Twitter', schema: 'Schema', previews: 'Попередній перегляд',
|
|
33
|
+
title: 'Заголовок', description: 'Опис', focusKeyword: 'Ключове слово', image: 'Зображення', card: 'Картка',
|
|
34
|
+
canonicalMode: 'Режим канонічного URL', canonicalUrl: 'Канонічний URL', auto: 'Автоматично', manual: 'Вручну', none: 'Немає',
|
|
35
|
+
robotsIndex: 'Директива індексації', robotsFollow: 'Директива посилань', index: 'Індексувати', noindex: 'Не індексувати', follow: 'Переходити за посиланнями', nofollow: 'Не переходити за посиланнями',
|
|
36
|
+
summary: 'Коротка', summaryLargeImage: 'Коротка з великим зображенням',
|
|
37
|
+
schemaType: 'Тип Schema', schemaOverrides: 'Перевизначення Schema', rawJson: 'Перевизначення Raw JSON',
|
|
38
|
+
name: 'Назва', about: 'Про сторінку', headline: 'Заголовок', author: 'Автор', datePublished: 'Дата публікації', dateModified: 'Дата зміни', productDescription: 'Опис товару', sku: 'Артикул', brand: 'Бренд', price: 'Ціна', priceCurrency: 'Валюта ціни', telephone: 'Телефон', address: 'Адреса', question: 'Запитання', answer: 'Відповідь',
|
|
39
|
+
seoSettings: 'Налаштування SEO', siteDefaults: 'Налаштування сайту', siteName: 'Назва сайту', titleTemplate: 'Шаблон заголовка', defaultDescription: 'Опис за замовчуванням', socialDefaults: 'Налаштування соцмереж', defaultOpenGraphImage: 'Зображення Open Graph за замовчуванням', defaultTwitterCard: 'Картка X / Twitter за замовчуванням', defaultRobots: 'Robots за замовчуванням', organizationSchema: 'Schema організації', organizationName: 'Назва організації', organizationUrl: 'URL організації', organizationLogo: 'Логотип організації', robotsTxt: 'robots.txt', robotsMode: 'Режим robots', generated: 'Згенерований', override: 'Перевизначення', groups: 'Групи', userAgent: 'User-agent', allow: 'Дозволити', disallow: 'Заборонити', path: 'Шлях', appendText: 'Додати текст', overrideText: 'Текст перевизначення',
|
|
40
|
+
seoRedirect: 'SEO-перенаправлення', seoRedirects: 'SEO-перенаправлення', source: 'Джерело', destinationType: 'Тип призначення', destination: 'Призначення', internal: 'Внутрішнє', external: 'Зовнішнє', statusCode: 'Код статусу', permanentRedirect: '301 Постійне', temporaryRedirect: '302 Тимчасове', enabled: 'Увімкнено', notes: 'Нотатки',
|
|
41
|
+
validationAbsoluteHttpUrl: 'Введіть абсолютний URL HTTP або HTTPS.', validationJson: 'Введіть коректний JSON.', validationManualCanonical: 'Потрібен канонічний URL, заданий вручну.', validationInternalPath: 'Введіть внутрішній шлях, що починається з одного слеша, без домену, рядка запиту або фрагмента.', validationRedirectLoop: 'Перенаправлення не можуть утворювати цикл.',
|
|
42
|
+
previewAriaLabel: 'Попередні перегляди SEO', previewTitle: 'Заголовок сторінки', previewDescription: 'Додайте стислий опис, щоб побачити, як документ може виглядати під час поширення.', previewImageMissing: 'Зображення не вибрано', googleResult: 'Результат Google', openGraphPreview: 'Open Graph · example.com', twitterPreview: 'Картка X · example.com',
|
|
43
|
+
generatedJson: 'Згенерований JSON', copy: 'Копіювати', copied: 'Скопійовано', generatedJsonDescription: 'Це відображає візуальні поля Schema. Під час збереження Raw JSON має пріоритет.', useGeneratedJson: 'Використати згенерований JSON як перевизначення', rawJsonDescription: 'Необов’язково. Коректний JSON тут повністю замінює згенеровану Schema.', clearRawJson: 'Очистити перевизначення Raw JSON',
|
|
44
|
+
schemaOverridesDescription: 'Значення, налаштовані розробником, успадковуються з цього документа. Залиште поле порожнім, щоб використати зіставлене значення.', schemaOverrideValue: 'Використовується {path}: {value}. Введіть значення, лише щоб перевизначити його.', yes: 'Так', no: 'Ні',
|
|
45
|
+
};
|
|
46
|
+
/** The single typed catalog for every plugin-owned Payload Admin string. */
|
|
47
|
+
export const adminTranslations = { en, ru, uk };
|
|
48
|
+
export const resolveAdminLanguage = (language) => {
|
|
49
|
+
const normalized = language?.trim().toLowerCase().split(/[-_]/, 1)[0];
|
|
50
|
+
return normalized === 'ru' || normalized === 'uk' || normalized === 'en' ? normalized : 'en';
|
|
51
|
+
};
|
|
52
|
+
export const adminText = (key, language, variables = {}) => adminTranslations[resolveAdminLanguage(language)][key].replace(/\{(\w+)\}/g, (_, name) => variables[name] ?? `{${name}}`);
|
|
53
|
+
/**
|
|
54
|
+
* Payload v3 serializes tab-label callbacks with only `{ t }`, omitting i18n.
|
|
55
|
+
* Keep tab labels as language maps so the Tabs client resolves them itself.
|
|
56
|
+
*/
|
|
57
|
+
export const adminTabLabel = (key) => ({
|
|
58
|
+
en: adminText(key, 'en'),
|
|
59
|
+
'en-GB': adminText(key, 'en-GB'),
|
|
60
|
+
ru: adminText(key, 'ru'),
|
|
61
|
+
'ru-RU': adminText(key, 'ru-RU'),
|
|
62
|
+
uk: adminText(key, 'uk'),
|
|
63
|
+
'uk-UA': adminText(key, 'uk-UA'),
|
|
64
|
+
});
|
|
65
|
+
/** Lets Payload resolve generated labels using the active Admin interface language. */
|
|
66
|
+
export const adminLabel = (key) => ({ i18n } = {}) => adminText(key, i18n?.language);
|
|
67
|
+
//# sourceMappingURL=translations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translations.js","sourceRoot":"","sources":["../../src/admin/translations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type AdminTextKey } from './translations.js';
|
|
2
|
+
/** Reads plugin copy from Payload's active Admin interface language. */
|
|
3
|
+
export declare const useAdminText: () => (key: AdminTextKey, variables?: Record<string, string>) => string;
|
|
4
|
+
//# sourceMappingURL=use-admin-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-text.d.ts","sourceRoot":"","sources":["../../src/admin/use-admin-text.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhE,wEAAwE;AACxE,eAAO,MAAM,YAAY,SAEf,KAAK,YAAY,EAAE,YAAY,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAC9D,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useTranslation } from '@payloadcms/ui';
|
|
3
|
+
import { adminText } from './translations.js';
|
|
4
|
+
/** Reads plugin copy from Payload's active Admin interface language. */
|
|
5
|
+
export const useAdminText = () => {
|
|
6
|
+
const { i18n } = useTranslation();
|
|
7
|
+
return (key, variables) => adminText(key, i18n.language, variables);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=use-admin-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-admin-text.js","sourceRoot":"","sources":["../../src/admin/use-admin-text.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAA;AAEhE,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;IACjC,OAAO,CAAC,GAAiB,EAAE,SAAkC,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;AAC5G,CAAC,CAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { CollectionConfig } from 'payload';
|
|
2
|
+
import { type SeoPluginAccess } from '../types.js';
|
|
3
|
+
export declare const createRedirectsCollection: ({ access, slug }: {
|
|
4
|
+
access?: SeoPluginAccess["redirects"];
|
|
5
|
+
slug: string;
|
|
6
|
+
}) => CollectionConfig;
|
|
7
|
+
//# sourceMappingURL=redirects.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.d.ts","sourceRoot":"","sources":["../../src/collections/redirects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAa,MAAM,SAAS,CAAA;AAE1D,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,aAAa,CAAA;AAkDrE,eAAO,MAAM,yBAAyB,GAAI,kBAAkB;IAAE,MAAM,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAAG,gBAoBpH,CAAA"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { SEO_PLUGIN_MARKER } from '../types.js';
|
|
2
|
+
import { adminLabel, adminText } from '../admin/translations.js';
|
|
3
|
+
import { isAbsoluteHttpUrl, normalizeRedirectPath } from '../utils/validation.js';
|
|
4
|
+
const deny = () => false;
|
|
5
|
+
const validatePath = (value, { req } = {}) => normalizeRedirectPath(value) ? true : adminText('validationInternalPath', req?.i18n?.language);
|
|
6
|
+
const normalizeRedirectFields = ({ data }) => {
|
|
7
|
+
if (!data)
|
|
8
|
+
return data;
|
|
9
|
+
const normalizedSource = normalizeRedirectPath(data.source);
|
|
10
|
+
if (normalizedSource)
|
|
11
|
+
data.source = normalizedSource;
|
|
12
|
+
if (data.destinationType === 'internal') {
|
|
13
|
+
const normalizedDestination = normalizeRedirectPath(data.destination);
|
|
14
|
+
if (normalizedDestination)
|
|
15
|
+
data.destination = normalizedDestination;
|
|
16
|
+
}
|
|
17
|
+
else if (typeof data.destination === 'string') {
|
|
18
|
+
data.destination = data.destination.trim();
|
|
19
|
+
}
|
|
20
|
+
return data;
|
|
21
|
+
};
|
|
22
|
+
/** Rejects a candidate that creates any enabled internal redirect cycle. */
|
|
23
|
+
const validateRedirectGraph = async ({ data, originalDoc, req, slug }) => {
|
|
24
|
+
const candidate = { ...originalDoc, ...data };
|
|
25
|
+
if (candidate.enabled === false || candidate.destinationType !== 'internal')
|
|
26
|
+
return data;
|
|
27
|
+
const source = normalizeRedirectPath(candidate.source);
|
|
28
|
+
const destination = normalizeRedirectPath(candidate.destination);
|
|
29
|
+
if (!source || !destination)
|
|
30
|
+
return data;
|
|
31
|
+
const result = await req.payload.find({ collection: slug, depth: 0, limit: 0, pagination: false, where: { enabled: { equals: true } }, req });
|
|
32
|
+
const redirects = result.docs;
|
|
33
|
+
const bySource = new Map(redirects.map((redirect) => [normalizeRedirectPath(redirect.source), redirect]));
|
|
34
|
+
bySource.set(source, candidate);
|
|
35
|
+
let current = destination;
|
|
36
|
+
const visited = new Set();
|
|
37
|
+
for (let remaining = redirects.length + 1; remaining > 0; remaining--) {
|
|
38
|
+
if (current === source || visited.has(current))
|
|
39
|
+
throw new Error(adminText('validationRedirectLoop', req.i18n?.language));
|
|
40
|
+
visited.add(current);
|
|
41
|
+
const next = bySource.get(current);
|
|
42
|
+
if (!next || next.destinationType !== 'internal')
|
|
43
|
+
return data;
|
|
44
|
+
const normalized = normalizeRedirectPath(next.destination);
|
|
45
|
+
if (!normalized)
|
|
46
|
+
return data;
|
|
47
|
+
current = normalized;
|
|
48
|
+
}
|
|
49
|
+
throw new Error(adminText('validationRedirectLoop', req.i18n?.language));
|
|
50
|
+
};
|
|
51
|
+
export const createRedirectsCollection = ({ access, slug }) => ({
|
|
52
|
+
slug,
|
|
53
|
+
labels: { singular: adminLabel('seoRedirect'), plural: adminLabel('seoRedirects') },
|
|
54
|
+
timestamps: true,
|
|
55
|
+
access: { admin: access?.admin ?? deny, create: access?.create ?? deny, read: access?.read ?? deny, update: access?.update ?? deny, delete: access?.delete ?? deny },
|
|
56
|
+
admin: { useAsTitle: 'source', group: "SEO", defaultColumns: ['source', 'destination', 'statusCode', 'enabled', 'updatedAt'], custom: { seo: { marker: SEO_PLUGIN_MARKER } } },
|
|
57
|
+
hooks: { beforeValidate: [normalizeRedirectFields, (args) => validateRedirectGraph({ ...args, slug })] },
|
|
58
|
+
fields: [
|
|
59
|
+
{ name: 'source', type: 'text', label: adminLabel('source'), required: true, unique: true, index: true, validate: validatePath },
|
|
60
|
+
{ name: 'destinationType', type: 'select', label: adminLabel('destinationType'), required: true, defaultValue: 'internal', options: [{ label: adminLabel('internal'), value: 'internal' }, { label: adminLabel('external'), value: 'external' }] },
|
|
61
|
+
{
|
|
62
|
+
name: 'destination', type: 'text', label: adminLabel('destination'), required: true, validate: (value, { siblingData, req } = {}) => siblingData?.destinationType === 'external'
|
|
63
|
+
? isAbsoluteHttpUrl(value) || adminText('validationAbsoluteHttpUrl', req?.i18n?.language)
|
|
64
|
+
: validatePath(value, { req })
|
|
65
|
+
},
|
|
66
|
+
{ name: 'statusCode', type: 'select', label: adminLabel('statusCode'), required: true, defaultValue: '301', options: [{ label: adminLabel('permanentRedirect'), value: '301' }, { label: adminLabel('temporaryRedirect'), value: '302' }] },
|
|
67
|
+
{ name: 'enabled', type: 'checkbox', label: adminLabel('enabled'), defaultValue: true },
|
|
68
|
+
{ name: 'notes', type: 'textarea', label: adminLabel('notes') },
|
|
69
|
+
],
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=redirects.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redirects.js","sourceRoot":"","sources":["../../src/collections/redirects.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Endpoint } from 'payload';
|
|
2
|
+
/** Resolves an authenticated Admin form's unsaved values with the production SEO resolver. */
|
|
3
|
+
export declare const createSeoPreviewEndpoint: (collection: string) => Omit<Endpoint, "root">;
|
|
4
|
+
//# sourceMappingURL=preview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/endpoints/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,QAAQ,EAAc,MAAM,SAAS,CAAA;AA4HnE,8FAA8F;AAC9F,eAAO,MAAM,wBAAwB,GAAI,YAAY,MAAM,KAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAwDjF,CAAA"}
|