@anywayseo/gatsby-plugin 2.8.0 → 2.8.1
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/package.json +1 -1
- package/utils/create-pages/mdx/index.js +4 -1
- package/utils/create-pages/mdx/types.d.ts +3 -0
- package/utils/create-pages/strapi/index.js +5 -2
- package/utils/create-pages/strapi/types.d.ts +3 -0
- package/utils/create-pages/utils/hreflang.js +23 -4
- package/utils/create-pages/utils/slug.d.ts +4 -2
- package/utils/create-pages/utils/slug.js +17 -20
- package/utils/create-pages/utils/types.d.ts +5 -1
- package/utils/strapi-source/schema/collections/hub.d.ts +1 -0
- package/utils/strapi-source/schema/collections/hub.js +10 -0
- package/utils/strapi-source/schema/collections/page.d.ts +1 -1
- package/utils/strapi-source/schema/collections/page.js +1 -0
- package/utils/strapi-source/schema/index.js +14 -1
- package/utils/strapi-source/strapi-content/index.js +3 -0
package/package.json
CHANGED
|
@@ -33,6 +33,9 @@ function createMdxPages(_a, root_1) {
|
|
|
33
33
|
allStrapiPage {
|
|
34
34
|
nodes {
|
|
35
35
|
slug
|
|
36
|
+
hub {
|
|
37
|
+
slug
|
|
38
|
+
}
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
}
|
|
@@ -52,7 +55,7 @@ function createMdxPages(_a, root_1) {
|
|
|
52
55
|
const slug = frontmatter === null || frontmatter === void 0 ? void 0 : frontmatter.slug;
|
|
53
56
|
const contentFilePath = internal.contentFilePath;
|
|
54
57
|
if (slug && contentFilePath) {
|
|
55
|
-
const existingPage = strapiPages.find((strapiPage) => (0, slug_1.isEqualSlug)(strapiPage === null ||
|
|
58
|
+
const existingPage = strapiPages.find((strapiPage) => { var _a; return (0, slug_1.isEqualSlug)((0, slug_1.mergeSlug)(strapiPage.slug, (_a = strapiPage.hub) === null || _a === void 0 ? void 0 : _a.slug), slug); });
|
|
56
59
|
if (!!existingPage) {
|
|
57
60
|
reporter.warn(`Skipping MDX page creation: "${slug}" already exists`);
|
|
58
61
|
return;
|
|
@@ -29,6 +29,9 @@ function createStrapiPages(_a, root_1) {
|
|
|
29
29
|
title
|
|
30
30
|
slug
|
|
31
31
|
locale
|
|
32
|
+
hub {
|
|
33
|
+
slug
|
|
34
|
+
}
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
}
|
|
@@ -46,7 +49,7 @@ function createStrapiPages(_a, root_1) {
|
|
|
46
49
|
const hrefLangMap = (0, hreflang_1.buildHrefLangMap)(strapiPages, defaultLocale);
|
|
47
50
|
reporter.info(`Generated hrefLangs for Strapi pages`);
|
|
48
51
|
let pageCount = 0;
|
|
49
|
-
strapiPages.forEach(({ id, slug, title, locale }) => {
|
|
52
|
+
strapiPages.forEach(({ id, slug, title, locale, hub }) => {
|
|
50
53
|
var _a;
|
|
51
54
|
if ((0, slug_1.isDummyPage)(slug)) {
|
|
52
55
|
reporter.warn('Skipping page creation: dummy page detected');
|
|
@@ -57,7 +60,7 @@ function createStrapiPages(_a, root_1) {
|
|
|
57
60
|
return;
|
|
58
61
|
}
|
|
59
62
|
const strapiPageTemplate = (0, path_1.resolve)(root, `./src/templates/strapi-page.tsx`);
|
|
60
|
-
const strapiPagePath = (0, slug_1.buildPath)(slug, locale, defaultLocale);
|
|
63
|
+
const strapiPagePath = (0, slug_1.buildPath)((0, slug_1.mergeSlug)(slug, hub === null || hub === void 0 ? void 0 : hub.slug), locale, defaultLocale);
|
|
61
64
|
const strapiPageHrefLangs = (_a = hrefLangMap[strapiPagePath]) !== null && _a !== void 0 ? _a : [];
|
|
62
65
|
actions.createPage({
|
|
63
66
|
path: strapiPagePath,
|
|
@@ -2,20 +2,39 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildHrefLangMap = buildHrefLangMap;
|
|
4
4
|
const slug_1 = require("./slug");
|
|
5
|
-
|
|
5
|
+
function groupPagesBySlug(pages, defaultLocale) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
const groups = {};
|
|
8
|
+
for (const page of pages) {
|
|
9
|
+
const slug = (0, slug_1.normalizeSlug)((0, slug_1.mergeSlug)(page.slug, (_a = page.hub) === null || _a === void 0 ? void 0 : _a.slug));
|
|
10
|
+
const locale = (_b = page.locale) !== null && _b !== void 0 ? _b : defaultLocale;
|
|
11
|
+
if (!groups[slug]) {
|
|
12
|
+
groups[slug] = [];
|
|
13
|
+
}
|
|
14
|
+
groups[slug].push({ slug, locale });
|
|
15
|
+
}
|
|
16
|
+
return groups;
|
|
17
|
+
}
|
|
18
|
+
function buildCanonicalHref(slug, locale, defaultLocale) {
|
|
19
|
+
const path = (0, slug_1.buildPath)(slug, locale, defaultLocale);
|
|
20
|
+
if (path === '/') {
|
|
21
|
+
return '';
|
|
22
|
+
}
|
|
23
|
+
return path.endsWith('/') ? path : `${path}/`;
|
|
24
|
+
}
|
|
6
25
|
function getDefaultHrefLang(pages, defaultLocale) {
|
|
7
26
|
var _a;
|
|
8
27
|
const defaultPage = (_a = pages.find((page) => page.locale === defaultLocale)) !== null && _a !== void 0 ? _a : pages[0];
|
|
9
|
-
return { href: (
|
|
28
|
+
return { href: buildCanonicalHref(defaultPage.slug, defaultPage.locale, defaultLocale), hrefLang: 'x-default' };
|
|
10
29
|
}
|
|
11
30
|
function buildHrefLangMap(pages, defaultLocale = 'en') {
|
|
12
31
|
const hrefLangMap = {};
|
|
13
|
-
for (const pageGroup of Object.values(
|
|
32
|
+
for (const pageGroup of Object.values(groupPagesBySlug(pages, defaultLocale))) {
|
|
14
33
|
const defaultHreflang = getDefaultHrefLang(pageGroup, defaultLocale);
|
|
15
34
|
for (const page of pageGroup) {
|
|
16
35
|
const hrefLangs = pageGroup.map(({ slug, locale }) => ({
|
|
17
36
|
hrefLang: locale,
|
|
18
|
-
href: (
|
|
37
|
+
href: buildCanonicalHref(slug, locale, defaultLocale),
|
|
19
38
|
}));
|
|
20
39
|
hrefLangs.push(defaultHreflang);
|
|
21
40
|
const path = (0, slug_1.buildPath)(page.slug, page.locale, defaultLocale);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import type { IPage
|
|
1
|
+
import type { IPage } from './types';
|
|
2
|
+
export declare function mergeSlug(slug: IPage['slug'], parentSlug: IPage['slug']): string;
|
|
3
|
+
export declare function normalizeSlug(slug?: IPage['slug']): string;
|
|
4
|
+
export declare function normalizeLocale(locale?: IPage['locale']): string;
|
|
2
5
|
export declare function buildPath(slug?: IPage['slug'], locale?: IPage['locale'], defaultLocale?: string): string;
|
|
3
6
|
export declare function isEqualSlug(a?: IPage['slug'], b?: IPage['slug']): boolean;
|
|
4
7
|
export declare function isEmptyPage(title?: IPage['title'], slug?: IPage['slug']): boolean;
|
|
5
8
|
export declare function isDummyPage(slug?: IPage['slug']): boolean;
|
|
6
|
-
export declare function groupPagesBySlug(pages: IPage[], defaultLocale: string): PageGroup;
|
|
@@ -1,26 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mergeSlug = mergeSlug;
|
|
4
|
+
exports.normalizeSlug = normalizeSlug;
|
|
5
|
+
exports.normalizeLocale = normalizeLocale;
|
|
3
6
|
exports.buildPath = buildPath;
|
|
4
7
|
exports.isEqualSlug = isEqualSlug;
|
|
5
8
|
exports.isEmptyPage = isEmptyPage;
|
|
6
9
|
exports.isDummyPage = isDummyPage;
|
|
7
|
-
exports.groupPagesBySlug = groupPagesBySlug;
|
|
8
10
|
const INDEX_PAGE_SLUG = 'index';
|
|
9
11
|
const DUMMY_PAGE_SLUG = 'dummy';
|
|
12
|
+
function mergeSlug(slug, parentSlug) {
|
|
13
|
+
if (parentSlug) {
|
|
14
|
+
return slug ? `${parentSlug}/${slug}` : parentSlug;
|
|
15
|
+
}
|
|
16
|
+
return slug !== null && slug !== void 0 ? slug : '';
|
|
17
|
+
}
|
|
10
18
|
function normalizeSlug(slug) {
|
|
11
|
-
if (!slug || slug === INDEX_PAGE_SLUG) {
|
|
12
|
-
return '';
|
|
19
|
+
if (!slug || slug === INDEX_PAGE_SLUG || slug === '/') {
|
|
20
|
+
return '/';
|
|
13
21
|
}
|
|
14
|
-
|
|
22
|
+
const lowercaseSlug = slug.toLowerCase();
|
|
23
|
+
return lowercaseSlug.startsWith('/') ? lowercaseSlug : `/${lowercaseSlug}`;
|
|
15
24
|
}
|
|
16
25
|
function normalizeLocale(locale) {
|
|
17
26
|
return (locale !== null && locale !== void 0 ? locale : '').toLowerCase();
|
|
18
27
|
}
|
|
19
28
|
function buildPath(slug, locale, defaultLocale) {
|
|
29
|
+
const normalizedSlug = normalizeSlug(slug);
|
|
20
30
|
const normalizedLocale = normalizeLocale(locale);
|
|
21
31
|
const normalizedDefaultLocale = normalizeLocale(defaultLocale);
|
|
22
|
-
const localePrefix = normalizedLocale === normalizedDefaultLocale ?
|
|
23
|
-
return
|
|
32
|
+
const localePrefix = normalizedLocale === normalizedDefaultLocale ? null : normalizedLocale;
|
|
33
|
+
return localePrefix ? `/${localePrefix}${normalizedSlug}` : normalizedSlug;
|
|
24
34
|
}
|
|
25
35
|
function isEqualSlug(a, b) {
|
|
26
36
|
return normalizeSlug(a) === normalizeSlug(b);
|
|
@@ -29,18 +39,5 @@ function isEmptyPage(title, slug) {
|
|
|
29
39
|
return !title && !slug;
|
|
30
40
|
}
|
|
31
41
|
function isDummyPage(slug) {
|
|
32
|
-
return normalizeSlug(slug) === DUMMY_PAGE_SLUG;
|
|
33
|
-
}
|
|
34
|
-
function groupPagesBySlug(pages, defaultLocale) {
|
|
35
|
-
var _a;
|
|
36
|
-
const groups = {};
|
|
37
|
-
for (const page of pages) {
|
|
38
|
-
if (!page.slug)
|
|
39
|
-
continue;
|
|
40
|
-
if (!groups[page.slug]) {
|
|
41
|
-
groups[page.slug] = [];
|
|
42
|
-
}
|
|
43
|
-
groups[page.slug].push({ slug: page.slug, locale: (_a = page.locale) !== null && _a !== void 0 ? _a : defaultLocale });
|
|
44
|
-
}
|
|
45
|
-
return groups;
|
|
42
|
+
return normalizeSlug(slug) === normalizeSlug(DUMMY_PAGE_SLUG);
|
|
46
43
|
}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
type Path = string;
|
|
2
|
+
type NormalizedSlug = string;
|
|
2
3
|
export interface IPage {
|
|
3
4
|
title?: string | null;
|
|
4
5
|
slug?: string | null;
|
|
5
6
|
locale?: string | null;
|
|
7
|
+
hub?: {
|
|
8
|
+
slug?: string | null;
|
|
9
|
+
} | null;
|
|
6
10
|
}
|
|
7
11
|
interface IExistedPage {
|
|
8
12
|
slug: NonNullable<IPage['slug']>;
|
|
9
13
|
locale: NonNullable<IPage['locale']>;
|
|
10
14
|
}
|
|
11
|
-
export type PageGroup = Record<
|
|
15
|
+
export type PageGroup = Record<NormalizedSlug, IExistedPage[]>;
|
|
12
16
|
export interface IHrefLang {
|
|
13
17
|
href: string;
|
|
14
18
|
hrefLang: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const hub = "\n # === PAGE HUB DEFINITION ===\n type Hub {\n name: String!\n slug: String!\n }\n ";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const page = "\n # === STRAPI PAGE DEFINITION ===\n type StrapiPage implements Node {\n id: ID!\n locale: String\n title: String\n slug: String\n seo: Seo\n author: Author\n createdAt: Date @dateformat\n updatedAt: Date @dateformat\n content: [ContentComponent]\n }\n";
|
|
1
|
+
export declare const page = "\n # === STRAPI PAGE DEFINITION ===\n type StrapiPage implements Node {\n id: ID!\n locale: String\n title: String\n slug: String\n seo: Seo\n author: Author\n hub: Hub\n createdAt: Date @dateformat\n updatedAt: Date @dateformat\n content: [ContentComponent]\n }\n";
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.typeDefs = void 0;
|
|
4
4
|
const author_1 = require("./collections/author");
|
|
5
|
+
const hub_1 = require("./collections/hub");
|
|
5
6
|
const page_1 = require("./collections/page");
|
|
6
7
|
const partner_1 = require("./collections/partner");
|
|
7
8
|
const base_1 = require("./components/base");
|
|
@@ -11,4 +12,16 @@ const primitives_1 = require("./primitives");
|
|
|
11
12
|
const localization_1 = require("./single/localization");
|
|
12
13
|
const navigation_1 = require("./single/navigation");
|
|
13
14
|
const site_1 = require("./single/site");
|
|
14
|
-
exports.typeDefs = [
|
|
15
|
+
exports.typeDefs = [
|
|
16
|
+
author_1.author,
|
|
17
|
+
hub_1.hub,
|
|
18
|
+
page_1.page,
|
|
19
|
+
partner_1.partner,
|
|
20
|
+
base_1.base,
|
|
21
|
+
content_1.content,
|
|
22
|
+
shared_1.shared,
|
|
23
|
+
primitives_1.primitives,
|
|
24
|
+
localization_1.localization,
|
|
25
|
+
navigation_1.navigation,
|
|
26
|
+
site_1.site,
|
|
27
|
+
].join('\n');
|