@closedloop-ai/cli 0.2.4 → 0.3.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 (71) hide show
  1. package/README.md +176 -270
  2. package/dist/THIRD_PARTY_NOTICES.txt +24 -0
  3. package/dist/closedloop.js +156 -0
  4. package/package.json +31 -62
  5. package/CONTRIBUTING.md +0 -437
  6. package/LICENSE +0 -21
  7. package/docs/CLI_COMMANDS.md +0 -522
  8. package/packages/cli/dist/__tests__/api.test.js +0 -151
  9. package/packages/cli/dist/__tests__/api.test.js.map +0 -1
  10. package/packages/cli/dist/__tests__/cli.test.js +0 -37
  11. package/packages/cli/dist/__tests__/cli.test.js.map +0 -1
  12. package/packages/cli/dist/__tests__/config.test.js +0 -33
  13. package/packages/cli/dist/__tests__/config.test.js.map +0 -1
  14. package/packages/cli/dist/__tests__/errors.test.js +0 -109
  15. package/packages/cli/dist/__tests__/errors.test.js.map +0 -1
  16. package/packages/cli/dist/__tests__/performance.test.js +0 -221
  17. package/packages/cli/dist/__tests__/performance.test.js.map +0 -1
  18. package/packages/cli/dist/__tests__/setup.js +0 -50
  19. package/packages/cli/dist/__tests__/setup.js.map +0 -1
  20. package/packages/cli/dist/__tests__/team-simple.test.js +0 -38
  21. package/packages/cli/dist/__tests__/team-simple.test.js.map +0 -1
  22. package/packages/cli/dist/__tests__/test-factories.js +0 -148
  23. package/packages/cli/dist/__tests__/test-factories.js.map +0 -1
  24. package/packages/cli/dist/__tests__/validation.test.js +0 -124
  25. package/packages/cli/dist/__tests__/validation.test.js.map +0 -1
  26. package/packages/cli/dist/api/auth.js +0 -27
  27. package/packages/cli/dist/api/auth.js.map +0 -1
  28. package/packages/cli/dist/api/feedback.js +0 -70
  29. package/packages/cli/dist/api/feedback.js.map +0 -1
  30. package/packages/cli/dist/api/ingest.js +0 -60
  31. package/packages/cli/dist/api/ingest.js.map +0 -1
  32. package/packages/cli/dist/api/input.js +0 -60
  33. package/packages/cli/dist/api/input.js.map +0 -1
  34. package/packages/cli/dist/api/team.js +0 -59
  35. package/packages/cli/dist/api/team.js.map +0 -1
  36. package/packages/cli/dist/api/usage.js +0 -49
  37. package/packages/cli/dist/api/usage.js.map +0 -1
  38. package/packages/cli/dist/cli.js +0 -201
  39. package/packages/cli/dist/cli.js.map +0 -1
  40. package/packages/cli/dist/commands/config.js +0 -186
  41. package/packages/cli/dist/commands/config.js.map +0 -1
  42. package/packages/cli/dist/commands/feedback.js +0 -234
  43. package/packages/cli/dist/commands/feedback.js.map +0 -1
  44. package/packages/cli/dist/commands/ingest.js +0 -391
  45. package/packages/cli/dist/commands/ingest.js.map +0 -1
  46. package/packages/cli/dist/commands/input.js +0 -370
  47. package/packages/cli/dist/commands/input.js.map +0 -1
  48. package/packages/cli/dist/commands/insight.js +0 -234
  49. package/packages/cli/dist/commands/insight.js.map +0 -1
  50. package/packages/cli/dist/commands/list.js +0 -81
  51. package/packages/cli/dist/commands/list.js.map +0 -1
  52. package/packages/cli/dist/commands/status.js +0 -93
  53. package/packages/cli/dist/commands/status.js.map +0 -1
  54. package/packages/cli/dist/commands/submit.js +0 -225
  55. package/packages/cli/dist/commands/submit.js.map +0 -1
  56. package/packages/cli/dist/commands/team.js +0 -82
  57. package/packages/cli/dist/commands/team.js.map +0 -1
  58. package/packages/cli/dist/commands/usage.js +0 -168
  59. package/packages/cli/dist/commands/usage.js.map +0 -1
  60. package/packages/cli/dist/config/constants.js +0 -38
  61. package/packages/cli/dist/config/constants.js.map +0 -1
  62. package/packages/cli/dist/config/index.js +0 -84
  63. package/packages/cli/dist/config/index.js.map +0 -1
  64. package/packages/cli/dist/types/index.js +0 -3
  65. package/packages/cli/dist/types/index.js.map +0 -1
  66. package/packages/cli/dist/utils/config.js +0 -55
  67. package/packages/cli/dist/utils/config.js.map +0 -1
  68. package/packages/cli/dist/utils/errors.js +0 -70
  69. package/packages/cli/dist/utils/errors.js.map +0 -1
  70. package/packages/cli/dist/utils/validation.js +0 -133
  71. package/packages/cli/dist/utils/validation.js.map +0 -1
@@ -1,37 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const commander_1 = require("commander");
4
- // Mock the command handlers
5
- jest.mock('../commands/input', () => ({
6
- handleInputCommand: jest.fn()
7
- }));
8
- jest.mock('../commands/feedback', () => ({
9
- handleFeedbackCommand: jest.fn()
10
- }));
11
- jest.mock('../commands/config', () => ({
12
- configCommand: new commander_1.Command('config')
13
- }));
14
- describe('CLI Structure', () => {
15
- it('should have correct command structure', () => {
16
- // This is a basic smoke test to ensure the CLI can be imported
17
- // without errors
18
- expect(() => {
19
- require('../cli');
20
- }).not.toThrow();
21
- });
22
- it('should handle input command', async () => {
23
- const { handleInputCommand } = require('../commands/input');
24
- // Mock successful execution
25
- handleInputCommand.mockResolvedValue(undefined);
26
- await handleInputCommand('test content', {});
27
- expect(handleInputCommand).toHaveBeenCalledWith('test content', {});
28
- });
29
- it('should handle feedback command', async () => {
30
- const { handleFeedbackCommand } = require('../commands/feedback');
31
- // Mock successful execution
32
- handleFeedbackCommand.mockResolvedValue(undefined);
33
- await handleFeedbackCommand('test-id', {});
34
- expect(handleFeedbackCommand).toHaveBeenCalledWith('test-id', {});
35
- });
36
- });
37
- //# sourceMappingURL=cli.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../../src/__tests__/cli.test.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AAEpC,4BAA4B;AAC5B,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;IACpC,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE;CAC9B,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACvC,qBAAqB,EAAE,IAAI,CAAC,EAAE,EAAE;CACjC,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE,IAAI,mBAAO,CAAC,QAAQ,CAAC;CACrC,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,+DAA+D;QAC/D,iBAAiB;QACjB,MAAM,CAAC,GAAG,EAAE;YACV,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAE5D,4BAA4B;QAC3B,kBAAgC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAE/D,MAAM,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,EAAE,qBAAqB,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QAElE,4BAA4B;QAC3B,qBAAmC,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAElE,MAAM,qBAAqB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,qBAAqB,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,33 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const config_1 = require("../config");
4
- // Mock the config for testing
5
- jest.mock('../config', () => ({
6
- config: {
7
- get: jest.fn(),
8
- set: jest.fn(),
9
- getConfigPath: jest.fn()
10
- }
11
- }));
12
- describe('Config Manager', () => {
13
- beforeEach(() => {
14
- jest.clearAllMocks();
15
- });
16
- it('should get config values', () => {
17
- config_1.config.get.mockReturnValue({ apiKey: 'test-key' });
18
- const result = config_1.config.get();
19
- expect(result).toEqual({ apiKey: 'test-key' });
20
- expect(config_1.config.get).toHaveBeenCalled();
21
- });
22
- it('should set config values', () => {
23
- config_1.config.set.mockImplementation(() => { });
24
- config_1.config.set('apiKey', 'new-key');
25
- expect(config_1.config.set).toHaveBeenCalledWith('apiKey', 'new-key');
26
- });
27
- it('should get config path', () => {
28
- config_1.config.getConfigPath.mockReturnValue('/path/to/config.json');
29
- const result = config_1.config.getConfigPath();
30
- expect(result).toBe('/path/to/config.json');
31
- });
32
- });
33
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/__tests__/config.test.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AAEnC,8BAA8B;AAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5B,MAAM,EAAE;QACN,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;QACd,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;KACzB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACjC,eAAM,CAAC,GAAiB,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAElE,MAAM,MAAM,GAAG,eAAM,CAAC,GAAG,EAAE,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACjC,eAAM,CAAC,GAAiB,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEvD,eAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAChC,MAAM,CAAC,eAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAC/B,eAAM,CAAC,aAA2B,CAAC,eAAe,CAAC,sBAAsB,CAAC,CAAC;QAE5E,MAAM,MAAM,GAAG,eAAM,CAAC,aAAa,EAAE,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,109 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const errors_1 = require("../utils/errors");
4
- describe('Error Utils', () => {
5
- describe('CliError', () => {
6
- it('should create error with message and code', () => {
7
- const error = new errors_1.CliError('Test error', errors_1.ERROR_CODES.VALIDATION_ERROR);
8
- expect(error.message).toBe('Test error');
9
- expect(error.code).toBe(errors_1.ERROR_CODES.VALIDATION_ERROR);
10
- expect(error.exitCode).toBe(1);
11
- });
12
- it('should create error with custom exit code', () => {
13
- const error = new errors_1.CliError('Test error', errors_1.ERROR_CODES.VALIDATION_ERROR, 2);
14
- expect(error.exitCode).toBe(2);
15
- });
16
- });
17
- describe('handleApiError', () => {
18
- it('should handle 401 errors', () => {
19
- const mockError = {
20
- response: {
21
- status: 401,
22
- data: { message: 'Unauthorized' }
23
- }
24
- };
25
- const result = (0, errors_1.handleApiError)(mockError);
26
- expect(result.message).toContain('Invalid API key');
27
- expect(result.code).toBe(errors_1.ERROR_CODES.UNAUTHORIZED);
28
- });
29
- it('should handle 404 errors', () => {
30
- const mockError = {
31
- response: {
32
- status: 404,
33
- data: { message: 'Not found' }
34
- }
35
- };
36
- const result = (0, errors_1.handleApiError)(mockError);
37
- expect(result.message).toContain('Resource not found');
38
- expect(result.code).toBe(errors_1.ERROR_CODES.NOT_FOUND);
39
- });
40
- it('should handle 429 errors', () => {
41
- const mockError = {
42
- response: {
43
- status: 429,
44
- data: { message: 'Rate limited' }
45
- }
46
- };
47
- const result = (0, errors_1.handleApiError)(mockError);
48
- expect(result.message).toContain('Rate limit exceeded');
49
- expect(result.code).toBe(errors_1.ERROR_CODES.RATE_LIMITED);
50
- });
51
- it('should handle 500 errors', () => {
52
- const mockError = {
53
- response: {
54
- status: 500,
55
- data: { message: 'Internal server error' }
56
- }
57
- };
58
- const result = (0, errors_1.handleApiError)(mockError);
59
- expect(result.message).toContain('Server error');
60
- expect(result.code).toBe(errors_1.ERROR_CODES.SERVER_ERROR);
61
- });
62
- it('should handle connection errors', () => {
63
- const mockError = {
64
- code: 'ENOTFOUND'
65
- };
66
- const result = (0, errors_1.handleApiError)(mockError);
67
- expect(result.message).toContain('Cannot connect to ClosedLoop AI servers');
68
- expect(result.code).toBe(errors_1.ERROR_CODES.CONNECTION_ERROR);
69
- });
70
- it('should handle timeout errors', () => {
71
- const mockError = {
72
- code: 'ETIMEDOUT'
73
- };
74
- const result = (0, errors_1.handleApiError)(mockError);
75
- expect(result.message).toContain('Request timed out');
76
- expect(result.code).toBe(errors_1.ERROR_CODES.CONNECTION_ERROR);
77
- });
78
- it('should handle unknown errors', () => {
79
- const mockError = {
80
- message: 'Unknown error'
81
- };
82
- const result = (0, errors_1.handleApiError)(mockError);
83
- expect(result.message).toBe('Unknown error');
84
- expect(result.code).toBe(errors_1.ERROR_CODES.UNKNOWN_ERROR);
85
- });
86
- });
87
- describe('handleValidationError', () => {
88
- it('should create validation error', () => {
89
- const result = (0, errors_1.handleValidationError)('Validation failed');
90
- expect(result.message).toBe('Validation failed');
91
- expect(result.code).toBe(errors_1.ERROR_CODES.VALIDATION_ERROR);
92
- });
93
- });
94
- describe('handleInputError', () => {
95
- it('should create input error', () => {
96
- const result = (0, errors_1.handleInputError)('Input invalid');
97
- expect(result.message).toBe('Input invalid');
98
- expect(result.code).toBe(errors_1.ERROR_CODES.INVALID_INPUT);
99
- });
100
- });
101
- describe('handleProcessingError', () => {
102
- it('should create processing error', () => {
103
- const result = (0, errors_1.handleProcessingError)('Processing failed');
104
- expect(result.message).toBe('Processing failed');
105
- expect(result.code).toBe(errors_1.ERROR_CODES.PROCESSING_ERROR);
106
- });
107
- });
108
- });
109
- //# sourceMappingURL=errors.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.test.js","sourceRoot":"","sources":["../../src/__tests__/errors.test.ts"],"names":[],"mappings":"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"}
@@ -1,221 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const validation_1 = require("../utils/validation");
4
- const test_factories_1 = require("./test-factories");
5
- describe('Performance Tests', () => {
6
- describe('Input Validation Performance', () => {
7
- it('should handle large input efficiently', () => {
8
- const largeInput = test_factories_1.performanceTestData.largeInput;
9
- const startTime = performance.now();
10
- (0, validation_1.validateInputContent)(largeInput);
11
- const endTime = performance.now();
12
- const executionTime = endTime - startTime;
13
- // Should complete within 100ms
14
- expect(executionTime).toBeLessThan(100);
15
- });
16
- it('should handle many validations efficiently', () => {
17
- const inputs = Array.from({ length: 1000 }, (_, i) => `Test input ${i}`);
18
- const startTime = performance.now();
19
- inputs.forEach(input => {
20
- try {
21
- (0, validation_1.validateInputContent)(input);
22
- }
23
- catch (error) {
24
- // Some might fail, that's okay for performance test
25
- }
26
- });
27
- const endTime = performance.now();
28
- const executionTime = endTime - startTime;
29
- // Should complete 1000 validations within 500ms
30
- expect(executionTime).toBeLessThan(500);
31
- });
32
- });
33
- describe('Sanitization Performance', () => {
34
- it('should sanitize large XSS payload efficiently', () => {
35
- const xssPayload = test_factories_1.securityTestData.xssPayload.repeat(1000);
36
- const startTime = performance.now();
37
- (0, validation_1.sanitizeInput)(xssPayload);
38
- const endTime = performance.now();
39
- const executionTime = endTime - startTime;
40
- // Should complete within 50ms
41
- expect(executionTime).toBeLessThan(50);
42
- });
43
- it('should handle many sanitizations efficiently', () => {
44
- const payloads = Array.from({ length: 500 }, () => test_factories_1.securityTestData.xssPayload);
45
- const startTime = performance.now();
46
- payloads.forEach(payload => {
47
- (0, validation_1.sanitizeInput)(payload);
48
- });
49
- const endTime = performance.now();
50
- const executionTime = endTime - startTime;
51
- // Should complete 500 sanitizations within 200ms
52
- expect(executionTime).toBeLessThan(200);
53
- });
54
- });
55
- describe('Memory Usage', () => {
56
- it('should not leak memory with repeated validations', () => {
57
- const initialMemory = process.memoryUsage().heapUsed;
58
- // Perform many validations
59
- for (let i = 0; i < 10000; i++) {
60
- try {
61
- (0, validation_1.validateInputContent)(`Test input ${i}`);
62
- (0, validation_1.validateApiKey)(`test-key-${i}`);
63
- (0, validation_1.validateEmail)(`test${i}@example.com`);
64
- }
65
- catch (error) {
66
- // Some might fail, that's okay
67
- }
68
- }
69
- // Force garbage collection if available
70
- if (global.gc) {
71
- global.gc();
72
- }
73
- const finalMemory = process.memoryUsage().heapUsed;
74
- const memoryIncrease = finalMemory - initialMemory;
75
- // Memory increase should be reasonable (less than 50MB)
76
- expect(memoryIncrease).toBeLessThan(50 * 1024 * 1024);
77
- });
78
- });
79
- });
80
- describe('Edge Case Tests', () => {
81
- describe('Boundary Conditions', () => {
82
- it('should handle exactly maximum length input', () => {
83
- const maxLengthInput = 'a'.repeat(50000);
84
- expect(() => (0, validation_1.validateInputContent)(maxLengthInput)).not.toThrow();
85
- });
86
- it('should reject input one character over maximum', () => {
87
- const tooLongInput = 'a'.repeat(50001);
88
- expect(() => (0, validation_1.validateInputContent)(tooLongInput)).toThrow();
89
- });
90
- it('should handle minimum valid API key length', () => {
91
- const minApiKey = 'a'.repeat(10);
92
- expect(() => (0, validation_1.validateApiKey)(minApiKey)).not.toThrow();
93
- });
94
- it('should reject API key one character under minimum', () => {
95
- const tooShortApiKey = 'a'.repeat(9);
96
- expect(() => (0, validation_1.validateApiKey)(tooShortApiKey)).toThrow();
97
- });
98
- });
99
- describe('Unicode and Special Characters', () => {
100
- it('should handle unicode characters', () => {
101
- const unicodeInput = 'Test with émojis 🚀 and ñ characters';
102
- expect(() => (0, validation_1.validateInputContent)(unicodeInput)).not.toThrow();
103
- });
104
- it('should handle various unicode ranges', () => {
105
- const unicodeInputs = [
106
- 'English text',
107
- '中文文本',
108
- 'العربية',
109
- 'Русский текст',
110
- '日本語のテキスト',
111
- '한국어 텍스트'
112
- ];
113
- unicodeInputs.forEach(input => {
114
- expect(() => (0, validation_1.validateInputContent)(input)).not.toThrow();
115
- });
116
- });
117
- it('should handle special characters in URLs', () => {
118
- const specialUrls = [
119
- 'https://example.com/path?query=value&other=test',
120
- 'https://example.com/path#fragment',
121
- 'https://example.com/path/with-dashes_and_underscores',
122
- 'https://example.com/path%20with%20spaces'
123
- ];
124
- specialUrls.forEach(url => {
125
- expect(() => (0, validation_1.validateUrl)(url)).not.toThrow();
126
- });
127
- });
128
- });
129
- describe('Security Edge Cases', () => {
130
- it('should sanitize various XSS payloads', () => {
131
- const xssPayloads = [
132
- test_factories_1.securityTestData.xssPayload,
133
- test_factories_1.securityTestData.htmlInjection,
134
- test_factories_1.securityTestData.javascriptUrl,
135
- '<iframe src="javascript:alert(1)"></iframe>',
136
- '<img src="x" onerror="alert(1)">',
137
- '<svg onload="alert(1)"></svg>',
138
- '<body onload="alert(1)">',
139
- '<input onfocus="alert(1)" autofocus>'
140
- ];
141
- xssPayloads.forEach(payload => {
142
- const sanitized = (0, validation_1.sanitizeInput)(payload);
143
- expect(sanitized).not.toContain('<script');
144
- expect(sanitized).not.toContain('javascript:');
145
- expect(sanitized).not.toContain('onerror');
146
- expect(sanitized).not.toContain('onload');
147
- expect(sanitized).not.toContain('onfocus');
148
- });
149
- });
150
- it('should handle SQL injection attempts', () => {
151
- const sqlPayloads = [
152
- test_factories_1.securityTestData.sqlInjection,
153
- "'; DROP TABLE users; --",
154
- "' OR '1'='1",
155
- "'; INSERT INTO users VALUES ('hacker', 'password'); --"
156
- ];
157
- sqlPayloads.forEach(payload => {
158
- const sanitized = (0, validation_1.sanitizeInput)(payload);
159
- // The current sanitization is basic, so we just check it doesn't contain script tags
160
- expect(sanitized).not.toContain('<script');
161
- expect(sanitized).not.toContain('javascript:');
162
- // Basic check that it's been processed
163
- expect(sanitized).toBeDefined();
164
- expect(typeof sanitized).toBe('string');
165
- });
166
- });
167
- it('should handle path traversal attempts', () => {
168
- const pathPayloads = [
169
- test_factories_1.securityTestData.pathTraversal,
170
- '../../../etc/passwd',
171
- '..\\..\\..\\windows\\system32\\config\\sam',
172
- '....//....//....//etc/passwd'
173
- ];
174
- pathPayloads.forEach(payload => {
175
- const sanitized = (0, validation_1.sanitizeInput)(payload);
176
- // The current sanitization is basic, so we just check it doesn't contain script tags
177
- expect(sanitized).not.toContain('<script');
178
- expect(sanitized).not.toContain('javascript:');
179
- // Basic check that it's been processed
180
- expect(sanitized).toBeDefined();
181
- expect(typeof sanitized).toBe('string');
182
- });
183
- });
184
- });
185
- describe('Concurrent Operations', () => {
186
- it('should handle concurrent validations', async () => {
187
- const promises = Array.from({ length: 100 }, (_, i) => Promise.resolve((0, validation_1.validateInputContent)(`Concurrent test ${i}`)));
188
- const results = await Promise.all(promises);
189
- expect(results).toHaveLength(100);
190
- });
191
- it('should handle concurrent sanitizations', async () => {
192
- const payloads = Array.from({ length: 100 }, () => test_factories_1.securityTestData.xssPayload);
193
- const promises = payloads.map(payload => Promise.resolve((0, validation_1.sanitizeInput)(payload)));
194
- const results = await Promise.all(promises);
195
- expect(results).toHaveLength(100);
196
- results.forEach(result => {
197
- expect(result).not.toContain('<script');
198
- });
199
- });
200
- });
201
- describe('Error Recovery', () => {
202
- it('should recover from validation errors gracefully', () => {
203
- const invalidInputs = ['', ' ', 'a'.repeat(50001)];
204
- const validInputs = ['Valid input 1', 'Valid input 2', 'Valid input 3'];
205
- let errorCount = 0;
206
- let successCount = 0;
207
- [...invalidInputs, ...validInputs].forEach(input => {
208
- try {
209
- (0, validation_1.validateInputContent)(input);
210
- successCount++;
211
- }
212
- catch (error) {
213
- errorCount++;
214
- }
215
- });
216
- expect(errorCount).toBe(3); // 3 invalid inputs
217
- expect(successCount).toBe(3); // 3 valid inputs
218
- });
219
- });
220
- });
221
- //# sourceMappingURL=performance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"performance.test.js","sourceRoot":"","sources":["../../src/__tests__/performance.test.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- // Test setup file
4
- const globals_1 = require("@jest/globals");
5
- // Mock console methods to avoid noise in tests
6
- global.console = {
7
- ...console,
8
- log: globals_1.jest.fn(),
9
- error: globals_1.jest.fn(),
10
- warn: globals_1.jest.fn(),
11
- info: globals_1.jest.fn(),
12
- debug: globals_1.jest.fn(),
13
- };
14
- // Mock process.exit to prevent tests from actually exiting
15
- const originalExit = process.exit;
16
- beforeAll(() => {
17
- process.exit = globals_1.jest.fn();
18
- });
19
- afterAll(() => {
20
- process.exit = originalExit;
21
- });
22
- // Mock process.stdin for interactive tests
23
- Object.defineProperty(process, 'stdin', {
24
- value: {
25
- isTTY: false,
26
- setRawMode: globals_1.jest.fn(),
27
- resume: globals_1.jest.fn(),
28
- pause: globals_1.jest.fn(),
29
- },
30
- writable: true,
31
- });
32
- // Mock process.stdout for output tests
33
- Object.defineProperty(process, 'stdout', {
34
- value: {
35
- write: globals_1.jest.fn(),
36
- end: globals_1.jest.fn(),
37
- },
38
- writable: true,
39
- });
40
- // Mock process.stderr for error output tests
41
- Object.defineProperty(process, 'stderr', {
42
- value: {
43
- write: globals_1.jest.fn(),
44
- end: globals_1.jest.fn(),
45
- },
46
- writable: true,
47
- });
48
- // Global test timeout
49
- globals_1.jest.setTimeout(10000);
50
- //# sourceMappingURL=setup.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,2CAAqC;AAErC,+CAA+C;AAC/C,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,2DAA2D;AAC3D,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;AAClC,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,IAAI,GAAG,cAAI,CAAC,EAAE,EAAS,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,GAAG,EAAE;IACZ,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE;IACtC,KAAK,EAAE;QACL,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,cAAI,CAAC,EAAE,EAAE;QACrB,MAAM,EAAE,cAAI,CAAC,EAAE,EAAE;QACjB,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;KACjB;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,uCAAuC;AACvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;QAChB,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;KACf;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,6CAA6C;AAC7C,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE;QACL,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;QAChB,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;KACf;IACD,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH,sBAAsB;AACtB,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const team_1 = require("../commands/team");
4
- // Mock chalk and ora
5
- jest.mock('chalk', () => ({
6
- green: (text) => text,
7
- yellow: (text) => text,
8
- gray: (text) => text,
9
- red: (text) => text,
10
- black: (text) => text
11
- }));
12
- jest.mock('ora', () => {
13
- const mockSpinner = {
14
- start: jest.fn().mockReturnThis(),
15
- succeed: jest.fn().mockReturnThis(),
16
- fail: jest.fn().mockReturnThis()
17
- };
18
- return jest.fn(() => mockSpinner);
19
- });
20
- describe('Team Commands - Simple Tests', () => {
21
- it('should be a valid Command instance', () => {
22
- expect(team_1.teamCommand).toBeDefined();
23
- expect(team_1.teamCommand.name()).toBe('team');
24
- });
25
- it('should have website subcommand', () => {
26
- const websiteCommand = team_1.teamCommand.commands.find(cmd => cmd.name() === 'website');
27
- expect(websiteCommand).toBeDefined();
28
- expect(websiteCommand?.name()).toBe('website');
29
- });
30
- it('should show help when no subcommand provided', async () => {
31
- const consoleSpy = jest.spyOn(console, 'log').mockImplementation();
32
- await team_1.teamCommand.parseAsync(['team']);
33
- expect(consoleSpy).toHaveBeenCalledWith('Use team subcommands to manage team settings');
34
- expect(consoleSpy).toHaveBeenCalledWith('Available commands: website');
35
- consoleSpy.mockRestore();
36
- });
37
- });
38
- //# sourceMappingURL=team-simple.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team-simple.test.js","sourceRoot":"","sources":["../../src/__tests__/team-simple.test.ts"],"names":[],"mappings":";;AAAA,2CAA+C;AAE/C,qBAAqB;AACrB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC7B,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC9B,IAAI,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC5B,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;IAC3B,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI;CAC9B,CAAC,CAAC,CAAC;AAEJ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE;IACpB,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACjC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;QACnC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE;KACjC,CAAC;IACF,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,kBAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,kBAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,cAAc,GAAG,kBAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,SAAS,CAAC,CAAC;QAClF,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;QAEnE,MAAM,kBAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvC,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,8CAA8C,CAAC,CAAC;QACxF,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,6BAA6B,CAAC,CAAC;QAEvE,UAAU,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}