Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
solid-start-sitemap
Advanced tools
This packages enables to build a sitemap of a solid-start-app.
Currently only file routes are available automatically.
The package will grab the route definitions from vinxi/routes
.
Dynamic routes have are formatted like /posts/:postId
or for the catch all routes pages/*slug
.
This package is build on top of sitemap.js.
npm i solid-start-sitemap
# or
yarn add solid-start-sitemap
# or
pnpm add solid-start-sitemap
Generate a sitemap with one of the following options and add this entry to your robots.txt
in the public directory
User-agent: *
Allow: /
###### add the following line ######
Sitemap: https://www.example.com/sitemap.xml
PROP | TYPE | EXAMPLE | DESCRIPTION |
---|---|---|---|
hostname | string | 'https://example.com' | Required: Basedomain of your app. |
pubDir | string | 'public' | Defaults to 'public'. Path to public directory where the public assets are stored and the XML(s) will be saved to. The plugin will get this automatically from the app config. |
ingoreRoutes | string[] | ['/posts/archive','/posts/archive/:postId'] | array of routes which should be excluded from the |
replaceRouteParams | Record<string,(number|string)[]> | {':postId':[1,2,3]} | Object which provides all params for the dynamic routes. Note that the params should have a unique name. So instead of /posts/[id] and /products/[id] you may rename them to /posts/[postId] and /products/[productId] or you may use the option dynamicRoutes . If you don't pass any params all dynamic routes will be ignored. Otherwise provide all params for dynamic routes which are not ignored with ingoreRoutes |
dynamicRoutes | string[] | ['posts/1','/posts/2','/posts/3'] | array of custom routes to add to the sitemap. Can be used to add dynamic routes for more complex use cases |
limit | number | 45000 | Maximum number if urls in one sitemap. If provided will generate multiple XML(s) and also create a index sitemap which references all sitemap files. |
For a static site with static routes or dynamic routes with fixed amount of params add the plugin to the app.config.ts
.
It will add a sitemap.xml
or if you pass
//app.config.ts
import { defineConfig } from '@solidjs/start/config';
import { SolidStartSiteMapPlugin } from 'solid-start-sitemap';
export default defineConfig({
vite: {
plugins: [
SolidStartSiteMapPlugin({
hostname: 'https://example.com',
replaceRouteParams: {
':postId': [1, 2, 3],
},
limit: 5000,
}),
],
},
});
The most common use case will probably be to create a sitemap dynamically either periodically (e.g. every day / every sunday, ...) or based on changes of data (e.g. new post). Here are a few examples how to achieve this.
Add an API route which generates a new sitemap when you call it. You can use a cronjob to re-generate periodically or if using a cms you can also use a webbhook as a trigger e.g. every time a new post is published.
// FIRST we'll create a reusable function
// ./src/lib/sitemap.ts
import { createSitemap } from 'solid-start-sitemap';
import { isServer } from 'solid-js/web';
export const generateSitemap = async () => {
if (!isServer) throw new Error("This function may only be called on the server");
//fetch all postIDs from DB / cms
const postsIDs = await getPostIDs();
await createSitemap({
hostname:'https://example.com'
replaceRouteParams: {
':postId': postIDs,
},
limit: 5000,
});
}
//Now we can call this e.g. every time a new post is created
// ./src/queries/posts/create.tsx
import { generateSitemap } from '~/lib/sitemap';
export async function createPost(data) {
try {
await db.create("post", data)
} catch (err) {
//handle error
}
generateSitemap().catch() //no need to await it - ignore errors
}
// or create an API which can be called periodically by a cronjob or by a webbhok if you use a cms.
// ./src/routes/api/sitemap.ts
import { generateSitemap } from '~/lib/sitemap';
export async function GET() {
//protect the route e.g.
const token = await getAuthToken()
if (!token || token !== process.env.SITEMAP_TOKEN) return new Response('Not Authorized',{status:401})
try {
await generateSitemap()
return new Response('Sitemap generated successfully')
} catch (err) {
console.log(err);
return new Response(e instanceof Error ? e.message : JSON.stringify(e), { status: 500 });
}
}
FAQs
Solid-start Sitemap generator
The npm package solid-start-sitemap receives a total of 5 weekly downloads. As such, solid-start-sitemap popularity was classified as not popular.
We found that solid-start-sitemap demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.