Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified
import type { FileContents, FileDiffMetadata, SupportedLanguages } from "@pierre/diffs";
export const DIFF_LAYOUTS = ["unified", "split"] as const;
export const DIFF_MODES = ["view", "image", "file", "both"] as const;
export const DIFF_THEMES = ["light", "dark"] as const;
export const DIFF_INDICATORS = ["bars", "classic", "none"] as const;
export const DIFF_IMAGE_QUALITY_PRESETS = ["standard", "hq", "print"] as const;
export const DIFF_OUTPUT_FORMATS = ["png", "pdf"] as const;
export type DiffLayout = (typeof DIFF_LAYOUTS)[number];
export type DiffMode = (typeof DIFF_MODES)[number];
export type DiffTheme = (typeof DIFF_THEMES)[number];
export type DiffIndicators = (typeof DIFF_INDICATORS)[number];
export type DiffImageQualityPreset = (typeof DIFF_IMAGE_QUALITY_PRESETS)[number];
export type DiffOutputFormat = (typeof DIFF_OUTPUT_FORMATS)[number];
export type DiffPresentationDefaults = {
fontFamily: string;
fontSize: number;
lineSpacing: number;
layout: DiffLayout;
showLineNumbers: boolean;
diffIndicators: DiffIndicators;
wordWrap: boolean;
background: boolean;
theme: DiffTheme;
};
export type DiffFileDefaults = {
fileFormat: DiffOutputFormat;
fileQuality: DiffImageQualityPreset;
fileScale: number;
fileMaxWidth: number;
};
export type DiffToolDefaults = DiffPresentationDefaults &
DiffFileDefaults & {
mode: DiffMode;
};
export type BeforeAfterDiffInput = {
kind: "before_after";
before: string;
after: string;
path?: string;
lang?: string;
title?: string;
};
export type PatchDiffInput = {
kind: "patch";
patch: string;
title?: string;
};
export type DiffInput = BeforeAfterDiffInput | PatchDiffInput;
export type DiffRenderOptions = {
presentation: DiffPresentationDefaults;
image: {
format: DiffOutputFormat;
qualityPreset: DiffImageQualityPreset;
scale: number;
maxWidth: number;
maxPixels: number;
};
expandUnchanged: boolean;
};
export type DiffViewerOptions = {
theme: {
light: "pierre-light";
dark: "pierre-dark";
};
diffStyle: DiffLayout;
diffIndicators: DiffIndicators;
disableLineNumbers: boolean;
expandUnchanged: boolean;
themeType: DiffTheme;
backgroundEnabled: boolean;
overflow: "scroll" | "wrap";
unsafeCSS: string;
};
export type DiffViewerPayload = {
prerenderedHTML: string;
options: DiffViewerOptions;
langs: SupportedLanguages[];
oldFile?: FileContents;
newFile?: FileContents;
fileDiff?: FileDiffMetadata;
};
export type RenderedDiffDocument = {
html: string;
imageHtml: string;
title: string;
fileCount: number;
inputKind: DiffInput["kind"];
};
export type DiffArtifactMeta = {
id: string;
token: string;
createdAt: string;
expiresAt: string;
title: string;
inputKind: DiffInput["kind"];
fileCount: number;
viewerPath: string;
htmlPath: string;
filePath?: string;
imagePath?: string;
};
export const DIFF_ARTIFACT_ID_PATTERN = /^[0-9a-f]{20}$/;
export const DIFF_ARTIFACT_TOKEN_PATTERN = /^[0-9a-f]{48}$/;