Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@jsxtools/rollup-plugin-copy

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@jsxtools/rollup-plugin-copy - npm Package Compare versions

Comparing version
0.1.0
to
0.2.0
+26
-49
dist/copy-api.d.ts
export declare class CopyAPI {
/** Working directory. */
workDir: string;
/** Source directory. */
rootDir: string;
/** Destination directory. */
distDir: string;
/** File patterns to include. */
include: string[];
/** File patterns to exclude. */
exclude: string[];
/** Cache file. */
cacheFile: string;
cache: CacheRecord;
watchedFiles: string[];
changedFiles: string[];
/** Files read during build. */
fileContents: Map<string, Buffer<ArrayBufferLike>>;
init(userOptions?: CopyOptions): void;
captureWatchedFiles(): Promise<void>;
captureChangedFiles(): Promise<void>;
loadConfig(): Promise<CacheRecord>;
saveConfig(): Promise<void>;
getFileStats(filePath: string): Promise<FileStats | null>;
hasFileChanged(filePath: string): Promise<boolean>;
getAbsolutePath(filePath: string, basePath?: string): string;
getRelativePath(filePath: string, basePath?: string): string;
/**
* Get cached file content if available, otherwise read from disk.
* This avoids double reads when content was already loaded during hash calculation.
*/
getFileContent(filePath: string): Promise<Buffer>;
/**
* Clear the file contents cache to free memory after processing.
* Should be called after all files have been emitted.
*/
clearFileContentsCache(): void;
#private;
get cacheFile(): string;
files(): AsyncGenerator<string, void, void>;
init(options?: CopyOptions): void;
loadCache(): Promise<void>;
updateCache(): Promise<void>;
saveCache(): Promise<void>;
}
export interface Cache {
fileNames: string[];
fileInfos: FileCache[];
version: string;
}
export type FileCache = [time: number, size: number, hash: string];
export type FileOperation = () => Promise<void>;
export interface CopyOptions {
cacheFile?: string;
workDir?: string;
rootDir?: string;
distDir: string;
include?: string | string[];
exclude?: string | string[];
cacheFile?: string | undefined;
workDir?: string | undefined;
rootDir?: string | undefined;
distDir?: string | undefined;
include?: string | undefined | (string | undefined)[];
exclude?: string | undefined | (string | undefined)[];
}
export interface CacheRecord extends Record<string, CacheEntry> {
}
export interface CacheEntry {
hash: string | null;
mtime: number;
size: number;
}
export interface FileStats {

@@ -58,1 +29,7 @@ mtime: number;

}
export interface CopyBuildInfo {
fileNames: string[];
fileInfos: CopyFileInfo[];
version: string;
}
export type CopyFileInfo = [time: number, size: number, hash: string];

@@ -1,140 +0,147 @@

import { glob, readFile, stat, writeFile } from "node:fs/promises";
import { getFileHashAndData } from "@jsxtools/rollup-plugin-utils/get-file-hash";
import { toArray } from "@jsxtools/rollup-plugin-utils/options";
import { relative, resolve, resolveDir } from "@jsxtools/rollup-plugin-utils/path";
import * as array from "@jsxtools/rollup-plugin-utils/array";
import * as fs from "@jsxtools/rollup-plugin-utils/file";
import * as json from "@jsxtools/rollup-plugin-utils/json";
import * as path from "@jsxtools/rollup-plugin-utils/path";
import * as str from "@jsxtools/rollup-plugin-utils/string";
export class CopyAPI {
/** Working directory. */
workDir = resolveDir("." /* Default.WorkDir */);
/** Source directory. */
rootDir = resolveDir("." /* Default.WorkDir */, "src" /* Default.RootDir */);
/** Destination directory. */
distDir = resolveDir("." /* Default.WorkDir */, "dist" /* Default.DistDir */);
/** File patterns to include. */
include = [];
/** File patterns to exclude. */
exclude = [];
/** Cache file. */
cacheFile = resolve("." /* Default.WorkDir */, "cpconfig.cpbuildinfo" /* Default.CacheFile */);
cache = Object.create(null);
watchedFiles = [];
changedFiles = [];
/** Files read during build. */
fileContents = new Map();
init(userOptions = null) {
this.workDir = resolveDir(userOptions?.workDir ?? "." /* Default.WorkDir */);
this.rootDir = resolveDir(this.workDir, userOptions?.rootDir ?? "src" /* Default.RootDir */);
this.distDir = resolveDir(this.workDir, userOptions?.distDir ?? "dist" /* Default.DistDir */);
this.include = toArray(userOptions?.include).map(String);
this.exclude = toArray(userOptions?.exclude).map(String);
this.cacheFile = resolve(this.workDir, userOptions?.cacheFile ?? "cpconfig.cpbuildinfo" /* Default.CacheFile */);
#internals = {
cache: {
fileNames: [],
fileInfos: [],
version: "0.2.0",
},
files: {
globbed: [],
stashed: [],
},
glob: {
include: ["**/*"],
exclude: ["node_modules"],
},
operations: {
dists: [],
cache: [],
files: [],
},
paths: {
workDir: path.toDirURL("" /* Default.WorkDir */),
rootDir: path.toDirURL("" /* Default.WorkDir */, "src" /* Default.RootDir */),
distDir: path.toDirURL("" /* Default.WorkDir */, "dist" /* Default.DistDir */),
cacheFile: path.toURL("" /* Default.WorkDir */, "cpconfig.cpbuildinfo" /* Default.CacheFile */),
},
stash: {
cache: {},
files: new Map(),
shouldUpdate: false,
},
};
get cacheFile() {
return this.#internals.paths.cacheFile.pathname;
}
async captureWatchedFiles() {
this.watchedFiles = [];
for await (const filePath of glob(this.include, {
cwd: this.workDir,
exclude: this.exclude,
})) {
this.watchedFiles.push(`./${filePath}`);
}
files() {
const { glob, paths } = this.#internals;
return fs.glob({
cwd: paths.workDir,
include: glob.include,
exclude: glob.exclude,
});
}
async captureChangedFiles() {
const awaited = [];
this.changedFiles = [];
for (const watchedFile of this.watchedFiles) {
awaited.push(this.hasFileChanged(watchedFile).then((hasChanged) => {
if (hasChanged) {
this.changedFiles.push(watchedFile);
}
}));
}
await Promise.all(awaited);
init(options = null) {
const { paths, glob } = this.#internals;
paths.workDir = path.toDirURL(options?.workDir ?? "" /* Default.WorkDir */);
paths.rootDir = path.toDirURL(paths.workDir, options?.rootDir ?? "src" /* Default.RootDir */);
paths.distDir = path.toDirURL(paths.workDir, options?.distDir ?? "dist" /* Default.DistDir */);
paths.cacheFile = path.toURL(paths.workDir, options?.cacheFile ?? "cpconfig.cpbuildinfo" /* Default.CacheFile */);
Object.assign(glob, {
include: array.from(options?.include, str.hasTrimmedValue),
exclude: array.from(options?.exclude, str.hasTrimmedValue),
});
}
async loadConfig() {
const cacheRecord = Object.create(null);
try {
const cacheRecordJson = await readFile(this.cacheFile, "utf-8");
Object.assign(cacheRecord, JSON.parse(cacheRecordJson));
async loadCache() {
const { cache, paths, stash } = this.#internals;
const filed = await fs.readJSON(paths.cacheFile).catch(() => undefined);
cache.fileNames = [];
cache.fileInfos = [];
stash.cache = {};
stash.shouldUpdate = false;
if (filed?.version === cache.version) {
const fileNames = array.every(filed.fileNames, isCacheFileName) ? filed.fileNames : [];
const fileInfos = array.every(filed.fileInfos, isCacheFileInfo) ? filed.fileInfos : [];
if (fileNames.length === fileInfos.length) {
cache.fileNames.push(...fileNames);
cache.fileInfos.push(...fileInfos);
stash.cache = Object.fromEntries(fileNames.map((fileName, index) => [path.toPath(paths.workDir, fileName), fileInfos[index]]));
}
}
catch {
// Cache file doesn't exist or is invalid, continue with empty cache
}
finally {
this.cache = cacheRecord;
}
return this.cache;
}
async saveConfig() {
await writeFile(this.cacheFile, JSON.stringify(this.cache));
}
async getFileStats(filePath) {
try {
const fileStats = await stat(resolve(this.workDir, filePath));
return {
mtime: fileStats.mtimeMs,
size: fileStats.size,
};
async updateCache() {
const { operations, paths, stash } = this.#internals;
const globbedFiles = await Array.fromAsync(this.files());
operations.cache = [];
operations.files = [];
stash.files.clear();
stash.shouldUpdate = false;
for (const [stashedPath, stashedInfo] of Object.entries(stash.cache)) {
const cachingPath = path.toRelativePath(paths.workDir, stashedPath);
if (!globbedFiles.includes(stashedPath)) {
stash.shouldUpdate = true;
operations.files.push(async () => await fs.deleteFile(stashedPath));
}
else {
operations.cache.push(async () => {
const stat = await fs.getFileStats(stashedPath);
if (stat.mtimeMs === stashedInfo[0] && stat.size === stashedInfo[1]) {
stash.files.set(cachingPath, stashedInfo);
}
else {
const hash = await fs.hash(stashedPath);
stashedInfo[0] = stat.mtimeMs;
stashedInfo[1] = stat.size;
if (stashedInfo[2] !== hash) {
stashedInfo[2] = hash;
stash.shouldUpdate = true;
stash.files.set(cachingPath, stashedInfo);
const relativePath = path.toRelativePath(paths.rootDir, stashedPath);
const targetedPath = path.toPath(paths.distDir, relativePath);
operations.files.push(async () => await fs.copy(stashedPath, targetedPath));
}
}
});
}
}
catch {
return null;
for (const globbedFile of globbedFiles) {
if (!Object.hasOwn(stash.cache, globbedFile)) {
const cachingPath = path.toRelativePath(paths.workDir, globbedFile);
const relativePath = path.toRelativePath(paths.rootDir, globbedFile);
const targetedPath = path.toPath(paths.distDir, relativePath);
operations.cache.push(async () => {
const [stat, hash] = await Promise.all([fs.getFileStats(globbedFile), fs.hash(globbedFile)]);
stash.shouldUpdate = true;
stash.files.set(cachingPath, [stat.mtimeMs, stat.size, hash]);
});
operations.files.push(async () => await fs.copy(globbedFile, targetedPath));
}
}
return this.#operate(operations.cache);
}
async hasFileChanged(filePath) {
const stats = await this.getFileStats(filePath);
// return false if the file doesn't exist
if (stats === null) {
return false;
async saveCache() {
const { cache, operations, paths, stash } = this.#internals;
if (stash.shouldUpdate) {
cache.fileNames = [...stash.files.keys()];
cache.fileInfos = [...stash.files.values()];
await Promise.all([fs.mkdir(path.toParentURL(paths.cacheFile)), fs.mkdir(paths.distDir)]);
await Promise.all([fs.writeFile(paths.cacheFile, json.to(cache)), this.#operate(operations.files)]);
}
const resolvedPath = resolve(this.workDir, filePath);
// return true if the file is not in the cache
if (!(filePath in this.cache)) {
const { hash, data } = await getFileHashAndData(resolvedPath);
this.cache[filePath] = { ...stats, hash };
// store uncached data to avoid re-reading
this.fileContents.set(filePath, data ?? emptyBuffer);
return true;
}
const oldEntry = this.cache[filePath];
const newEntry = { ...oldEntry, ...stats };
// return false if the file has not changed modified time or size
if (oldEntry.mtime === newEntry.mtime && oldEntry.size === newEntry.size) {
return false;
}
const { hash, data } = await getFileHashAndData(resolvedPath);
newEntry.hash = hash;
// return false if the hash has not changed
if (oldEntry.hash === newEntry.hash) {
return false;
}
this.cache[filePath] = newEntry;
// store uncached data to avoid re-reading
this.fileContents.set(filePath, data ?? emptyBuffer);
return true;
}
getAbsolutePath(filePath, basePath = this.rootDir) {
return resolve(basePath, filePath);
async #operate(operations) {
await Promise.all(operations.splice(0).map(operate));
}
getRelativePath(filePath, basePath = this.rootDir) {
return relative(basePath, filePath);
}
/**
* Get cached file content if available, otherwise read from disk.
* This avoids double reads when content was already loaded during hash calculation.
*/
async getFileContent(filePath) {
const cachedContent = this.fileContents.get(filePath);
if (cachedContent) {
return cachedContent;
}
// Fallback to reading from disk if not cached
return await readFile(resolve(this.workDir, filePath));
}
/**
* Clear the file contents cache to free memory after processing.
* Should be called after all files have been emitted.
*/
clearFileContentsCache() {
this.fileContents.clear();
}
}
const emptyBuffer = Buffer.from([]);
const isCacheFileName = (fileName) => typeof fileName === "string";
const isCacheFileInfo = (fileInfo) => Array.isArray(fileInfo) &&
fileInfo.length === 3 &&
typeof fileInfo[0] === "number" &&
typeof fileInfo[1] === "number" &&
typeof fileInfo[2] === "string";
const operate = (operation) => operation();
//# sourceMappingURL=copy-api.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"copy-api.js","sourceRoot":"","sources":["../src/copy-api.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"copy-api.js","sourceRoot":"","sources":["../src/copy-api.ts"],"names":[],"mappings":"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"}

@@ -1,3 +0,3 @@

import type { Plugin } from "rollup";
import type * as Rollup from "rollup";
import { type CopyOptions } from "./copy-api.js";
export declare const rollupPluginCopy: (pluginOptions?: CopyOptions) => Plugin;
export declare const rollupPluginCopy: (pluginOptions?: CopyOptions) => Rollup.Plugin;

@@ -0,1 +1,2 @@

import { getDirs } from "@jsxtools/rollup-plugin-utils/options";
import { VirtualAsset } from "@jsxtools/rollup-plugin-utils/virtual-asset";

@@ -6,2 +7,3 @@ import { CopyAPI } from "./copy-api.js";

const virtualAsset = new VirtualAsset("rollup-plugin-copy");
let deferred = Promise.resolve();
let firstRun = true;

@@ -11,28 +13,17 @@ let watchRun = false;

name: "rollup-plugin-copy",
async buildStart(options) {
options(options) {
if (firstRun) {
copy.init(pluginOptions);
await copy.loadConfig();
copy.init({
...getDirs(options),
...pluginOptions,
});
deferred = deferred.then(() => copy.loadCache());
}
return options;
},
buildStart(options) {
if (firstRun || watchRun) {
await copy.captureWatchedFiles();
deferred = deferred.then(() => copy.updateCache());
}
virtualAsset.buildStart(this, options);
await copy.captureChangedFiles();
for (const changedFile of copy.changedFiles) {
this.emitFile({
type: "asset",
fileName: copy.getRelativePath(changedFile, copy.rootDir),
needsCodeReference: false,
originalFileName: copy.getAbsolutePath(changedFile, copy.workDir),
source: await copy.getFileContent(changedFile),
});
}
// Clear file contents cache to free memory after emitting all files
copy.clearFileContentsCache();
if (this.meta.watchMode) {
for (const watchedFile of copy.watchedFiles) {
this.addWatchFile(watchedFile);
}
}
},

@@ -46,15 +37,17 @@ resolveId(id, importer, options) {

generateBundle(options, bundle) {
firstRun = false;
watchRun = false;
virtualAsset.generateBundle(this, options, bundle);
},
async writeBundle() {
if (copy.changedFiles.length > 0) {
await copy.saveConfig().catch((error) => {
this.warn(`Failed to save asset cache: ${error}`);
});
writeBundle() {
if (firstRun || watchRun) {
firstRun = false;
watchRun = false;
if (this.meta.watchMode) {
this.addWatchFile(copy.cacheFile);
}
deferred = deferred.then(() => copy.saveCache());
return deferred;
}
},
watchChange(id) {
if (copy.watchedFiles.includes(id)) {
if (id === copy.cacheFile) {
watchRun = true;

@@ -61,0 +54,0 @@ }

@@ -1,1 +0,1 @@

{"version":3,"file":"copy-rollup-plugin.js","sourceRoot":"","sources":["../src/copy-rollup-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAoB,MAAM,eAAe,CAAA;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,aAA2B,EAAU,EAAE;IACvE,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAA;IAC1B,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAA;IAE3D,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,KAAK,CAAC,UAAU,CAAC,OAA+B;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAExB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAA;YACxB,CAAC;YAED,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;YACjC,CAAC;YAED,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YAEtC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAA;YAEhC,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC;oBACb,IAAI,EAAE,OAAO;oBACb,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;oBACzD,kBAAkB,EAAE,KAAK;oBACzB,gBAAgB,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC;oBACjE,MAAM,EAAE,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;iBAC9C,CAAC,CAAA;YACH,CAAC;YAED,oEAAoE;YACpE,IAAI,CAAC,sBAAsB,EAAE,CAAA;YAE7B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACzB,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;gBAC/B,CAAC;YACF,CAAC;QACF,CAAC;QACD,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO;YAC9B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,CAAC,EAAE;YACN,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACnC,CAAC;QACD,cAAc,CAAC,OAAO,EAAE,MAAM;YAC7B,QAAQ,GAAG,KAAK,CAAA;YAChB,QAAQ,GAAG,KAAK,CAAA;YAEhB,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACnD,CAAC;QACD,KAAK,CAAC,WAAW;YAChB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACvC,IAAI,CAAC,IAAI,CAAC,+BAA+B,KAAK,EAAE,CAAC,CAAA;gBAClD,CAAC,CAAC,CAAA;YACH,CAAC;QACF,CAAC;QACD,WAAW,CAAC,EAAE;YACb,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpC,QAAQ,GAAG,IAAI,CAAA;YAChB,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC,CAAA"}
{"version":3,"file":"copy-rollup-plugin.js","sourceRoot":"","sources":["../src/copy-rollup-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uCAAuC,CAAA;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAoB,MAAM,eAAe,CAAA;AAEzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,aAA2B,EAAiB,EAAE;IAC9E,MAAM,IAAI,GAAG,IAAI,OAAO,EAAE,CAAA;IAC1B,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,oBAAoB,CAAC,CAAA;IAE3D,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;IAChC,IAAI,QAAQ,GAAG,IAAI,CAAA;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;IAEpB,OAAO;QACN,IAAI,EAAE,oBAAoB;QAC1B,OAAO,CAAC,OAA6B;YACpC,IAAI,QAAQ,EAAE,CAAC;gBACd,IAAI,CAAC,IAAI,CAAC;oBACT,GAAG,OAAO,CAAC,OAAO,CAAC;oBACnB,GAAG,aAAa;iBAChB,CAAC,CAAA;gBAEF,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;YACjD,CAAC;YAED,OAAO,OAAO,CAAA;QACf,CAAC;QACD,UAAU,CAAC,OAAsC;YAChD,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YACnD,CAAC;YAED,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QACvC,CAAC;QACD,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO;YAC9B,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAA;QAC3D,CAAC;QACD,IAAI,CAAC,EAAE;YACN,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QACnC,CAAC;QACD,cAAc,CAAC,OAAO,EAAE,MAAM;YAC7B,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;QACnD,CAAC;QACD,WAAW;YACV,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;gBAC1B,QAAQ,GAAG,KAAK,CAAA;gBAChB,QAAQ,GAAG,KAAK,CAAA;gBAEhB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAClC,CAAC;gBAED,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;gBAEhD,OAAO,QAAQ,CAAA;YAChB,CAAC;QACF,CAAC;QACD,WAAW,CAAC,EAAE;YACb,IAAI,EAAE,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC3B,QAAQ,GAAG,IAAI,CAAA;YAChB,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC,CAAA"}
{
"name": "@jsxtools/rollup-plugin-copy",
"description": "A Rollup plugin for copying files during the build process.",
"version": "0.1.0",
"version": "0.2.0",
"type": "module",

@@ -29,6 +29,6 @@ "exports": {

"dependencies": {
"@jsxtools/rollup-plugin-utils": "^0.1.0"
"@jsxtools/rollup-plugin-utils": "^0.2.0"
},
"devDependencies": {
"@types/node": "^24.5.2",
"@types/node": "^24.6.2",
"rollup": "^4.6.0",

@@ -35,0 +35,0 @@ "typescript": "^5.4.5"