@twotaps/site-utils
Advanced tools
Comparing version 0.0.18 to 0.0.19
import { SvelteComponentTyped } from "svelte"; | ||
import type { PageDto } from '../page/page.dto'; | ||
declare const __propDef: { | ||
@@ -3,0 +4,0 @@ props: { |
@@ -7,2 +7,6 @@ export declare class AssetDto { | ||
} | ||
export declare class SiteDto { | ||
customScriptHead: string; | ||
customScriptBody: string; | ||
} | ||
export declare class PageDto { | ||
@@ -13,2 +17,4 @@ id: number; | ||
properties: {}; | ||
allowCrawling: boolean; | ||
site: SiteDto; | ||
ttschema: TTSchemaCustomDto[]; | ||
@@ -15,0 +21,0 @@ } |
export class AssetDto { | ||
} | ||
export class SiteDto { | ||
} | ||
export class PageDto { | ||
@@ -4,0 +6,0 @@ } |
export declare const GET_PAGE: import("@graphql-typed-document-node/core").TypedDocumentNode<any, object>; | ||
export declare const GET_ASSETS: import("@graphql-typed-document-node/core").TypedDocumentNode<any, object>; | ||
export declare const GET_DOMAIN_SITEMAP: import("@graphql-typed-document-node/core").TypedDocumentNode<any, object>; | ||
export declare const GET_DOMAIN_ROBOTS: import("@graphql-typed-document-node/core").TypedDocumentNode<any, object>; |
@@ -9,2 +9,3 @@ import { gql } from "@urql/core"; | ||
metaDescription | ||
allowCrawling | ||
site { | ||
@@ -69,1 +70,15 @@ customScriptHead | ||
`; | ||
export const GET_DOMAIN_SITEMAP = gql ` | ||
query DomainWithSitemap($domain: String!) { | ||
domain(domain: $domain) { | ||
sitemap | ||
} | ||
} | ||
`; | ||
export const GET_DOMAIN_ROBOTS = gql ` | ||
query DomainWithSitemap($domain: String!) { | ||
domain(domain: $domain) { | ||
robots | ||
} | ||
} | ||
`; |
@@ -5,2 +5,7 @@ import type { Page_page, Page_page_publishedRevision_schema_ttschema_fields, Page_page_publishedRevision_schema_ttschema_subSchemas } from "./__generated__/Page"; | ||
export declare function getComponentsDictFromModules(modules: any): {}; | ||
/** @type {import('@sveltejs/kit').Handle} */ | ||
export declare function handle({ event, resolve }: { | ||
event: any; | ||
resolve: any; | ||
}): Promise<any>; | ||
/** | ||
@@ -14,2 +19,17 @@ * Map properties to their names. | ||
export declare function propertyMapping(properties: TTSchemaProperties[], fields: Page_page_publishedRevision_schema_ttschema_fields[], schemas: Page_page_publishedRevision_schema_ttschema_subSchemas[]): {}; | ||
/** @type {import('@sveltejs/kit').Load} */ | ||
export declare function loadPageData({ url }: { | ||
url: any; | ||
}): Promise<{ | ||
props: { | ||
page: PageDto; | ||
pageTitle: string; | ||
}; | ||
status?: undefined; | ||
error?: undefined; | ||
} | { | ||
status: number; | ||
error: Error; | ||
props?: undefined; | ||
}>; | ||
export declare class PageService { | ||
@@ -21,3 +41,5 @@ private readonly apolloClient; | ||
getPage(slug: string, domain?: string): Promise<PageDto>; | ||
getSitemap(domain: string): Promise<any>; | ||
getRobots(domain: string): Promise<any>; | ||
parseResponse(page: Page_page): Promise<PageDto>; | ||
} |
import { Client } from "@urql/core"; | ||
import { GET_PAGE } from "./page.query.js"; | ||
import { GET_PAGE, GET_DOMAIN_SITEMAP, GET_DOMAIN_ROBOTS } from "./page.query.js"; | ||
var TTSchemaFieldType; | ||
@@ -29,2 +29,21 @@ (function (TTSchemaFieldType) { | ||
} | ||
/** @type {import('@sveltejs/kit').Handle} */ | ||
export async function handle({ event, resolve }) { | ||
if (event.url.pathname === '/sitemap.xml') { | ||
const pageService = new PageService(import.meta.env.VITE_GRAPHQL_URL); | ||
const sitemap = await pageService.getSitemap(event.url.host); | ||
let response = new Response(sitemap); | ||
response.headers.set('content-type', 'application/xml'); | ||
return response; | ||
} | ||
if (event.url.pathname === '/robots.txt') { | ||
const pageService = new PageService(import.meta.env.VITE_GRAPHQL_URL); | ||
const robots = await pageService.getRobots(event.url.host); | ||
let response = new Response(robots); | ||
response.headers.set('content-type', 'text/plain'); | ||
return response; | ||
} | ||
const response = await resolve(event); | ||
return response; | ||
} | ||
/** | ||
@@ -73,2 +92,28 @@ * Map properties to their names. | ||
} | ||
/** @type {import('@sveltejs/kit').Load} */ | ||
export async function loadPageData({ url }) { | ||
const pageService = new PageService(import.meta.env.VITE_GRAPHQL_URL); | ||
try { | ||
const pageData = await pageService.getPage(url.pathname.slice(1), url.host); | ||
return { | ||
props: { | ||
page: pageData, | ||
pageTitle: pageData.name | ||
} | ||
}; | ||
} | ||
catch (err) { | ||
console.error(err); | ||
if (err.message === 'Page not found') { | ||
return { | ||
status: 404, | ||
error: new Error('Page not found') | ||
}; | ||
} | ||
return { | ||
status: 400, | ||
error: new Error(`Could not load ${url}`) | ||
}; | ||
} | ||
} | ||
export class PageService { | ||
@@ -84,3 +129,2 @@ constructor(uri) { | ||
try { | ||
console.log(slug, domain); | ||
const { data, error } = await this.apolloClient. | ||
@@ -93,11 +137,49 @@ query(GET_PAGE, { slug, domain }). | ||
else { | ||
console.log(error); | ||
throw new Error('Unable to load page from API'); | ||
console.error(error); | ||
throw new Error(`Error loading page data: ${error}`); | ||
} | ||
} | ||
catch (err) { | ||
console.log("Unable to fetch API", err); | ||
console.error("Unable to fetch API", err); | ||
throw new Error("Unable to fetch page from the API. Please try again"); | ||
} | ||
} | ||
async getSitemap(domain) { | ||
try { | ||
console.info(`Loading sitemap for ${domain}`); | ||
const { data, error } = await this.apolloClient. | ||
query(GET_DOMAIN_SITEMAP, { domain }). | ||
toPromise(); | ||
if (data) { | ||
return data.domain.sitemap; | ||
} | ||
else { | ||
console.error(error); | ||
throw new Error(`Error loading sitemap: ${error}`); | ||
} | ||
} | ||
catch (err) { | ||
console.error("Unable to fetch sitemap", err); | ||
throw new Error("Unable to fetch sitemap from the API. Please try again"); | ||
} | ||
} | ||
async getRobots(domain) { | ||
try { | ||
console.info(`Loading sitemap for ${domain}`); | ||
const { data, error } = await this.apolloClient. | ||
query(GET_DOMAIN_ROBOTS, { domain }). | ||
toPromise(); | ||
if (data) { | ||
return data.domain.robots; | ||
} | ||
else { | ||
console.error(error); | ||
throw new Error(`Error loading robots: ${error}`); | ||
} | ||
} | ||
catch (err) { | ||
console.error("Unable to fetch robots", err); | ||
throw new Error("Unable to fetch robots from the API. Please try again"); | ||
} | ||
} | ||
async parseResponse(page) { | ||
@@ -104,0 +186,0 @@ const { publishedRevision, ...rest } = page; |
{ | ||
"name": "@twotaps/site-utils", | ||
"version": "0.0.18", | ||
"version": "0.0.19", | ||
"description": "This package provides helper code for building twotaps public sites", | ||
@@ -5,0 +5,0 @@ "main": "dist/index.js", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
25325
592