kizlo 0.3.2 → 0.5.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/dist/brand/icons.d.ts +42 -0
- package/dist/brand/icons.js +108 -0
- package/dist/brand/index.d.ts +2 -0
- package/dist/brand/manifest.d.ts +21 -0
- package/dist/brand/manifest.js +28 -0
- package/dist/cli/presets/nextjs.js +19 -0
- package/dist/client.d.ts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/index.d.ts +10 -7
- package/dist/index.js +4 -2
- package/dist/integrations/nextjs/manifest.d.ts +8 -0
- package/dist/integrations/nextjs/manifest.js +18 -0
- package/dist/integrations/nextjs/metadata.d.ts +17 -0
- package/dist/integrations/nextjs/metadata.js +90 -0
- package/dist/kizlo.d.ts +1 -1
- package/dist/nextjs/server.d.ts +4 -1
- package/dist/nextjs/server.js +4 -1
- package/dist/nextjs.d.ts +2 -2
- package/dist/nextjs.js +2 -2
- package/dist/package.js +1 -1
- package/dist/router.d.ts +175 -0
- package/dist/router.js +3 -1
- package/dist/service.d.ts +2 -2
- package/dist/service.js +2 -2
- package/dist/settings/index.js +68 -0
- package/dist/settings/service.d.ts +12 -11
- package/dist/settings/service.interface.d.ts +16 -126
- package/dist/settings/service.js +5 -2
- package/dist/shared/middleware.d.ts +1 -1
- package/dist/shared/procedure.d.ts +1 -1
- package/dist/shared/schema.d.ts +1 -7
- package/dist/shared/schema.js +1 -7
- package/dist/webhook/index.d.ts +1 -1
- package/package.json +2 -2
- package/dist/integrations/nextjs/seo.d.ts +0 -7
- package/dist/integrations/nextjs/seo.js +0 -41
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { BrandSettings } from "../settings/service.interface.js";
|
|
2
|
+
|
|
3
|
+
//#region src/brand/icons.d.ts
|
|
4
|
+
interface IconDescriptor {
|
|
5
|
+
url: string;
|
|
6
|
+
/** The attachment's mime, e.g. `image/svg+xml`, mapped to the `type` attribute. */
|
|
7
|
+
type: string;
|
|
8
|
+
/** `"any"` for scalable/single sources; omitted for `.ico`. */
|
|
9
|
+
sizes?: string;
|
|
10
|
+
/** Media query for scheme-specific variants, e.g. `(prefers-color-scheme: dark)`. */
|
|
11
|
+
media?: string;
|
|
12
|
+
}
|
|
13
|
+
interface ManifestIcon {
|
|
14
|
+
src: string;
|
|
15
|
+
type: string;
|
|
16
|
+
sizes: string;
|
|
17
|
+
/**
|
|
18
|
+
* `"maskable"` marks art with a safe zone the launcher may crop to any
|
|
19
|
+
* adaptive shape; omitted (default `"any"`) sources render uncropped.
|
|
20
|
+
*/
|
|
21
|
+
purpose?: "any" | "maskable";
|
|
22
|
+
}
|
|
23
|
+
interface ResolvedIcons {
|
|
24
|
+
/** `rel="icon"` candidates: the light source plus an optional dark variant. */
|
|
25
|
+
icon: IconDescriptor[];
|
|
26
|
+
/** `rel="apple-touch-icon"` candidate (raster-guarded), or empty. */
|
|
27
|
+
appleTouch: IconDescriptor[];
|
|
28
|
+
/**
|
|
29
|
+
* Web-manifest icon entries (raster or SVG): the square brand icon as the
|
|
30
|
+
* default `"any"` source — expanded to one entry per real square rendition —
|
|
31
|
+
* plus the dedicated Android icon as `"maskable"` when provided. Either may
|
|
32
|
+
* be absent.
|
|
33
|
+
*/
|
|
34
|
+
manifestIcons: ManifestIcon[];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve the brand settings into a normalized icon set. Slots that resolve to
|
|
38
|
+
* nothing are simply left out; the consumer only emits what is present.
|
|
39
|
+
*/
|
|
40
|
+
declare function resolveIcons(brand: BrandSettings): ResolvedIcons;
|
|
41
|
+
//#endregion
|
|
42
|
+
export { IconDescriptor, ManifestIcon, ResolvedIcons, resolveIcons };
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
//#region src/brand/icons.ts
|
|
2
|
+
/** Raster mimes: the only sources iOS home-screen icons can render. */
|
|
3
|
+
const RASTER_MIMES = new Set(["image/png", "image/jpeg"]);
|
|
4
|
+
/** Scalable icon mime, valid in `rel=icon` and modern web manifests. */
|
|
5
|
+
const SVG_MIME = "image/svg+xml";
|
|
6
|
+
/** Mimes a web manifest can use: raster plus scalable SVG. `.ico` is excluded. */
|
|
7
|
+
const MANIFEST_MIMES = new Set([...RASTER_MIMES, SVG_MIME]);
|
|
8
|
+
/**
|
|
9
|
+
* Smallest square rendition worth advertising as a manifest icon. 192px is
|
|
10
|
+
* Chrome's minimum installable icon size, so smaller generated copies add no
|
|
11
|
+
* install value; a source below it still falls through to its original.
|
|
12
|
+
*/
|
|
13
|
+
const MANIFEST_ICON_FLOOR = 192;
|
|
14
|
+
/** `.ico` self-describes its bundled sizes, so it takes no `sizes` hint. */
|
|
15
|
+
const ICO_MIMES = new Set(["image/x-icon", "image/vnd.microsoft.icon"]);
|
|
16
|
+
function isRaster(media) {
|
|
17
|
+
return media != null && media.mime !== void 0 && RASTER_MIMES.has(media.mime);
|
|
18
|
+
}
|
|
19
|
+
/** Return the media only when it is a raster the target can render; otherwise null. */
|
|
20
|
+
function raster(media) {
|
|
21
|
+
return isRaster(media) ? media : null;
|
|
22
|
+
}
|
|
23
|
+
/** Return the media only when a web manifest can render it (raster or SVG). */
|
|
24
|
+
function manifestSource(media) {
|
|
25
|
+
return media?.mime && MANIFEST_MIMES.has(media.mime) ? media : null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A raster source carries real pixel dimensions; use them verbatim so a
|
|
29
|
+
* descriptor never claims a size the image cannot satisfy. Falls back to `"any"`
|
|
30
|
+
* on scalable sources (e.g. SVG) that have no fixed size.
|
|
31
|
+
*/
|
|
32
|
+
function pixelSize(media) {
|
|
33
|
+
return media.width && media.height ? `${media.width}x${media.height}` : "any";
|
|
34
|
+
}
|
|
35
|
+
function toDescriptor(media, extra) {
|
|
36
|
+
return {
|
|
37
|
+
url: media.src,
|
|
38
|
+
type: media.mime ?? "",
|
|
39
|
+
sizes: media.mime && ICO_MIMES.has(media.mime) ? void 0 : pixelSize(media),
|
|
40
|
+
...extra
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Manifest icon entries for a source. A scalable SVG yields a single `"any"`
|
|
45
|
+
* entry (it covers every size). A raster source expands into its real renditions
|
|
46
|
+
* — the original plus WordPress's generated resizes — keeping only square ones at
|
|
47
|
+
* or above the floor so browsers get genuine 192/512-ish icons; if none qualify
|
|
48
|
+
* (e.g. a non-square upload) the original is used as-is.
|
|
49
|
+
*/
|
|
50
|
+
function toManifestIcons(media, purpose) {
|
|
51
|
+
const type = media.mime ?? "";
|
|
52
|
+
const withPurpose = purpose ? { purpose } : {};
|
|
53
|
+
if (media.mime === SVG_MIME) return [{
|
|
54
|
+
src: media.src,
|
|
55
|
+
type,
|
|
56
|
+
sizes: "any",
|
|
57
|
+
...withPurpose
|
|
58
|
+
}];
|
|
59
|
+
const square = [{
|
|
60
|
+
src: media.src,
|
|
61
|
+
width: media.width,
|
|
62
|
+
height: media.height
|
|
63
|
+
}, ...media.variants ?? []].filter((r) => r.width && r.height && r.width === r.height && r.width >= MANIFEST_ICON_FLOOR);
|
|
64
|
+
const chosen = square.length ? square : [{
|
|
65
|
+
src: media.src,
|
|
66
|
+
width: media.width,
|
|
67
|
+
height: media.height
|
|
68
|
+
}];
|
|
69
|
+
const seen = /* @__PURE__ */ new Set();
|
|
70
|
+
const icons = [];
|
|
71
|
+
for (const r of chosen) {
|
|
72
|
+
const sizes = r.width && r.height ? `${r.width}x${r.height}` : "any";
|
|
73
|
+
if (seen.has(sizes)) continue;
|
|
74
|
+
seen.add(sizes);
|
|
75
|
+
icons.push({
|
|
76
|
+
src: r.src,
|
|
77
|
+
type,
|
|
78
|
+
sizes,
|
|
79
|
+
...withPurpose
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return icons;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Resolve the brand settings into a normalized icon set. Slots that resolve to
|
|
86
|
+
* nothing are simply left out; the consumer only emits what is present.
|
|
87
|
+
*/
|
|
88
|
+
function resolveIcons(brand) {
|
|
89
|
+
const icon = [];
|
|
90
|
+
const light = brand.favicon ?? brand.logo_icon;
|
|
91
|
+
if (light) icon.push(toDescriptor(light));
|
|
92
|
+
if (brand.favicon_dark) icon.push(toDescriptor(brand.favicon_dark, { media: "(prefers-color-scheme: dark)" }));
|
|
93
|
+
const apple = raster(brand.ios_app_icon) ?? raster(brand.favicon);
|
|
94
|
+
const appleTouch = apple ? [toDescriptor(apple)] : [];
|
|
95
|
+
const manifestIcons = [];
|
|
96
|
+
const anySource = manifestSource(brand.logo_icon) ?? manifestSource(brand.favicon);
|
|
97
|
+
if (anySource) manifestIcons.push(...toManifestIcons(anySource));
|
|
98
|
+
const maskable = manifestSource(brand.android_app_icon);
|
|
99
|
+
if (maskable) manifestIcons.push(...toManifestIcons(maskable, "maskable"));
|
|
100
|
+
return {
|
|
101
|
+
icon,
|
|
102
|
+
appleTouch,
|
|
103
|
+
manifestIcons
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
//#endregion
|
|
108
|
+
export { resolveIcons };
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Settings } from "../settings/service.interface.js";
|
|
2
|
+
import { ManifestIcon } from "./icons.js";
|
|
3
|
+
import { S2SClient } from "../kizlo.js";
|
|
4
|
+
|
|
5
|
+
//#region src/brand/manifest.d.ts
|
|
6
|
+
declare const WEB_MANIFEST_ROUTE: "/site.webmanifest";
|
|
7
|
+
interface WebManifest {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
short_name: string;
|
|
11
|
+
start_url: string;
|
|
12
|
+
scope: string;
|
|
13
|
+
display: "standalone" | "fullscreen" | "minimal-ui" | "browser";
|
|
14
|
+
background_color?: string;
|
|
15
|
+
theme_color?: string;
|
|
16
|
+
icons: ManifestIcon[];
|
|
17
|
+
}
|
|
18
|
+
declare function buildWebManifest(settings: Settings): WebManifest;
|
|
19
|
+
declare function createManifestRoute(client: S2SClient<[]>): (_request: Request) => Promise<Response>;
|
|
20
|
+
//#endregion
|
|
21
|
+
export { WEB_MANIFEST_ROUTE, WebManifest, buildWebManifest, createManifestRoute };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { resolveIcons } from "./icons.js";
|
|
2
|
+
|
|
3
|
+
//#region src/brand/manifest.ts
|
|
4
|
+
const WEB_MANIFEST_ROUTE = "/site.webmanifest";
|
|
5
|
+
function buildWebManifest(settings) {
|
|
6
|
+
const org = settings.identity.type === "organization" ? settings.identity.organization : null;
|
|
7
|
+
const manifest = {
|
|
8
|
+
id: "/",
|
|
9
|
+
name: settings.site.name ?? org?.name ?? "",
|
|
10
|
+
short_name: settings.site.alternate_name ?? org?.name ?? settings.site.name ?? "",
|
|
11
|
+
start_url: "/",
|
|
12
|
+
scope: "/",
|
|
13
|
+
display: "standalone",
|
|
14
|
+
icons: resolveIcons(settings.brand).manifestIcons
|
|
15
|
+
};
|
|
16
|
+
if (settings.brand.theme_color) manifest.theme_color = settings.brand.theme_color;
|
|
17
|
+
if (settings.brand.background_color) manifest.background_color = settings.brand.background_color;
|
|
18
|
+
return manifest;
|
|
19
|
+
}
|
|
20
|
+
function createManifestRoute(client) {
|
|
21
|
+
return async function GET(_request) {
|
|
22
|
+
const settings = await client.settings.get.call();
|
|
23
|
+
return new Response(JSON.stringify(buildWebManifest(settings)), { headers: { "Content-Type": "application/manifest+json" } });
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { WEB_MANIFEST_ROUTE, buildWebManifest, createManifestRoute };
|
|
@@ -14,6 +14,7 @@ const nextjs = {
|
|
|
14
14
|
const apiDir = `${ctx.appDir}/api/kizlo/[[...rest]]`;
|
|
15
15
|
const robotsDir = `${ctx.appDir}/robots.txt`;
|
|
16
16
|
const sitemapDir = `${ctx.appDir}/sitemaps/[sitemap]`;
|
|
17
|
+
const manifestDir = `${ctx.appDir}/site.webmanifest`;
|
|
17
18
|
return [
|
|
18
19
|
{
|
|
19
20
|
label: "Kizlo server instance",
|
|
@@ -84,6 +85,24 @@ export const runtime = "edge"
|
|
|
84
85
|
export const dynamic = "force-dynamic"
|
|
85
86
|
|
|
86
87
|
export const GET = createSitemapRoute(client)
|
|
88
|
+
`
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
label: "web manifest route",
|
|
92
|
+
relPath: `${manifestDir}/route.ts`,
|
|
93
|
+
contents: `import { createManifestRoute } from "kizlo/nextjs/server"
|
|
94
|
+
import { client } from "${ctx.serverImport(manifestDir)}"
|
|
95
|
+
|
|
96
|
+
// Run on the edge: cheaper and faster than Node for a response this small.
|
|
97
|
+
export const runtime = "edge"
|
|
98
|
+
|
|
99
|
+
// Like robots.txt, Vercel bakes this route into an immutable Edge CDN asset at build time,
|
|
100
|
+
// bypassing ISR and on-demand revalidatePath. force-dynamic opts out of that static treatment
|
|
101
|
+
// so brand-settings edits show up; createManifestRoute caches the WordPress call, so requests
|
|
102
|
+
// stay cheap.
|
|
103
|
+
export const dynamic = "force-dynamic"
|
|
104
|
+
|
|
105
|
+
export const GET = createManifestRoute(client)
|
|
87
106
|
`
|
|
88
107
|
}
|
|
89
108
|
];
|
package/dist/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ResultClient } from "./shared/result.js";
|
|
2
1
|
import { AnyProcedureRouter, ExtractProcedureByScope } from "./shared/procedure.js";
|
|
2
|
+
import { ResultClient } from "./shared/result.js";
|
|
3
3
|
|
|
4
4
|
//#region src/client.d.ts
|
|
5
5
|
interface KizloClientConfig<T extends AnyProcedureRouter> {
|
package/dist/context.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import { PreviewTokenPayload } from "./shared/schema.js";
|
|
|
5
5
|
import { ConnInfo } from "./adapters/geo.js";
|
|
6
6
|
import { Logger } from "./adapters/logger.js";
|
|
7
7
|
import { CookiesStorage } from "./cookie.js";
|
|
8
|
-
import { ServiceAdapters } from "./kizlo.js";
|
|
9
8
|
import { Service } from "./service.js";
|
|
9
|
+
import { ServiceAdapters } from "./kizlo.js";
|
|
10
10
|
|
|
11
11
|
//#region src/context.d.ts
|
|
12
12
|
interface ContextConfig {
|
package/dist/index.d.ts
CHANGED
|
@@ -26,16 +26,19 @@ import { createCookiesAdapter } from "./adapters/cookies.js";
|
|
|
26
26
|
import { ConnInfo, GeoAdapter, GeoGetConnInfo, createGeoAdapter, geoMock } from "./adapters/geo.js";
|
|
27
27
|
import { geoVercelNext } from "./adapters/geo.vercel.js";
|
|
28
28
|
import { ConsoleLogAdapterOptions, Environment, LogLevel, LogPayload, Logger, LoggerAdapter, consoleLog, createLoggerAdapter, noopAdapter } from "./adapters/logger.js";
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import { AnyKizloConfig, CreateKizloOptions, Kizlo, KizloConfig, KizloTarget, RootRouter, S2SClient, ServiceAdapters, createKizlo, resolveKizloConfig } from "./kizlo.js";
|
|
33
|
-
import { KizloAuthorsSettings, KizloAuthorsSettingsInput, KizloCrawlingSettings, KizloCrawlingSettingsInput, KizloIdentitySettings, KizloIdentitySettingsInput, KizloMedia, KizloOrganizationFounder, KizloOrganizationSettings, KizloOrganizationSettingsInput, KizloPersonSettings, KizloPersonSettingsInput, KizloPostStatus, KizloPostTypeSettings, KizloPostTypeSettingsInput, KizloSettings, KizloSiteSettings, KizloSiteSettingsInput, KizloSocialProfile, KizloTaxonomySettings, KizloTaxonomySettingsInput, KizloWebhookSettings, KizloWebhookSettingsInput } from "./settings/service.interface.js";
|
|
34
|
-
import { KizloSettingsService } from "./settings/service.js";
|
|
29
|
+
import { AuthorsSettings, AuthorsSettingsInput, BrandSettings, BrandSettingsInput, CrawlingSettings, CrawlingSettingsInput, IdentitySettings, IdentitySettingsInput, OrganizationFounder, OrganizationSettings, OrganizationSettingsInput, PersonSettings, PersonSettingsInput, PostStatusDefinition, PostTypeSettings, PostTypeSettingsInput, Settings, SiteSettings, SiteSettingsInput, SocialProfile, TaxonomySettings, TaxonomySettingsInput, WebhookSettings, WebhookSettingsInput } from "./settings/service.interface.js";
|
|
30
|
+
import { IconDescriptor, ManifestIcon, ResolvedIcons, resolveIcons } from "./brand/icons.js";
|
|
31
|
+
import { SettingsService } from "./settings/service.js";
|
|
35
32
|
import { Service, ServiceConfig } from "./service.js";
|
|
36
33
|
import { AuthUserFn, ConnInfoFn, Context, ContextConfig, ServerContext, VerifyCaptchaFn, VerifyPreviewTokenFn } from "./context.js";
|
|
34
|
+
import { AnyEventSchema, AnyEvents, EventHandler, EventHandlerFn, InferEventUnion, WebhookOptions, createEventHandler, createWebhookRouter } from "./webhook/index.js";
|
|
35
|
+
import { COMMON_ERRORS, CommonErrorCode, CommonErrorLiteral, CommonErrorMap, DefinedErrorMapLike, ErrorDefinition, KizloError, KizloErrorOptions, ThrowableErrorFn, ThrowableErrorMap, WithCommonErrorMap, createThrowableErrorMap, defineErrorMap, isKizloError, toKizloError } from "./shared/error.js";
|
|
37
36
|
import { AnyMiddleware, ExtractMiddlewareContextOutput, InferUses, Middleware, MiddlewareHandler, MiddlewareNextFn, MiddlewareOptions, MiddlewareResult, createMiddleware } from "./shared/middleware.js";
|
|
38
37
|
import { AnyProcedure, AnyProcedureRouter, BaseHandlerOptions, ExtractParams, ExtractProcedureByScope, InvocationScope, OpenapiPart, Procedure, ProcedureContext, ProcedureErrors, ProcedureHandler, ProcedureOptions, ResolveParamsPart, ResolvedSchemaInput, ResolvedSchemaOutput, RouterDepthTuple, SchemaIO, buildProcedure, combineDetailed, createProcedure, handleUnexpectedError, schemaType } from "./shared/procedure.js";
|
|
38
|
+
import { AnyExtension, Extension, ExtensionInitFn, ExtensionInitOptions, ExtensionInitResult, ExtractExtensionRouter, InferExtensionRouter, createExtension } from "./shared/extension.js";
|
|
39
|
+
import { AnyKizloConfig, CreateKizloOptions, Kizlo, KizloConfig, KizloTarget, RootRouter, S2SClient, ServiceAdapters, createKizlo, resolveKizloConfig } from "./kizlo.js";
|
|
40
|
+
import { WEB_MANIFEST_ROUTE, WebManifest, buildWebManifest, createManifestRoute } from "./brand/manifest.js";
|
|
41
|
+
import "./brand/index.js";
|
|
39
42
|
import { KizloClient, KizloClientConfig, createKizloClient } from "./client.js";
|
|
40
43
|
import { CreateSitemapRouteOptions, SITEMAP_BASE, SITEMAP_INDEX_SLUG, SitemapRouteExtra, createSitemapRoute } from "./seo/sitemap.js";
|
|
41
44
|
import { Contract, ContractProcedure, generateContract, isContractProcedure, restoreContract } from "./shared/contract.js";
|
|
@@ -43,4 +46,4 @@ import { ShaAlgorithm, compare, hash, hmac } from "./shared/crypto.js";
|
|
|
43
46
|
import { Identifier, parseIdentifier } from "./shared/identifier.js";
|
|
44
47
|
import { createOrpcRouter } from "./shared/router.js";
|
|
45
48
|
import { deserializeCurrencyFormat, deserializeListMetadata, emptyList, serializeCurrencyFormat } from "./shared/serialize.js";
|
|
46
|
-
export { AnyContext, AnyEventSchema, AnyEvents, AnyExtension, AnyKizloConfig, AnyMiddleware, AnyNestedClient, AnyProcedure, AnyProcedureRouter, AuthAdapter, AuthGetUser, AuthUser, AuthUserFn, BaseHandlerOptions, CART_HASH_HEADER_KEY, COMMON_ERRORS, CONTENT_TYPES, CaptchaAdapter, CommentService, CommonErrorCode, CommonErrorLiteral, CommonErrorMap, ConnInfo, ConnInfoFn, ConsoleLogAdapterOptions, ContentType, Context, ContextConfig, Contract, ContractProcedure, CookiesAdapter, CookiesDeleteAll, CookiesGetAll, CookiesSetAll, CreateKizloOptions, CreateSitemapRouteOptions, CurrencyFormat, DefinedErrorMapLike, DevPluginSource, Environment, ErrorDefinition, EventHandler, EventHandlerFn, Extension, ExtensionInitFn, ExtensionInitOptions, ExtensionInitResult, ExtractExtensionRouter, ExtractMiddlewareContextOutput, ExtractParams, ExtractProcedureByScope, Fixture, FixtureCleanupFn, FixtureSeedFn, GeoAdapter, GeoGetConnInfo, HTTPMethod, Identifier, IdentifierInput, InferEventUnion, InferExtensionRouter, InferUses, InvocationScope, JsonValue, Kizlo,
|
|
49
|
+
export { AnyContext, AnyEventSchema, AnyEvents, AnyExtension, AnyKizloConfig, AnyMiddleware, AnyNestedClient, AnyProcedure, AnyProcedureRouter, AuthAdapter, AuthGetUser, AuthUser, AuthUserFn, AuthorsSettings, AuthorsSettingsInput, BaseHandlerOptions, BrandSettings, BrandSettingsInput, CART_HASH_HEADER_KEY, COMMON_ERRORS, CONTENT_TYPES, CaptchaAdapter, CommentService, CommonErrorCode, CommonErrorLiteral, CommonErrorMap, ConnInfo, ConnInfoFn, ConsoleLogAdapterOptions, ContentType, Context, ContextConfig, Contract, ContractProcedure, CookiesAdapter, CookiesDeleteAll, CookiesGetAll, CookiesSetAll, CrawlingSettings, CrawlingSettingsInput, CreateKizloOptions, CreateSitemapRouteOptions, CurrencyFormat, DefinedErrorMapLike, DevPluginSource, Environment, ErrorDefinition, EventHandler, EventHandlerFn, Extension, ExtensionInitFn, ExtensionInitOptions, ExtensionInitResult, ExtractExtensionRouter, ExtractMiddlewareContextOutput, ExtractParams, ExtractProcedureByScope, Fixture, FixtureCleanupFn, FixtureSeedFn, GeoAdapter, GeoGetConnInfo, HTTPMethod, IconDescriptor, Identifier, IdentifierInput, IdentitySettings, IdentitySettingsInput, InferEventUnion, InferExtensionRouter, InferUses, InvocationScope, JsonValue, Kizlo, KizloClient, KizloClientConfig, KizloConfig, KizloError, KizloErrorOptions, KizloTarget, LIST_ORDER, List, ListMetadata, ListOrder, ListSitemapUrlInput, ListSitemapUrlInputBase, LocalPlugin, LogLevel, LogPayload, Logger, LoggerAdapter, ManifestIcon, MaybeOptionalOptions, Media, MenuItemService, MenuService, Middleware, MiddlewareHandler, MiddlewareNextFn, MiddlewareOptions, MiddlewareResult, OpenapiPart, OrganizationFounder, OrganizationSettings, OrganizationSettingsInput, PersonSettings, PersonSettingsInput, PluginSource, PostService, PostStatusDefinition, PostTypeSettings, PostTypeSettingsInput, PreviewTokenData, PreviewTokenPayload, Procedure, ProcedureContext, ProcedureErrors, ProcedureHandler, ProcedureOptions, RedirectInput, RedirectStatus, ResolveParamsPart, ResolvedIcons, ResolvedSchemaInput, ResolvedSchemaOutput, Robots, RobotsRule, RootRouter, RouterDepthTuple, S2SClient, SAFE_REQUEST_TIMEOUT, SITEMAP_BASE, SITEMAP_INDEX_SLUG, SchemaIO, SeedContext, Seo, SeoHead, SeoSchema, ServerContext, Service, ServiceAdapters, ServiceConfig, Settings, SettingsService, ShaAlgorithm, SiteSettings, SiteSettingsInput, Sitemap, SitemapIndex, type SitemapIndexEntry, SitemapList, SitemapRouteExtra, SitemapUrl, SitemapUrlImage, SitemapUrlList, SocialProfile, TaxonomySettings, TaxonomySettingsInput, TestAdminUser, TestCredentials, TestUser, ThrowableErrorFn, ThrowableErrorMap, UNEXPECTED_BODY_SNIPPET_LENGTH, UserService, VerifyCaptchaFn, VerifyPreviewTokenFn, WC_CORE_BASE, WC_STORE_BASE, WEB_MANIFEST_ROUTE, WPK_ListSitemapUrlInput, WPK_RobotRule, WPK_Robots, WPK_Seo, WPK_Sitemap, WPK_SitemapContentType, WPK_SitemapIndex, WPK_SitemapUrl, WPK_SitemapUrlImage, WP_AUTH_HEADER_KEY, WP_AUTH_TYPE, WP_CORE_BASE, WP_Comment, WP_CommentAvatarUrls, WP_CommentContent, WP_CommentContentInput, WP_CommentCreateErrorCode, WP_CommentCreateInput, WP_CommentDeleteErrorCode, WP_CommentDeleteInput, WP_CommentDeleteResponse, WP_CommentLinks, WP_CommentListErrorCode, WP_CommentListInput, WP_CommentOrderBy, WP_CommentRetrieveErrorCode, WP_CommentRetrieveInput, WP_CommentStatus, WP_CommentStatusFilter, WP_CommentStatusInput, WP_CommentType, WP_CommentUpdateErrorCode, WP_CommentUpdateInput, WP_CommonErrorCode, WP_Context, WP_CurrencyFormat, WP_Error, WP_ErrorData, WP_KIZLO_BASE, WP_Link, WP_List, WP_ListMetadata, WP_ListOrder, WP_Menu, WP_MenuCreateErrorCode, WP_MenuCreateInput, WP_MenuDeleteErrorCode, WP_MenuDeleteInput, WP_MenuDeleteResponse, WP_MenuItem, WP_MenuItemCreateErrorCode, WP_MenuItemCreateInput, WP_MenuItemDeleteErrorCode, WP_MenuItemDeleteInput, WP_MenuItemDeleteResponse, WP_MenuItemLinks, WP_MenuItemListErrorCode, WP_MenuItemListInput, WP_MenuItemOrderBy, WP_MenuItemRetrieveErrorCode, WP_MenuItemRetrieveInput, WP_MenuItemStatus, WP_MenuItemStatusFilter, WP_MenuItemTarget, WP_MenuItemTaxRelation, WP_MenuItemTitle, WP_MenuItemTitleInput, WP_MenuItemType, WP_MenuItemUpdateErrorCode, WP_MenuItemUpdateInput, WP_MenuLinks, WP_MenuListErrorCode, WP_MenuListInput, WP_MenuOrderBy, WP_MenuRetrieveErrorCode, WP_MenuRetrieveInput, WP_MenuUpdateErrorCode, WP_MenuUpdateInput, WP_Post, WP_PostCommentStatus, WP_PostContent, WP_PostContentInput, WP_PostCreateErrorCode, WP_PostCreateInput, WP_PostDeleteErrorCode, WP_PostDeleteInput, WP_PostDeleteResponse, WP_PostExcerpt, WP_PostExcerptInput, WP_PostFormat, WP_PostGuid, WP_PostLinks, WP_PostListErrorCode, WP_PostListInput, WP_PostOrderBy, WP_PostRetrieveErrorCode, WP_PostRetrieveInput, WP_PostStatus, WP_PostStatusFilter, WP_PostTaxRelation, WP_PostTitle, WP_PostTitleInput, WP_PostUpdateErrorCode, WP_PostUpdateInput, WP_RequestInput, WP_Result, WP_User, WP_UserAvatarUrls, WP_UserCapabilities, WP_UserCreateErrorCode, WP_UserCreateInput, WP_UserDeleteErrorCode, WP_UserDeleteInput, WP_UserDeleteMeErrorCode, WP_UserDeleteMeInput, WP_UserDeleteMeResponse, WP_UserDeleteResponse, WP_UserLinks, WP_UserListErrorCode, WP_UserListInput, WP_UserOrderBy, WP_UserRetrieveErrorCode, WP_UserRetrieveInput, WP_UserRetrieveMeErrorCode, WP_UserRetrieveMeInput, WP_UserUpdateErrorCode, WP_UserUpdateInput, WP_UserUpdateMeErrorCode, WP_UserUpdateMeInput, WP_UserWho, WebManifest, WebhookOptions, WebhookSettings, WebhookSettingsInput, WithCommonErrorMap, WordPressCredentials, WordPressService, altcha, arkose, authMock, buildProcedure, buildWebManifest, combineDetailed, compare, consoleLog, createAuthAdapter, createCaptchaAdapter, createCookiesAdapter, createEventHandler, createExtension, createGeoAdapter, createKizlo, createKizloClient, createLoggerAdapter, createManifestRoute, createMiddleware, createOrpcRouter, createProcedure, createSitemapRoute, createThrowableErrorMap, createWebhookRouter, defineErrorMap, defineFixture, deserializeCurrencyFormat, deserializeListMetadata, emptyList, friendlyCaptcha, generateContract, geoMock, geoVercelNext, handleUnexpectedError, hash, hcaptcha, hmac, isContractProcedure, isKizloError, isLocalPlugin, isWordPressResourceError, noopAdapter, parseIdentifier, recaptcha, resolveIcons, resolveKizloConfig, restoreContract, schemaType, serializeCurrencyFormat, toKizloError, turnstile };
|
package/dist/index.js
CHANGED
|
@@ -5,6 +5,8 @@ import { createCookiesAdapter } from "./adapters/cookies.js";
|
|
|
5
5
|
import { createGeoAdapter, geoMock } from "./adapters/geo.js";
|
|
6
6
|
import { geoVercelNext } from "./adapters/geo.vercel.js";
|
|
7
7
|
import { consoleLog, createLoggerAdapter, noopAdapter } from "./adapters/logger.js";
|
|
8
|
+
import { resolveIcons } from "./brand/icons.js";
|
|
9
|
+
import { WEB_MANIFEST_ROUTE, buildWebManifest, createManifestRoute } from "./brand/manifest.js";
|
|
8
10
|
import { defineFixture, isLocalPlugin } from "./cli/wp/types.js";
|
|
9
11
|
import { COMMON_ERRORS, KizloError, createThrowableErrorMap, defineErrorMap, isKizloError, toKizloError } from "./shared/error.js";
|
|
10
12
|
import { buildProcedure, combineDetailed, createProcedure, handleUnexpectedError, schemaType } from "./shared/procedure.js";
|
|
@@ -21,7 +23,7 @@ import { PostService } from "./wordpress/post/service.js";
|
|
|
21
23
|
import { UserService } from "./wordpress/user/service.js";
|
|
22
24
|
import { isWordPressResourceError } from "./wordpress/utils.js";
|
|
23
25
|
import { WordPressService } from "./wordpress/service.js";
|
|
24
|
-
import {
|
|
26
|
+
import { SettingsService } from "./settings/service.js";
|
|
25
27
|
import { Service } from "./service.js";
|
|
26
28
|
import { Context } from "./context.js";
|
|
27
29
|
import { deserializeCurrencyFormat, deserializeListMetadata, emptyList, serializeCurrencyFormat } from "./shared/serialize.js";
|
|
@@ -33,4 +35,4 @@ import { SITEMAP_BASE, SITEMAP_INDEX_SLUG, createSitemapRoute } from "./seo/site
|
|
|
33
35
|
import { createExtension } from "./shared/extension.js";
|
|
34
36
|
import { createMiddleware } from "./shared/middleware.js";
|
|
35
37
|
|
|
36
|
-
export { CART_HASH_HEADER_KEY, COMMON_ERRORS, CONTENT_TYPES, CommentService, ContentType, Context, CurrencyFormat, IdentifierInput, Kizlo, KizloClient, KizloError,
|
|
38
|
+
export { CART_HASH_HEADER_KEY, COMMON_ERRORS, CONTENT_TYPES, CommentService, ContentType, Context, CurrencyFormat, IdentifierInput, Kizlo, KizloClient, KizloError, LIST_ORDER, ListMetadata, ListOrder, ListSitemapUrlInput, ListSitemapUrlInputBase, Media, MenuItemService, MenuService, PostService, PreviewTokenData, PreviewTokenPayload, Robots, RobotsRule, SAFE_REQUEST_TIMEOUT, SITEMAP_BASE, SITEMAP_INDEX_SLUG, Seo, SeoHead, SeoSchema, Service, SettingsService, Sitemap, SitemapIndex, SitemapList, SitemapUrl, SitemapUrlImage, SitemapUrlList, UNEXPECTED_BODY_SNIPPET_LENGTH, UserService, WC_CORE_BASE, WC_STORE_BASE, WEB_MANIFEST_ROUTE, WP_AUTH_HEADER_KEY, WP_AUTH_TYPE, WP_CORE_BASE, WP_Error, WP_KIZLO_BASE, WordPressService, altcha, arkose, authMock, buildProcedure, buildWebManifest, combineDetailed, compare, consoleLog, createAuthAdapter, createCaptchaAdapter, createCookiesAdapter, createEventHandler, createExtension, createGeoAdapter, createKizlo, createKizloClient, createLoggerAdapter, createManifestRoute, createMiddleware, createOrpcRouter, createProcedure, createSitemapRoute, createThrowableErrorMap, createWebhookRouter, defineErrorMap, defineFixture, deserializeCurrencyFormat, deserializeListMetadata, emptyList, friendlyCaptcha, generateContract, geoMock, geoVercelNext, handleUnexpectedError, hash, hcaptcha, hmac, isContractProcedure, isKizloError, isLocalPlugin, isWordPressResourceError, noopAdapter, parseIdentifier, recaptcha, resolveIcons, resolveKizloConfig, restoreContract, schemaType, serializeCurrencyFormat, toKizloError, turnstile };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { S2SClient } from "../../kizlo.js";
|
|
2
|
+
import { WEB_MANIFEST_ROUTE } from "../../brand/manifest.js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/nextjs/manifest.d.ts
|
|
5
|
+
declare const MANIFEST_CACHE_TAG = "kizlo:manifest";
|
|
6
|
+
declare function createManifestRoute(client: S2SClient<[]>): (request: Request) => Promise<Response>;
|
|
7
|
+
//#endregion
|
|
8
|
+
export { MANIFEST_CACHE_TAG, createManifestRoute };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { WEB_MANIFEST_ROUTE, createManifestRoute } from "../../brand/manifest.js";
|
|
2
|
+
|
|
3
|
+
//#region src/integrations/nextjs/manifest.ts
|
|
4
|
+
const MANIFEST_CACHE_TAG = "kizlo:manifest";
|
|
5
|
+
function createManifestRoute$1(client) {
|
|
6
|
+
const handler = createManifestRoute(client);
|
|
7
|
+
let getBody;
|
|
8
|
+
return async function GET(request) {
|
|
9
|
+
if (!getBody) {
|
|
10
|
+
const { unstable_cache } = await import("next/cache");
|
|
11
|
+
getBody = unstable_cache(async () => (await handler(request)).text(), [MANIFEST_CACHE_TAG], { tags: [MANIFEST_CACHE_TAG] });
|
|
12
|
+
}
|
|
13
|
+
return new Response(await getBody(), { headers: { "Content-Type": "application/manifest+json" } });
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//#endregion
|
|
18
|
+
export { MANIFEST_CACHE_TAG, createManifestRoute$1 as createManifestRoute };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SeoHead } from "../../seo/schema.js";
|
|
2
|
+
import { S2SClient } from "../../kizlo.js";
|
|
3
|
+
import { Metadata, Viewport } from "next";
|
|
4
|
+
|
|
5
|
+
//#region src/integrations/nextjs/metadata.d.ts
|
|
6
|
+
declare function createRootMetadata(client: S2SClient<[]>): () => Promise<Metadata>;
|
|
7
|
+
/**
|
|
8
|
+
* Root `generateViewport` for `app/layout.tsx`. Emits `<meta name="theme-color">`
|
|
9
|
+
* from the brand theme color so the mobile browser chrome (address bar/toolbar)
|
|
10
|
+
* is tinted for regular visitors — distinct from the manifest `theme_color`,
|
|
11
|
+
* which only applies once the site is installed as an app. When a dark variant
|
|
12
|
+
* is set, both are emitted with `prefers-color-scheme` media queries.
|
|
13
|
+
*/
|
|
14
|
+
declare function createRootViewport(client: S2SClient<[]>): () => Promise<Viewport>;
|
|
15
|
+
declare function createPageMetadata(head: SeoHead): Metadata;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createPageMetadata, createRootMetadata, createRootViewport };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { resolveIcons } from "../../brand/icons.js";
|
|
2
|
+
import { WEB_MANIFEST_ROUTE } from "../../brand/manifest.js";
|
|
3
|
+
|
|
4
|
+
//#region src/integrations/nextjs/metadata.ts
|
|
5
|
+
function createRootMetadata(client) {
|
|
6
|
+
return async function generateMetadata() {
|
|
7
|
+
const settings = await client.settings.get.call();
|
|
8
|
+
const { icon, appleTouch } = resolveIcons(settings.brand);
|
|
9
|
+
const metadata = {
|
|
10
|
+
manifest: WEB_MANIFEST_ROUTE,
|
|
11
|
+
icons: {
|
|
12
|
+
icon: icon.map(toNextIcon),
|
|
13
|
+
apple: appleTouch.map(toNextIcon)
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
if (settings.site.url) metadata.metadataBase = new URL(settings.site.url);
|
|
17
|
+
return metadata;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Root `generateViewport` for `app/layout.tsx`. Emits `<meta name="theme-color">`
|
|
22
|
+
* from the brand theme color so the mobile browser chrome (address bar/toolbar)
|
|
23
|
+
* is tinted for regular visitors — distinct from the manifest `theme_color`,
|
|
24
|
+
* which only applies once the site is installed as an app. When a dark variant
|
|
25
|
+
* is set, both are emitted with `prefers-color-scheme` media queries.
|
|
26
|
+
*/
|
|
27
|
+
function createRootViewport(client) {
|
|
28
|
+
return async function generateViewport() {
|
|
29
|
+
const { brand } = await client.settings.get.call();
|
|
30
|
+
const light = brand.theme_color;
|
|
31
|
+
const dark = brand.theme_color_dark;
|
|
32
|
+
const themeColor = [];
|
|
33
|
+
if (light) themeColor.push(dark ? {
|
|
34
|
+
media: "(prefers-color-scheme: light)",
|
|
35
|
+
color: light
|
|
36
|
+
} : { color: light });
|
|
37
|
+
if (dark) themeColor.push({
|
|
38
|
+
media: "(prefers-color-scheme: dark)",
|
|
39
|
+
color: dark
|
|
40
|
+
});
|
|
41
|
+
return themeColor.length ? { themeColor } : {};
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function toNextIcon(icon) {
|
|
45
|
+
return {
|
|
46
|
+
url: icon.url,
|
|
47
|
+
type: icon.type,
|
|
48
|
+
sizes: icon.sizes,
|
|
49
|
+
media: icon.media
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function createPageMetadata(head) {
|
|
53
|
+
return {
|
|
54
|
+
title: { absolute: head.title },
|
|
55
|
+
description: head.og.description || void 0,
|
|
56
|
+
alternates: { canonical: head.canonical },
|
|
57
|
+
robots: [
|
|
58
|
+
head.robots.index,
|
|
59
|
+
head.robots.follow,
|
|
60
|
+
head.robots.maxSnippet,
|
|
61
|
+
head.robots.maxImagePreview,
|
|
62
|
+
head.robots.maxVideoPreview
|
|
63
|
+
].join(", "),
|
|
64
|
+
openGraph: {
|
|
65
|
+
type: head.og.type,
|
|
66
|
+
title: head.og.title,
|
|
67
|
+
description: head.og.description || void 0,
|
|
68
|
+
url: head.og.url,
|
|
69
|
+
siteName: head.og.siteName,
|
|
70
|
+
locale: head.og.locale,
|
|
71
|
+
images: head.og.image ? [{
|
|
72
|
+
url: head.og.image.url,
|
|
73
|
+
width: head.og.image.width,
|
|
74
|
+
height: head.og.image.height,
|
|
75
|
+
alt: head.og.image.alt ?? void 0
|
|
76
|
+
}] : void 0
|
|
77
|
+
},
|
|
78
|
+
twitter: {
|
|
79
|
+
card: head.twitter.card,
|
|
80
|
+
title: head.twitter.title,
|
|
81
|
+
description: head.twitter.description || void 0,
|
|
82
|
+
site: head.twitter.site ?? void 0,
|
|
83
|
+
creator: head.twitter.creator ?? void 0,
|
|
84
|
+
images: head.twitter.image ? [head.twitter.image] : void 0
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
//#endregion
|
|
90
|
+
export { createPageMetadata, createRootMetadata, createRootViewport };
|
package/dist/kizlo.d.ts
CHANGED
|
@@ -5,10 +5,10 @@ import { CaptchaAdapter } from "./adapters/captcha.js";
|
|
|
5
5
|
import { CookiesAdapter } from "./shared/types.js";
|
|
6
6
|
import { GeoAdapter } from "./adapters/geo.js";
|
|
7
7
|
import { Environment, LoggerAdapter } from "./adapters/logger.js";
|
|
8
|
+
import { Context } from "./context.js";
|
|
8
9
|
import { RouterMap } from "./router.js";
|
|
9
10
|
import { AnyExtension, InferExtensionRouter } from "./shared/extension.js";
|
|
10
11
|
import { ResultClient } from "./shared/result.js";
|
|
11
|
-
import { Context } from "./context.js";
|
|
12
12
|
|
|
13
13
|
//#region src/kizlo.d.ts
|
|
14
14
|
type AnyKizloConfig = KizloConfig<any>;
|
package/dist/nextjs/server.d.ts
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
import { WEB_MANIFEST_ROUTE } from "../brand/manifest.js";
|
|
2
|
+
import { createRootMetadata, createRootViewport } from "../integrations/nextjs/metadata.js";
|
|
1
3
|
import { KizloServerOptions, createKizlo } from "../integrations/nextjs/kizlo.server.js";
|
|
4
|
+
import { MANIFEST_CACHE_TAG, createManifestRoute } from "../integrations/nextjs/manifest.js";
|
|
2
5
|
import { createRobotsRoute } from "../integrations/nextjs/robots.js";
|
|
3
6
|
import { SITEMAP_CACHE_TAG, SITEMAP_ROUTE, createSitemapRoute } from "../integrations/nextjs/sitemap.js";
|
|
4
|
-
export { KizloServerOptions, SITEMAP_CACHE_TAG, SITEMAP_ROUTE, createKizlo, createRobotsRoute, createSitemapRoute };
|
|
7
|
+
export { KizloServerOptions, MANIFEST_CACHE_TAG, SITEMAP_CACHE_TAG, SITEMAP_ROUTE, WEB_MANIFEST_ROUTE, createKizlo, createManifestRoute, createRobotsRoute, createRootMetadata, createRootViewport, createSitemapRoute };
|
package/dist/nextjs/server.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { WEB_MANIFEST_ROUTE } from "../brand/manifest.js";
|
|
2
|
+
import { createRootMetadata, createRootViewport } from "../integrations/nextjs/metadata.js";
|
|
1
3
|
import { createRobotsRoute } from "../integrations/nextjs/robots.js";
|
|
2
4
|
import { SITEMAP_CACHE_TAG, SITEMAP_ROUTE, createSitemapRoute } from "../integrations/nextjs/sitemap.js";
|
|
3
5
|
import { createKizlo } from "../integrations/nextjs/kizlo.server.js";
|
|
6
|
+
import { MANIFEST_CACHE_TAG, createManifestRoute } from "../integrations/nextjs/manifest.js";
|
|
4
7
|
|
|
5
|
-
export { SITEMAP_CACHE_TAG, SITEMAP_ROUTE, createKizlo, createRobotsRoute, createSitemapRoute };
|
|
8
|
+
export { MANIFEST_CACHE_TAG, SITEMAP_CACHE_TAG, SITEMAP_ROUTE, WEB_MANIFEST_ROUTE, createKizlo, createManifestRoute, createRobotsRoute, createRootMetadata, createRootViewport, createSitemapRoute };
|
package/dist/nextjs.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { KizloClientOptions, createKizloClient } from "./integrations/nextjs/kizlo.client.js";
|
|
2
|
-
import {
|
|
3
|
-
export { KizloClientOptions, createKizloClient,
|
|
2
|
+
import { createPageMetadata } from "./integrations/nextjs/metadata.js";
|
|
3
|
+
export { KizloClientOptions, createKizloClient, createPageMetadata };
|
package/dist/nextjs.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { createKizloClient } from "./integrations/nextjs/kizlo.client.js";
|
|
2
|
-
import {
|
|
2
|
+
import { createPageMetadata } from "./integrations/nextjs/metadata.js";
|
|
3
3
|
|
|
4
|
-
export { createKizloClient,
|
|
4
|
+
export { createKizloClient, createPageMetadata };
|
package/dist/package.js
CHANGED