manageos 1.0.1 → 2.0.1

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/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "manageos",
3
- "version": "1.0.1",
3
+ "version": "2.0.1",
4
4
  "description": "ManageOS",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "scripts": {
9
9
  "dev": "tsx watch src/index.ts",
10
- "build": "tsc"
10
+ "build": "tsc",
11
+ "build-doc": "npx typedoc"
11
12
  },
12
13
  "keywords": [],
13
14
  "author": "Tiziano Tomas Luzi Ramos",
@@ -18,6 +19,24 @@
18
19
  ],
19
20
  "devDependencies": {
20
21
  "@types/node": "^24.6.1",
22
+ "typedoc": "^0.28.13",
23
+ "typedoc-plugin-extras": "^4.0.1",
24
+ "typedoc-umlclass": "^0.10.2",
21
25
  "typescript": "^5.6.3"
26
+ },
27
+ "dependencies": {
28
+ "@types/deasync": "^0.1.5",
29
+ "@types/node-notifier": "^8.0.5",
30
+ "@types/node-windows": "^0.1.6",
31
+ "@types/screenshot-desktop": "^1.15.0",
32
+ "@types/systeminformation": "^3.23.1",
33
+ "deasync": "^0.1.30",
34
+ "loudness": "^0.4.2",
35
+ "node-notifier": "^10.0.1",
36
+ "node-windows": "^1.0.0-beta.8",
37
+ "screenshot-desktop": "^1.15.2",
38
+ "systeminformation": "^5.27.10",
39
+ "typedoc-material-theme": "^1.4.0",
40
+ "win-screen-resolution": "^3.0.2"
22
41
  }
23
42
  }
package/README.md DELETED
@@ -1,142 +0,0 @@
1
- # ManageOS
2
-
3
- **ManageOS** is a Node.js library that provides a set of tools to manage operating system resources and settings on Windows systems. It offers utilities for registry editing, process management, file system operations, system information retrieval, and user account management.
4
-
5
- ---
6
-
7
- ## 📦 Installation
8
-
9
- Install via npm:
10
-
11
- ```bash
12
- npm install manageos
13
- ```
14
-
15
- or with Yarn:
16
-
17
- ```bash
18
- yarn add manageos
19
- ```
20
-
21
- ---
22
-
23
- ## 🛠 Usage
24
-
25
- ### Import the package
26
-
27
- ```ts
28
- import ManageOS from "manageos";
29
- ```
30
-
31
- ---
32
-
33
- ### File System
34
-
35
- ```ts
36
- // Synchronous usage
37
- const files = ManageOS.FileSystem.sync.listDirectory("C:\\Path\\To\\Folder");
38
-
39
- // Asynchronous usage
40
- const filesAsync = await ManageOS.FileSystem.async.listDirectory(
41
- "C:\\Path\\To\\Folder"
42
- );
43
- ```
44
-
45
- ---
46
-
47
- ### Registry Editor
48
-
49
- ```ts
50
- await ManageOS.Regedit.createKey("HKCU\\Software\\MyApp");
51
- await ManageOS.Regedit.setValue(
52
- "HKCU\\Software\\MyApp",
53
- "TestValue",
54
- "REG_SZ",
55
- "Hello World"
56
- );
57
- const registryData = await ManageOS.Regedit.listKey("HKCU\\Software\\MyApp");
58
- await ManageOS.Regedit.deleteKey("HKCU\\Software\\MyApp");
59
- ```
60
-
61
- ---
62
-
63
- ### Process Manager
64
-
65
- ```ts
66
- const processes = ManageOS.Taskmgr.sync.listProcesses();
67
- const processCount = ManageOS.Taskmgr.sync.getProcessCount();
68
-
69
- ManageOS.Taskmgr.sync.killByName("notepad.exe", true);
70
- ```
71
-
72
- ---
73
-
74
- ### System Information
75
-
76
- ```ts
77
- const sysInfo = ManageOS.SystemInfo();
78
- console.log(sysInfo.platform, sysInfo.architecture, sysInfo.cpus);
79
- ```
80
-
81
- ---
82
-
83
- ### User Management
84
-
85
- ```ts
86
- const users = ManageOS.UserManager.listUsers();
87
- const userInfo = ManageOS.UserManager.getUserInfo("Administrator");
88
-
89
- ManageOS.UserManager.createUser("newuser", "password123");
90
- ManageOS.UserManager.deleteUser("newuser");
91
- ```
92
-
93
- ---
94
-
95
- ## 📚 API Overview
96
-
97
- - **`ManageOS.FileSystem`** – File and directory operations (sync & async versions).
98
- - **`ManageOS.Regedit`** – Create, delete, read, and modify Windows Registry keys and values.
99
- - **`ManageOS.Taskmgr`** – Process listing, monitoring, and termination.
100
- - **`ManageOS.SystemInfo`** – Retrieve system details such as OS version, CPU info, memory, and uptime.
101
- - **`ManageOS.UserManager`** – Manage Windows user accounts and groups.
102
-
103
- ---
104
-
105
- ## ⚙ Requirements
106
-
107
- - Node.js v18 or higher
108
- - Windows operating system (registry and process management are Windows-specific)
109
- - Administrative privileges for some operations
110
-
111
- ---
112
-
113
- ## 💡 Notes
114
-
115
- - Many operations require elevated privileges (Administrator mode).
116
- - Registry changes can affect system stability. Use with caution.
117
- - This library wraps built-in Windows commands, so all outputs depend on system configuration.
118
-
119
- ---
120
-
121
- ## 🔧 Development
122
-
123
- Clone the repository and install dependencies:
124
-
125
- ```bash
126
- git clone https://github.com/yourusername/manageos.git
127
- cd manageos
128
- npm install
129
- npm run build
130
- ```
131
-
132
- Run in development mode:
133
-
134
- ```bash
135
- npm run dev
136
- ```
137
-
138
- ---
139
-
140
- ## 📄 License
141
-
142
- MIT License © Tiziano Tomas Luzi Ramos
@@ -1,28 +0,0 @@
1
- interface FileInfo {
2
- name: string;
3
- path: string;
4
- size: string;
5
- isDirectory: boolean;
6
- }
7
- declare class Sync {
8
- static currentPath(): string;
9
- static listDirectory(dirPath: string): FileInfo[];
10
- static readFile(filePath: string): string;
11
- static deleteFile(filePath: string, force?: boolean): boolean | unknown;
12
- static createDirectory(dirPath: string): boolean | unknown;
13
- static deleteDirectory(dirPath: string, force?: boolean): boolean | unknown;
14
- }
15
- declare class Async {
16
- static currentPath(): string;
17
- static listDirectory(dirPath: string): Promise<FileInfo[]>;
18
- static readFile(filePath: string): Promise<string>;
19
- static deleteFile(filePath: string, force?: boolean): Promise<boolean | unknown>;
20
- static createDirectory(dirPath: string): Promise<boolean | unknown>;
21
- static deleteDirectory(dirPath: string, force?: boolean): Promise<boolean | unknown>;
22
- }
23
- export default class FileSystem {
24
- static readonly async: typeof Async;
25
- static readonly sync: typeof Sync;
26
- }
27
- export {};
28
- //# sourceMappingURL=filesystem.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"AAGA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,cAAM,IAAI;IACR,MAAM,CAAC,WAAW,IAAI,MAAM;IAG5B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE;IAkBjD,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASzC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,GAAG,OAAO;IASrE,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO;IAS1D,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,GAAG,OAAO;CAQ1E;AAED,cAAM,KAAK;IACT,MAAM,CAAC,WAAW,IAAI,MAAM;IAG5B,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAmB1D,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlD,MAAM,CAAC,UAAU,CACf,QAAQ,EAAE,MAAM,EAChB,KAAK,UAAQ,GACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAW7B,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAWnE,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,KAAK,UAAQ,GACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;CAU9B;AAED,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,MAAM,CAAC,QAAQ,CAAC,KAAK,eAAS;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAQ;CAC7B"}
@@ -1,131 +0,0 @@
1
- import { exec, execSync } from "child_process";
2
- import path from "path";
3
- class Sync {
4
- static currentPath() {
5
- return __dirname;
6
- }
7
- static listDirectory(dirPath) {
8
- try {
9
- const stdout = execSync(`dir "${dirPath}" /B`, { encoding: "utf8" });
10
- const files = stdout
11
- .trim()
12
- .split("\n")
13
- .map((name) => ({
14
- name: name.trim(),
15
- path: path.join(dirPath, name.trim()),
16
- size: "",
17
- isDirectory: false,
18
- }));
19
- return files;
20
- }
21
- catch (error) {
22
- return [];
23
- }
24
- }
25
- static readFile(filePath) {
26
- try {
27
- const content = execSync(`type "${filePath}"`, { encoding: "utf8" });
28
- return content;
29
- }
30
- catch (error) {
31
- return "";
32
- }
33
- }
34
- static deleteFile(filePath, force = false) {
35
- try {
36
- execSync(`del ${force ? "/F" : ""} "${filePath}"`);
37
- return true;
38
- }
39
- catch (e) {
40
- return e;
41
- }
42
- }
43
- static createDirectory(dirPath) {
44
- try {
45
- execSync(`mkdir "${dirPath}"`);
46
- return true;
47
- }
48
- catch (e) {
49
- return e;
50
- }
51
- }
52
- static deleteDirectory(dirPath, force = false) {
53
- try {
54
- execSync(`rmdir ${force ? "/S /Q" : ""} "${dirPath}"`);
55
- return true;
56
- }
57
- catch (e) {
58
- return e;
59
- }
60
- }
61
- }
62
- class Async {
63
- static currentPath() {
64
- return __dirname;
65
- }
66
- static listDirectory(dirPath) {
67
- return new Promise((resolve, reject) => {
68
- exec(`dir "${dirPath}" /B`, (err, stdout) => {
69
- if (err)
70
- return reject(err);
71
- const files = stdout
72
- .trim()
73
- .split("\n")
74
- .map((name) => ({
75
- name: name.trim(),
76
- path: path.join(dirPath, name.trim()),
77
- size: "",
78
- isDirectory: false,
79
- }));
80
- resolve(files);
81
- });
82
- });
83
- }
84
- static readFile(filePath) {
85
- return new Promise((resolve, reject) => {
86
- exec(`type "${filePath}"`, (err, stdout) => {
87
- if (err)
88
- return reject(err);
89
- resolve(stdout);
90
- });
91
- });
92
- }
93
- static deleteFile(filePath, force = false) {
94
- return new Promise((resolve) => {
95
- exec(`del ${force ? "/F" : ""} "${filePath}"`, (err) => {
96
- if (err)
97
- resolve(err);
98
- else {
99
- resolve(true);
100
- }
101
- });
102
- });
103
- }
104
- static createDirectory(dirPath) {
105
- return new Promise((resolve) => {
106
- exec(`mkdir "${dirPath}"`, (err) => {
107
- if (err)
108
- resolve(err);
109
- else {
110
- resolve(true);
111
- }
112
- });
113
- });
114
- }
115
- static deleteDirectory(dirPath, force = false) {
116
- return new Promise((resolve) => {
117
- exec(`rmdir ${force ? "/S /Q" : ""} "${dirPath}"`, (err) => {
118
- if (err)
119
- resolve(err);
120
- else {
121
- resolve(true);
122
- }
123
- });
124
- });
125
- }
126
- }
127
- export default class FileSystem {
128
- static async = Async;
129
- static sync = Sync;
130
- }
131
- //# sourceMappingURL=filesystem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../src/filesystem.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts DELETED
@@ -1,13 +0,0 @@
1
- import Regedit from "./regedit";
2
- import Taskmgr from "./taskmgr";
3
- import FileSystem from "./filesystem";
4
- import SystemInfo from "./systeminfo";
5
- import UserManager from "./usermanager";
6
- export default class ManageOS {
7
- static readonly Regedit: typeof Regedit;
8
- static readonly Taskmgr: typeof Taskmgr;
9
- static readonly FileSystem: typeof FileSystem;
10
- static readonly SystemInfo: typeof SystemInfo;
11
- static readonly UserManager: typeof UserManager;
12
- }
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,iBAAW;IAClC,MAAM,CAAC,QAAQ,CAAC,OAAO,iBAAW;IAClC,MAAM,CAAC,QAAQ,CAAC,UAAU,oBAAc;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,oBAAc;IACxC,MAAM,CAAC,QAAQ,CAAC,WAAW,qBAAe;CAC3C"}
package/dist/index.js DELETED
@@ -1,13 +0,0 @@
1
- import Regedit from "./regedit";
2
- import Taskmgr from "./taskmgr";
3
- import FileSystem from "./filesystem";
4
- import SystemInfo from "./systeminfo";
5
- import UserManager from "./usermanager";
6
- export default class ManageOS {
7
- static Regedit = Regedit;
8
- static Taskmgr = Taskmgr;
9
- static FileSystem = FileSystem;
10
- static SystemInfo = SystemInfo;
11
- static UserManager = UserManager;
12
- }
13
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,WAAW,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC;IAClC,MAAM,CAAU,OAAO,GAAG,OAAO,CAAC;IAClC,MAAM,CAAU,UAAU,GAAG,UAAU,CAAC;IACxC,MAAM,CAAU,UAAU,GAAG,UAAU,CAAC;IACxC,MAAM,CAAU,WAAW,GAAG,WAAW,CAAC"}
package/dist/regedit.d.ts DELETED
@@ -1,11 +0,0 @@
1
- type RegType = "REG_SZ" | "REG_DWORD" | "REG_BINARY" | "REG_EXPAND_SZ" | "REG_MULTI_SZ";
2
- export default class Regedit {
3
- static createKey(hiveAndKey: string): Promise<void>;
4
- static deleteKey(hiveAndKey: string): Promise<void>;
5
- static setValue(hiveAndKey: string, valueName: string, type: RegType, value: string | number | string[]): Promise<void>;
6
- static deleteValue(hiveAndKey: string, valueName: string): Promise<void>;
7
- static listKey(hiveAndKey: string | string[]): Promise<any>;
8
- static getArch(): string;
9
- }
10
- export {};
11
- //# sourceMappingURL=regedit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"regedit.d.ts","sourceRoot":"","sources":["../src/regedit.ts"],"names":[],"mappings":"AAEA,KAAK,OAAO,GACR,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,eAAe,GACf,cAAc,CAAC;AAEnB,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnD,MAAM,CAAC,QAAQ,CACb,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAChC,OAAO,CAAC,IAAI,CAAC;IAgBhB,MAAM,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAU3D,MAAM,CAAC,OAAO,IAAI,MAAM;CAGzB"}
package/dist/regedit.js DELETED
@@ -1,57 +0,0 @@
1
- import * as regedit from "regedit";
2
- export default class Regedit {
3
- static createKey(hiveAndKey) {
4
- return new Promise((resolve, reject) => {
5
- regedit.createKey([hiveAndKey], (err) => {
6
- if (err)
7
- return reject(err);
8
- resolve();
9
- });
10
- });
11
- }
12
- static deleteKey(hiveAndKey) {
13
- return new Promise((resolve, reject) => {
14
- regedit.deleteKey([hiveAndKey], (err) => {
15
- if (err)
16
- return reject(err);
17
- resolve();
18
- });
19
- });
20
- }
21
- static setValue(hiveAndKey, valueName, type, value) {
22
- return new Promise((resolve, reject) => {
23
- const mapping = {
24
- [hiveAndKey]: {
25
- [valueName]: { value, type },
26
- },
27
- };
28
- regedit.putValue(mapping, (err) => {
29
- if (err)
30
- return reject(err);
31
- resolve();
32
- });
33
- });
34
- }
35
- static deleteValue(hiveAndKey, valueName) {
36
- return new Promise((resolve, reject) => {
37
- regedit.deleteValue({ [hiveAndKey]: [valueName] }, (err) => {
38
- if (err)
39
- return reject(err);
40
- resolve();
41
- });
42
- });
43
- }
44
- static listKey(hiveAndKey) {
45
- return new Promise((resolve, reject) => {
46
- regedit.list(hiveAndKey, (err, result) => {
47
- if (err)
48
- return reject(err);
49
- resolve(result);
50
- });
51
- });
52
- }
53
- static getArch() {
54
- return regedit.arch["64"];
55
- }
56
- }
57
- //# sourceMappingURL=regedit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"regedit.js","sourceRoot":"","sources":["../src/regedit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AASnC,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,MAAM,CAAC,SAAS,CAAC,UAAkB;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtC,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,UAAkB;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtC,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,UAAkB,EAClB,SAAiB,EACjB,IAAa,EACb,KAAiC;QAEjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG;gBACd,CAAC,UAAU,CAAC,EAAE;oBACZ,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;iBAC7B;aACF,CAAC;YAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB,EAAE,SAAiB;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACzD,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE5B,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,UAA6B;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBACvC,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE5B,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,OAAO;QACZ,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -1,19 +0,0 @@
1
- import os from "os";
2
- type SystemInfoType = {
3
- platform: NodeJS.Platform;
4
- architecture: string;
5
- release: string;
6
- hostname: string;
7
- uptime: number;
8
- cpus: os.CpuInfo[];
9
- totalMemory: number;
10
- freeMemory: number;
11
- loadAverage: number[];
12
- tmpDir: string;
13
- homeDir: string;
14
- type: string;
15
- userInfo: os.UserInfo<string>;
16
- };
17
- export default function SystemInfo(): SystemInfoType;
18
- export {};
19
- //# sourceMappingURL=systeminfo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"systeminfo.d.ts","sourceRoot":"","sources":["../src/systeminfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,KAAK,cAAc,GAAG;IACpB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,IAAI,cAAc,CAgBnD"}
@@ -1,19 +0,0 @@
1
- import os from "os";
2
- export default function SystemInfo() {
3
- return {
4
- platform: os.platform(),
5
- architecture: os.arch(),
6
- release: os.release(),
7
- hostname: os.hostname(),
8
- uptime: os.uptime(),
9
- cpus: os.cpus(),
10
- totalMemory: os.totalmem(),
11
- freeMemory: os.freemem(),
12
- loadAverage: os.loadavg(),
13
- tmpDir: os.tmpdir(),
14
- homeDir: os.homedir(),
15
- type: os.type(),
16
- userInfo: os.userInfo(),
17
- };
18
- }
19
- //# sourceMappingURL=systeminfo.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"systeminfo.js","sourceRoot":"","sources":["../src/systeminfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAkBpB,MAAM,CAAC,OAAO,UAAU,UAAU;IAChC,OAAO;QACL,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,YAAY,EAAE,EAAE,CAAC,IAAI,EAAE;QACvB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QACrB,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;QACvB,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;QACf,WAAW,EAAE,EAAE,CAAC,QAAQ,EAAE;QAC1B,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE;QACxB,WAAW,EAAE,EAAE,CAAC,OAAO,EAAE;QACzB,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;QACf,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE;KACxB,CAAC;AACJ,CAAC"}
package/dist/taskmgr.d.ts DELETED
@@ -1,29 +0,0 @@
1
- interface ProcessInfo {
2
- imageName: string;
3
- pid: number;
4
- sessionName: string;
5
- sessionNumber: number;
6
- memUsage: string;
7
- }
8
- declare class Sync {
9
- static monitorProcess(name: string, callback: (status: "start" | "stop") => void): NodeJS.Timeout;
10
- static getProcessCount(): number;
11
- static findByName(name: string): ProcessInfo[];
12
- static killByName(name: string, force?: boolean): boolean | unknown;
13
- static killByPid(pid: number, force?: boolean): boolean | unknown;
14
- static listProcesses(): ProcessInfo[];
15
- }
16
- declare class Async {
17
- static monitorProcess(name: string, callback: (status: "start" | "stop") => void): Promise<void>;
18
- static getProcessCountAsync(): Promise<number>;
19
- static findByName(name: string): Promise<ProcessInfo[]>;
20
- static killByName(name: string, force?: boolean): Promise<boolean | unknown>;
21
- static killByPid(pid: number, force?: boolean): Promise<boolean | unknown>;
22
- static listProcesses(): Promise<ProcessInfo[]>;
23
- }
24
- export default class Taskmgr {
25
- static readonly async: typeof Async;
26
- static readonly sync: typeof Sync;
27
- }
28
- export {};
29
- //# sourceMappingURL=taskmgr.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskmgr.d.ts","sourceRoot":"","sources":["../src/taskmgr.ts"],"names":[],"mappings":"AAEA,UAAU,WAAW;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,cAAM,IAAI;IACR,MAAM,CAAC,cAAc,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,GAC3C,MAAM,CAAC,OAAO;IAmBjB,MAAM,CAAC,eAAe,IAAI,MAAM;IAIhC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE;IAM9C,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,GAAG,OAAO;IASjE,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,GAAG,OAAO;IAQ/D,MAAM,CAAC,aAAa,IAAI,WAAW,EAAE;CA6CtC;AAED,cAAM,KAAK;WACI,cAAc,CACzB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI;WAkBjC,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;WAIvC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAO7D,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAQ1E,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAYxE,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;CA+C/C;AAED,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,MAAM,CAAC,QAAQ,CAAC,KAAK,eAAS;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAQ;CAC7B"}
package/dist/taskmgr.js DELETED
@@ -1,167 +0,0 @@
1
- import { exec, execSync } from "child_process";
2
- class Sync {
3
- static monitorProcess(name, callback) {
4
- let running = false;
5
- const intervalId = setInterval(() => {
6
- const processes = this.findByName(name);
7
- const found = processes.length > 0;
8
- if (found && !running) {
9
- running = true;
10
- callback("start");
11
- }
12
- else if (!found && running) {
13
- running = false;
14
- callback("stop");
15
- }
16
- }, 2000);
17
- return intervalId;
18
- }
19
- static getProcessCount() {
20
- return this.listProcesses().length;
21
- }
22
- static findByName(name) {
23
- return this.listProcesses().filter((p) => p.imageName.toLowerCase() === name.toLowerCase());
24
- }
25
- static killByName(name, force = false) {
26
- try {
27
- execSync(`taskkill /IM ${name} ${force ? "/F" : ""}`);
28
- return true;
29
- }
30
- catch (e) {
31
- return e;
32
- }
33
- }
34
- static killByPid(pid, force = false) {
35
- try {
36
- execSync(`taskkill /PID ${pid} ${force ? "/F" : ""}`);
37
- return true;
38
- }
39
- catch (e) {
40
- return e;
41
- }
42
- }
43
- static listProcesses() {
44
- try {
45
- const stdout = execSync("tasklist", { encoding: "utf8" });
46
- const lines = stdout.trim().split("\n");
47
- const separatorIndex = lines.findIndex((line) => line.includes("==="));
48
- if (separatorIndex === -1)
49
- throw new Error("Formato inesperado");
50
- const separatorLine = lines[separatorIndex];
51
- const colPositions = [];
52
- for (let i = 0; i < separatorLine.length; i++) {
53
- if (separatorLine[i] === "=" &&
54
- (i === 0 || separatorLine[i - 1] !== "=")) {
55
- colPositions.push(i);
56
- }
57
- }
58
- colPositions.push(separatorLine.length);
59
- const dataLines = lines.slice(separatorIndex + 1);
60
- const processes = dataLines
61
- .filter((line) => line.trim() !== "")
62
- .map((line) => {
63
- const imageName = line.slice(colPositions[0], colPositions[1]).trim();
64
- const pid = Number(line.slice(colPositions[1], colPositions[2]).trim()) || 0;
65
- const sessionName = line
66
- .slice(colPositions[2], colPositions[3])
67
- .trim();
68
- const sessionNumber = Number(line.slice(colPositions[3], colPositions[4]).trim()) || 0;
69
- const memUsage = line.slice(colPositions[4]).trim();
70
- return { imageName, pid, sessionName, sessionNumber, memUsage };
71
- });
72
- return processes;
73
- }
74
- catch (error) {
75
- console.error("Error ejecutando tasklist:", error);
76
- return [];
77
- }
78
- }
79
- }
80
- class Async {
81
- static async monitorProcess(name, callback) {
82
- let running = false;
83
- setInterval(async () => {
84
- const processes = await this.findByName(name);
85
- const found = processes.length > 0;
86
- if (found && !running) {
87
- running = true;
88
- callback("start");
89
- }
90
- else if (!found && running) {
91
- running = false;
92
- callback("stop");
93
- }
94
- }, 2000);
95
- }
96
- static async getProcessCountAsync() {
97
- return (await this.listProcesses()).length;
98
- }
99
- static async findByName(name) {
100
- const processes = await this.listProcesses();
101
- return processes.filter((p) => p.imageName.toLowerCase() === name.toLowerCase());
102
- }
103
- static killByName(name, force = false) {
104
- return new Promise((resolve) => {
105
- exec(`taskkill /IM ${name} ${force ? "/F" : ""}`, (err) => {
106
- if (err)
107
- resolve(err);
108
- else
109
- resolve(true);
110
- });
111
- });
112
- }
113
- static killByPid(pid, force = false) {
114
- return new Promise((resolve) => {
115
- exec(`taskkill /PID ${pid} ${force ? "/F" : ""}`, (err) => {
116
- if (err) {
117
- resolve(err);
118
- }
119
- else {
120
- resolve(true);
121
- }
122
- });
123
- });
124
- }
125
- static listProcesses() {
126
- return new Promise((resolve, reject) => {
127
- exec("tasklist", (err, stdout) => {
128
- if (err)
129
- return reject(err);
130
- const lines = stdout.trim().split("\n");
131
- const separatorIndex = lines.findIndex((line) => line.includes("==="));
132
- if (separatorIndex === -1)
133
- return reject("Formato inesperado");
134
- const separatorLine = lines[separatorIndex];
135
- const colPositions = [];
136
- for (let i = 0; i < separatorLine.length; i++) {
137
- if (separatorLine[i] === "=" &&
138
- (i === 0 || separatorLine[i - 1] !== "=")) {
139
- colPositions.push(i);
140
- }
141
- }
142
- colPositions.push(separatorLine.length);
143
- const dataLines = lines.slice(separatorIndex + 1);
144
- const processes = dataLines
145
- .filter((line) => line.trim() !== "")
146
- .map((line) => {
147
- const imageName = line
148
- .slice(colPositions[0], colPositions[1])
149
- .trim();
150
- const pid = Number(line.slice(colPositions[1], colPositions[2]).trim()) || 0;
151
- const sessionName = line
152
- .slice(colPositions[2], colPositions[3])
153
- .trim();
154
- const sessionNumber = Number(line.slice(colPositions[3], colPositions[4]).trim()) || 0;
155
- const memUsage = line.slice(colPositions[4]).trim();
156
- return { imageName, pid, sessionName, sessionNumber, memUsage };
157
- });
158
- resolve(processes);
159
- });
160
- });
161
- }
162
- }
163
- export default class Taskmgr {
164
- static async = Async;
165
- static sync = Sync;
166
- }
167
- //# sourceMappingURL=taskmgr.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"taskmgr.js","sourceRoot":"","sources":["../src/taskmgr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAU/C,MAAM,IAAI;IACR,MAAM,CAAC,cAAc,CACnB,IAAY,EACZ,QAA4C;QAE5C,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,GAAG,KAAK,CAAC;gBAChB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC;IACrC,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,CAChC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;QAC3C,IAAI,CAAC;YACH,QAAQ,CAAC,gBAAgB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,KAAK,GAAG,KAAK;QACzC,IAAI,CAAC;YACH,QAAQ,CAAC,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,MAAM,CAAC,aAAa;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAExC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACvE,IAAI,cAAc,KAAK,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YAEjE,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;YAE5C,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9C,IACE,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;oBACxB,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EACzC,CAAC;oBACD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YACD,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;YAElD,MAAM,SAAS,GAAkB,SAAS;iBACvC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;iBACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACtE,MAAM,GAAG,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACnE,MAAM,WAAW,GAAG,IAAI;qBACrB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;qBACvC,IAAI,EAAE,CAAC;gBACV,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;gBACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEpD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;YAClE,CAAC,CAAC,CAAC;YAEL,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAED,MAAM,KAAK;IACT,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,IAAY,EACZ,QAA4C;QAE5C,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,WAAW,CAAC,KAAK,IAAI,EAAE;YACrB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;YAEnC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC;iBAAM,IAAI,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,GAAG,KAAK,CAAC;gBAChB,QAAQ,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,oBAAoB;QAC/B,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,IAAY;QAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC,MAAM,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CACxD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,KAAK,GAAG,KAAK;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,gBAAgB,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxD,IAAI,GAAG;oBAAE,OAAO,CAAC,GAAG,CAAC,CAAC;;oBACjB,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,KAAK,GAAG,KAAK;QACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxD,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,GAAG,CAAC,CAAC;gBACf,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,aAAa;QAClB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;gBAC/B,IAAI,GAAG;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBAE5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAExC,MAAM,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACvE,IAAI,cAAc,KAAK,CAAC,CAAC;oBAAE,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBAE/D,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;gBAE5C,MAAM,YAAY,GAAa,EAAE,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC9C,IACE,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG;wBACxB,CAAC,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EACzC,CAAC;wBACD,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;gBACD,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBAExC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;gBAElD,MAAM,SAAS,GAAkB,SAAS;qBACvC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;qBACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACZ,MAAM,SAAS,GAAG,IAAI;yBACnB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;yBACvC,IAAI,EAAE,CAAC;oBACV,MAAM,GAAG,GACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;oBACnE,MAAM,WAAW,GAAG,IAAI;yBACrB,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;yBACvC,IAAI,EAAE,CAAC;oBACV,MAAM,aAAa,GACjB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;oBACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBAEpD,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,CAAC;gBAClE,CAAC,CAAC,CAAC;gBAEL,OAAO,CAAC,SAAS,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,CAAC,OAAO,OAAO,OAAO;IAC1B,MAAM,CAAU,KAAK,GAAG,KAAK,CAAC;IAC9B,MAAM,CAAU,IAAI,GAAG,IAAI,CAAC"}
@@ -1,62 +0,0 @@
1
- type UserList = string[];
2
- type UserInfo = {
3
- username: string;
4
- fullName: string;
5
- comment: string;
6
- countryRegionCode: string;
7
- accountActive: string;
8
- accountExpires: string;
9
- passwordLastSet: string;
10
- passwordExpires: string;
11
- passwordChangeable: string;
12
- passwordRequired: string;
13
- userMayChangePassword: string;
14
- workstationsAllowed: string;
15
- logonScript: string;
16
- profilePath: string;
17
- homeDirectory: string;
18
- lastLogon: string;
19
- logonHoursAllowed: string;
20
- localGroupMemberships: string[];
21
- globalGroupMemberships: string[];
22
- };
23
- type CommandResult = {
24
- success: boolean;
25
- output?: string;
26
- error?: string;
27
- };
28
- export default class UserManager {
29
- private static parseDate;
30
- private static cache;
31
- private static CACHE_TTL_MS;
32
- private static escapeArg;
33
- private static execCommand;
34
- private static parseSectionedOutput;
35
- static doesUserExist(username: string): boolean;
36
- static lockUser(username: string): CommandResult;
37
- static unlockUser(username: string): CommandResult;
38
- static setUserComment(username: string, comment: string): CommandResult;
39
- static getLastLogon(username: string): CommandResult;
40
- static createUser(username: string, password?: string): CommandResult;
41
- static deleteUser(username: string): CommandResult;
42
- static changePassword(username: string, newPassword: string): CommandResult;
43
- static setUserActive(username: string, active: boolean): CommandResult;
44
- static requirePasswordChange(username: string, require: boolean): CommandResult;
45
- static addUserToGroup(username: string, group: string): CommandResult;
46
- static removeUserFromGroup(username: string, group: string): CommandResult;
47
- static listUsers(): UserList;
48
- static listGroups(): string[];
49
- static listGroupMembers(groupName: string): string[] | string | undefined;
50
- static userExists(username: string): boolean;
51
- static getUserInfo(username: string): UserInfo | null;
52
- static getAllUsersInfo(): UserInfo[];
53
- static getAllGroupMembers(): {
54
- group: string;
55
- members: string[];
56
- }[];
57
- static getUserGroups(username: string): string[];
58
- static listActiveSessions(): string[];
59
- static currentUser(): string;
60
- }
61
- export {};
62
- //# sourceMappingURL=usermanager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usermanager.d.ts","sourceRoot":"","sources":["../src/usermanager.ts"],"names":[],"mappings":"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"}
@@ -1,320 +0,0 @@
1
- import { execSync as originalExecSync, } from "child_process";
2
- function execSync(command, options) {
3
- return originalExecSync(command, {
4
- encoding: "utf8",
5
- stdio: "pipe",
6
- ...options,
7
- });
8
- }
9
- export default class UserManager {
10
- static parseDate(output) {
11
- if (!output)
12
- return null;
13
- return output.replace(/\r/g, "").replace(/\n+/g, "").trim() || null;
14
- }
15
- static cache = {};
16
- static CACHE_TTL_MS = 5_000;
17
- static escapeArg(arg) {
18
- return `"${arg.replace(/"/g, '\\"')}"`;
19
- }
20
- static execCommand(command) {
21
- try {
22
- const output = execSync(command, { encoding: "utf8" });
23
- return { success: true, output };
24
- }
25
- catch (err) {
26
- const errorMsg = err instanceof Error
27
- ? err.message
28
- : typeof err === "string"
29
- ? err
30
- : JSON.stringify(err);
31
- return { success: false, error: errorMsg };
32
- }
33
- }
34
- static parseSectionedOutput(output) {
35
- const lines = output.split(/\r?\n/);
36
- const result = [];
37
- let collecting = false;
38
- for (let raw of lines) {
39
- const line = raw.replace(/\r$/, "");
40
- if (line.includes("-----")) {
41
- collecting = !collecting;
42
- continue;
43
- }
44
- if (!collecting)
45
- continue;
46
- if (/The command completed/i.test(line))
47
- continue;
48
- const candidate = line.trim();
49
- if (candidate) {
50
- result.push(candidate);
51
- }
52
- }
53
- return result;
54
- }
55
- static doesUserExist(username) {
56
- const res = this.execCommand(`net user ${this.escapeArg(username)}`);
57
- return res.success && !res.error;
58
- }
59
- static lockUser(username) {
60
- const escUser = this.escapeArg(username);
61
- return this.execCommand(`net user ${escUser} /lock`);
62
- }
63
- static unlockUser(username) {
64
- const escUser = this.escapeArg(username);
65
- return this.execCommand(`net user ${escUser} /active:yes`);
66
- }
67
- static setUserComment(username, comment) {
68
- const escUser = this.escapeArg(username);
69
- const escComment = this.escapeArg(comment);
70
- return this.execCommand(`net user ${escUser} /comment:${escComment}`);
71
- }
72
- static getLastLogon(username) {
73
- const escUser = username.replace(/'/g, "''"); // Escapa comillas simples
74
- const res = this.execCommand(`powershell -Command "Get-LocalUser -Name '${escUser}' | Select-Object -ExpandProperty LastLogon"`);
75
- if (!res.success || !res.output)
76
- return res;
77
- const isoDate = this.parseDate(res.output);
78
- return { success: true, output: isoDate ?? "" };
79
- }
80
- static createUser(username, password) {
81
- const escUser = this.escapeArg(username);
82
- const passPart = password !== undefined ? this.escapeArg(password) : '""';
83
- const res = this.execCommand(`net user ${escUser} ${passPart} /add`);
84
- if (res.success) {
85
- delete this.cache.users;
86
- }
87
- return res;
88
- }
89
- static deleteUser(username) {
90
- const escUser = this.escapeArg(username);
91
- const res = this.execCommand(`net user ${escUser} /delete`);
92
- if (res.success)
93
- delete this.cache.users;
94
- return res;
95
- }
96
- static changePassword(username, newPassword) {
97
- const escUser = this.escapeArg(username);
98
- const escPass = this.escapeArg(newPassword);
99
- return this.execCommand(`net user ${escUser} ${escPass}`);
100
- }
101
- static setUserActive(username, active) {
102
- const escUser = this.escapeArg(username);
103
- const res = this.execCommand(`net user ${escUser} /active:${active ? "yes" : "no"}`);
104
- if (res.success)
105
- delete this.cache.users;
106
- return res;
107
- }
108
- static requirePasswordChange(username, require) {
109
- const escUser = this.escapeArg(username);
110
- return this.execCommand(`net user ${escUser} /logonpasswordchg:${require ? "yes" : "no"}`);
111
- }
112
- static addUserToGroup(username, group) {
113
- const escUser = this.escapeArg(username);
114
- const escGroup = this.escapeArg(group);
115
- const res = this.execCommand(`net localgroup ${escGroup} ${escUser} /add`);
116
- if (res.success)
117
- delete this.cache.groups;
118
- return res;
119
- }
120
- static removeUserFromGroup(username, group) {
121
- const escUser = this.escapeArg(username);
122
- const escGroup = this.escapeArg(group);
123
- const res = this.execCommand(`net localgroup ${escGroup} ${escUser} /delete`);
124
- if (res.success)
125
- delete this.cache.groups;
126
- return res;
127
- }
128
- static listUsers() {
129
- const now = Date.now();
130
- if (this.cache.users &&
131
- now - this.cache.users.ts < this.CACHE_TTL_MS &&
132
- Array.isArray(this.cache.users.data)) {
133
- return this.cache.users.data.slice();
134
- }
135
- const res = this.execCommand("net user");
136
- if (!res.success || !res.output) {
137
- return [];
138
- }
139
- const parsed = this.parseSectionedOutput(res.output)
140
- .map((line) => line
141
- .trim()
142
- .split(/\s+/)
143
- .filter((u) => u &&
144
- u !== "The" &&
145
- u !== "command" &&
146
- u !== "completed" &&
147
- u !== "successfully."))
148
- .flat();
149
- this.cache.users = { data: parsed, ts: Date.now() };
150
- return parsed;
151
- }
152
- static listGroups() {
153
- const now = Date.now();
154
- if (this.cache.groups &&
155
- now - this.cache.groups.ts < this.CACHE_TTL_MS &&
156
- Array.isArray(this.cache.groups.data)) {
157
- return this.cache.groups.data.slice();
158
- }
159
- const res = this.execCommand("net localgroup");
160
- if (!res.success || !res.output) {
161
- return [];
162
- }
163
- const parsed = this.parseSectionedOutput(res.output)
164
- .map((l) => l.replace(/^\*/, "").trim())
165
- .filter(Boolean);
166
- this.cache.groups = { data: parsed, ts: Date.now() };
167
- return parsed;
168
- }
169
- static listGroupMembers(groupName) {
170
- const escGroup = this.escapeArg(groupName);
171
- const res = this.execCommand(`net localgroup ${escGroup}`);
172
- if (!res.success || !res.output) {
173
- return res.error;
174
- }
175
- const parsed = this.parseSectionedOutput(res.output)
176
- .map((line) => line.split(/\s+/).filter(Boolean))
177
- .flat();
178
- return parsed;
179
- }
180
- static userExists(username) {
181
- return this.listUsers().includes(username);
182
- }
183
- static getUserInfo(username) {
184
- const escUser = this.escapeArg(username);
185
- const res = this.execCommand(`net user ${escUser}`);
186
- if (!res.success || !res.output) {
187
- return null;
188
- }
189
- const lines = res.output.split(/\r?\n/).map((ln) => ln.replace(/\r$/, ""));
190
- const details = {};
191
- let currentKey = null;
192
- const knownKeys = [
193
- "User name",
194
- "Full Name",
195
- "Comment",
196
- "User's comment",
197
- "Country/region code",
198
- "Account active",
199
- "Account expires",
200
- "Password last set",
201
- "Password expires",
202
- "Password changeable",
203
- "Password required",
204
- "User may change password",
205
- "Workstations allowed",
206
- "Logon script",
207
- "User profile",
208
- "Home directory",
209
- "Last logon",
210
- "Logon hours allowed",
211
- "Local Group Memberships",
212
- "Global Group memberships",
213
- ];
214
- let collecting = false;
215
- for (let raw of lines) {
216
- const line = raw.trimEnd();
217
- if (line.startsWith("User name"))
218
- collecting = true;
219
- if (!collecting)
220
- continue;
221
- if (/The command completed/i.test(line))
222
- break;
223
- const match = line.match(/^([^:]+?)\s{2,}(.*)$/);
224
- if (match) {
225
- const key = match[1].trim();
226
- const value = match[2].trim();
227
- if (knownKeys.includes(key)) {
228
- currentKey = key;
229
- details[currentKey] = value;
230
- }
231
- else {
232
- currentKey = null;
233
- }
234
- }
235
- else {
236
- const possibleKey = line.trim();
237
- if (knownKeys.includes(possibleKey)) {
238
- currentKey = possibleKey;
239
- details[currentKey] = "";
240
- }
241
- else if (currentKey) {
242
- details[currentKey] = (details[currentKey] || "") + " " + line.trim();
243
- }
244
- }
245
- }
246
- return {
247
- username,
248
- fullName: details["Full Name"] || "",
249
- comment: details["Comment"] || details["User's comment"] || "",
250
- countryRegionCode: details["Country/region code"] || "",
251
- accountActive: details["Account active"] || "",
252
- accountExpires: details["Account expires"] || "",
253
- passwordLastSet: details["Password last set"] || "",
254
- passwordExpires: details["Password expires"] || "",
255
- passwordChangeable: details["Password changeable"] || "",
256
- passwordRequired: details["Password required"] || "",
257
- userMayChangePassword: details["User may change password"] || "",
258
- workstationsAllowed: details["Workstations allowed"] || "",
259
- logonScript: details["Logon script"] || "",
260
- profilePath: details["User profile"] || "",
261
- homeDirectory: details["Home directory"] || "",
262
- lastLogon: details["Last logon"] || "",
263
- logonHoursAllowed: details["Logon hours allowed"] || "",
264
- localGroupMemberships: (details["Local Group Memberships"] || "")
265
- .split(/\s+/)
266
- .filter(Boolean),
267
- globalGroupMemberships: (details["Global Group memberships"] || "")
268
- .split(/\s+/)
269
- .filter(Boolean),
270
- };
271
- }
272
- static getAllUsersInfo() {
273
- const users = this.listUsers();
274
- const allInfo = [];
275
- for (const u of users) {
276
- const info = this.getUserInfo(u);
277
- if (info)
278
- allInfo.push(info);
279
- }
280
- return allInfo;
281
- }
282
- static getAllGroupMembers() {
283
- const groups = this.listGroups();
284
- const result = [];
285
- for (const g of groups) {
286
- const members = this.listGroupMembers(g);
287
- result.push({ group: g, members: Array.isArray(members) ? members : [] });
288
- }
289
- return result;
290
- }
291
- static getUserGroups(username) {
292
- const allGroups = this.listGroups();
293
- const userGroups = [];
294
- for (const group of allGroups) {
295
- const members = this.listGroupMembers(group);
296
- if (Array.isArray(members) && members.includes(username)) {
297
- userGroups.push(group);
298
- }
299
- }
300
- return userGroups;
301
- }
302
- static listActiveSessions() {
303
- const res = this.execCommand('powershell -Command "Get-LocalUser | Where-Object {$_.Enabled -eq $true} | Select-Object -ExpandProperty Name"');
304
- if (!res.success || !res.output)
305
- return [];
306
- return res.output
307
- .split(/\r?\n/)
308
- .map((line) => line.trim())
309
- .filter(Boolean);
310
- }
311
- static currentUser() {
312
- try {
313
- return execSync("whoami", { encoding: "utf8" }).trim();
314
- }
315
- catch (err) {
316
- return String(err);
317
- }
318
- }
319
- }
320
- //# sourceMappingURL=usermanager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usermanager.js","sourceRoot":"","sources":["../src/usermanager.ts"],"names":[],"mappings":"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"}