Skip to content

Commit

Permalink
refactor: Extract write functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
vio committed Dec 26, 2024
1 parent f9edad5 commit 2404ad2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 24 deletions.
27 changes: 3 additions & 24 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,21 +1,14 @@
import path from 'node:path';
import process from 'node:process';
import fs from 'node:fs/promises';
import type { Plugin } from 'rollup';

import extractRollupStats, { type Stats, type StatsOptions } from './extract';
import extractRollupStats, { type StatsOptions } from './extract';
import { type RollupStatsWrite, rollupStatsWrite } from './write';
import { formatFileSize } from './utils/format-file-size';

const PLUGIN_NAME = 'rollupStats';
const DEFAULT_FILE_NAME = 'stats.json';

export type RollupStatsWriteResponse = {
filepath: string;
content: string;
};

export type RollupStatsWrite = (filepath: string, stats: Stats) => RollupStatsWriteResponse;

export type RollupStatsOptions = {
/**
* Output filename relative to Rollup output directory or absolute
Expand Down Expand Up @@ -51,7 +44,7 @@ function rollupStats(options: RollupStatsOptions = {}): Plugin {
const outputSize = Buffer.byteLength(res.content, 'utf-8');

this.info(`Stats saved to ${res.filepath} (${formatFileSize(outputSize)})`);
} catch (error: any) {
} catch (error: any) { // eslint-disable-line
// Log error, but do not throw to allow the compilation to continue
this.warn(error);
}
Expand All @@ -61,17 +54,3 @@ function rollupStats(options: RollupStatsOptions = {}): Plugin {

export default rollupStats;

async function rollupStatsWrite(filepath: string, stats: Stats): Promise<RollupStatsWriteResponse> {
const content = JSON.stringify(stats, null, 2);

// Create base directory if it does not exist
await fs.mkdir(path.dirname(filepath), { recursive: true });

await fs.writeFile(filepath, content);

return {
filepath,
content,
};
}

28 changes: 28 additions & 0 deletions src/write.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import path from 'node:path';
import fs from 'node:fs/promises';

export type RollupStatsWriteResponse = {
filepath: string;
content: string;
};

export type RollupStatsWrite = (
filepath: string,
stats: Record<string, unknown>
) => RollupStatsWriteResponse;

export async function rollupStatsWrite<
T extends Record<string, unknown> = Record<string, unknown>,
>(filepath: string, stats: T): Promise<RollupStatsWriteResponse> {
const content = JSON.stringify(stats, null, 2);

// Create base directory if it does not exist
await fs.mkdir(path.dirname(filepath), { recursive: true });

await fs.writeFile(filepath, content);

return {
filepath,
content,
};
}

0 comments on commit 2404ad2

Please sign in to comment.