update sitemap
This commit is contained in:
parent
c9f31c4664
commit
31ec0e85da
@ -79,7 +79,7 @@ let cloudFrontUrl = import.meta.env.VITE_IMAGE_URL;
|
|||||||
|
|
||||||
|
|
||||||
<div class="z-1 absolute top-5">
|
<div class="z-1 absolute top-5">
|
||||||
<img class="w-36 ml-2" src={cloudFrontUrl+'/assets/donation_logo.png'} alt="logo">
|
<img class="w-32 sm:w-36 ml-3 sm:ml-2" src={cloudFrontUrl+'/assets/donation_logo.png'} alt="logo">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- End Column -->
|
<!-- End Column -->
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
import { userRegion } from '$lib/store';
|
import { userRegion } from "$lib/store";
|
||||||
|
|
||||||
const usRegion = ['cle1','iad1','pdx1','sfo1'];
|
const usRegion = ["cle1", "iad1", "pdx1", "sfo1"];
|
||||||
let apiURL;
|
let apiURL;
|
||||||
let apiKey = import.meta.env.VITE_STOCKNEAR_API_KEY;
|
let apiKey = import.meta.env.VITE_STOCKNEAR_API_KEY;
|
||||||
|
|
||||||
userRegion.subscribe(value => {
|
userRegion.subscribe((value) => {
|
||||||
if (usRegion.includes(value)) {
|
if (usRegion.includes(value)) {
|
||||||
apiURL = import.meta.env.VITE_USEAST_API_URL;
|
apiURL = import.meta.env.VITE_USEAST_API_URL;
|
||||||
} else {
|
} else {
|
||||||
@ -12,16 +12,15 @@ if (usRegion.includes(value)) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
export const config = {
|
export const config = {
|
||||||
runtime: 'nodejs20.x',
|
runtime: "nodejs20.x",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
const pages = [
|
const pages = [
|
||||||
{ title: "/" },
|
{ title: "/" },
|
||||||
{ title: "/cramer-tracker" },
|
{ title: "/cramer-tracker" },
|
||||||
{ title: "/reddit-tracker" },
|
{ title: "/reddit-tracker" },
|
||||||
|
{ title: "/corporate-lobbying-tracker" },
|
||||||
{ title: "/most-shorted-stocks" },
|
{ title: "/most-shorted-stocks" },
|
||||||
{ title: "/stocks" },
|
{ title: "/stocks" },
|
||||||
{ title: "/etf" },
|
{ title: "/etf" },
|
||||||
@ -31,12 +30,16 @@ const pages = [
|
|||||||
{ title: "/trending" },
|
{ title: "/trending" },
|
||||||
{ title: "/price-alert" },
|
{ title: "/price-alert" },
|
||||||
{ title: "/heatmaps" },
|
{ title: "/heatmaps" },
|
||||||
{title: "/portfolio"},
|
{ title: "/donation" },
|
||||||
|
//{title: "/portfolio"},
|
||||||
{ title: "/newsletter" },
|
{ title: "/newsletter" },
|
||||||
{ title: "/options-flow" },
|
{ title: "/options-flow" },
|
||||||
{ title: "/options-zero-dte" },
|
{ title: "/options-zero-dte" },
|
||||||
{ title: "/ipos" },
|
{ title: "/ipos" },
|
||||||
{ title: "/list" },
|
{ title: "/list" },
|
||||||
|
{ title: "/list/dividend-kings" },
|
||||||
|
{ title: "/list/dividend-aristocrats" },
|
||||||
|
{ title: "/list/magnificent-seven" },
|
||||||
{ title: "/list/mega-cap-stocks" },
|
{ title: "/list/mega-cap-stocks" },
|
||||||
{ title: "/list/large-cap-stocks" },
|
{ title: "/list/large-cap-stocks" },
|
||||||
{ title: "/list/mid-cap-stocks" },
|
{ title: "/list/mid-cap-stocks" },
|
||||||
@ -84,8 +87,8 @@ const pages = [
|
|||||||
{ title: "/login" },
|
{ title: "/login" },
|
||||||
{ title: "/register" },
|
{ title: "/register" },
|
||||||
{ title: "/watchlist" },
|
{ title: "/watchlist" },
|
||||||
{title: "/leaderboard"},
|
//{ title: "/leaderboard" },
|
||||||
{title: "/tournament-rules"},
|
//{ title: "/tournament-rules" },
|
||||||
{ title: "/pricing" },
|
{ title: "/pricing" },
|
||||||
{ title: "/terms-of-use" },
|
{ title: "/terms-of-use" },
|
||||||
{ title: "/privacy-policy" },
|
{ title: "/privacy-policy" },
|
||||||
@ -97,57 +100,55 @@ const pages = [
|
|||||||
{ title: "/politicians/flow-data" },
|
{ title: "/politicians/flow-data" },
|
||||||
{ title: "/analysts" },
|
{ title: "/analysts" },
|
||||||
{ title: "/analysts/top-stocks" },
|
{ title: "/analysts/top-stocks" },
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const site = "https://stocknear.com"
|
const site = "https://stocknear.com";
|
||||||
const website = "https://stocknear.com"
|
const website = "https://stocknear.com";
|
||||||
|
|
||||||
|
|
||||||
/** @type {import('./$types').RequestHandler} */
|
/** @type {import('./$types').RequestHandler} */
|
||||||
export async function GET({ locals }) {
|
export async function GET({ locals }) {
|
||||||
|
|
||||||
|
|
||||||
//get all posts;
|
//get all posts;
|
||||||
|
|
||||||
const outputPost = await locals.pb.collection('posts').getFullList() ;
|
const outputPost = await locals.pb.collection("posts").getFullList();
|
||||||
|
|
||||||
const outputBlogPost = await locals.pb.collection('articles').getFullList() ;
|
const outputBlogPost = await locals.pb.collection("articles").getFullList();
|
||||||
|
|
||||||
const posts = outputPost?.map(item => ({
|
const posts = outputPost?.map((item) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const articles = outputBlogPost?.map((item) => ({
|
||||||
const articles = outputBlogPost?.map(item => ({
|
|
||||||
id: item.id,
|
id: item.id,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
const rawData = await fetch(apiURL + "/searchbar-data", {
|
||||||
const rawData = await fetch(apiURL+'/searchbar-data', {
|
method: "GET",
|
||||||
method: 'GET',
|
|
||||||
headers: {
|
headers: {
|
||||||
"Content-Type": "application/json","X-API-KEY": apiKey
|
"Content-Type": "application/json",
|
||||||
|
"X-API-KEY": apiKey,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const outputStocks = await rawData.json();
|
const outputStocks = await rawData.json();
|
||||||
const stocks = outputStocks?.map(item => ({
|
const stocks = outputStocks?.map((item) => ({
|
||||||
id: item?.symbol,
|
id: item?.symbol,
|
||||||
type: item?.type
|
type: item?.type,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const body = sitemap(posts, articles, stocks, pages);
|
const body = sitemap(posts, articles, stocks, pages);
|
||||||
const response = new Response(body);
|
const response = new Response(body);
|
||||||
response.headers.set('Cache-Control', 'max-age=0, s-maxage=3600');
|
response.headers.set("Cache-Control", "max-age=0, s-maxage=3600");
|
||||||
response.headers.set('Content-Type', 'application/xml');
|
response.headers.set("Content-Type", "application/xml");
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Modified sitemap function
|
// Modified sitemap function
|
||||||
const sitemap = (posts, articles, stocks, pages) => `<?xml version="1.0" encoding="UTF-8" ?>
|
const sitemap = (
|
||||||
|
posts,
|
||||||
|
articles,
|
||||||
|
stocks,
|
||||||
|
pages
|
||||||
|
) => `<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<urlset
|
<urlset
|
||||||
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
|
xmlns="https://www.sitemaps.org/schemas/sitemap/0.9"
|
||||||
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
|
xmlns:news="https://www.google.com/schemas/sitemap-news/0.9"
|
||||||
@ -156,28 +157,47 @@ const sitemap = (posts, articles, stocks, pages) => `<?xml version="1.0" encodin
|
|||||||
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
|
xmlns:image="https://www.google.com/schemas/sitemap-image/1.1"
|
||||||
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
|
xmlns:video="https://www.google.com/schemas/sitemap-video/1.1"
|
||||||
>
|
>
|
||||||
${pages.map((page) => `
|
${pages
|
||||||
|
.map(
|
||||||
|
(page) => `
|
||||||
<url>
|
<url>
|
||||||
<loc>${website}${page.title}</loc>
|
<loc>${website}${page.title}</loc>
|
||||||
</url>
|
</url>
|
||||||
`).join('')}
|
`
|
||||||
${stocks.map((ticker) => {
|
)
|
||||||
|
.join("")}
|
||||||
|
${stocks
|
||||||
|
.map((ticker) => {
|
||||||
// Determine the path based on the type of the ticker
|
// Determine the path based on the type of the ticker
|
||||||
const path = ticker.type === 'Stock' ? '/stocks/' : ticker.type === 'ETF' ? '/etf/' : '/stocks/';
|
const path =
|
||||||
|
ticker.type === "Stock"
|
||||||
|
? "/stocks/"
|
||||||
|
: ticker.type === "ETF"
|
||||||
|
? "/etf/"
|
||||||
|
: "/stocks/";
|
||||||
return `
|
return `
|
||||||
<url>
|
<url>
|
||||||
<loc>${website}${path}${ticker.id}</loc>
|
<loc>${website}${path}${ticker.id}</loc>
|
||||||
</url>
|
</url>
|
||||||
`;
|
`;
|
||||||
}).join('')}
|
})
|
||||||
${articles.map((article) => `
|
.join("")}
|
||||||
|
${articles
|
||||||
|
.map(
|
||||||
|
(article) => `
|
||||||
<url>
|
<url>
|
||||||
<loc>${website}/blog/article/${article.id}</loc>
|
<loc>${website}/blog/article/${article.id}</loc>
|
||||||
</url>
|
</url>
|
||||||
`).join('')}
|
`
|
||||||
${posts.map((post) => `
|
)
|
||||||
|
.join("")}
|
||||||
|
${posts
|
||||||
|
.map(
|
||||||
|
(post) => `
|
||||||
<url>
|
<url>
|
||||||
<loc>${website}/community/post/${post.id}</loc>
|
<loc>${website}/community/post/${post.id}</loc>
|
||||||
</url>
|
</url>
|
||||||
`).join('')}
|
`
|
||||||
|
)
|
||||||
|
.join("")}
|
||||||
</urlset>`;
|
</urlset>`;
|
||||||
Loading…
x
Reference in New Issue
Block a user