@mints-cloud/cxf-codegen 1.0.2 → 1.0.4
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 +40 -1
- package/dist/components/ApiCall.d.ts +5 -0
- package/dist/components/ApiCall.d.ts.map +1 -1
- package/dist/components/ApiCall.js +18 -3
- package/dist/components/JsonLdSchemas.d.ts +104 -0
- package/dist/components/JsonLdSchemas.d.ts.map +1 -0
- package/dist/components/JsonLdSchemas.js +380 -0
- package/dist/components/MetadataOverrides.d.ts +84 -0
- package/dist/components/MetadataOverrides.d.ts.map +1 -0
- package/dist/components/MetadataOverrides.js +270 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/lib/api-call-hooks.d.ts +2 -1
- package/dist/lib/api-call-hooks.d.ts.map +1 -1
- package/dist/lib/api-call-hooks.js +64 -11
- package/dist/lib/api-route-helpers.d.ts +1 -0
- package/dist/lib/api-route-helpers.d.ts.map +1 -1
- package/dist/lib/api-route-helpers.js +13 -0
- package/dist/lib/assets-query-params.d.ts +11 -0
- package/dist/lib/assets-query-params.d.ts.map +1 -0
- package/dist/lib/assets-query-params.js +130 -0
- package/dist/lib/cxf-auth.d.ts +7 -3
- package/dist/lib/cxf-auth.d.ts.map +1 -1
- package/dist/lib/cxf-auth.js +17 -6
- package/dist/lib/seo-utils.d.ts +22 -0
- package/dist/lib/seo-utils.d.ts.map +1 -0
- package/dist/lib/seo-utils.js +228 -0
- package/dist/lib/server-props.d.ts.map +1 -1
- package/dist/lib/server-props.js +46 -4
- package/dist/pages/api/assets.d.ts.map +1 -1
- package/dist/pages/api/assets.js +27 -1
- package/dist/pages/api/cxf.d.ts +5 -0
- package/dist/pages/api/cxf.d.ts.map +1 -1
- package/dist/pages/api/cxf.js +37 -4
- package/dist/pages/app.d.ts +4 -1
- package/dist/pages/app.d.ts.map +1 -1
- package/dist/pages/app.js +11 -6
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +193 -2
- package/package.json +13 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
type MaybeString = string | null | undefined;
|
|
2
|
+
type MaybeStringList = string[] | string | null | undefined;
|
|
3
|
+
interface MediaAsset {
|
|
4
|
+
public_path?: MaybeString;
|
|
5
|
+
alt_text?: MaybeString;
|
|
6
|
+
mime_type?: MaybeString;
|
|
7
|
+
}
|
|
8
|
+
export interface SiteSettings {
|
|
9
|
+
identity_and_branding?: {
|
|
10
|
+
site_name?: MaybeString;
|
|
11
|
+
primary_color?: MaybeString;
|
|
12
|
+
secondary_color?: MaybeString;
|
|
13
|
+
logo?: MediaAsset;
|
|
14
|
+
favicon?: MediaAsset;
|
|
15
|
+
apple_touch_icon?: MediaAsset;
|
|
16
|
+
manifest_icon_192?: MediaAsset;
|
|
17
|
+
manifest_icon_512?: MediaAsset;
|
|
18
|
+
};
|
|
19
|
+
domains_and_locales?: {
|
|
20
|
+
primary_domain?: MaybeString;
|
|
21
|
+
additional_domains?: MaybeString[] | string | null;
|
|
22
|
+
default_locale?: MaybeString;
|
|
23
|
+
};
|
|
24
|
+
seo_defaults?: {
|
|
25
|
+
seo_title_template?: MaybeString;
|
|
26
|
+
canonical_base?: MaybeString;
|
|
27
|
+
og_image_default?: MediaAsset;
|
|
28
|
+
robots_indexing?: MaybeString;
|
|
29
|
+
robots_follow?: MaybeString;
|
|
30
|
+
default_seo_title?: MaybeString;
|
|
31
|
+
default_meta_description?: MaybeString;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export interface PageMeta {
|
|
35
|
+
default?: {
|
|
36
|
+
page_title?: MaybeString;
|
|
37
|
+
permalink?: MaybeString;
|
|
38
|
+
};
|
|
39
|
+
seo_per_page?: {
|
|
40
|
+
page_meta_title?: MaybeString;
|
|
41
|
+
page_meta_description?: MaybeString;
|
|
42
|
+
page_robots_follow?: MaybeString;
|
|
43
|
+
page_robots_indexing?: MaybeString;
|
|
44
|
+
page_canonical_url?: MaybeString;
|
|
45
|
+
keywords?: MaybeStringList;
|
|
46
|
+
};
|
|
47
|
+
social_and_sharing?: {
|
|
48
|
+
page_open_graph_title?: MaybeString;
|
|
49
|
+
page_open_graph_description?: MaybeString;
|
|
50
|
+
page_open_graph_image?: MediaAsset;
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export interface MetadataOverridesProps {
|
|
54
|
+
siteSettings?: SiteSettings | string | null;
|
|
55
|
+
pageMeta?: PageMeta | string | null;
|
|
56
|
+
}
|
|
57
|
+
export interface AppMetadataOverrides {
|
|
58
|
+
title?: MaybeString;
|
|
59
|
+
description?: MaybeString;
|
|
60
|
+
keywords?: MaybeStringList;
|
|
61
|
+
robots?: MaybeString;
|
|
62
|
+
canonicalUrl?: MaybeString;
|
|
63
|
+
themeColor?: MaybeString;
|
|
64
|
+
siteName?: MaybeString;
|
|
65
|
+
openGraphUrl?: MaybeString;
|
|
66
|
+
openGraphTitle?: MaybeString;
|
|
67
|
+
openGraphDescription?: MaybeString;
|
|
68
|
+
openGraphImage?: MaybeString;
|
|
69
|
+
openGraphImageAlt?: MaybeString;
|
|
70
|
+
openGraphType?: MaybeString;
|
|
71
|
+
twitterCard?: MaybeString;
|
|
72
|
+
twitterTitle?: MaybeString;
|
|
73
|
+
twitterDescription?: MaybeString;
|
|
74
|
+
twitterImage?: MaybeString;
|
|
75
|
+
faviconHref?: MaybeString;
|
|
76
|
+
faviconMimeType?: MaybeString;
|
|
77
|
+
appleTouchIconHref?: MaybeString;
|
|
78
|
+
}
|
|
79
|
+
export declare function AppMetadataOverridesHead(props: {
|
|
80
|
+
overrides?: AppMetadataOverrides | null;
|
|
81
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
82
|
+
export declare function MetadataOverrides(props: MetadataOverridesProps): import("react/jsx-runtime").JSX.Element | null;
|
|
83
|
+
export default MetadataOverrides;
|
|
84
|
+
//# sourceMappingURL=MetadataOverrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataOverrides.d.ts","sourceRoot":"","sources":["../../src/components/MetadataOverrides.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.AppMetadataOverridesHead = AppMetadataOverridesHead;
|
|
40
|
+
exports.MetadataOverrides = MetadataOverrides;
|
|
41
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
42
|
+
const React = __importStar(require("react"));
|
|
43
|
+
const head_1 = __importDefault(require("next/head"));
|
|
44
|
+
const seo_utils_1 = require("../lib/seo-utils");
|
|
45
|
+
const pickFirst = (...values) => (0, seo_utils_1.pickFirstString)(...values);
|
|
46
|
+
function normalizeSameAsUrl(value, baseUrl) {
|
|
47
|
+
const cleaned = (0, seo_utils_1.cleanString)(value);
|
|
48
|
+
if (!cleaned) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
if (cleaned.startsWith("//")) {
|
|
52
|
+
return `https:${cleaned}`;
|
|
53
|
+
}
|
|
54
|
+
if (/^https?:\/\//i.test(cleaned)) {
|
|
55
|
+
return cleaned;
|
|
56
|
+
}
|
|
57
|
+
if (cleaned.startsWith("/")) {
|
|
58
|
+
return (0, seo_utils_1.toAbsoluteUrl)(cleaned, baseUrl);
|
|
59
|
+
}
|
|
60
|
+
if (/^[\w.-]+\.[a-z]{2,}(\/.*)?$/i.test(cleaned)) {
|
|
61
|
+
return `https://${cleaned}`;
|
|
62
|
+
}
|
|
63
|
+
return cleaned;
|
|
64
|
+
}
|
|
65
|
+
function resolveTitle(pageMetaTitle, pageTitle, defaultSeoTitle, siteName, template) {
|
|
66
|
+
const explicitTitle = (0, seo_utils_1.cleanString)(pageMetaTitle);
|
|
67
|
+
if (explicitTitle) {
|
|
68
|
+
return explicitTitle;
|
|
69
|
+
}
|
|
70
|
+
const fallbackPageTitle = pickFirst(pageTitle, defaultSeoTitle, siteName);
|
|
71
|
+
const cleanTemplate = (0, seo_utils_1.cleanString)(template);
|
|
72
|
+
const cleanSiteName = (0, seo_utils_1.cleanString)(siteName);
|
|
73
|
+
if (!fallbackPageTitle) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
if (!cleanTemplate) {
|
|
77
|
+
if (fallbackPageTitle && cleanSiteName && fallbackPageTitle !== cleanSiteName) {
|
|
78
|
+
return `${fallbackPageTitle} | ${cleanSiteName}`;
|
|
79
|
+
}
|
|
80
|
+
return fallbackPageTitle;
|
|
81
|
+
}
|
|
82
|
+
const rendered = cleanTemplate
|
|
83
|
+
.replace(/%pageTitle%/g, fallbackPageTitle)
|
|
84
|
+
.replace(/%siteName%/g, cleanSiteName ?? "")
|
|
85
|
+
.replace(/\s{2,}/g, " ")
|
|
86
|
+
.trim()
|
|
87
|
+
.replace(/^\|\s*/g, "")
|
|
88
|
+
.replace(/\s*\|$/g, "");
|
|
89
|
+
return (0, seo_utils_1.cleanString)(rendered);
|
|
90
|
+
}
|
|
91
|
+
function buildRobots(indexing, follow) {
|
|
92
|
+
const parts = [(0, seo_utils_1.cleanString)(indexing), (0, seo_utils_1.cleanString)(follow)].filter((part) => Boolean(part));
|
|
93
|
+
return parts.length > 0 ? parts.join(", ") : undefined;
|
|
94
|
+
}
|
|
95
|
+
function hasAnyHeadMetadata(metadata) {
|
|
96
|
+
return Object.values(metadata).some(Boolean);
|
|
97
|
+
}
|
|
98
|
+
function renderHeadTags(metadata) {
|
|
99
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [metadata.title ? (0, jsx_runtime_1.jsx)("title", { children: metadata.title }, "metadata-title") : null, metadata.description ? ((0, jsx_runtime_1.jsx)("meta", { name: "description", content: metadata.description }, "metadata-description")) : null, metadata.keywords ? ((0, jsx_runtime_1.jsx)("meta", { name: "keywords", content: metadata.keywords }, "metadata-keywords")) : null, metadata.robots ? (0, jsx_runtime_1.jsx)("meta", { name: "robots", content: metadata.robots }, "metadata-robots") : null, metadata.canonicalUrl ? ((0, jsx_runtime_1.jsx)("link", { rel: "canonical", href: metadata.canonicalUrl }, "metadata-canonical")) : null, metadata.themeColor ? ((0, jsx_runtime_1.jsx)("meta", { name: "theme-color", content: metadata.themeColor }, "metadata-theme-color")) : null, metadata.siteName ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:site_name", content: metadata.siteName }, "metadata-og-site-name")) : null, metadata.openGraphUrl ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:url", content: metadata.openGraphUrl }, "metadata-og-url")) : null, metadata.openGraphTitle ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:title", content: metadata.openGraphTitle }, "metadata-og-title")) : null, metadata.openGraphDescription ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:description", content: metadata.openGraphDescription }, "metadata-og-description")) : null, metadata.openGraphImage ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:image", content: metadata.openGraphImage }, "metadata-og-image")) : null, metadata.openGraphImageAlt ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:image:alt", content: metadata.openGraphImageAlt }, "metadata-og-image-alt")) : null, metadata.openGraphType ? ((0, jsx_runtime_1.jsx)("meta", { property: "og:type", content: metadata.openGraphType }, "metadata-og-type")) : null, metadata.twitterCard ? ((0, jsx_runtime_1.jsx)("meta", { name: "twitter:card", content: metadata.twitterCard }, "metadata-twitter-card")) : null, metadata.twitterTitle ? ((0, jsx_runtime_1.jsx)("meta", { name: "twitter:title", content: metadata.twitterTitle }, "metadata-twitter-title")) : null, metadata.twitterDescription ? ((0, jsx_runtime_1.jsx)("meta", { name: "twitter:description", content: metadata.twitterDescription }, "metadata-twitter-description")) : null, metadata.twitterImage ? ((0, jsx_runtime_1.jsx)("meta", { name: "twitter:image", content: metadata.twitterImage }, "metadata-twitter-image")) : null, metadata.faviconHref ? ((0, jsx_runtime_1.jsx)("link", { rel: "icon", href: metadata.faviconHref, type: metadata.faviconMimeType }, "metadata-favicon")) : null, metadata.appleTouchIconHref ? ((0, jsx_runtime_1.jsx)("link", { rel: "apple-touch-icon", href: metadata.appleTouchIconHref }, "metadata-apple-touch-icon")) : null, metadata.organizationJsonLd ? ((0, jsx_runtime_1.jsx)("script", { id: "metadata-jsonld-organization", type: "application/ld+json", "data-jsonld-key": "metadata-jsonld-organization", dangerouslySetInnerHTML: {
|
|
100
|
+
__html: (0, seo_utils_1.safeJsonForInlineScript)(metadata.organizationJsonLd)
|
|
101
|
+
} }, "metadata-jsonld-organization")) : null] }));
|
|
102
|
+
}
|
|
103
|
+
function AppMetadataOverridesHead(props) {
|
|
104
|
+
const { overrides } = props;
|
|
105
|
+
if (!overrides) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const title = (0, seo_utils_1.cleanString)(overrides.title);
|
|
109
|
+
const description = (0, seo_utils_1.cleanString)(overrides.description);
|
|
110
|
+
const keywordsList = (0, seo_utils_1.parseStringList)(overrides.keywords);
|
|
111
|
+
const keywords = keywordsList.length > 0 ? keywordsList.join(", ") : undefined;
|
|
112
|
+
const robots = (0, seo_utils_1.cleanString)(overrides.robots);
|
|
113
|
+
const canonicalUrl = (0, seo_utils_1.cleanString)(overrides.canonicalUrl);
|
|
114
|
+
const themeColor = (0, seo_utils_1.cleanString)(overrides.themeColor);
|
|
115
|
+
const siteName = (0, seo_utils_1.cleanString)(overrides.siteName);
|
|
116
|
+
const openGraphUrl = (0, seo_utils_1.cleanString)(overrides.openGraphUrl);
|
|
117
|
+
const openGraphTitle = pickFirst(overrides.openGraphTitle, title);
|
|
118
|
+
const openGraphDescription = pickFirst(overrides.openGraphDescription, description);
|
|
119
|
+
const openGraphImage = (0, seo_utils_1.cleanString)(overrides.openGraphImage);
|
|
120
|
+
const openGraphImageAlt = (0, seo_utils_1.cleanString)(overrides.openGraphImageAlt);
|
|
121
|
+
const openGraphType = (0, seo_utils_1.cleanString)(overrides.openGraphType);
|
|
122
|
+
const twitterTitle = pickFirst(overrides.twitterTitle, openGraphTitle);
|
|
123
|
+
const twitterDescription = pickFirst(overrides.twitterDescription, openGraphDescription);
|
|
124
|
+
const twitterImage = pickFirst(overrides.twitterImage, openGraphImage);
|
|
125
|
+
const twitterCard = pickFirst(overrides.twitterCard, twitterImage ? "summary_large_image" : "summary");
|
|
126
|
+
const faviconHref = (0, seo_utils_1.cleanString)(overrides.faviconHref);
|
|
127
|
+
const faviconMimeType = (0, seo_utils_1.cleanString)(overrides.faviconMimeType);
|
|
128
|
+
const appleTouchIconHref = (0, seo_utils_1.cleanString)(overrides.appleTouchIconHref);
|
|
129
|
+
const metadata = {
|
|
130
|
+
title,
|
|
131
|
+
description,
|
|
132
|
+
keywords,
|
|
133
|
+
robots,
|
|
134
|
+
canonicalUrl,
|
|
135
|
+
themeColor,
|
|
136
|
+
siteName,
|
|
137
|
+
openGraphUrl,
|
|
138
|
+
openGraphTitle,
|
|
139
|
+
openGraphDescription,
|
|
140
|
+
openGraphImage,
|
|
141
|
+
openGraphImageAlt,
|
|
142
|
+
openGraphType,
|
|
143
|
+
twitterCard,
|
|
144
|
+
twitterTitle,
|
|
145
|
+
twitterDescription,
|
|
146
|
+
twitterImage,
|
|
147
|
+
faviconHref,
|
|
148
|
+
faviconMimeType,
|
|
149
|
+
appleTouchIconHref
|
|
150
|
+
};
|
|
151
|
+
if (!hasAnyHeadMetadata(metadata)) {
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
return (0, jsx_runtime_1.jsx)(head_1.default, { children: renderHeadTags(metadata) });
|
|
155
|
+
}
|
|
156
|
+
function MetadataOverrides(props) {
|
|
157
|
+
const { siteSettings, pageMeta } = props;
|
|
158
|
+
const site = React.useMemo(() => (0, seo_utils_1.parseObject)(siteSettings), [siteSettings]);
|
|
159
|
+
const page = React.useMemo(() => (0, seo_utils_1.parseObject)(pageMeta), [pageMeta]);
|
|
160
|
+
const siteName = pickFirst(site?.identity_and_branding?.site_name);
|
|
161
|
+
const canonicalBase = pickFirst(site?.seo_defaults?.canonical_base, site?.domains_and_locales?.primary_domain);
|
|
162
|
+
const siteBaseUrl = pickFirst(site?.domains_and_locales?.primary_domain, site?.seo_defaults?.canonical_base);
|
|
163
|
+
const title = resolveTitle(page?.seo_per_page?.page_meta_title, page?.default?.page_title, site?.seo_defaults?.default_seo_title, siteName, site?.seo_defaults?.seo_title_template);
|
|
164
|
+
const description = pickFirst(page?.seo_per_page?.page_meta_description, site?.seo_defaults?.default_meta_description);
|
|
165
|
+
const keywordsList = (0, seo_utils_1.parseStringList)(page?.seo_per_page?.keywords);
|
|
166
|
+
const keywords = keywordsList.length > 0 ? keywordsList.join(", ") : undefined;
|
|
167
|
+
const canonicalUrl = pickFirst(page?.seo_per_page?.page_canonical_url, (0, seo_utils_1.toAbsoluteUrl)(page?.default?.permalink, canonicalBase), canonicalBase);
|
|
168
|
+
const canonicalAssetBaseUrl = pickFirst((0, seo_utils_1.resolveUrlBase)(canonicalBase, canonicalUrl), canonicalBase, canonicalUrl);
|
|
169
|
+
const currentOrigin = (0, seo_utils_1.getCurrentOrigin)();
|
|
170
|
+
const assetBaseUrl = pickFirst((0, seo_utils_1.resolveUrlBase)(currentOrigin, siteBaseUrl, canonicalAssetBaseUrl), currentOrigin, siteBaseUrl, canonicalAssetBaseUrl);
|
|
171
|
+
const robots = buildRobots(pickFirst(page?.seo_per_page?.page_robots_indexing, site?.seo_defaults?.robots_indexing), pickFirst(page?.seo_per_page?.page_robots_follow, site?.seo_defaults?.robots_follow));
|
|
172
|
+
const openGraphTitle = pickFirst(page?.social_and_sharing?.page_open_graph_title, title);
|
|
173
|
+
const openGraphDescription = pickFirst(page?.social_and_sharing?.page_open_graph_description, description);
|
|
174
|
+
const openGraphImage = (0, seo_utils_1.toAbsoluteUrl)(pickFirst(page?.social_and_sharing?.page_open_graph_image?.public_path, site?.seo_defaults?.og_image_default?.public_path), assetBaseUrl);
|
|
175
|
+
const openGraphImageAlt = pickFirst(page?.social_and_sharing?.page_open_graph_image?.alt_text, site?.seo_defaults?.og_image_default?.alt_text, siteName);
|
|
176
|
+
const faviconHref = (0, seo_utils_1.toAbsoluteUrl)(site?.identity_and_branding?.favicon?.public_path, assetBaseUrl);
|
|
177
|
+
const faviconMimeType = pickFirst(site?.identity_and_branding?.favicon?.mime_type);
|
|
178
|
+
const appleTouchIconHref = (0, seo_utils_1.toAbsoluteUrl)(site?.identity_and_branding?.apple_touch_icon?.public_path, assetBaseUrl);
|
|
179
|
+
const logoUrl = (0, seo_utils_1.toAbsoluteUrl)(site?.identity_and_branding?.logo?.public_path, assetBaseUrl);
|
|
180
|
+
const additionalDomains = (0, seo_utils_1.parseStringList)(site?.domains_and_locales?.additional_domains);
|
|
181
|
+
const sameAs = Array.from(new Set(additionalDomains
|
|
182
|
+
.map((domain) => normalizeSameAsUrl(domain, assetBaseUrl))
|
|
183
|
+
.filter((url) => Boolean(url))));
|
|
184
|
+
const organizationName = pickFirst(site?.seo_defaults?.default_seo_title, siteName, title);
|
|
185
|
+
const organizationUrl = canonicalAssetBaseUrl;
|
|
186
|
+
const organizationId = (0, seo_utils_1.buildOrganizationId)(organizationUrl);
|
|
187
|
+
const organizationDescription = pickFirst(site?.seo_defaults?.default_meta_description, description);
|
|
188
|
+
const organizationJsonLd = organizationName ||
|
|
189
|
+
organizationUrl ||
|
|
190
|
+
organizationId ||
|
|
191
|
+
logoUrl ||
|
|
192
|
+
organizationDescription ||
|
|
193
|
+
sameAs.length > 0
|
|
194
|
+
? {
|
|
195
|
+
"@context": "https://schema.org",
|
|
196
|
+
"@type": "Organization",
|
|
197
|
+
...(organizationId ? { "@id": organizationId } : {}),
|
|
198
|
+
...(organizationName ? { name: organizationName } : {}),
|
|
199
|
+
...(organizationUrl ? { url: organizationUrl } : {}),
|
|
200
|
+
...(logoUrl ? { logo: logoUrl } : {}),
|
|
201
|
+
...(organizationDescription ? { description: organizationDescription } : {}),
|
|
202
|
+
...(sameAs.length > 0 ? { sameAs } : {})
|
|
203
|
+
}
|
|
204
|
+
: undefined;
|
|
205
|
+
const themeColor = pickFirst(site?.identity_and_branding?.primary_color);
|
|
206
|
+
const twitterCard = openGraphImage ? "summary_large_image" : "summary";
|
|
207
|
+
const metadata = {
|
|
208
|
+
title,
|
|
209
|
+
description,
|
|
210
|
+
keywords,
|
|
211
|
+
robots,
|
|
212
|
+
canonicalUrl,
|
|
213
|
+
themeColor,
|
|
214
|
+
siteName,
|
|
215
|
+
openGraphUrl: canonicalUrl,
|
|
216
|
+
openGraphTitle,
|
|
217
|
+
openGraphDescription,
|
|
218
|
+
openGraphImage,
|
|
219
|
+
openGraphImageAlt,
|
|
220
|
+
openGraphType: "website",
|
|
221
|
+
twitterCard,
|
|
222
|
+
twitterTitle: openGraphTitle,
|
|
223
|
+
twitterDescription: openGraphDescription,
|
|
224
|
+
twitterImage: openGraphImage,
|
|
225
|
+
faviconHref,
|
|
226
|
+
faviconMimeType,
|
|
227
|
+
appleTouchIconHref,
|
|
228
|
+
organizationJsonLd
|
|
229
|
+
};
|
|
230
|
+
const organizationJson = organizationJsonLd
|
|
231
|
+
? (0, seo_utils_1.safeJsonForInlineScript)(organizationJsonLd)
|
|
232
|
+
: undefined;
|
|
233
|
+
React.useEffect(() => {
|
|
234
|
+
if (!organizationJson) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
const cleanup = () => {
|
|
238
|
+
(0, seo_utils_1.removeDuplicateJsonLdScripts)("metadata-jsonld-organization", "metadata-jsonld-organization", organizationJson);
|
|
239
|
+
};
|
|
240
|
+
cleanup();
|
|
241
|
+
if (typeof document === "undefined" || typeof MutationObserver === "undefined") {
|
|
242
|
+
return undefined;
|
|
243
|
+
}
|
|
244
|
+
let rafId = null;
|
|
245
|
+
const observer = new MutationObserver(() => {
|
|
246
|
+
if (rafId != null) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
rafId = window.requestAnimationFrame(() => {
|
|
250
|
+
rafId = null;
|
|
251
|
+
cleanup();
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
observer.observe(document.documentElement, {
|
|
255
|
+
childList: true,
|
|
256
|
+
subtree: true
|
|
257
|
+
});
|
|
258
|
+
return () => {
|
|
259
|
+
observer.disconnect();
|
|
260
|
+
if (rafId != null) {
|
|
261
|
+
window.cancelAnimationFrame(rafId);
|
|
262
|
+
}
|
|
263
|
+
};
|
|
264
|
+
}, [organizationJson]);
|
|
265
|
+
if (!hasAnyHeadMetadata(metadata)) {
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
return (0, jsx_runtime_1.jsx)(head_1.default, { children: renderHeadTags(metadata) });
|
|
269
|
+
}
|
|
270
|
+
exports.default = MetadataOverrides;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
export { ApiCall, type ApiCallProps, type ApiType } from "./components/ApiCall";
|
|
2
|
+
export { MetadataOverrides, AppMetadataOverridesHead, type MetadataOverridesProps, type AppMetadataOverrides, type PageMeta, type SiteSettings } from "./components/MetadataOverrides";
|
|
3
|
+
export { FaqJsonLd, BlogPostingJsonLd, CustomJsonLd, type FaqJsonLdProps, type BlogPostingJsonLdProps, type CustomJsonLdProps } from "./components/JsonLdSchemas";
|
|
2
4
|
export { registerCodeComponents } from "./register";
|
|
3
5
|
export { CXF_COOKIE_NAMES, CXF_HEADER_NAMES, type CxfTokens, getTokensFromCookies, buildAuthHeaders, makeAuthenticatedRequest, extractSetCookieHeaders, extractTokensFromSetCookie, buildCookieHeader, getCxfBaseUrl, getCxfApiKey, buildCookieString, setTokensAsCookies, clearAuthCookies, } from "./lib/cxf-auth";
|
|
4
6
|
export { buildQueryString as buildApiQueryString, normalizePath, setAuthCookies, handleError, sendResponse, } from "./lib/api-route-helpers";
|
|
5
7
|
export { useIsrPrefetch, useApiFetch, type PreloadedDataResult, type UseApiFetchOptions, } from "./lib/api-call-hooks";
|
|
8
|
+
export { ASSET_QUERY_PARAMS_COOKIE_NAME, normalizeAssetQueryParams, serializeAssetQueryParamsCookie, extractAssetQueryParamsFromCookie, useSyncAssetQueryParams, type AssetQueryParamValue, type AssetQueryParams, type NormalizedAssetQueryParams, } from "./lib/assets-query-params";
|
|
6
9
|
export { EndpointDataContext, PrefetchCollectorContext, PrefetchCollectorProvider, ServerPageWrapper, createServerProps, normalizeEndpointPath, buildQueryString, buildEndpointKey, type EndpointConfig, type ServerPageProps, type ServerPageWrapperProps, type PrefetchRequest, } from "./lib/server-props";
|
|
7
10
|
export { CxfApp } from "./pages/app";
|
|
8
11
|
export { PlasmicHost } from "./pages/plasmic-host";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,EACd,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGpD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,SAAS,EACd,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,iBAAiB,EACjB,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,gBAAgB,IAAI,mBAAmB,EACvC,aAAa,EACb,cAAc,EACd,WAAW,EACX,YAAY,GACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,cAAc,EACd,WAAW,EACX,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,+BAA+B,EAC/B,iCAAiC,EACjC,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,GAChC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.cxfNextConfig = exports.assetsApiHandler = exports.cxfApiHandler = exports.PlasmicHost = exports.CxfApp = exports.buildEndpointKey = exports.buildQueryString = exports.normalizeEndpointPath = exports.createServerProps = exports.ServerPageWrapper = exports.PrefetchCollectorProvider = exports.PrefetchCollectorContext = exports.EndpointDataContext = exports.useApiFetch = exports.useIsrPrefetch = exports.sendResponse = exports.handleError = exports.setAuthCookies = exports.normalizePath = exports.buildApiQueryString = exports.clearAuthCookies = exports.setTokensAsCookies = exports.buildCookieString = exports.getCxfApiKey = exports.getCxfBaseUrl = exports.buildCookieHeader = exports.extractTokensFromSetCookie = exports.extractSetCookieHeaders = exports.makeAuthenticatedRequest = exports.buildAuthHeaders = exports.getTokensFromCookies = exports.CXF_HEADER_NAMES = exports.CXF_COOKIE_NAMES = exports.registerCodeComponents = exports.ApiCall = void 0;
|
|
3
|
+
exports.cxfNextConfig = exports.assetsApiHandler = exports.cxfApiHandler = exports.PlasmicHost = exports.CxfApp = exports.buildEndpointKey = exports.buildQueryString = exports.normalizeEndpointPath = exports.createServerProps = exports.ServerPageWrapper = exports.PrefetchCollectorProvider = exports.PrefetchCollectorContext = exports.EndpointDataContext = exports.useSyncAssetQueryParams = exports.extractAssetQueryParamsFromCookie = exports.serializeAssetQueryParamsCookie = exports.normalizeAssetQueryParams = exports.ASSET_QUERY_PARAMS_COOKIE_NAME = exports.useApiFetch = exports.useIsrPrefetch = exports.sendResponse = exports.handleError = exports.setAuthCookies = exports.normalizePath = exports.buildApiQueryString = exports.clearAuthCookies = exports.setTokensAsCookies = exports.buildCookieString = exports.getCxfApiKey = exports.getCxfBaseUrl = exports.buildCookieHeader = exports.extractTokensFromSetCookie = exports.extractSetCookieHeaders = exports.makeAuthenticatedRequest = exports.buildAuthHeaders = exports.getTokensFromCookies = exports.CXF_HEADER_NAMES = exports.CXF_COOKIE_NAMES = exports.registerCodeComponents = exports.CustomJsonLd = exports.BlogPostingJsonLd = exports.FaqJsonLd = exports.AppMetadataOverridesHead = exports.MetadataOverrides = exports.ApiCall = void 0;
|
|
4
4
|
// Main exports
|
|
5
5
|
var ApiCall_1 = require("./components/ApiCall");
|
|
6
6
|
Object.defineProperty(exports, "ApiCall", { enumerable: true, get: function () { return ApiCall_1.ApiCall; } });
|
|
7
|
+
var MetadataOverrides_1 = require("./components/MetadataOverrides");
|
|
8
|
+
Object.defineProperty(exports, "MetadataOverrides", { enumerable: true, get: function () { return MetadataOverrides_1.MetadataOverrides; } });
|
|
9
|
+
Object.defineProperty(exports, "AppMetadataOverridesHead", { enumerable: true, get: function () { return MetadataOverrides_1.AppMetadataOverridesHead; } });
|
|
10
|
+
var JsonLdSchemas_1 = require("./components/JsonLdSchemas");
|
|
11
|
+
Object.defineProperty(exports, "FaqJsonLd", { enumerable: true, get: function () { return JsonLdSchemas_1.FaqJsonLd; } });
|
|
12
|
+
Object.defineProperty(exports, "BlogPostingJsonLd", { enumerable: true, get: function () { return JsonLdSchemas_1.BlogPostingJsonLd; } });
|
|
13
|
+
Object.defineProperty(exports, "CustomJsonLd", { enumerable: true, get: function () { return JsonLdSchemas_1.CustomJsonLd; } });
|
|
7
14
|
var register_1 = require("./register");
|
|
8
15
|
Object.defineProperty(exports, "registerCodeComponents", { enumerable: true, get: function () { return register_1.registerCodeComponents; } });
|
|
9
16
|
// Library exports
|
|
@@ -30,6 +37,12 @@ Object.defineProperty(exports, "sendResponse", { enumerable: true, get: function
|
|
|
30
37
|
var api_call_hooks_1 = require("./lib/api-call-hooks");
|
|
31
38
|
Object.defineProperty(exports, "useIsrPrefetch", { enumerable: true, get: function () { return api_call_hooks_1.useIsrPrefetch; } });
|
|
32
39
|
Object.defineProperty(exports, "useApiFetch", { enumerable: true, get: function () { return api_call_hooks_1.useApiFetch; } });
|
|
40
|
+
var assets_query_params_1 = require("./lib/assets-query-params");
|
|
41
|
+
Object.defineProperty(exports, "ASSET_QUERY_PARAMS_COOKIE_NAME", { enumerable: true, get: function () { return assets_query_params_1.ASSET_QUERY_PARAMS_COOKIE_NAME; } });
|
|
42
|
+
Object.defineProperty(exports, "normalizeAssetQueryParams", { enumerable: true, get: function () { return assets_query_params_1.normalizeAssetQueryParams; } });
|
|
43
|
+
Object.defineProperty(exports, "serializeAssetQueryParamsCookie", { enumerable: true, get: function () { return assets_query_params_1.serializeAssetQueryParamsCookie; } });
|
|
44
|
+
Object.defineProperty(exports, "extractAssetQueryParamsFromCookie", { enumerable: true, get: function () { return assets_query_params_1.extractAssetQueryParamsFromCookie; } });
|
|
45
|
+
Object.defineProperty(exports, "useSyncAssetQueryParams", { enumerable: true, get: function () { return assets_query_params_1.useSyncAssetQueryParams; } });
|
|
33
46
|
var server_props_1 = require("./lib/server-props");
|
|
34
47
|
Object.defineProperty(exports, "EndpointDataContext", { enumerable: true, get: function () { return server_props_1.EndpointDataContext; } });
|
|
35
48
|
Object.defineProperty(exports, "PrefetchCollectorContext", { enumerable: true, get: function () { return server_props_1.PrefetchCollectorContext; } });
|
|
@@ -15,11 +15,12 @@ export interface UseApiFetchOptions {
|
|
|
15
15
|
onSuccess?: (data: any) => void;
|
|
16
16
|
onError?: (error: string) => void;
|
|
17
17
|
unwrapData?: boolean;
|
|
18
|
+
canvasAutoFetchCooldownMs?: number;
|
|
18
19
|
}
|
|
19
20
|
export declare function useApiFetch(options: UseApiFetchOptions): {
|
|
20
21
|
data: any;
|
|
21
22
|
error: string | null;
|
|
22
23
|
loading: boolean;
|
|
23
|
-
fetchData: () => (() => void) | undefined;
|
|
24
|
+
fetchData: (reason?: "auto" | "trigger" | "manual") => (() => void) | undefined;
|
|
24
25
|
};
|
|
25
26
|
//# sourceMappingURL=api-call-hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-call-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/api-call-hooks.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,GAAG,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,GAAG,GAChB,mBAAmB,CA+CrB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"api-call-hooks.d.ts","sourceRoot":"","sources":["../../src/lib/api-call-hooks.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,GAAG,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,GAAG,GAChB,mBAAmB,CA+CrB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC;AAmED,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB;;;;yBA0ER,MAAM,GAAG,SAAS,GAAG,QAAQ;EAuI3E"}
|
|
@@ -77,6 +77,21 @@ function useIsrPrefetch(endpointPath, params, method, initialData) {
|
|
|
77
77
|
: { preloaded: undefined, hasExactPreload: false };
|
|
78
78
|
}, [initialData, endpointPath, params, endpointDataMap, isGet]);
|
|
79
79
|
}
|
|
80
|
+
const EDITOR_AUTO_FETCH_COOLDOWN_MS = 5 * 60 * 1000;
|
|
81
|
+
const editorAutoFetchTimestamps = new Map();
|
|
82
|
+
const MAX_EDITOR_FETCH_KEYS = 20;
|
|
83
|
+
function pruneOldestEditorFetchEntries() {
|
|
84
|
+
if (editorAutoFetchTimestamps.size <= MAX_EDITOR_FETCH_KEYS)
|
|
85
|
+
return;
|
|
86
|
+
const overflowCount = editorAutoFetchTimestamps.size - MAX_EDITOR_FETCH_KEYS;
|
|
87
|
+
let removed = 0;
|
|
88
|
+
for (const key of editorAutoFetchTimestamps.keys()) {
|
|
89
|
+
editorAutoFetchTimestamps.delete(key);
|
|
90
|
+
removed += 1;
|
|
91
|
+
if (removed >= overflowCount)
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
80
95
|
function unwrapResponseData(data, shouldUnwrap) {
|
|
81
96
|
if (!shouldUnwrap ||
|
|
82
97
|
!data ||
|
|
@@ -88,6 +103,25 @@ function unwrapResponseData(data, shouldUnwrap) {
|
|
|
88
103
|
}
|
|
89
104
|
return data.data;
|
|
90
105
|
}
|
|
106
|
+
function stableSerialize(value) {
|
|
107
|
+
if (value === undefined)
|
|
108
|
+
return "";
|
|
109
|
+
if (value === null)
|
|
110
|
+
return "null";
|
|
111
|
+
if (Array.isArray(value)) {
|
|
112
|
+
return `[${value.map((item) => stableSerialize(item)).join(",")}]`;
|
|
113
|
+
}
|
|
114
|
+
if (typeof value === "object") {
|
|
115
|
+
const keys = Object.keys(value).sort();
|
|
116
|
+
return `{${keys.map((k) => `${JSON.stringify(k)}:${stableSerialize(value[k])}`).join(",")}}`;
|
|
117
|
+
}
|
|
118
|
+
return JSON.stringify(value);
|
|
119
|
+
}
|
|
120
|
+
function isPlasmicHostRuntime() {
|
|
121
|
+
if (typeof window === "undefined")
|
|
122
|
+
return false;
|
|
123
|
+
return window.location.pathname.includes("/plasmic-host");
|
|
124
|
+
}
|
|
91
125
|
function getUtmParamsFromLocation() {
|
|
92
126
|
if (typeof window === "undefined")
|
|
93
127
|
return null;
|
|
@@ -109,7 +143,13 @@ function getUtmParamsFromLocation() {
|
|
|
109
143
|
}
|
|
110
144
|
}
|
|
111
145
|
function useApiFetch(options) {
|
|
112
|
-
const { endpointPath, method = "GET", params, body, preloaded, hasExactPreload, shouldAutoFetch = true, trigger, onSuccess, onError, unwrapData = false, } = options;
|
|
146
|
+
const { endpointPath, method = "GET", params, body, preloaded, hasExactPreload, shouldAutoFetch = true, trigger, onSuccess, onError, unwrapData = false, canvasAutoFetchCooldownMs = EDITOR_AUTO_FETCH_COOLDOWN_MS, } = options;
|
|
147
|
+
const paramsSignature = stableSerialize(params);
|
|
148
|
+
const bodySignature = stableSerialize(body);
|
|
149
|
+
const paramsRef = React.useRef(params);
|
|
150
|
+
const bodyRef = React.useRef(body);
|
|
151
|
+
paramsRef.current = params;
|
|
152
|
+
bodyRef.current = body;
|
|
113
153
|
// Also check context directly in case preloaded prop hasn't updated yet during hydration
|
|
114
154
|
const endpointDataMap = React.useContext(server_props_1.EndpointDataContext);
|
|
115
155
|
const contextData = React.useMemo(() => {
|
|
@@ -155,23 +195,36 @@ function useApiFetch(options) {
|
|
|
155
195
|
isHydratingRef.current = false;
|
|
156
196
|
}
|
|
157
197
|
}, [effectivePreloaded, data]);
|
|
158
|
-
const fetchData = React.useCallback(() => {
|
|
198
|
+
const fetchData = React.useCallback((reason = "manual") => {
|
|
159
199
|
if (!endpointPath)
|
|
160
200
|
return;
|
|
161
201
|
const controller = new AbortController();
|
|
162
202
|
(async () => {
|
|
163
203
|
try {
|
|
204
|
+
const normalizedPath = (0, server_props_1.normalizeEndpointPath)(endpointPath);
|
|
205
|
+
const requestKey = `${method}:${normalizedPath}:${paramsSignature}:${bodySignature}`;
|
|
206
|
+
if (reason === "auto" &&
|
|
207
|
+
method === "GET" &&
|
|
208
|
+
isPlasmicHostRuntime()) {
|
|
209
|
+
const now = Date.now();
|
|
210
|
+
const lastFetchAt = editorAutoFetchTimestamps.get(requestKey) ?? 0;
|
|
211
|
+
if (now - lastFetchAt < canvasAutoFetchCooldownMs) {
|
|
212
|
+
setLoading(false);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
editorAutoFetchTimestamps.set(requestKey, now);
|
|
216
|
+
pruneOldestEditorFetchEntries();
|
|
217
|
+
}
|
|
164
218
|
setLoading(true);
|
|
165
219
|
setError(null);
|
|
166
220
|
hasTriggeredSuccessRef.current = false;
|
|
167
221
|
hasTriggeredErrorRef.current = false;
|
|
168
|
-
const normalizedPath = (0, server_props_1.normalizeEndpointPath)(endpointPath);
|
|
169
222
|
// Merge current page UTM params into request params for GET requests.
|
|
170
223
|
// Explicit params take precedence over UTM values if keys overlap.
|
|
171
224
|
const utmParams = method === "GET" ? getUtmParamsFromLocation() : null;
|
|
172
225
|
const mergedParams = method === "GET"
|
|
173
|
-
? { ...(utmParams || {}), ...(
|
|
174
|
-
:
|
|
226
|
+
? { ...(utmParams || {}), ...(paramsRef.current || {}) }
|
|
227
|
+
: paramsRef.current;
|
|
175
228
|
const queryString = method === "GET" ? (0, server_props_1.buildQueryString)(mergedParams) : "";
|
|
176
229
|
const url = `/api/${normalizedPath}${queryString}`;
|
|
177
230
|
const fetchOptions = {
|
|
@@ -183,8 +236,8 @@ function useApiFetch(options) {
|
|
|
183
236
|
credentials: "include",
|
|
184
237
|
signal: controller.signal,
|
|
185
238
|
};
|
|
186
|
-
if (method !== "GET" &&
|
|
187
|
-
fetchOptions.body = JSON.stringify(
|
|
239
|
+
if (method !== "GET" && bodyRef.current) {
|
|
240
|
+
fetchOptions.body = JSON.stringify(bodyRef.current);
|
|
188
241
|
}
|
|
189
242
|
const resp = await fetch(url, fetchOptions);
|
|
190
243
|
if (!resp.ok) {
|
|
@@ -213,13 +266,13 @@ function useApiFetch(options) {
|
|
|
213
266
|
}
|
|
214
267
|
})();
|
|
215
268
|
return () => controller.abort();
|
|
216
|
-
}, [endpointPath, method,
|
|
269
|
+
}, [endpointPath, method, paramsSignature, bodySignature, unwrapData, canvasAutoFetchCooldownMs]);
|
|
217
270
|
const prevTriggerRef = React.useRef(trigger);
|
|
218
271
|
React.useEffect(() => {
|
|
219
272
|
if (trigger !== undefined && trigger !== prevTriggerRef.current) {
|
|
220
273
|
prevTriggerRef.current = trigger;
|
|
221
274
|
if (trigger > 0)
|
|
222
|
-
fetchData();
|
|
275
|
+
fetchData("trigger");
|
|
223
276
|
}
|
|
224
277
|
}, [trigger, fetchData]);
|
|
225
278
|
// Only fetch if we should auto-fetch AND we don't have exact preloaded data
|
|
@@ -236,14 +289,14 @@ function useApiFetch(options) {
|
|
|
236
289
|
// Re-check context and preloaded after hydration delay
|
|
237
290
|
const stillNoData = effectivePreloaded === undefined || effectivePreloaded === null;
|
|
238
291
|
if (stillNoData && shouldAutoFetch && !hasExactPreload) {
|
|
239
|
-
fetchData();
|
|
292
|
+
fetchData("auto");
|
|
240
293
|
}
|
|
241
294
|
}, 0);
|
|
242
295
|
return () => clearTimeout(timeoutId);
|
|
243
296
|
}
|
|
244
297
|
// Fetch if we don't have preloaded data (non-hydration case)
|
|
245
298
|
if (!hasPreloadedData) {
|
|
246
|
-
return fetchData();
|
|
299
|
+
return fetchData("auto");
|
|
247
300
|
}
|
|
248
301
|
}, [shouldAutoFetch, hasExactPreload, hasPreloadedData, effectivePreloaded, fetchData]);
|
|
249
302
|
React.useEffect(() => {
|
|
@@ -5,6 +5,7 @@ export declare function setAuthCookies(res: NextApiResponse, tokens: {
|
|
|
5
5
|
accessToken: string | null;
|
|
6
6
|
refreshToken: string | null;
|
|
7
7
|
}): void;
|
|
8
|
+
export declare function forwardExtraCookies(res: NextApiResponse, setCookieHeaders: string[]): void;
|
|
8
9
|
export declare function handleError(res: NextApiResponse, err: any): void;
|
|
9
10
|
export declare function sendResponse(res: NextApiResponse, response: Response): Promise<void>;
|
|
10
11
|
//# sourceMappingURL=api-route-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-route-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/api-route-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAavE;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAOjF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,QAavH;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,QAMzD;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,iBAwB1E"}
|
|
1
|
+
{"version":3,"file":"api-route-helpers.d.ts","sourceRoot":"","sources":["../../src/lib/api-route-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAG5D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,MAAM,CAavE;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAOjF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,QAavH;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAYnF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,QAMzD;AAED,wBAAsB,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,iBAwB1E"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.buildQueryString = buildQueryString;
|
|
4
4
|
exports.normalizePath = normalizePath;
|
|
5
5
|
exports.setAuthCookies = setAuthCookies;
|
|
6
|
+
exports.forwardExtraCookies = forwardExtraCookies;
|
|
6
7
|
exports.handleError = handleError;
|
|
7
8
|
exports.sendResponse = sendResponse;
|
|
8
9
|
const cxf_auth_1 = require("./cxf-auth");
|
|
@@ -42,6 +43,18 @@ function setAuthCookies(res, tokens) {
|
|
|
42
43
|
res.setHeader("Set-Cookie", cookies);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
46
|
+
function forwardExtraCookies(res, setCookieHeaders) {
|
|
47
|
+
const authCookieNames = new Set([cxf_auth_1.CXF_COOKIE_NAMES.ACCESS_TOKEN, cxf_auth_1.CXF_COOKIE_NAMES.REFRESH_TOKEN]);
|
|
48
|
+
const extraCookies = setCookieHeaders.filter((header) => {
|
|
49
|
+
const name = header.split("=")[0]?.trim();
|
|
50
|
+
return !authCookieNames.has(name);
|
|
51
|
+
});
|
|
52
|
+
if (extraCookies.length > 0) {
|
|
53
|
+
const existing = res.getHeader("Set-Cookie");
|
|
54
|
+
const current = Array.isArray(existing) ? existing : existing ? [String(existing)] : [];
|
|
55
|
+
res.setHeader("Set-Cookie", [...current, ...extraCookies]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
45
58
|
function handleError(res, err) {
|
|
46
59
|
const dev = process.env.NODE_ENV !== "production";
|
|
47
60
|
return res.status(500).json({
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const ASSET_QUERY_PARAMS_COOKIE_NAME = "cxf_asset_query_params";
|
|
2
|
+
type PrimitiveParam = string | number | boolean;
|
|
3
|
+
export type AssetQueryParamValue = PrimitiveParam | PrimitiveParam[] | null | undefined;
|
|
4
|
+
export type AssetQueryParams = Record<string, AssetQueryParamValue>;
|
|
5
|
+
export type NormalizedAssetQueryParams = Record<string, string | string[]>;
|
|
6
|
+
export declare function normalizeAssetQueryParams(params: AssetQueryParams | null | undefined): NormalizedAssetQueryParams;
|
|
7
|
+
export declare function serializeAssetQueryParamsCookie(params: AssetQueryParams | null | undefined): string;
|
|
8
|
+
export declare function extractAssetQueryParamsFromCookie(cookieHeader: string | null | undefined): NormalizedAssetQueryParams;
|
|
9
|
+
export declare function useSyncAssetQueryParams(params: AssetQueryParams | null | undefined): void;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=assets-query-params.d.ts.map
|