@uptrademedia/site-kit 1.0.7 → 1.0.8
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/cli/index.mjs +0 -0
- package/dist/seo/index.js +118 -117
- package/dist/seo/index.js.map +1 -1
- package/dist/seo/index.mjs +117 -116
- package/dist/seo/index.mjs.map +1 -1
- package/package.json +9 -9
package/dist/seo/index.mjs
CHANGED
|
@@ -1,122 +1,11 @@
|
|
|
1
1
|
export { SitemapSync } from '../chunk-WPSRS352.mjs';
|
|
2
2
|
export { generateSitemap, getRedirect, getRobotsDirective, isIndexable } from '../chunk-JGQPAXTL.mjs';
|
|
3
|
-
import {
|
|
3
|
+
import { getSchemaMarkups, getEntityEnhancedSchema, getFAQData, getInternalLinks, getContentBlock, getEntities, getManagedScripts } from '../chunk-FQVGK746.mjs';
|
|
4
4
|
import '../chunk-4XPGGLVP.mjs';
|
|
5
5
|
import { cache } from 'react';
|
|
6
6
|
import 'server-only';
|
|
7
7
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
|
-
// src/seo/getManagedMetadata.ts
|
|
10
|
-
async function getManagedMetadata(options) {
|
|
11
|
-
const { projectId, path, fallback = {}, overrides = {} } = options;
|
|
12
|
-
const pageData = await getSEOPageData(projectId, path);
|
|
13
|
-
if (!pageData) {
|
|
14
|
-
return {
|
|
15
|
-
...fallback,
|
|
16
|
-
...overrides,
|
|
17
|
-
_managed: false,
|
|
18
|
-
_source: "fallback"
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
const metadata = {
|
|
22
|
-
_managed: true,
|
|
23
|
-
_source: "database"
|
|
24
|
-
};
|
|
25
|
-
if (pageData.managed_title) {
|
|
26
|
-
metadata.title = pageData.managed_title;
|
|
27
|
-
} else if (fallback.title) {
|
|
28
|
-
metadata.title = fallback.title;
|
|
29
|
-
}
|
|
30
|
-
if (pageData.managed_meta_description || pageData.managed_description) {
|
|
31
|
-
metadata.description = pageData.managed_meta_description || pageData.managed_description;
|
|
32
|
-
} else if (fallback.description) {
|
|
33
|
-
metadata.description = fallback.description;
|
|
34
|
-
}
|
|
35
|
-
if (pageData.managed_keywords?.length) {
|
|
36
|
-
metadata.keywords = pageData.managed_keywords;
|
|
37
|
-
} else if (fallback.keywords) {
|
|
38
|
-
metadata.keywords = fallback.keywords;
|
|
39
|
-
}
|
|
40
|
-
if (pageData.managed_robots) {
|
|
41
|
-
metadata.robots = pageData.managed_robots;
|
|
42
|
-
}
|
|
43
|
-
if (pageData.managed_canonical) {
|
|
44
|
-
metadata.alternates = {
|
|
45
|
-
...metadata.alternates,
|
|
46
|
-
canonical: pageData.managed_canonical
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
const ogTitle = pageData.managed_og_title || pageData.managed_title;
|
|
50
|
-
const ogDescription = pageData.managed_og_description || pageData.managed_meta_description || pageData.managed_description;
|
|
51
|
-
const ogImage = pageData.managed_og_image;
|
|
52
|
-
if (ogTitle || ogDescription || ogImage) {
|
|
53
|
-
metadata.openGraph = {
|
|
54
|
-
...ogTitle && { title: ogTitle },
|
|
55
|
-
...ogDescription && { description: ogDescription },
|
|
56
|
-
...ogImage && { images: [{ url: ogImage }] }
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
if (ogTitle || ogDescription || ogImage) {
|
|
60
|
-
metadata.twitter = {
|
|
61
|
-
card: "summary_large_image",
|
|
62
|
-
...ogTitle && { title: ogTitle },
|
|
63
|
-
...ogDescription && { description: ogDescription },
|
|
64
|
-
...ogImage && { images: [ogImage] }
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
return {
|
|
68
|
-
...metadata,
|
|
69
|
-
...overrides,
|
|
70
|
-
_managed: true,
|
|
71
|
-
_source: "database"
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
async function getABVariant(options) {
|
|
75
|
-
const { projectId, path, field, sessionId } = options;
|
|
76
|
-
const test = await getABTest(projectId, path, field);
|
|
77
|
-
if (!test) {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
let variant;
|
|
81
|
-
if (sessionId) {
|
|
82
|
-
const hash = sessionId.split("").reduce((acc, char) => {
|
|
83
|
-
return (acc << 5) - acc + char.charCodeAt(0);
|
|
84
|
-
}, 0);
|
|
85
|
-
variant = Math.abs(hash) % 100 < test.traffic_split * 100 ? "a" : "b";
|
|
86
|
-
} else {
|
|
87
|
-
variant = Math.random() < test.traffic_split ? "a" : "b";
|
|
88
|
-
}
|
|
89
|
-
recordABImpression(test.id, variant, sessionId).catch(() => {
|
|
90
|
-
});
|
|
91
|
-
return {
|
|
92
|
-
testId: test.id,
|
|
93
|
-
variant,
|
|
94
|
-
value: variant === "a" ? test.variant_a : test.variant_b
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
async function getManagedMetadataWithAB(options) {
|
|
98
|
-
const { sessionId, ...metadataOptions } = options;
|
|
99
|
-
const metadata = await getManagedMetadata(metadataOptions);
|
|
100
|
-
const titleTest = await getABVariant({
|
|
101
|
-
projectId: options.projectId,
|
|
102
|
-
path: options.path,
|
|
103
|
-
field: "title",
|
|
104
|
-
sessionId
|
|
105
|
-
});
|
|
106
|
-
if (titleTest) {
|
|
107
|
-
metadata.title = titleTest.value;
|
|
108
|
-
}
|
|
109
|
-
const descTest = await getABVariant({
|
|
110
|
-
projectId: options.projectId,
|
|
111
|
-
path: options.path,
|
|
112
|
-
field: "description",
|
|
113
|
-
sessionId
|
|
114
|
-
});
|
|
115
|
-
if (descTest) {
|
|
116
|
-
metadata.description = descTest.value;
|
|
117
|
-
}
|
|
118
|
-
return metadata;
|
|
119
|
-
}
|
|
120
9
|
function getSecureApiConfig() {
|
|
121
10
|
const apiUrl = process.env.UPTRADE_API_URL || process.env.NEXT_PUBLIC_UPTRADE_API_URL || "https://api.uptrademedia.com";
|
|
122
11
|
const apiKey = process.env.UPTRADE_API_KEY || "";
|
|
@@ -149,7 +38,7 @@ async function secureApiPost(endpoint, body = {}) {
|
|
|
149
38
|
return null;
|
|
150
39
|
}
|
|
151
40
|
}
|
|
152
|
-
var
|
|
41
|
+
var getSEOPageData = cache(async (projectId, path) => {
|
|
153
42
|
const result = await secureApiPost("/api/public/seo/page", {
|
|
154
43
|
projectId,
|
|
155
44
|
path
|
|
@@ -189,7 +78,7 @@ var getContentBlock2 = cache(async (projectId, path, section) => {
|
|
|
189
78
|
});
|
|
190
79
|
return result?.content || null;
|
|
191
80
|
});
|
|
192
|
-
var
|
|
81
|
+
var getABTest = cache(async (projectId, path, field) => {
|
|
193
82
|
const result = await secureApiPost("/api/public/seo/ab-test", {
|
|
194
83
|
projectId,
|
|
195
84
|
path,
|
|
@@ -197,7 +86,7 @@ var getABTest2 = cache(async (projectId, path, field) => {
|
|
|
197
86
|
});
|
|
198
87
|
return result?.test || null;
|
|
199
88
|
});
|
|
200
|
-
async function
|
|
89
|
+
async function recordABImpression(testId, variant, sessionId) {
|
|
201
90
|
await secureApiPost("/api/public/seo/ab-impression", { testId, variant, sessionId });
|
|
202
91
|
}
|
|
203
92
|
var getRedirectData = cache(async (projectId, path) => {
|
|
@@ -305,6 +194,118 @@ var getVisibilityScore = cache(async (projectId, pagePath) => {
|
|
|
305
194
|
var getVisibilitySummary = cache(async (projectId) => {
|
|
306
195
|
return signalApiGet(`/skills/seo/visibility/${projectId}/summary`);
|
|
307
196
|
});
|
|
197
|
+
|
|
198
|
+
// src/seo/getManagedMetadata.ts
|
|
199
|
+
async function getManagedMetadata(options) {
|
|
200
|
+
const { projectId, path, fallback = {}, overrides = {} } = options;
|
|
201
|
+
const pageData = await getSEOPageData(projectId, path);
|
|
202
|
+
if (!pageData) {
|
|
203
|
+
return {
|
|
204
|
+
...fallback,
|
|
205
|
+
...overrides,
|
|
206
|
+
_managed: false,
|
|
207
|
+
_source: "fallback"
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const metadata = {
|
|
211
|
+
_managed: true,
|
|
212
|
+
_source: "database"
|
|
213
|
+
};
|
|
214
|
+
if (pageData.managed_title) {
|
|
215
|
+
metadata.title = pageData.managed_title;
|
|
216
|
+
} else if (fallback.title) {
|
|
217
|
+
metadata.title = fallback.title;
|
|
218
|
+
}
|
|
219
|
+
if (pageData.managed_meta_description || pageData.managed_description) {
|
|
220
|
+
metadata.description = pageData.managed_meta_description || pageData.managed_description;
|
|
221
|
+
} else if (fallback.description) {
|
|
222
|
+
metadata.description = fallback.description;
|
|
223
|
+
}
|
|
224
|
+
if (pageData.managed_keywords?.length) {
|
|
225
|
+
metadata.keywords = pageData.managed_keywords;
|
|
226
|
+
} else if (fallback.keywords) {
|
|
227
|
+
metadata.keywords = fallback.keywords;
|
|
228
|
+
}
|
|
229
|
+
if (pageData.managed_robots) {
|
|
230
|
+
metadata.robots = pageData.managed_robots;
|
|
231
|
+
}
|
|
232
|
+
if (pageData.managed_canonical) {
|
|
233
|
+
metadata.alternates = {
|
|
234
|
+
...metadata.alternates,
|
|
235
|
+
canonical: pageData.managed_canonical
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
const ogTitle = pageData.managed_og_title || pageData.managed_title;
|
|
239
|
+
const ogDescription = pageData.managed_og_description || pageData.managed_meta_description || pageData.managed_description;
|
|
240
|
+
const ogImage = pageData.managed_og_image;
|
|
241
|
+
if (ogTitle || ogDescription || ogImage) {
|
|
242
|
+
metadata.openGraph = {
|
|
243
|
+
...ogTitle && { title: ogTitle },
|
|
244
|
+
...ogDescription && { description: ogDescription },
|
|
245
|
+
...ogImage && { images: [{ url: ogImage }] }
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
if (ogTitle || ogDescription || ogImage) {
|
|
249
|
+
metadata.twitter = {
|
|
250
|
+
card: "summary_large_image",
|
|
251
|
+
...ogTitle && { title: ogTitle },
|
|
252
|
+
...ogDescription && { description: ogDescription },
|
|
253
|
+
...ogImage && { images: [ogImage] }
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
...metadata,
|
|
258
|
+
...overrides,
|
|
259
|
+
_managed: true,
|
|
260
|
+
_source: "database"
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async function getABVariant(options) {
|
|
264
|
+
const { projectId, path, field, sessionId } = options;
|
|
265
|
+
const test = await getABTest(projectId, path, field);
|
|
266
|
+
if (!test) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
let variant;
|
|
270
|
+
if (sessionId) {
|
|
271
|
+
const hash = sessionId.split("").reduce((acc, char) => {
|
|
272
|
+
return (acc << 5) - acc + char.charCodeAt(0);
|
|
273
|
+
}, 0);
|
|
274
|
+
variant = Math.abs(hash) % 100 < test.traffic_split * 100 ? "a" : "b";
|
|
275
|
+
} else {
|
|
276
|
+
variant = Math.random() < test.traffic_split ? "a" : "b";
|
|
277
|
+
}
|
|
278
|
+
recordABImpression(test.id, variant, sessionId).catch(() => {
|
|
279
|
+
});
|
|
280
|
+
return {
|
|
281
|
+
testId: test.id,
|
|
282
|
+
variant,
|
|
283
|
+
value: variant === "a" ? test.variant_a : test.variant_b
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
async function getManagedMetadataWithAB(options) {
|
|
287
|
+
const { sessionId, ...metadataOptions } = options;
|
|
288
|
+
const metadata = await getManagedMetadata(metadataOptions);
|
|
289
|
+
const titleTest = await getABVariant({
|
|
290
|
+
projectId: options.projectId,
|
|
291
|
+
path: options.path,
|
|
292
|
+
field: "title",
|
|
293
|
+
sessionId
|
|
294
|
+
});
|
|
295
|
+
if (titleTest) {
|
|
296
|
+
metadata.title = titleTest.value;
|
|
297
|
+
}
|
|
298
|
+
const descTest = await getABVariant({
|
|
299
|
+
projectId: options.projectId,
|
|
300
|
+
path: options.path,
|
|
301
|
+
field: "description",
|
|
302
|
+
sessionId
|
|
303
|
+
});
|
|
304
|
+
if (descTest) {
|
|
305
|
+
metadata.description = descTest.value;
|
|
306
|
+
}
|
|
307
|
+
return metadata;
|
|
308
|
+
}
|
|
308
309
|
var DEFAULT_SPEAKABLE_SELECTORS = [
|
|
309
310
|
"h1",
|
|
310
311
|
'[data-speakable="true"]',
|
|
@@ -795,6 +796,6 @@ async function LocationPageContent({
|
|
|
795
796
|
}
|
|
796
797
|
}
|
|
797
798
|
|
|
798
|
-
export { LocationPageContent, ManagedContent, ManagedFAQ, ManagedInternalLinks, ManagedNoScripts, ManagedSchema, ManagedScripts, createBreadcrumbSchema, createSchema, ManagedSchema as default,
|
|
799
|
+
export { LocationPageContent, ManagedContent, ManagedFAQ, ManagedInternalLinks, ManagedNoScripts, ManagedSchema, ManagedScripts, createBreadcrumbSchema, createSchema, ManagedSchema as default, getABTest, getABVariant, getContentBlock2 as getContentBlock, getEntities2 as getEntities, getEntityEnhancedSchema2 as getEntityEnhancedSchema, getFAQData2 as getFAQData, getInternalLinks2 as getInternalLinks, getLocationSection, getManagedContentData, getManagedMetadata, getManagedMetadataWithAB, getManagedScripts2 as getManagedScripts, getPrimaryEntity, getRedirectData, getRobotsData, getSEOPageData, getSchemaMarkups2 as getSchemaMarkups, getSitemapEntries, getVisibilityScore, getVisibilitySummary, recordABImpression, registerSitemap };
|
|
799
800
|
//# sourceMappingURL=index.mjs.map
|
|
800
801
|
//# sourceMappingURL=index.mjs.map
|