@cheatron/native 1.1.0 → 1.2.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.
Files changed (102) hide show
  1. package/README.md +17 -4
  2. package/dist/{src/handle.d.ts → handle.d.ts} +4 -0
  3. package/dist/handle.d.ts.map +1 -0
  4. package/dist/{src/handle.js → handle.js} +3 -3
  5. package/dist/handle.js.map +1 -0
  6. package/dist/{src/index.d.ts → index.d.ts} +8 -3
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/{src/index.js → index.js} +7 -2
  9. package/dist/index.js.map +1 -0
  10. package/dist/logger.d.ts.map +1 -0
  11. package/dist/logger.js.map +1 -0
  12. package/dist/module.d.ts +38 -0
  13. package/dist/module.d.ts.map +1 -0
  14. package/dist/module.js +106 -0
  15. package/dist/module.js.map +1 -0
  16. package/dist/msvcrt-ext.d.ts +20 -0
  17. package/dist/msvcrt-ext.d.ts.map +1 -0
  18. package/dist/msvcrt-ext.js +120 -0
  19. package/dist/msvcrt-ext.js.map +1 -0
  20. package/dist/native-fn.d.ts +73 -0
  21. package/dist/native-fn.d.ts.map +1 -0
  22. package/dist/native-fn.js +214 -0
  23. package/dist/native-fn.js.map +1 -0
  24. package/dist/pattern.d.ts +36 -0
  25. package/dist/pattern.d.ts.map +1 -0
  26. package/dist/pattern.js +79 -0
  27. package/dist/pattern.js.map +1 -0
  28. package/dist/process.d.ts +104 -0
  29. package/dist/process.d.ts.map +1 -0
  30. package/dist/process.js +402 -0
  31. package/dist/process.js.map +1 -0
  32. package/dist/scan-result.d.ts +54 -0
  33. package/dist/scan-result.d.ts.map +1 -0
  34. package/dist/scan-result.js +128 -0
  35. package/dist/scan-result.js.map +1 -0
  36. package/dist/scanner.d.ts +22 -0
  37. package/dist/scanner.d.ts.map +1 -0
  38. package/dist/scanner.js +116 -0
  39. package/dist/scanner.js.map +1 -0
  40. package/dist/thread.d.ts.map +1 -0
  41. package/dist/{src/thread.js → thread.js} +1 -1
  42. package/dist/thread.js.map +1 -0
  43. package/package.json +3 -2
  44. package/dist/eslint.config.d.ts +0 -3
  45. package/dist/eslint.config.d.ts.map +0 -1
  46. package/dist/eslint.config.js +0 -26
  47. package/dist/eslint.config.js.map +0 -1
  48. package/dist/src/handle.d.ts.map +0 -1
  49. package/dist/src/handle.js.map +0 -1
  50. package/dist/src/index.d.ts.map +0 -1
  51. package/dist/src/index.js.map +0 -1
  52. package/dist/src/logger.d.ts.map +0 -1
  53. package/dist/src/logger.js.map +0 -1
  54. package/dist/src/module.d.ts +0 -22
  55. package/dist/src/module.d.ts.map +0 -1
  56. package/dist/src/module.js +0 -55
  57. package/dist/src/module.js.map +0 -1
  58. package/dist/src/process.d.ts +0 -30
  59. package/dist/src/process.d.ts.map +0 -1
  60. package/dist/src/process.js +0 -104
  61. package/dist/src/process.js.map +0 -1
  62. package/dist/src/thread.d.ts.map +0 -1
  63. package/dist/src/thread.js.map +0 -1
  64. package/dist/tests/integration/memory.test.d.ts +0 -2
  65. package/dist/tests/integration/memory.test.d.ts.map +0 -1
  66. package/dist/tests/integration/memory.test.js +0 -82
  67. package/dist/tests/integration/memory.test.js.map +0 -1
  68. package/dist/tests/integration/thread.test.d.ts +0 -2
  69. package/dist/tests/integration/thread.test.d.ts.map +0 -1
  70. package/dist/tests/integration/thread.test.js +0 -37
  71. package/dist/tests/integration/thread.test.js.map +0 -1
  72. package/dist/tests/setup.d.ts +0 -2
  73. package/dist/tests/setup.d.ts.map +0 -1
  74. package/dist/tests/setup.js +0 -3
  75. package/dist/tests/setup.js.map +0 -1
  76. package/dist/tests/unit/kernel32.test.d.ts +0 -2
  77. package/dist/tests/unit/kernel32.test.d.ts.map +0 -1
  78. package/dist/tests/unit/kernel32.test.js +0 -28
  79. package/dist/tests/unit/kernel32.test.js.map +0 -1
  80. package/dist/tests/unit/logger.test.d.ts +0 -2
  81. package/dist/tests/unit/logger.test.d.ts.map +0 -1
  82. package/dist/tests/unit/logger.test.js +0 -29
  83. package/dist/tests/unit/logger.test.js.map +0 -1
  84. package/dist/tests/unit/msvcrt.test.d.ts +0 -2
  85. package/dist/tests/unit/msvcrt.test.d.ts.map +0 -1
  86. package/dist/tests/unit/msvcrt.test.js +0 -22
  87. package/dist/tests/unit/msvcrt.test.js.map +0 -1
  88. package/dist/tests/unit/process.test.d.ts +0 -2
  89. package/dist/tests/unit/process.test.d.ts.map +0 -1
  90. package/dist/tests/unit/process.test.js +0 -27
  91. package/dist/tests/unit/process.test.js.map +0 -1
  92. package/dist/tests/unit/thread.test.d.ts +0 -2
  93. package/dist/tests/unit/thread.test.d.ts.map +0 -1
  94. package/dist/tests/unit/thread.test.js +0 -35
  95. package/dist/tests/unit/thread.test.js.map +0 -1
  96. package/dist/tests/unit/thread_creation.test.d.ts +0 -2
  97. package/dist/tests/unit/thread_creation.test.d.ts.map +0 -1
  98. package/dist/tests/unit/thread_creation.test.js +0 -31
  99. package/dist/tests/unit/thread_creation.test.js.map +0 -1
  100. /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
  101. /package/dist/{src/logger.js → logger.js} +0 -0
  102. /package/dist/{src/thread.d.ts → thread.d.ts} +0 -0
@@ -1,37 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { Thread, CONTEXT_SIZE, ThreadAccess } from '@cheatron/native';
3
- describe('Thread Integration Tests', () => {
4
- it('should open the current thread by ID', () => {
5
- const tid = Thread.currentId();
6
- const thread = Thread.open(tid);
7
- expect(thread.isValid()).toBe(true);
8
- expect(thread.handle).toBeDefined();
9
- expect(thread.handle).not.toBeNull();
10
- thread.close();
11
- expect(thread.isValid()).toBe(false);
12
- });
13
- it('should open thread with specific access rights', () => {
14
- const tid = Thread.currentId();
15
- const thread = Thread.open(tid, ThreadAccess.QUERY_INFORMATION);
16
- expect(thread.isValid()).toBe(true);
17
- thread.close();
18
- });
19
- it('should have matching current thread ID across calls', () => {
20
- const id1 = Thread.currentId();
21
- const id2 = Thread.currentId();
22
- expect(id1).toBe(id2);
23
- });
24
- it('should have correct CONTEXT_SIZE for x64', () => {
25
- // x64 CONTEXT is 1232 bytes (0x4D0)
26
- expect(CONTEXT_SIZE).toBe(1232);
27
- });
28
- it('should have GetThreadContext available', () => {
29
- // Verify the API is loaded - actual usage requires a suspended *other* thread
30
- const tid = Thread.currentId();
31
- const thread = Thread.open(tid, ThreadAccess.GET_CONTEXT | ThreadAccess.SUSPEND_RESUME);
32
- expect(thread.isValid()).toBe(true);
33
- expect(typeof thread.getContext).toBe('function');
34
- thread.close();
35
- });
36
- });
37
- //# sourceMappingURL=thread.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.test.js","sourceRoot":"","sources":["../../../tests/integration/thread.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEtE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAEhC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAErC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAEhE,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,oCAAoC;QACpC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,8EAA8E;QAC9E,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CACxB,GAAG,EACH,YAAY,CAAC,WAAW,GAAG,YAAY,CAAC,cAAc,CACvD,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=setup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../tests/setup.ts"],"names":[],"mappings":""}
@@ -1,3 +0,0 @@
1
- export {};
2
- // no OS checks needed.
3
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../tests/setup.ts"],"names":[],"mappings":";AAAA,uBAAuB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=kernel32.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel32.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/kernel32.test.ts"],"names":[],"mappings":""}
@@ -1,28 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { Kernel32Impl } from '@cheatron/native';
3
- describe('Kernel32 Windows Tests', () => {
4
- it('should load Kernel32 and have all required exports', () => {
5
- expect(Kernel32Impl).toBeDefined();
6
- // Process
7
- expect(typeof Kernel32Impl.GetCurrentProcess).toBe('function');
8
- expect(typeof Kernel32Impl.GetCurrentProcessId).toBe('function');
9
- expect(typeof Kernel32Impl.OpenProcess).toBe('function');
10
- expect(typeof Kernel32Impl.CloseHandle).toBe('function');
11
- // Memory
12
- expect(typeof Kernel32Impl.ReadProcessMemory).toBe('function');
13
- expect(typeof Kernel32Impl.WriteProcessMemory).toBe('function');
14
- expect(typeof Kernel32Impl.VirtualQuery).toBe('function');
15
- expect(typeof Kernel32Impl.VirtualQueryEx).toBe('function');
16
- // Thread
17
- expect(typeof Kernel32Impl.GetCurrentThread).toBe('function');
18
- expect(typeof Kernel32Impl.GetCurrentThreadId).toBe('function');
19
- expect(typeof Kernel32Impl.OpenThread).toBe('function');
20
- expect(typeof Kernel32Impl.SuspendThread).toBe('function');
21
- expect(typeof Kernel32Impl.ResumeThread).toBe('function');
22
- });
23
- it('should return a valid handle from GetCurrentProcess', () => {
24
- const handle = Kernel32Impl.GetCurrentProcess();
25
- expect(handle).toBeDefined();
26
- });
27
- });
28
- //# sourceMappingURL=kernel32.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel32.test.js","sourceRoot":"","sources":["../../../tests/unit/kernel32.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC;QAEnC,UAAU;QACV,MAAM,CAAC,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,YAAY,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,CAAC,OAAO,YAAY,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzD,SAAS;QACT,MAAM,CAAC,OAAO,YAAY,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5D,SAAS;QACT,MAAM,CAAC,OAAO,YAAY,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,CAAC,OAAO,YAAY,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,OAAO,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,CAAC,OAAO,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,MAAM,GAAG,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAChD,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=logger.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/logger.test.ts"],"names":[],"mappings":""}
@@ -1,29 +0,0 @@
1
- import { describe, test, expect } from 'bun:test';
2
- import { log } from '@cheatron/native';
3
- describe('Logger Wrapper Tests', () => {
4
- test('should expose all log levels', () => {
5
- expect(typeof log.fatal).toBe('function');
6
- expect(typeof log.error).toBe('function');
7
- expect(typeof log.warn).toBe('function');
8
- expect(typeof log.info).toBe('function');
9
- expect(typeof log.debug).toBe('function');
10
- expect(typeof log.trace).toBe('function');
11
- });
12
- test('should expose child logger factory', () => {
13
- expect(typeof log.child).toBe('function');
14
- });
15
- test('should execute log methods without error', () => {
16
- // These should just run without throwing
17
- log.info('Test', 'Info message');
18
- log.debug('Test', 'Debug message', { some: 'data' });
19
- log.error('Test', 'Error message');
20
- });
21
- test('should create child logger', () => {
22
- const child = log.child('ChildTest');
23
- expect(child).toBeDefined();
24
- expect(typeof child.info).toBe('function');
25
- // Should run without error
26
- child.info('Child info message');
27
- });
28
- });
29
- //# sourceMappingURL=logger.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.test.js","sourceRoot":"","sources":["../../../tests/unit/logger.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAEvC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACpD,yCAAyC;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACrD,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrC,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,2BAA2B;QAC3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=msvcrt.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msvcrt.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/msvcrt.test.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { MsvcrtImpl as msvcrt, Module } from '@cheatron/native';
3
- describe('MSVCRT Tests', () => {
4
- it('should load msvcrt.dll via Module helper', () => {
5
- const module = Module.crt;
6
- expect(module.handle).not.toBeNull();
7
- expect(module.name).toBe('msvcrt.dll');
8
- });
9
- it('should allocate and free memory using CRT', () => {
10
- const size = 1024;
11
- const ptr = msvcrt.malloc(size);
12
- expect(ptr).not.toBeNull();
13
- msvcrt.free(ptr);
14
- });
15
- it('should memcpy correctly', () => {
16
- const src = Buffer.from('Hello CRT!');
17
- const dest = Buffer.alloc(src.length);
18
- msvcrt.memcpy(dest, src, src.length);
19
- expect(dest.toString()).toBe('Hello CRT!');
20
- });
21
- });
22
- //# sourceMappingURL=msvcrt.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"msvcrt.test.js","sourceRoot":"","sources":["../../../tests/unit/msvcrt.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEhE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC;QAC1B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEtC,MAAM,CAAC,MAAM,CACX,IAAyB,EACzB,GAAwB,EACxB,GAAG,CAAC,MAAM,CACX,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=process.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/process.test.ts"],"names":[],"mappings":""}
@@ -1,27 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { Process, CurrentProcess, currentProcess } from '@cheatron/native';
3
- describe('Process Windows Tests', () => {
4
- describe('CurrentProcess', () => {
5
- it('should be a singleton instance and valid', () => {
6
- expect(currentProcess).toBeInstanceOf(CurrentProcess);
7
- expect(currentProcess.isValid()).toBe(true);
8
- expect(Process.current()).toBe(currentProcess);
9
- });
10
- it('should not be closed by default', () => {
11
- expect(currentProcess.handle).toBeDefined();
12
- });
13
- it('should have a valid pid', () => {
14
- expect(currentProcess.pid).toBeGreaterThan(0);
15
- });
16
- });
17
- describe('Process Logic', () => {
18
- it('should handle lifecycle of a manual handle', () => {
19
- const proc = new Process(1234n, undefined, false);
20
- expect(proc.isValid()).toBe(true);
21
- proc.close();
22
- expect(proc.isValid()).toBe(false);
23
- expect(proc.handle).toBeNull();
24
- });
25
- });
26
- });
27
- //# sourceMappingURL=process.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process.test.js","sourceRoot":"","sources":["../../../tests/unit/process.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE3E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;YACtD,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=thread.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/thread.test.ts"],"names":[],"mappings":""}
@@ -1,35 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { Thread, CurrentThread, currentThread } from '@cheatron/native';
3
- describe('Thread Tests', () => {
4
- describe('CurrentThread', () => {
5
- it('should be a singleton instance and valid', () => {
6
- expect(currentThread).toBeInstanceOf(CurrentThread);
7
- expect(currentThread).toBeInstanceOf(Thread);
8
- expect(currentThread.isValid()).toBe(true);
9
- expect(Thread.current()).toBe(currentThread);
10
- });
11
- it('should have a valid handle', () => {
12
- expect(currentThread.handle).toBeDefined();
13
- });
14
- it('should return a valid thread ID', () => {
15
- const id = Thread.currentId();
16
- expect(typeof id).toBe('number');
17
- expect(id).toBeGreaterThan(0);
18
- });
19
- });
20
- describe('Thread Logic', () => {
21
- it('should handle lifecycle of a manual handle', () => {
22
- const thread = new Thread(1234n, undefined, false);
23
- expect(thread.isValid()).toBe(true);
24
- thread.close();
25
- expect(thread.isValid()).toBe(false);
26
- expect(thread.handle).toBeNull();
27
- });
28
- it('should be robust against multiple close calls', () => {
29
- const thread = new Thread(1234n, undefined, false);
30
- thread.close();
31
- expect(() => thread.close()).not.toThrow();
32
- });
33
- });
34
- });
35
- //# sourceMappingURL=thread.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread.test.js","sourceRoot":"","sources":["../../../tests/unit/thread.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAExE,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACpD,MAAM,CAAC,aAAa,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;YAC9B,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,MAAM,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACpD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;YACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=thread_creation.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread_creation.test.d.ts","sourceRoot":"","sources":["../../../tests/unit/thread_creation.test.ts"],"names":[],"mappings":""}
@@ -1,31 +0,0 @@
1
- import { expect, it, describe } from 'bun:test';
2
- import { Thread, Process, Module, ThreadCreationFlags, WaitReturn, STILL_ACTIVE, } from '@cheatron/native';
3
- describe('Thread Creation Tests', () => {
4
- it('should create a local thread, wait for it, and check exit code', () => {
5
- // Use the ergonomic Module helper
6
- const sleepAddr = Module.kernel32.getProcAddress('Sleep');
7
- expect(sleepAddr).not.toBeNull();
8
- // Create a thread that calls Sleep(50)
9
- const thread = Thread.create(sleepAddr, 20, 0, ThreadCreationFlags.IMMEDIATE);
10
- expect(thread.isValid()).toBe(true);
11
- expect(thread.handle).not.toBeNull();
12
- // Wait for the thread to finish
13
- const waitResult = thread.wait(100);
14
- expect(waitResult).toBe(WaitReturn.OBJECT_0);
15
- // Initial exit code on success (Sleep returns void, so exit code is usually the param or 0)
16
- const exitCode = thread.getExitCode();
17
- expect(exitCode).not.toBe(STILL_ACTIVE);
18
- thread.close();
19
- expect(thread.isValid()).toBe(false);
20
- });
21
- it('should create a remote thread in the current process', () => {
22
- const process = Process.current();
23
- const sleepAddr = Module.kernel32.getProcAddress('Sleep');
24
- // Create a remote thread in 'this' process
25
- const thread = process.createThread(sleepAddr, 50, 0, ThreadCreationFlags.IMMEDIATE);
26
- expect(thread.isValid()).toBe(true);
27
- expect(thread.handle).not.toBeNull();
28
- thread.close();
29
- });
30
- });
31
- //# sourceMappingURL=thread_creation.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"thread_creation.test.js","sourceRoot":"","sources":["../../../tests/unit/thread_creation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,MAAM,EACN,OAAO,EACP,MAAM,EACN,mBAAmB,EACnB,UAAU,EACV,YAAY,GAEb,MAAM,kBAAkB,CAAC;AAE1B,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,kCAAkC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEjC,uCAAuC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,SAAS,EACT,EAAY,EACZ,CAAC,EACD,mBAAmB,CAAC,SAAS,CAC9B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAErC,gCAAgC;QAChC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE7C,4FAA4F;QAC5F,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAExC,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE1D,2CAA2C;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CACjC,SAAS,EACT,EAAY,EACZ,CAAC,EACD,mBAAmB,CAAC,SAAS,CAC9B,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAErC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
File without changes
File without changes
File without changes