Skip to content

Commit

Permalink
[ci] format
Browse files Browse the repository at this point in the history
  • Loading branch information
ematipico authored and astrobot-houston committed Apr 18, 2024
1 parent 0e22462 commit 5750ad1
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 64 deletions.
19 changes: 11 additions & 8 deletions packages/integrations/sitemap/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import type { AstroConfig, AstroIntegration } from 'astro';
import type { EnumChangefreq, LinkItem as LinkItemBase, SitemapItemLoose } from 'sitemap';
import { ZodError } from 'zod';

import { validateOptions } from './validate-options.js';
import { generateSitemap } from './generate-sitemap.js';
import { validateOptions } from './validate-options.js';
import { writeSitemap } from './write-sitemap.js';

export { EnumChangefreq as ChangeFreqEnum } from 'sitemap';
Expand Down Expand Up @@ -167,13 +167,16 @@ const createPlugin = (options?: SitemapOptions): AstroIntegration => {
}
}
const destDir = fileURLToPath(dir);
await writeSitemap({
hostname: finalSiteUrl.href,
destinationDir: destDir,
publicBasePath: config.base,
sourceData: urlData,
limit: entryLimit
}, config)
await writeSitemap(
{
hostname: finalSiteUrl.href,
destinationDir: destDir,
publicBasePath: config.base,
sourceData: urlData,
limit: entryLimit,
},
config
);
logger.info(`\`${OUTFILE}\` created at \`${path.relative(process.cwd(), destDir)}\``);
} catch (err) {
if (err instanceof ZodError) {
Expand Down
112 changes: 56 additions & 56 deletions packages/integrations/sitemap/src/write-sitemap.ts
Original file line number Diff line number Diff line change
@@ -1,69 +1,69 @@
import { type WriteStream, createWriteStream } from 'fs';
import { normalize, resolve } from 'path';
import { createWriteStream, type WriteStream } from 'fs'
import { mkdir } from 'fs/promises';
import { promisify } from 'util';
import { Readable, pipeline } from 'stream';
import replace from 'stream-replace-string'
import { promisify } from 'util';
import { mkdir } from 'fs/promises';
import replace from 'stream-replace-string';

import { SitemapAndIndexStream, SitemapStream } from 'sitemap';

import type { AstroConfig } from 'astro';
import type { SitemapItem } from "./index.js";
import type { SitemapItem } from './index.js';

type WriteSitemapConfig = {
hostname: string;
sitemapHostname?: string;
sourceData: SitemapItem[];
destinationDir: string;
publicBasePath?: string;
limit?: number;
}
hostname: string;
sitemapHostname?: string;
sourceData: SitemapItem[];
destinationDir: string;
publicBasePath?: string;
limit?: number;
};

// adapted from sitemap.js/sitemap-simple
export async function writeSitemap({ hostname, sitemapHostname = hostname,
sourceData, destinationDir, limit = 50000, publicBasePath = './', }: WriteSitemapConfig, astroConfig: AstroConfig) {
export async function writeSitemap(
{
hostname,
sitemapHostname = hostname,
sourceData,
destinationDir,
limit = 50000,
publicBasePath = './',
}: WriteSitemapConfig,
astroConfig: AstroConfig
) {
await mkdir(destinationDir, { recursive: true });

const sitemapAndIndexStream = new SitemapAndIndexStream({
limit,
getSitemapStream: (i) => {
const sitemapStream = new SitemapStream({
hostname,
});
const path = `./sitemap-${i}.xml`;
const writePath = resolve(destinationDir, path);
if (!publicBasePath.endsWith('/')) {
publicBasePath += '/';
}
const publicPath = normalize(publicBasePath + path);

await mkdir(destinationDir, { recursive: true })
let stream: WriteStream;
if (astroConfig.trailingSlash === 'never' || astroConfig.build.format === 'file') {
// workaround for trailing slash issue in sitemap.js: https://github.com/ekalinin/sitemap.js/issues/403
const host = hostname.endsWith('/') ? hostname.slice(0, -1) : hostname;
const searchStr = `<loc>${host}/</loc>`;
const replaceStr = `<loc>${host}</loc>`;
stream = sitemapStream
.pipe(replace(searchStr, replaceStr))
.pipe(createWriteStream(writePath));
} else {
stream = sitemapStream.pipe(createWriteStream(writePath));
}

const sitemapAndIndexStream = new SitemapAndIndexStream({
limit,
getSitemapStream: (i) => {
const sitemapStream = new SitemapStream({
hostname,
});
const path = `./sitemap-${i}.xml`;
const writePath = resolve(destinationDir, path);
if (!publicBasePath.endsWith('/')) {
publicBasePath += '/';
}
const publicPath = normalize(publicBasePath + path);
return [new URL(publicPath, sitemapHostname).toString(), sitemapStream, stream];
},
});

let stream: WriteStream
if (astroConfig.trailingSlash === 'never' || astroConfig.build.format === 'file') {
// workaround for trailing slash issue in sitemap.js: https://github.com/ekalinin/sitemap.js/issues/403
const host = hostname.endsWith('/') ? hostname.slice(0, -1) : hostname
const searchStr = `<loc>${host}/</loc>`
const replaceStr = `<loc>${host}</loc>`
stream = sitemapStream.pipe(replace(searchStr, replaceStr)).pipe(createWriteStream(writePath))
} else {
stream = sitemapStream.pipe(createWriteStream(writePath))
}

return [
new URL(
publicPath,
sitemapHostname
).toString(),
sitemapStream,
stream,
];
},
});

let src = Readable.from(sourceData)
const indexPath = resolve(
destinationDir,
`./sitemap-index.xml`
);
return promisify(pipeline)(src, sitemapAndIndexStream, createWriteStream(indexPath));
}
let src = Readable.from(sourceData);
const indexPath = resolve(destinationDir, `./sitemap-index.xml`);
return promisify(pipeline)(src, sitemapAndIndexStream, createWriteStream(indexPath));
}

0 comments on commit 5750ad1

Please sign in to comment.