@shellicar/build-clean 1.0.0-preview.4 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +19 -4
  3. package/dist/cjs/astro.cjs +1 -1
  4. package/dist/cjs/astro.cjs.map +1 -1
  5. package/dist/cjs/{chunk-MGNYOFPA.cjs → chunk-3RNV5TVU.cjs} +1 -1
  6. package/dist/cjs/{chunk-MGNYOFPA.cjs.map → chunk-3RNV5TVU.cjs.map} +1 -1
  7. package/dist/cjs/chunk-PG7AUKT2.cjs +1 -0
  8. package/dist/cjs/{chunk-RI7YVIIP.cjs.map → chunk-PG7AUKT2.cjs.map} +1 -1
  9. package/dist/cjs/core/cleanUnusedFiles.cjs +1 -1
  10. package/dist/cjs/core/index.cjs +1 -1
  11. package/dist/cjs/esbuild.cjs +1 -1
  12. package/dist/cjs/farm.cjs +1 -1
  13. package/dist/cjs/index.cjs +1 -1
  14. package/dist/cjs/nuxt.cjs +1 -1
  15. package/dist/cjs/rollup.cjs +1 -1
  16. package/dist/cjs/rspack.cjs +1 -1
  17. package/dist/cjs/vite.cjs +1 -1
  18. package/dist/cjs/webpack.cjs +1 -1
  19. package/dist/esm/astro.js +1 -1
  20. package/dist/esm/astro.js.map +1 -1
  21. package/dist/esm/{chunk-Q52AAL3C.js → chunk-I2DJ5LUH.js} +1 -1
  22. package/dist/esm/{chunk-Q52AAL3C.js.map → chunk-I2DJ5LUH.js.map} +1 -1
  23. package/dist/esm/chunk-MN4HE7GR.js +1 -0
  24. package/dist/esm/{chunk-TGWFIV7B.js.map → chunk-MN4HE7GR.js.map} +1 -1
  25. package/dist/esm/core/cleanUnusedFiles.js +1 -1
  26. package/dist/esm/core/index.js +1 -1
  27. package/dist/esm/esbuild.js +1 -1
  28. package/dist/esm/farm.js +1 -1
  29. package/dist/esm/index.js +1 -1
  30. package/dist/esm/nuxt.js +1 -1
  31. package/dist/esm/rollup.js +1 -1
  32. package/dist/esm/rspack.js +1 -1
  33. package/dist/esm/vite.js +1 -1
  34. package/dist/esm/webpack.js +1 -1
  35. package/package.json +45 -43
  36. package/dist/cjs/chunk-RI7YVIIP.cjs +0 -1
  37. package/dist/esm/chunk-TGWFIV7B.js +0 -1
package/LICENSE CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,19 +1,34 @@
1
1
  # @shellicar/build-clean
2
2
 
3
- > TODO: description
3
+ Build plugin that automatically cleans unused files from output directories.
4
4
 
5
5
  ## Installation & Quick Start
6
6
 
7
7
  ```sh
8
- pnpm add @shellicar/build-clean
8
+ pnpm add -D @shellicar/build-clean
9
9
  ```
10
10
 
11
11
  ## Quick Example
12
12
 
13
13
  ```ts
14
- // TODO: example
14
+ // esbuild
15
+ import cleanPlugin from '@shellicar/build-clean/esbuild'
16
+
17
+ await build({
18
+ plugins: [cleanPlugin({ destructive: true })]
19
+ })
20
+ ```
21
+
22
+ ```ts
23
+ // tsup.config.ts
24
+ import cleanPlugin from '@shellicar/build-clean/esbuild'
25
+
26
+ export default defineConfig({
27
+ clean: false,
28
+ esbuildPlugins: [cleanPlugin({ destructive: true })]
29
+ })
15
30
  ```
16
31
 
17
32
  ## Documentation
18
33
 
19
- For full documentation, visit the [GitHub repository](https://github.com/shellicar/build-clean).
34
+ For full documentation, examples, and configuration options, visit the [GitHub repository](https://github.com/shellicar/build-clean).
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs");var u=require("./chunk-PK6SKIKE.cjs"),c=u.__name(c=>({name:"build-clean",hooks:{"astro:config:setup":u.__name(async u=>{u.config.vite.plugins||=[],u.config.vite.plugins.push(e.plugin.vite(c))},"astro:config:setup")}}),"default");module.exports=c;//# sourceMappingURL=astro.cjs.map
1
+ "use strict";var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs");var u=require("./chunk-PK6SKIKE.cjs"),c=u.__name(c=>({name:"build-clean",hooks:{"astro:config:setup":u.__name(async u=>{u.config.vite.plugins||=[],u.config.vite.plugins.push(e.plugin.vite(c))},"astro:config:setup")}}),"default");module.exports=c;//# sourceMappingURL=astro.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/astro.ts"],"names":["plugin"],"mappings":";AAIA,IAAO,aAAA,6CAAS,OAAA,MAA2B;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,oBAAA,kDAA6B,KAAA,KAAe;AAC1C,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,OAAA,KAAY,EAAC;AAC/B,MAAA,KAAA,CAAM,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAKA,wBAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACrD,CAAA,EAHsB,oBAAA;AAAA;AAK1B,CAAA,CAAA,EARe,SAAA","file":"astro.cjs","sourcesContent":["import type { Options } from './core/types';\n\nimport { plugin } from './core';\n\nexport default (options: Options): any => ({\n name: 'build-clean',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(plugin.vite(options));\n },\n },\n});\n"]}
1
+ {"version":3,"sources":["../../src/astro.ts"],"names":["plugin"],"mappings":";AAGA,IAAO,aAAA,6CAAS,OAAA,MAA2B;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,oBAAA,kDAA6B,KAAA,KAAe;AAC1C,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,OAAA,KAAY,EAAC;AAC/B,MAAA,KAAA,CAAM,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAKA,wBAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACrD,CAAA,EAHsB,oBAAA;AAAA;AAK1B,CAAA,CAAA,EARe,SAAA","file":"astro.cjs","sourcesContent":["import { plugin } from './core';\nimport type { Options } from './core/types';\n\nexport default (options: Options): any => ({\n name: 'build-clean',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(plugin.vite(options));\n },\n },\n});\n"]}
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-RI7YVIIP.cjs"),i=require("./chunk-FD3CZK4P.cjs"),n=require("./chunk-SZJPBNRD.cjs"),r=require("./chunk-PK6SKIKE.cjs"),t=require("unplugin"),u=r.__name((r={})=>{const t={...n.defaults,...r},u=i.createLogger(t);return{name:"@shellicar/build-clean",enforce:"post",esbuild:{setup(i){i.initialOptions.metafile=!0,i.onEnd(async n=>{u.debug("Build completed, starting cleanup process");const r=i.initialOptions.outdir;if(!r)throw new Error("[build-cleaner] No output directory specified in build options");if(!n.metafile)throw new Error("[build-cleaner] No metafile available - ensure metafile is enabled");const l=new Set(Object.keys(n.metafile.outputs));u.debug(`Found ${l.size} built files in metafile for directory: "${r}"`),await e.cleanUnusedFiles(r,l,t,u)})}}}},"pluginFactory"),l=t.createUnplugin(u);exports.plugin=l;//# sourceMappingURL=chunk-MGNYOFPA.cjs.map
1
+ "use strict";var e=require("./chunk-PG7AUKT2.cjs"),i=require("./chunk-FD3CZK4P.cjs"),n=require("./chunk-SZJPBNRD.cjs"),r=require("./chunk-PK6SKIKE.cjs"),t=require("unplugin"),u=r.__name((r={})=>{const t={...n.defaults,...r},u=i.createLogger(t);return{name:"@shellicar/build-clean",enforce:"post",esbuild:{setup(i){i.initialOptions.metafile=!0,i.onEnd(async n=>{u.debug("Build completed, starting cleanup process");const r=i.initialOptions.outdir;if(!r)throw new Error("[build-cleaner] No output directory specified in build options");if(!n.metafile)throw new Error("[build-cleaner] No metafile available - ensure metafile is enabled");const l=new Set(Object.keys(n.metafile.outputs));u.debug(`Found ${l.size} built files in metafile for directory: "${r}"`),await e.cleanUnusedFiles(r,l,t,u)})}}}},"pluginFactory"),l=t.createUnplugin(u);exports.plugin=l;//# sourceMappingURL=chunk-3RNV5TVU.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/index.ts"],"names":["__name","defaults","createLogger","cleanUnusedFiles","createUnplugin"],"mappings":"sPAMA,IAAM,aAAA,mBAAsDA,wBAAA,CAAA,CAAC,cAAA,GAA0B,EAAC,KAAM;AAC5F,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAGC,0BAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,MAAA,GAASC,+BAAa,OAAO,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,MAAM,KAAA,EAAO;AACX,QAAA,KAAA,CAAM,eAAe,QAAA,GAAW,IAAA;AAEhC,QAAA,KAAA,CAAM,KAAA,CAAM,OAAO,MAAA,KAAW;AAC5B,UAAA,MAAA,CAAO,MAAM,2CAA2C,CAAA;AAExD,UAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,MAAA;AACpC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,IAAI,MAAM,gEAAgE,CAAA;AAAA,UAClF;AAEA,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AAAA,UACtF;AAEA,UAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,MAAA,CAAO,KAAK,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAC/D,UAAA,MAAA,CAAO,MAAM,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAE1F,UAAA,MAAMC,kCAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,OAAA,EAAS,MAAM,CAAA;AAAA,QAC5D,CAAC,CAAA;AAAA,MACH;AAAA;AACF,GACF;AACF,CAAA,EAnC4D,eAAA,CAAA;AAqCrD,IAAM,MAAA,GAASC,wBAAe,aAAa","file":"chunk-MGNYOFPA.cjs","sourcesContent":["import { type UnpluginFactory, type UnpluginOptions, createUnplugin } from 'unplugin';\nimport { cleanUnusedFiles } from './cleanUnusedFiles';\nimport { createLogger } from './createLogger';\nimport { defaults } from './defaults';\nimport type { Options } from './types';\n\nconst pluginFactory: UnpluginFactory<Options | undefined> = (initialOptions: Options = {}) => {\n const options = {\n ...defaults,\n ...initialOptions,\n };\n\n const logger = createLogger(options);\n\n return {\n name: '@shellicar/build-clean',\n enforce: 'post',\n esbuild: {\n setup(build) {\n build.initialOptions.metafile = true;\n\n build.onEnd(async (result) => {\n logger.debug('Build completed, starting cleanup process');\n\n const outdir = build.initialOptions.outdir;\n if (!outdir) {\n throw new Error('[build-cleaner] No output directory specified in build options');\n }\n\n if (!result.metafile) {\n throw new Error('[build-cleaner] No metafile available - ensure metafile is enabled');\n }\n\n const builtFiles = new Set(Object.keys(result.metafile.outputs));\n logger.debug(`Found ${builtFiles.size} built files in metafile for directory: \"${outdir}\"`);\n\n await cleanUnusedFiles(outdir, builtFiles, options, logger);\n });\n },\n },\n } satisfies UnpluginOptions;\n};\n\nexport const plugin = createUnplugin(pluginFactory);\n"]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"names":["__name","defaults","createLogger","cleanUnusedFiles","createUnplugin"],"mappings":"sPAMA,IAAM,aAAA,mBAAsDA,wBAAA,CAAA,CAAC,cAAA,GAA0B,EAAC,KAAM;AAC5F,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAGC,0BAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,MAAA,GAASC,+BAAa,OAAO,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,MAAM,KAAA,EAAO;AACX,QAAA,KAAA,CAAM,eAAe,QAAA,GAAW,IAAA;AAEhC,QAAA,KAAA,CAAM,KAAA,CAAM,OAAO,MAAA,KAAW;AAC5B,UAAA,MAAA,CAAO,MAAM,2CAA2C,CAAA;AAExD,UAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,MAAA;AACpC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,IAAI,MAAM,gEAAgE,CAAA;AAAA,UAClF;AAEA,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AAAA,UACtF;AAEA,UAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,MAAA,CAAO,KAAK,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAC/D,UAAA,MAAA,CAAO,MAAM,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAE1F,UAAA,MAAMC,kCAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,OAAA,EAAS,MAAM,CAAA;AAAA,QAC5D,CAAC,CAAA;AAAA,MACH;AAAA;AACF,GACF;AACF,CAAA,EAnC4D,eAAA,CAAA;AAqCrD,IAAM,MAAA,GAASC,wBAAe,aAAa","file":"chunk-3RNV5TVU.cjs","sourcesContent":["import { createUnplugin, type UnpluginFactory, type UnpluginOptions } from 'unplugin';\nimport { cleanUnusedFiles } from './cleanUnusedFiles';\nimport { createLogger } from './createLogger';\nimport { defaults } from './defaults';\nimport type { Options } from './types';\n\nconst pluginFactory: UnpluginFactory<Options | undefined> = (initialOptions: Options = {}) => {\n const options = {\n ...defaults,\n ...initialOptions,\n };\n\n const logger = createLogger(options);\n\n return {\n name: '@shellicar/build-clean',\n enforce: 'post',\n esbuild: {\n setup(build) {\n build.initialOptions.metafile = true;\n\n build.onEnd(async (result) => {\n logger.debug('Build completed, starting cleanup process');\n\n const outdir = build.initialOptions.outdir;\n if (!outdir) {\n throw new Error('[build-cleaner] No output directory specified in build options');\n }\n\n if (!result.metafile) {\n throw new Error('[build-cleaner] No metafile available - ensure metafile is enabled');\n }\n\n const builtFiles = new Set(Object.keys(result.metafile.outputs));\n logger.debug(`Found ${builtFiles.size} built files in metafile for directory: \"${outdir}\"`);\n\n await cleanUnusedFiles(outdir, builtFiles, options, logger);\n });\n },\n },\n } satisfies UnpluginOptions;\n};\n\nexport const plugin = createUnplugin(pluginFactory);\n"]}
@@ -0,0 +1 @@
1
+ "use strict";var e=require("./chunk-JV6XTZ6N.cjs"),i=require("./chunk-CKDUYIXO.cjs"),t=require("./chunk-PK6SKIKE.cjs"),s=require("node:fs/promises"),r=require("node:path");async function n(t,n,o,u){e.validateOutDir(t,u);try{u.debug(`Starting cleanup of directory: "${t}"`),u.debug(`Built files count: ${n.size}`);const e=await i.getAllFiles(t,u);if(u.debug(`Existing files count: ${e.length}`),0===e.length&&n.size>0)return void u.error('Disable tsup "clean: true" to use this plugin. (You can ignore this message if this is the first time you have built your package)');u.info(`Processing ${e.length} existing files vs ${n.size} built files`);const l=[];for(const i of e){const e=r.relative(process.cwd(),i);u.verbose(`Checking file: "${e}"`),n.has(e)?u.verbose(`Keeping built file: "${e}"`):(l.push(i),u.verbose(`Marked for deletion: "${e}"`))}if(l.length>0){const e=o.destructive?"":" (dry run)";u.warn(`Files marked for deletion: ${l.length}${e}`)}else u.info("No files marked for deletion");let c=0;for(const e of l){const i=r.relative(process.cwd(),e);o.destructive&&await s.unlink(e),u.info(`Deleting: "${i}"`),c++}0===c?u.info("No unused files found"):o.destructive||u.info(`Set destructive: true to actually delete the ${c} unused file(s)`)}catch(e){throw u.error("Error during cleanup:",e),e}}t.__name(n,"cleanUnusedFiles"),exports.cleanUnusedFiles=n;//# sourceMappingURL=chunk-PG7AUKT2.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/cleanUnusedFiles.ts"],"names":["validateOutDir","getAllFiles","relative","unlink","__name"],"mappings":"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","file":"chunk-RI7YVIIP.cjs","sourcesContent":["import { unlink } from 'node:fs/promises';\nimport { relative } from 'node:path';\nimport { getAllFiles } from './getAllFiles';\nimport type { ILogger, Options } from './types';\nimport { validateOutDir } from './validateOutDir';\n\nexport async function cleanUnusedFiles(outDir: string, builtFiles: Set<string>, options: Options, logger: ILogger): Promise<void> {\n validateOutDir(outDir, logger);\n\n try {\n logger.debug(`Starting cleanup of directory: \"${outDir}\"`);\n logger.debug(`Built files count: ${builtFiles.size}`);\n\n const existingFiles = await getAllFiles(outDir, logger);\n logger.debug(`Existing files count: ${existingFiles.length}`);\n\n if (existingFiles.length === 0 && builtFiles.size > 0) {\n logger.error('Disable tsup \"clean: true\" to use this plugin.');\n return;\n }\n\n logger.info(`Processing ${existingFiles.length} existing files vs ${builtFiles.size} built files`);\n\n const filesToDelete: string[] = [];\n\n for (const file of existingFiles) {\n const relativePath = relative(process.cwd(), file);\n logger.verbose(`Checking file: \"${relativePath}\"`);\n\n if (!builtFiles.has(relativePath)) {\n filesToDelete.push(file);\n logger.verbose(`Marked for deletion: \"${relativePath}\"`);\n } else {\n logger.verbose(`Keeping built file: \"${relativePath}\"`);\n }\n }\n\n if (filesToDelete.length > 0) {\n const dryRunSuffix = options.destructive ? '' : ' (dry run)';\n logger.warn(`Files marked for deletion: ${filesToDelete.length}${dryRunSuffix}`);\n } else {\n logger.info('No files marked for deletion');\n }\n\n let deletedCount = 0;\n for (const file of filesToDelete) {\n const relativePath = relative(process.cwd(), file);\n\n if (options.destructive) {\n await unlink(file);\n }\n\n logger.info(`Deleting: \"${relativePath}\"`);\n deletedCount++;\n }\n\n if (deletedCount === 0) {\n logger.info('No unused files found');\n } else if (!options.destructive) {\n logger.info(`Set destructive: true to actually delete the ${deletedCount} unused file(s)`);\n }\n } catch (error) {\n logger.error('Error during cleanup:', error);\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/cleanUnusedFiles.ts"],"names":["validateOutDir","getAllFiles","relative","unlink","__name"],"mappings":"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","file":"chunk-PG7AUKT2.cjs","sourcesContent":["import { unlink } from 'node:fs/promises';\nimport { relative } from 'node:path';\nimport { getAllFiles } from './getAllFiles';\nimport type { ILogger, Options } from './types';\nimport { validateOutDir } from './validateOutDir';\n\nexport async function cleanUnusedFiles(outDir: string, builtFiles: Set<string>, options: Options, logger: ILogger): Promise<void> {\n validateOutDir(outDir, logger);\n\n try {\n logger.debug(`Starting cleanup of directory: \"${outDir}\"`);\n logger.debug(`Built files count: ${builtFiles.size}`);\n\n const existingFiles = await getAllFiles(outDir, logger);\n logger.debug(`Existing files count: ${existingFiles.length}`);\n\n if (existingFiles.length === 0 && builtFiles.size > 0) {\n logger.error('Disable tsup \"clean: true\" to use this plugin. (You can ignore this message if this is the first time you have built your package)');\n return;\n }\n\n logger.info(`Processing ${existingFiles.length} existing files vs ${builtFiles.size} built files`);\n\n const filesToDelete: string[] = [];\n\n for (const file of existingFiles) {\n const relativePath = relative(process.cwd(), file);\n logger.verbose(`Checking file: \"${relativePath}\"`);\n\n if (!builtFiles.has(relativePath)) {\n filesToDelete.push(file);\n logger.verbose(`Marked for deletion: \"${relativePath}\"`);\n } else {\n logger.verbose(`Keeping built file: \"${relativePath}\"`);\n }\n }\n\n if (filesToDelete.length > 0) {\n const dryRunSuffix = options.destructive ? '' : ' (dry run)';\n logger.warn(`Files marked for deletion: ${filesToDelete.length}${dryRunSuffix}`);\n } else {\n logger.info('No files marked for deletion');\n }\n\n let deletedCount = 0;\n for (const file of filesToDelete) {\n const relativePath = relative(process.cwd(), file);\n\n if (options.destructive) {\n await unlink(file);\n }\n\n logger.info(`Deleting: \"${relativePath}\"`);\n deletedCount++;\n }\n\n if (deletedCount === 0) {\n logger.info('No unused files found');\n } else if (!options.destructive) {\n logger.info(`Set destructive: true to actually delete the ${deletedCount} unused file(s)`);\n }\n\n // TODO: Remove empty directories after deleting files\n } catch (error) {\n logger.error('Error during cleanup:', error);\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- "use strict";var e=require("../chunk-RI7YVIIP.cjs");require("../chunk-JV6XTZ6N.cjs"),require("../chunk-CKDUYIXO.cjs"),require("../chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"cleanUnusedFiles",{enumerable:!0,get:function(){return e.cleanUnusedFiles}});//# sourceMappingURL=cleanUnusedFiles.cjs.map
1
+ "use strict";var e=require("../chunk-PG7AUKT2.cjs");require("../chunk-JV6XTZ6N.cjs"),require("../chunk-CKDUYIXO.cjs"),require("../chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"cleanUnusedFiles",{enumerable:!0,get:function(){return e.cleanUnusedFiles}});//# sourceMappingURL=cleanUnusedFiles.cjs.map
@@ -1 +1 @@
1
- "use strict";var e=require("../chunk-MGNYOFPA.cjs");require("../chunk-RI7YVIIP.cjs"),require("../chunk-JV6XTZ6N.cjs"),require("../chunk-FD3CZK4P.cjs"),require("../chunk-SZJPBNRD.cjs"),require("../chunk-CKDUYIXO.cjs"),require("../chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"plugin",{enumerable:!0,get:function(){return e.plugin}});//# sourceMappingURL=index.cjs.map
1
+ "use strict";var e=require("../chunk-3RNV5TVU.cjs");require("../chunk-PG7AUKT2.cjs"),require("../chunk-JV6XTZ6N.cjs"),require("../chunk-FD3CZK4P.cjs"),require("../chunk-SZJPBNRD.cjs"),require("../chunk-CKDUYIXO.cjs"),require("../chunk-PK6SKIKE.cjs"),Object.defineProperty(exports,"plugin",{enumerable:!0,get:function(){return e.plugin}});//# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.esbuild;module.exports=r;//# sourceMappingURL=esbuild.cjs.map
1
+ "use strict";var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.esbuild;module.exports=r;//# sourceMappingURL=esbuild.cjs.map
package/dist/cjs/farm.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var r=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var e=r.plugin.farm;module.exports=e;//# sourceMappingURL=farm.cjs.map
1
+ "use strict";var r=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var e=r.plugin.farm;module.exports=e;//# sourceMappingURL=farm.cjs.map
@@ -1 +1 @@
1
- "use strict";require("./chunk-H44HDUOM.cjs");var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs"),module.exports=e.plugin;//# sourceMappingURL=index.cjs.map
1
+ "use strict";require("./chunk-H44HDUOM.cjs");var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs"),module.exports=e.plugin;//# sourceMappingURL=index.cjs.map
package/dist/cjs/nuxt.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";require("./chunk-H44HDUOM.cjs");var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs"),require("@nuxt/schema");var u=require("@nuxt/kit"),r=u.defineNuxtModule({meta:{name:"nuxt-build-clean",configKey:"buildVersion"},setup(r){u.addWebpackPlugin(e.plugin.webpack(r)),u.addVitePlugin(e.plugin.vite(r))}});module.exports=r;//# sourceMappingURL=nuxt.cjs.map
1
+ "use strict";require("./chunk-H44HDUOM.cjs");var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs"),require("@nuxt/schema");var u=require("@nuxt/kit"),r=u.defineNuxtModule({meta:{name:"nuxt-build-clean",configKey:"buildVersion"},setup(r){u.addWebpackPlugin(e.plugin.webpack(r)),u.addVitePlugin(e.plugin.vite(r))}});module.exports=r;//# sourceMappingURL=nuxt.cjs.map
@@ -1 +1 @@
1
- "use strict";var r=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var u=r.plugin.rollup;module.exports=u;//# sourceMappingURL=rollup.cjs.map
1
+ "use strict";var r=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var u=r.plugin.rollup;module.exports=u;//# sourceMappingURL=rollup.cjs.map
@@ -1 +1 @@
1
- "use strict";var r=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var e=r.plugin.rspack;module.exports=e;//# sourceMappingURL=rspack.cjs.map
1
+ "use strict";var r=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var e=r.plugin.rspack;module.exports=e;//# sourceMappingURL=rspack.cjs.map
package/dist/cjs/vite.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.vite;module.exports=r;//# sourceMappingURL=vite.cjs.map
1
+ "use strict";var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.vite;module.exports=r;//# sourceMappingURL=vite.cjs.map
@@ -1 +1 @@
1
- "use strict";var e=require("./chunk-MGNYOFPA.cjs");require("./chunk-RI7YVIIP.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.webpack;module.exports=r;//# sourceMappingURL=webpack.cjs.map
1
+ "use strict";var e=require("./chunk-3RNV5TVU.cjs");require("./chunk-PG7AUKT2.cjs"),require("./chunk-JV6XTZ6N.cjs"),require("./chunk-FD3CZK4P.cjs"),require("./chunk-SZJPBNRD.cjs"),require("./chunk-CKDUYIXO.cjs"),require("./chunk-PK6SKIKE.cjs");var r=e.plugin.webpack;module.exports=r;//# sourceMappingURL=webpack.cjs.map
package/dist/esm/astro.js CHANGED
@@ -1 +1 @@
1
- import{plugin as o}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import{__name as i}from"./chunk-7QVYU63E.js";var s=i(s=>({name:"build-clean",hooks:{"astro:config:setup":i(async i=>{i.config.vite.plugins||=[],i.config.vite.plugins.push(o.vite(s))},"astro:config:setup")}}),"default");export{s as default};//# sourceMappingURL=astro.js.map
1
+ import{plugin as o}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import{__name as i}from"./chunk-7QVYU63E.js";var s=i(s=>({name:"build-clean",hooks:{"astro:config:setup":i(async i=>{i.config.vite.plugins||=[],i.config.vite.plugins.push(o.vite(s))},"astro:config:setup")}}),"default");export{s as default};//# sourceMappingURL=astro.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/astro.ts"],"names":[],"mappings":";AAIA,IAAO,aAAA,2BAAS,OAAA,MAA2B;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,oBAAA,gCAA6B,KAAA,KAAe;AAC1C,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,OAAA,KAAY,EAAC;AAC/B,MAAA,KAAA,CAAM,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACrD,CAAA,EAHsB,oBAAA;AAAA;AAK1B,CAAA,CAAA,EARe,SAAA","file":"astro.js","sourcesContent":["import type { Options } from './core/types';\n\nimport { plugin } from './core';\n\nexport default (options: Options): any => ({\n name: 'build-clean',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(plugin.vite(options));\n },\n },\n});\n"]}
1
+ {"version":3,"sources":["../../src/astro.ts"],"names":[],"mappings":";AAGA,IAAO,aAAA,2BAAS,OAAA,MAA2B;AAAA,EACzC,IAAA,EAAM,aAAA;AAAA,EACN,KAAA,EAAO;AAAA,IACL,oBAAA,gCAA6B,KAAA,KAAe;AAC1C,MAAA,KAAA,CAAM,MAAA,CAAO,IAAA,CAAK,OAAA,KAAY,EAAC;AAC/B,MAAA,KAAA,CAAM,OAAO,IAAA,CAAK,OAAA,CAAQ,KAAK,MAAA,CAAO,IAAA,CAAK,OAAO,CAAC,CAAA;AAAA,IACrD,CAAA,EAHsB,oBAAA;AAAA;AAK1B,CAAA,CAAA,EARe,SAAA","file":"astro.js","sourcesContent":["import { plugin } from './core';\nimport type { Options } from './core/types';\n\nexport default (options: Options): any => ({\n name: 'build-clean',\n hooks: {\n 'astro:config:setup': async (astro: any) => {\n astro.config.vite.plugins ||= [];\n astro.config.vite.plugins.push(plugin.vite(options));\n },\n },\n});\n"]}
@@ -1 +1 @@
1
- import{cleanUnusedFiles as e}from"./chunk-TGWFIV7B.js";import{createLogger as i}from"./chunk-M6I5B37D.js";import{defaults as t}from"./chunk-4WDU3YKC.js";import{__name as o}from"./chunk-7QVYU63E.js";import{createUnplugin as r}from"unplugin";var n=r(o((o={})=>{const r={...t,...o},n=i(r);return{name:"@shellicar/build-clean",enforce:"post",esbuild:{setup(i){i.initialOptions.metafile=!0,i.onEnd(async t=>{n.debug("Build completed, starting cleanup process");const o=i.initialOptions.outdir;if(!o)throw new Error("[build-cleaner] No output directory specified in build options");if(!t.metafile)throw new Error("[build-cleaner] No metafile available - ensure metafile is enabled");const l=new Set(Object.keys(t.metafile.outputs));n.debug(`Found ${l.size} built files in metafile for directory: "${o}"`),await e(o,l,r,n)})}}}},"pluginFactory"));export{n as plugin};//# sourceMappingURL=chunk-Q52AAL3C.js.map
1
+ import{cleanUnusedFiles as e}from"./chunk-MN4HE7GR.js";import{createLogger as i}from"./chunk-M6I5B37D.js";import{defaults as t}from"./chunk-4WDU3YKC.js";import{__name as o}from"./chunk-7QVYU63E.js";import{createUnplugin as r}from"unplugin";var n=r(o((o={})=>{const r={...t,...o},n=i(r);return{name:"@shellicar/build-clean",enforce:"post",esbuild:{setup(i){i.initialOptions.metafile=!0,i.onEnd(async t=>{n.debug("Build completed, starting cleanup process");const o=i.initialOptions.outdir;if(!o)throw new Error("[build-cleaner] No output directory specified in build options");if(!t.metafile)throw new Error("[build-cleaner] No metafile available - ensure metafile is enabled");const l=new Set(Object.keys(t.metafile.outputs));n.debug(`Found ${l.size} built files in metafile for directory: "${o}"`),await e(o,l,r,n)})}}}},"pluginFactory"));export{n as plugin};//# sourceMappingURL=chunk-I2DJ5LUH.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/index.ts"],"names":[],"mappings":"4NAMA,IAAM,aAAA,mBAAsD,MAAA,CAAA,CAAC,cAAA,GAA0B,EAAC,KAAM;AAC5F,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAG,QAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,MAAA,GAAS,aAAa,OAAO,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,MAAM,KAAA,EAAO;AACX,QAAA,KAAA,CAAM,eAAe,QAAA,GAAW,IAAA;AAEhC,QAAA,KAAA,CAAM,KAAA,CAAM,OAAO,MAAA,KAAW;AAC5B,UAAA,MAAA,CAAO,MAAM,2CAA2C,CAAA;AAExD,UAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,MAAA;AACpC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,IAAI,MAAM,gEAAgE,CAAA;AAAA,UAClF;AAEA,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AAAA,UACtF;AAEA,UAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,MAAA,CAAO,KAAK,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAC/D,UAAA,MAAA,CAAO,MAAM,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAE1F,UAAA,MAAM,gBAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,OAAA,EAAS,MAAM,CAAA;AAAA,QAC5D,CAAC,CAAA;AAAA,MACH;AAAA;AACF,GACF;AACF,CAAA,EAnC4D,eAAA,CAAA;AAqCrD,IAAM,MAAA,GAAS,eAAe,aAAa","file":"chunk-Q52AAL3C.js","sourcesContent":["import { type UnpluginFactory, type UnpluginOptions, createUnplugin } from 'unplugin';\nimport { cleanUnusedFiles } from './cleanUnusedFiles';\nimport { createLogger } from './createLogger';\nimport { defaults } from './defaults';\nimport type { Options } from './types';\n\nconst pluginFactory: UnpluginFactory<Options | undefined> = (initialOptions: Options = {}) => {\n const options = {\n ...defaults,\n ...initialOptions,\n };\n\n const logger = createLogger(options);\n\n return {\n name: '@shellicar/build-clean',\n enforce: 'post',\n esbuild: {\n setup(build) {\n build.initialOptions.metafile = true;\n\n build.onEnd(async (result) => {\n logger.debug('Build completed, starting cleanup process');\n\n const outdir = build.initialOptions.outdir;\n if (!outdir) {\n throw new Error('[build-cleaner] No output directory specified in build options');\n }\n\n if (!result.metafile) {\n throw new Error('[build-cleaner] No metafile available - ensure metafile is enabled');\n }\n\n const builtFiles = new Set(Object.keys(result.metafile.outputs));\n logger.debug(`Found ${builtFiles.size} built files in metafile for directory: \"${outdir}\"`);\n\n await cleanUnusedFiles(outdir, builtFiles, options, logger);\n });\n },\n },\n } satisfies UnpluginOptions;\n};\n\nexport const plugin = createUnplugin(pluginFactory);\n"]}
1
+ {"version":3,"sources":["../../src/core/index.ts"],"names":[],"mappings":"4NAMA,IAAM,aAAA,mBAAsD,MAAA,CAAA,CAAC,cAAA,GAA0B,EAAC,KAAM;AAC5F,EAAA,MAAM,OAAA,GAAU;AAAA,IACd,GAAG,QAAA;AAAA,IACH,GAAG;AAAA,GACL;AAEA,EAAA,MAAM,MAAA,GAAS,aAAa,OAAO,CAAA;AAEnC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,wBAAA;AAAA,IACN,OAAA,EAAS,MAAA;AAAA,IACT,OAAA,EAAS;AAAA,MACP,MAAM,KAAA,EAAO;AACX,QAAA,KAAA,CAAM,eAAe,QAAA,GAAW,IAAA;AAEhC,QAAA,KAAA,CAAM,KAAA,CAAM,OAAO,MAAA,KAAW;AAC5B,UAAA,MAAA,CAAO,MAAM,2CAA2C,CAAA;AAExD,UAAA,MAAM,MAAA,GAAS,MAAM,cAAA,CAAe,MAAA;AACpC,UAAA,IAAI,CAAC,MAAA,EAAQ;AACX,YAAA,MAAM,IAAI,MAAM,gEAAgE,CAAA;AAAA,UAClF;AAEA,UAAA,IAAI,CAAC,OAAO,QAAA,EAAU;AACpB,YAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AAAA,UACtF;AAEA,UAAA,MAAM,UAAA,GAAa,IAAI,GAAA,CAAI,MAAA,CAAO,KAAK,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAC/D,UAAA,MAAA,CAAO,MAAM,CAAA,MAAA,EAAS,UAAA,CAAW,IAAI,CAAA,yCAAA,EAA4C,MAAM,CAAA,CAAA,CAAG,CAAA;AAE1F,UAAA,MAAM,gBAAA,CAAiB,MAAA,EAAQ,UAAA,EAAY,OAAA,EAAS,MAAM,CAAA;AAAA,QAC5D,CAAC,CAAA;AAAA,MACH;AAAA;AACF,GACF;AACF,CAAA,EAnC4D,eAAA,CAAA;AAqCrD,IAAM,MAAA,GAAS,eAAe,aAAa","file":"chunk-I2DJ5LUH.js","sourcesContent":["import { createUnplugin, type UnpluginFactory, type UnpluginOptions } from 'unplugin';\nimport { cleanUnusedFiles } from './cleanUnusedFiles';\nimport { createLogger } from './createLogger';\nimport { defaults } from './defaults';\nimport type { Options } from './types';\n\nconst pluginFactory: UnpluginFactory<Options | undefined> = (initialOptions: Options = {}) => {\n const options = {\n ...defaults,\n ...initialOptions,\n };\n\n const logger = createLogger(options);\n\n return {\n name: '@shellicar/build-clean',\n enforce: 'post',\n esbuild: {\n setup(build) {\n build.initialOptions.metafile = true;\n\n build.onEnd(async (result) => {\n logger.debug('Build completed, starting cleanup process');\n\n const outdir = build.initialOptions.outdir;\n if (!outdir) {\n throw new Error('[build-cleaner] No output directory specified in build options');\n }\n\n if (!result.metafile) {\n throw new Error('[build-cleaner] No metafile available - ensure metafile is enabled');\n }\n\n const builtFiles = new Set(Object.keys(result.metafile.outputs));\n logger.debug(`Found ${builtFiles.size} built files in metafile for directory: \"${outdir}\"`);\n\n await cleanUnusedFiles(outdir, builtFiles, options, logger);\n });\n },\n },\n } satisfies UnpluginOptions;\n};\n\nexport const plugin = createUnplugin(pluginFactory);\n"]}
@@ -0,0 +1 @@
1
+ import{validateOutDir as e}from"./chunk-PVPUCTHV.js";import{getAllFiles as t}from"./chunk-NTAOZL73.js";import{__name as i}from"./chunk-7QVYU63E.js";import{unlink as o}from"node:fs/promises";import{relative as s}from"node:path";async function r(i,r,n,u){e(i,u);try{u.debug(`Starting cleanup of directory: "${i}"`),u.debug(`Built files count: ${r.size}`);const e=await t(i,u);if(u.debug(`Existing files count: ${e.length}`),0===e.length&&r.size>0)return void u.error('Disable tsup "clean: true" to use this plugin. (You can ignore this message if this is the first time you have built your package)');u.info(`Processing ${e.length} existing files vs ${r.size} built files`);const l=[];for(const t of e){const e=s(process.cwd(),t);u.verbose(`Checking file: "${e}"`),r.has(e)?u.verbose(`Keeping built file: "${e}"`):(l.push(t),u.verbose(`Marked for deletion: "${e}"`))}if(l.length>0){const e=n.destructive?"":" (dry run)";u.warn(`Files marked for deletion: ${l.length}${e}`)}else u.info("No files marked for deletion");let c=0;for(const e of l){const t=s(process.cwd(),e);n.destructive&&await o(e),u.info(`Deleting: "${t}"`),c++}0===c?u.info("No unused files found"):n.destructive||u.info(`Set destructive: true to actually delete the ${c} unused file(s)`)}catch(e){throw u.error("Error during cleanup:",e),e}}i(r,"cleanUnusedFiles");export{r as cleanUnusedFiles};//# sourceMappingURL=chunk-MN4HE7GR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/cleanUnusedFiles.ts"],"names":[],"mappings":"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","file":"chunk-TGWFIV7B.js","sourcesContent":["import { unlink } from 'node:fs/promises';\nimport { relative } from 'node:path';\nimport { getAllFiles } from './getAllFiles';\nimport type { ILogger, Options } from './types';\nimport { validateOutDir } from './validateOutDir';\n\nexport async function cleanUnusedFiles(outDir: string, builtFiles: Set<string>, options: Options, logger: ILogger): Promise<void> {\n validateOutDir(outDir, logger);\n\n try {\n logger.debug(`Starting cleanup of directory: \"${outDir}\"`);\n logger.debug(`Built files count: ${builtFiles.size}`);\n\n const existingFiles = await getAllFiles(outDir, logger);\n logger.debug(`Existing files count: ${existingFiles.length}`);\n\n if (existingFiles.length === 0 && builtFiles.size > 0) {\n logger.error('Disable tsup \"clean: true\" to use this plugin.');\n return;\n }\n\n logger.info(`Processing ${existingFiles.length} existing files vs ${builtFiles.size} built files`);\n\n const filesToDelete: string[] = [];\n\n for (const file of existingFiles) {\n const relativePath = relative(process.cwd(), file);\n logger.verbose(`Checking file: \"${relativePath}\"`);\n\n if (!builtFiles.has(relativePath)) {\n filesToDelete.push(file);\n logger.verbose(`Marked for deletion: \"${relativePath}\"`);\n } else {\n logger.verbose(`Keeping built file: \"${relativePath}\"`);\n }\n }\n\n if (filesToDelete.length > 0) {\n const dryRunSuffix = options.destructive ? '' : ' (dry run)';\n logger.warn(`Files marked for deletion: ${filesToDelete.length}${dryRunSuffix}`);\n } else {\n logger.info('No files marked for deletion');\n }\n\n let deletedCount = 0;\n for (const file of filesToDelete) {\n const relativePath = relative(process.cwd(), file);\n\n if (options.destructive) {\n await unlink(file);\n }\n\n logger.info(`Deleting: \"${relativePath}\"`);\n deletedCount++;\n }\n\n if (deletedCount === 0) {\n logger.info('No unused files found');\n } else if (!options.destructive) {\n logger.info(`Set destructive: true to actually delete the ${deletedCount} unused file(s)`);\n }\n } catch (error) {\n logger.error('Error during cleanup:', error);\n throw error;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/core/cleanUnusedFiles.ts"],"names":[],"mappings":"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","file":"chunk-MN4HE7GR.js","sourcesContent":["import { unlink } from 'node:fs/promises';\nimport { relative } from 'node:path';\nimport { getAllFiles } from './getAllFiles';\nimport type { ILogger, Options } from './types';\nimport { validateOutDir } from './validateOutDir';\n\nexport async function cleanUnusedFiles(outDir: string, builtFiles: Set<string>, options: Options, logger: ILogger): Promise<void> {\n validateOutDir(outDir, logger);\n\n try {\n logger.debug(`Starting cleanup of directory: \"${outDir}\"`);\n logger.debug(`Built files count: ${builtFiles.size}`);\n\n const existingFiles = await getAllFiles(outDir, logger);\n logger.debug(`Existing files count: ${existingFiles.length}`);\n\n if (existingFiles.length === 0 && builtFiles.size > 0) {\n logger.error('Disable tsup \"clean: true\" to use this plugin. (You can ignore this message if this is the first time you have built your package)');\n return;\n }\n\n logger.info(`Processing ${existingFiles.length} existing files vs ${builtFiles.size} built files`);\n\n const filesToDelete: string[] = [];\n\n for (const file of existingFiles) {\n const relativePath = relative(process.cwd(), file);\n logger.verbose(`Checking file: \"${relativePath}\"`);\n\n if (!builtFiles.has(relativePath)) {\n filesToDelete.push(file);\n logger.verbose(`Marked for deletion: \"${relativePath}\"`);\n } else {\n logger.verbose(`Keeping built file: \"${relativePath}\"`);\n }\n }\n\n if (filesToDelete.length > 0) {\n const dryRunSuffix = options.destructive ? '' : ' (dry run)';\n logger.warn(`Files marked for deletion: ${filesToDelete.length}${dryRunSuffix}`);\n } else {\n logger.info('No files marked for deletion');\n }\n\n let deletedCount = 0;\n for (const file of filesToDelete) {\n const relativePath = relative(process.cwd(), file);\n\n if (options.destructive) {\n await unlink(file);\n }\n\n logger.info(`Deleting: \"${relativePath}\"`);\n deletedCount++;\n }\n\n if (deletedCount === 0) {\n logger.info('No unused files found');\n } else if (!options.destructive) {\n logger.info(`Set destructive: true to actually delete the ${deletedCount} unused file(s)`);\n }\n\n // TODO: Remove empty directories after deleting files\n } catch (error) {\n logger.error('Error during cleanup:', error);\n throw error;\n }\n}\n"]}
@@ -1 +1 @@
1
- export{cleanUnusedFiles}from"../chunk-TGWFIV7B.js";import"../chunk-PVPUCTHV.js";import"../chunk-NTAOZL73.js";import"../chunk-7QVYU63E.js";//# sourceMappingURL=cleanUnusedFiles.js.map
1
+ export{cleanUnusedFiles}from"../chunk-MN4HE7GR.js";import"../chunk-PVPUCTHV.js";import"../chunk-NTAOZL73.js";import"../chunk-7QVYU63E.js";//# sourceMappingURL=cleanUnusedFiles.js.map
@@ -1 +1 @@
1
- export{plugin}from"../chunk-Q52AAL3C.js";import"../chunk-TGWFIV7B.js";import"../chunk-PVPUCTHV.js";import"../chunk-M6I5B37D.js";import"../chunk-4WDU3YKC.js";import"../chunk-NTAOZL73.js";import"../chunk-7QVYU63E.js";//# sourceMappingURL=index.js.map
1
+ export{plugin}from"../chunk-I2DJ5LUH.js";import"../chunk-MN4HE7GR.js";import"../chunk-PVPUCTHV.js";import"../chunk-M6I5B37D.js";import"../chunk-4WDU3YKC.js";import"../chunk-NTAOZL73.js";import"../chunk-7QVYU63E.js";//# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.esbuild;export{o as default};//# sourceMappingURL=esbuild.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.esbuild;export{o as default};//# sourceMappingURL=esbuild.js.map
package/dist/esm/farm.js CHANGED
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var m=r.farm;export{m as default};//# sourceMappingURL=farm.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var m=r.farm;export{m as default};//# sourceMappingURL=farm.js.map
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-QZKD24XZ.js";export{plugin as default}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=index.js.map
1
+ import"./chunk-QZKD24XZ.js";export{plugin as default}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";//# sourceMappingURL=index.js.map
package/dist/esm/nuxt.js CHANGED
@@ -1 +1 @@
1
- import"./chunk-QZKD24XZ.js";import{plugin as t}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";import"@nuxt/schema";import{defineNuxtModule as i,addWebpackPlugin as m,addVitePlugin as n}from"@nuxt/kit";var o=i({meta:{name:"nuxt-build-clean",configKey:"buildVersion"},setup(i){m(t.webpack(i)),n(t.vite(i))}});export{o as default};//# sourceMappingURL=nuxt.js.map
1
+ import"./chunk-QZKD24XZ.js";import{plugin as t}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";import"@nuxt/schema";import{defineNuxtModule as i,addWebpackPlugin as m,addVitePlugin as n}from"@nuxt/kit";var o=i({meta:{name:"nuxt-build-clean",configKey:"buildVersion"},setup(i){m(t.webpack(i)),n(t.vite(i))}});export{o as default};//# sourceMappingURL=nuxt.js.map
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.rollup;export{o as default};//# sourceMappingURL=rollup.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.rollup;export{o as default};//# sourceMappingURL=rollup.js.map
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.rspack;export{o as default};//# sourceMappingURL=rspack.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.rspack;export{o as default};//# sourceMappingURL=rspack.js.map
package/dist/esm/vite.js CHANGED
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var t=r.vite;export{t as default};//# sourceMappingURL=vite.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var t=r.vite;export{t as default};//# sourceMappingURL=vite.js.map
@@ -1 +1 @@
1
- import{plugin as r}from"./chunk-Q52AAL3C.js";import"./chunk-TGWFIV7B.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.webpack;export{o as default};//# sourceMappingURL=webpack.js.map
1
+ import{plugin as r}from"./chunk-I2DJ5LUH.js";import"./chunk-MN4HE7GR.js";import"./chunk-PVPUCTHV.js";import"./chunk-M6I5B37D.js";import"./chunk-4WDU3YKC.js";import"./chunk-NTAOZL73.js";import"./chunk-7QVYU63E.js";var o=r.webpack;export{o as default};//# sourceMappingURL=webpack.js.map
package/package.json CHANGED
@@ -1,16 +1,18 @@
1
1
  {
2
2
  "name": "@shellicar/build-clean",
3
3
  "private": false,
4
- "version": "1.0.0-preview.4",
4
+ "version": "1.0.0",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "author": "Stephen Hellicar",
8
- "description": "Basic clean plugin to keep out dir small.",
8
+ "description": "Build plugin that automatically cleans unused files from output directories.",
9
9
  "keywords": [
10
10
  "esbuild",
11
+ "tsup",
11
12
  "build",
12
13
  "clean",
13
- "plugin"
14
+ "plugin",
15
+ "unplugin"
14
16
  ],
15
17
  "repository": {
16
18
  "type": "git",
@@ -26,102 +28,102 @@
26
28
  "exports": {
27
29
  ".": {
28
30
  "import": {
29
- "default": "./dist/esm/index.js",
30
- "types": "./dist/esm/index.d.ts"
31
+ "types": "./dist/esm/index.d.ts",
32
+ "default": "./dist/esm/index.js"
31
33
  },
32
34
  "require": {
33
- "default": "./dist/cjs/index.cjs",
34
- "types": "./dist/cjs/index.d.cts"
35
+ "types": "./dist/cjs/index.d.cts",
36
+ "default": "./dist/cjs/index.cjs"
35
37
  }
36
38
  },
37
39
  "./astro": {
38
40
  "import": {
39
- "default": "./dist/esm/astro.js",
40
- "types": "./dist/esm/astro.d.ts"
41
+ "types": "./dist/esm/astro.d.ts",
42
+ "default": "./dist/esm/astro.js"
41
43
  },
42
44
  "require": {
43
- "default": "./dist/cjs/astro.cjs",
44
- "types": "./dist/cjs/astro.d.cts"
45
+ "types": "./dist/cjs/astro.d.cts",
46
+ "default": "./dist/cjs/astro.cjs"
45
47
  }
46
48
  },
47
49
  "./esbuild": {
48
50
  "import": {
49
- "default": "./dist/esm/esbuild.js",
50
- "types": "./dist/esm/esbuild.d.ts"
51
+ "types": "./dist/esm/esbuild.d.ts",
52
+ "default": "./dist/esm/esbuild.js"
51
53
  },
52
54
  "require": {
53
- "default": "./dist/cjs/esbuild.cjs",
54
- "types": "./dist/cjs/esbuild.d.cts"
55
+ "types": "./dist/cjs/esbuild.d.cts",
56
+ "default": "./dist/cjs/esbuild.cjs"
55
57
  }
56
58
  },
57
59
  "./farm": {
58
60
  "import": {
59
- "default": "./dist/esm/farm.js",
60
- "types": "./dist/esm/farm.d.ts"
61
+ "types": "./dist/esm/farm.d.ts",
62
+ "default": "./dist/esm/farm.js"
61
63
  },
62
64
  "require": {
63
- "default": "./dist/cjs/farm.cjs",
64
- "types": "./dist/cjs/farm.d.cts"
65
+ "types": "./dist/cjs/farm.d.cts",
66
+ "default": "./dist/cjs/farm.cjs"
65
67
  }
66
68
  },
67
69
  "./nuxt": {
68
70
  "import": {
69
- "default": "./dist/esm/nuxt.js",
70
- "types": "./dist/esm/nuxt.d.ts"
71
+ "types": "./dist/esm/nuxt.d.ts",
72
+ "default": "./dist/esm/nuxt.js"
71
73
  },
72
74
  "require": {
73
- "default": "./dist/cjs/nuxt.cjs",
74
- "types": "./dist/cjs/nuxt.d.cts"
75
+ "types": "./dist/cjs/nuxt.d.cts",
76
+ "default": "./dist/cjs/nuxt.cjs"
75
77
  }
76
78
  },
77
79
  "./rollup": {
78
80
  "import": {
79
- "default": "./dist/esm/rollup.js",
80
- "types": "./dist/esm/rollup.d.ts"
81
+ "types": "./dist/esm/rollup.d.ts",
82
+ "default": "./dist/esm/rollup.js"
81
83
  },
82
84
  "require": {
83
- "default": "./dist/cjs/rollup.cjs",
84
- "types": "./dist/cjs/rollup.d.cts"
85
+ "types": "./dist/cjs/rollup.d.cts",
86
+ "default": "./dist/cjs/rollup.cjs"
85
87
  }
86
88
  },
87
89
  "./rspack": {
88
90
  "import": {
89
- "default": "./dist/esm/rspack.js",
90
- "types": "./dist/esm/rspack.d.ts"
91
+ "types": "./dist/esm/rspack.d.ts",
92
+ "default": "./dist/esm/rspack.js"
91
93
  },
92
94
  "require": {
93
- "default": "./dist/cjs/rspack.cjs",
94
- "types": "./dist/cjs/rspack.d.cts"
95
+ "types": "./dist/cjs/rspack.d.cts",
96
+ "default": "./dist/cjs/rspack.cjs"
95
97
  }
96
98
  },
97
99
  "./types": {
98
100
  "import": {
99
- "default": "./dist/esm/types.js",
100
- "types": "./dist/esm/types.d.ts"
101
+ "types": "./dist/esm/types.d.ts",
102
+ "default": "./dist/esm/types.js"
101
103
  },
102
104
  "require": {
103
- "default": "./dist/cjs/types.cjs",
104
- "types": "./dist/cjs/types.d.cts"
105
+ "types": "./dist/cjs/types.d.cts",
106
+ "default": "./dist/cjs/types.cjs"
105
107
  }
106
108
  },
107
109
  "./vite": {
108
110
  "import": {
109
- "default": "./dist/esm/vite.js",
110
- "types": "./dist/esm/vite.d.ts"
111
+ "types": "./dist/esm/vite.d.ts",
112
+ "default": "./dist/esm/vite.js"
111
113
  },
112
114
  "require": {
113
- "default": "./dist/cjs/vite.cjs",
114
- "types": "./dist/cjs/vite.d.cts"
115
+ "types": "./dist/cjs/vite.d.cts",
116
+ "default": "./dist/cjs/vite.cjs"
115
117
  }
116
118
  },
117
119
  "./webpack": {
118
120
  "import": {
119
- "default": "./dist/esm/webpack.js",
120
- "types": "./dist/esm/webpack.d.ts"
121
+ "types": "./dist/esm/webpack.d.ts",
122
+ "default": "./dist/esm/webpack.js"
121
123
  },
122
124
  "require": {
123
- "default": "./dist/cjs/webpack.cjs",
124
- "types": "./dist/cjs/webpack.d.cts"
125
+ "types": "./dist/cjs/webpack.d.cts",
126
+ "default": "./dist/cjs/webpack.cjs"
125
127
  }
126
128
  }
127
129
  },
@@ -1 +0,0 @@
1
- "use strict";var e=require("./chunk-JV6XTZ6N.cjs"),i=require("./chunk-CKDUYIXO.cjs"),t=require("./chunk-PK6SKIKE.cjs"),s=require("node:fs/promises"),r=require("node:path");async function n(t,n,o,l){e.validateOutDir(t,l);try{l.debug(`Starting cleanup of directory: "${t}"`),l.debug(`Built files count: ${n.size}`);const e=await i.getAllFiles(t,l);if(l.debug(`Existing files count: ${e.length}`),0===e.length&&n.size>0)return void l.error('Disable tsup "clean: true" to use this plugin.');l.info(`Processing ${e.length} existing files vs ${n.size} built files`);const u=[];for(const i of e){const e=r.relative(process.cwd(),i);l.verbose(`Checking file: "${e}"`),n.has(e)?l.verbose(`Keeping built file: "${e}"`):(u.push(i),l.verbose(`Marked for deletion: "${e}"`))}if(u.length>0){const e=o.destructive?"":" (dry run)";l.warn(`Files marked for deletion: ${u.length}${e}`)}else l.info("No files marked for deletion");let c=0;for(const e of u){const i=r.relative(process.cwd(),e);o.destructive&&await s.unlink(e),l.info(`Deleting: "${i}"`),c++}0===c?l.info("No unused files found"):o.destructive||l.info(`Set destructive: true to actually delete the ${c} unused file(s)`)}catch(e){throw l.error("Error during cleanup:",e),e}}t.__name(n,"cleanUnusedFiles"),exports.cleanUnusedFiles=n;//# sourceMappingURL=chunk-RI7YVIIP.cjs.map
@@ -1 +0,0 @@
1
- import{validateOutDir as e}from"./chunk-PVPUCTHV.js";import{getAllFiles as t}from"./chunk-NTAOZL73.js";import{__name as o}from"./chunk-7QVYU63E.js";import{unlink as i}from"node:fs/promises";import{relative as r}from"node:path";async function s(o,s,n,l){e(o,l);try{l.debug(`Starting cleanup of directory: "${o}"`),l.debug(`Built files count: ${s.size}`);const e=await t(o,l);if(l.debug(`Existing files count: ${e.length}`),0===e.length&&s.size>0)return void l.error('Disable tsup "clean: true" to use this plugin.');l.info(`Processing ${e.length} existing files vs ${s.size} built files`);const u=[];for(const t of e){const e=r(process.cwd(),t);l.verbose(`Checking file: "${e}"`),s.has(e)?l.verbose(`Keeping built file: "${e}"`):(u.push(t),l.verbose(`Marked for deletion: "${e}"`))}if(u.length>0){const e=n.destructive?"":" (dry run)";l.warn(`Files marked for deletion: ${u.length}${e}`)}else l.info("No files marked for deletion");let c=0;for(const e of u){const t=r(process.cwd(),e);n.destructive&&await i(e),l.info(`Deleting: "${t}"`),c++}0===c?l.info("No unused files found"):n.destructive||l.info(`Set destructive: true to actually delete the ${c} unused file(s)`)}catch(e){throw l.error("Error during cleanup:",e),e}}o(s,"cleanUnusedFiles");export{s as cleanUnusedFiles};//# sourceMappingURL=chunk-TGWFIV7B.js.map