task-pipeliner 0.2.2 → 0.2.3

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 (168) hide show
  1. package/README.ko.md +17 -1
  2. package/README.md +17 -1
  3. package/dist/index.cjs +18 -16
  4. package/dist/index.js +18 -16
  5. package/dist/task-pipeliner-rs.node +0 -0
  6. package/package.json +10 -1
  7. package/dist/cli/index.d.ts +0 -19
  8. package/dist/cli/index.d.ts.map +0 -1
  9. package/dist/cli/index.js +0 -305
  10. package/dist/cli/index.js.map +0 -1
  11. package/dist/cli/prompts.d.ts +0 -48
  12. package/dist/cli/prompts.d.ts.map +0 -1
  13. package/dist/cli/prompts.js +0 -75
  14. package/dist/cli/prompts.js.map +0 -1
  15. package/dist/cli/ui.d.ts +0 -39
  16. package/dist/cli/ui.d.ts.map +0 -1
  17. package/dist/cli/ui.js +0 -84
  18. package/dist/cli/ui.js.map +0 -1
  19. package/dist/core/__tests__/actual-execution.test.d.ts +0 -2
  20. package/dist/core/__tests__/actual-execution.test.d.ts.map +0 -1
  21. package/dist/core/__tests__/actual-execution.test.js +0 -147
  22. package/dist/core/__tests__/actual-execution.test.js.map +0 -1
  23. package/dist/core/__tests__/base-dir.test.d.ts +0 -2
  24. package/dist/core/__tests__/base-dir.test.d.ts.map +0 -1
  25. package/dist/core/__tests__/base-dir.test.js +0 -146
  26. package/dist/core/__tests__/base-dir.test.js.map +0 -1
  27. package/dist/core/__tests__/built-code-execution.test.d.ts +0 -2
  28. package/dist/core/__tests__/built-code-execution.test.d.ts.map +0 -1
  29. package/dist/core/__tests__/built-code-execution.test.js +0 -48
  30. package/dist/core/__tests__/built-code-execution.test.js.map +0 -1
  31. package/dist/core/__tests__/choose-as-var-condition.test.d.ts +0 -2
  32. package/dist/core/__tests__/choose-as-var-condition.test.d.ts.map +0 -1
  33. package/dist/core/__tests__/choose-as-var-condition.test.js +0 -308
  34. package/dist/core/__tests__/choose-as-var-condition.test.js.map +0 -1
  35. package/dist/core/__tests__/cli-integration.test.d.ts +0 -2
  36. package/dist/core/__tests__/cli-integration.test.d.ts.map +0 -1
  37. package/dist/core/__tests__/cli-integration.test.js +0 -83
  38. package/dist/core/__tests__/cli-integration.test.js.map +0 -1
  39. package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts +0 -2
  40. package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts.map +0 -1
  41. package/dist/core/__tests__/comprehensive-basic-yaml.test.js +0 -114
  42. package/dist/core/__tests__/comprehensive-basic-yaml.test.js.map +0 -1
  43. package/dist/core/__tests__/condition-evaluator.test.d.ts +0 -2
  44. package/dist/core/__tests__/condition-evaluator.test.d.ts.map +0 -1
  45. package/dist/core/__tests__/condition-evaluator.test.js +0 -164
  46. package/dist/core/__tests__/condition-evaluator.test.js.map +0 -1
  47. package/dist/core/__tests__/debug-basic-yaml.test.d.ts +0 -2
  48. package/dist/core/__tests__/debug-basic-yaml.test.d.ts.map +0 -1
  49. package/dist/core/__tests__/debug-basic-yaml.test.js +0 -126
  50. package/dist/core/__tests__/debug-basic-yaml.test.js.map +0 -1
  51. package/dist/core/__tests__/example-files.test.d.ts +0 -2
  52. package/dist/core/__tests__/example-files.test.d.ts.map +0 -1
  53. package/dist/core/__tests__/example-files.test.js +0 -199
  54. package/dist/core/__tests__/example-files.test.js.map +0 -1
  55. package/dist/core/__tests__/executor-choice-integration.test.d.ts +0 -2
  56. package/dist/core/__tests__/executor-choice-integration.test.d.ts.map +0 -1
  57. package/dist/core/__tests__/executor-choice-integration.test.js +0 -169
  58. package/dist/core/__tests__/executor-choice-integration.test.js.map +0 -1
  59. package/dist/core/__tests__/executor-choice.test.d.ts +0 -2
  60. package/dist/core/__tests__/executor-choice.test.d.ts.map +0 -1
  61. package/dist/core/__tests__/executor-choice.test.js +0 -170
  62. package/dist/core/__tests__/executor-choice.test.js.map +0 -1
  63. package/dist/core/__tests__/executor-parallel.test.d.ts +0 -2
  64. package/dist/core/__tests__/executor-parallel.test.d.ts.map +0 -1
  65. package/dist/core/__tests__/executor-parallel.test.js +0 -129
  66. package/dist/core/__tests__/executor-parallel.test.js.map +0 -1
  67. package/dist/core/__tests__/executor-prompt.test.d.ts +0 -2
  68. package/dist/core/__tests__/executor-prompt.test.d.ts.map +0 -1
  69. package/dist/core/__tests__/executor-prompt.test.js +0 -147
  70. package/dist/core/__tests__/executor-prompt.test.js.map +0 -1
  71. package/dist/core/__tests__/executor-real-scenario.test.d.ts +0 -2
  72. package/dist/core/__tests__/executor-real-scenario.test.d.ts.map +0 -1
  73. package/dist/core/__tests__/executor-real-scenario.test.js +0 -169
  74. package/dist/core/__tests__/executor-real-scenario.test.js.map +0 -1
  75. package/dist/core/__tests__/file-condition.test.d.ts +0 -2
  76. package/dist/core/__tests__/file-condition.test.d.ts.map +0 -1
  77. package/dist/core/__tests__/file-condition.test.js +0 -172
  78. package/dist/core/__tests__/file-condition.test.js.map +0 -1
  79. package/dist/core/__tests__/final-verification.test.d.ts +0 -2
  80. package/dist/core/__tests__/final-verification.test.d.ts.map +0 -1
  81. package/dist/core/__tests__/final-verification.test.js +0 -56
  82. package/dist/core/__tests__/final-verification.test.js.map +0 -1
  83. package/dist/core/__tests__/parallel-when-condition.test.d.ts +0 -2
  84. package/dist/core/__tests__/parallel-when-condition.test.d.ts.map +0 -1
  85. package/dist/core/__tests__/parallel-when-condition.test.js +0 -155
  86. package/dist/core/__tests__/parallel-when-condition.test.js.map +0 -1
  87. package/dist/core/__tests__/parser.test.d.ts +0 -2
  88. package/dist/core/__tests__/parser.test.d.ts.map +0 -1
  89. package/dist/core/__tests__/parser.test.js +0 -91
  90. package/dist/core/__tests__/parser.test.js.map +0 -1
  91. package/dist/core/__tests__/real-inquirer-test.test.d.ts +0 -2
  92. package/dist/core/__tests__/real-inquirer-test.test.d.ts.map +0 -1
  93. package/dist/core/__tests__/real-inquirer-test.test.js +0 -20
  94. package/dist/core/__tests__/real-inquirer-test.test.js.map +0 -1
  95. package/dist/core/__tests__/reproduce-bug.test.d.ts +0 -2
  96. package/dist/core/__tests__/reproduce-bug.test.d.ts.map +0 -1
  97. package/dist/core/__tests__/reproduce-bug.test.js +0 -85
  98. package/dist/core/__tests__/reproduce-bug.test.js.map +0 -1
  99. package/dist/core/__tests__/timeout-retry.test.d.ts +0 -2
  100. package/dist/core/__tests__/timeout-retry.test.d.ts.map +0 -1
  101. package/dist/core/__tests__/timeout-retry.test.js +0 -184
  102. package/dist/core/__tests__/timeout-retry.test.js.map +0 -1
  103. package/dist/core/__tests__/workflow-validation.test.d.ts +0 -2
  104. package/dist/core/__tests__/workflow-validation.test.d.ts.map +0 -1
  105. package/dist/core/__tests__/workflow-validation.test.js +0 -116
  106. package/dist/core/__tests__/workflow-validation.test.js.map +0 -1
  107. package/dist/core/__tests__/workspace.test.d.ts +0 -2
  108. package/dist/core/__tests__/workspace.test.d.ts.map +0 -1
  109. package/dist/core/__tests__/workspace.test.js +0 -29
  110. package/dist/core/__tests__/workspace.test.js.map +0 -1
  111. package/dist/core/__tests__/yaml-integration.test.d.ts +0 -2
  112. package/dist/core/__tests__/yaml-integration.test.d.ts.map +0 -1
  113. package/dist/core/__tests__/yaml-integration.test.js +0 -114
  114. package/dist/core/__tests__/yaml-integration.test.js.map +0 -1
  115. package/dist/core/__tests__/yaml-scenarios.test.d.ts +0 -2
  116. package/dist/core/__tests__/yaml-scenarios.test.d.ts.map +0 -1
  117. package/dist/core/__tests__/yaml-scenarios.test.js +0 -197
  118. package/dist/core/__tests__/yaml-scenarios.test.js.map +0 -1
  119. package/dist/core/condition-evaluator.d.ts +0 -44
  120. package/dist/core/condition-evaluator.d.ts.map +0 -1
  121. package/dist/core/condition-evaluator.js +0 -121
  122. package/dist/core/condition-evaluator.js.map +0 -1
  123. package/dist/core/executor.d.ts +0 -172
  124. package/dist/core/executor.d.ts.map +0 -1
  125. package/dist/core/executor.js +0 -590
  126. package/dist/core/executor.js.map +0 -1
  127. package/dist/core/history.d.ts +0 -51
  128. package/dist/core/history.d.ts.map +0 -1
  129. package/dist/core/history.js +0 -57
  130. package/dist/core/history.js.map +0 -1
  131. package/dist/core/parser.d.ts +0 -41
  132. package/dist/core/parser.d.ts.map +0 -1
  133. package/dist/core/parser.js +0 -206
  134. package/dist/core/parser.js.map +0 -1
  135. package/dist/core/recorder.d.ts +0 -48
  136. package/dist/core/recorder.d.ts.map +0 -1
  137. package/dist/core/recorder.js +0 -56
  138. package/dist/core/recorder.js.map +0 -1
  139. package/dist/core/rust-task-runner.d.ts +0 -14
  140. package/dist/core/rust-task-runner.d.ts.map +0 -1
  141. package/dist/core/rust-task-runner.js +0 -34
  142. package/dist/core/rust-task-runner.js.map +0 -1
  143. package/dist/core/task-runner.d.ts +0 -63
  144. package/dist/core/task-runner.d.ts.map +0 -1
  145. package/dist/core/task-runner.js +0 -259
  146. package/dist/core/task-runner.js.map +0 -1
  147. package/dist/core/template.d.ts +0 -11
  148. package/dist/core/template.d.ts.map +0 -1
  149. package/dist/core/template.js +0 -36
  150. package/dist/core/template.js.map +0 -1
  151. package/dist/core/workflow-schema.d.ts +0 -31
  152. package/dist/core/workflow-schema.d.ts.map +0 -1
  153. package/dist/core/workflow-schema.js +0 -127
  154. package/dist/core/workflow-schema.js.map +0 -1
  155. package/dist/core/workspace.d.ts +0 -90
  156. package/dist/core/workspace.d.ts.map +0 -1
  157. package/dist/core/workspace.js +0 -143
  158. package/dist/core/workspace.js.map +0 -1
  159. package/dist/index.d.ts.map +0 -1
  160. package/dist/index.js.map +0 -1
  161. package/dist/types/condition.d.ts +0 -62
  162. package/dist/types/condition.d.ts.map +0 -1
  163. package/dist/types/condition.js +0 -6
  164. package/dist/types/condition.js.map +0 -1
  165. package/dist/types/workflow.d.ts +0 -90
  166. package/dist/types/workflow.d.ts.map +0 -1
  167. package/dist/types/workflow.js +0 -2
  168. package/dist/types/workflow.js.map +0 -1
@@ -1,114 +0,0 @@
1
- import { readFileSync } from 'fs';
2
- import { resolve, dirname } from 'path';
3
- import { describe, it, expect, vi, beforeEach } from 'vitest';
4
- import { parse } from 'yaml';
5
- import { Executor } from '../executor';
6
- // Mock TaskRunner
7
- const mockRun = vi.fn().mockResolvedValue(true);
8
- vi.mock('../task-runner.js', () => {
9
- return {
10
- TaskRunner: vi.fn().mockImplementation(() => {
11
- return {
12
- run: mockRun,
13
- };
14
- }),
15
- };
16
- });
17
- // Mock ChoicePrompt, TextPrompt
18
- const mockChoicePrompt = vi.fn();
19
- const mockTextPrompt = vi.fn();
20
- vi.mock('../../cli/prompts.js', () => {
21
- return {
22
- ChoicePrompt: vi.fn().mockImplementation(() => {
23
- return {
24
- prompt: mockChoicePrompt,
25
- };
26
- }),
27
- TextPrompt: vi.fn().mockImplementation(() => {
28
- return {
29
- prompt: mockTextPrompt,
30
- };
31
- }),
32
- };
33
- });
34
- describe('YAML Integration Tests', () => {
35
- let executor;
36
- beforeEach(() => {
37
- vi.clearAllMocks();
38
- executor = new Executor();
39
- });
40
- it('should execute basic.yaml workflow correctly - staging choice', async () => {
41
- const yamlContent = readFileSync('examples/yaml-examples/basic.yaml', 'utf-8');
42
- const workflow = parse(yamlContent);
43
- // Mock staging selection
44
- mockChoicePrompt.mockResolvedValueOnce({ id: 'staging', label: 'Staging' });
45
- await executor.execute(workflow);
46
- // All steps should be executed
47
- const calls = mockRun.mock.calls.map((call) => call[0]);
48
- expect(calls).toContain('echo "Building..."');
49
- // Staging step should execute after staging is selected
50
- expect(calls).toContain('echo "Deploying to staging..."');
51
- // Prod step should not be executed
52
- expect(calls).not.toContain('echo "Deploying to production..."');
53
- });
54
- it('should execute basic.yaml workflow correctly - prod choice', async () => {
55
- const yamlContent = readFileSync('examples/yaml-examples/basic.yaml', 'utf-8');
56
- const workflow = parse(yamlContent);
57
- // Mock prod selection
58
- mockChoicePrompt.mockResolvedValueOnce({ id: 'prod', label: 'Production' });
59
- await executor.execute(workflow);
60
- // Prod step should execute after prod is selected
61
- const calls = mockRun.mock.calls.map((call) => call[0]);
62
- expect(calls).toContain('echo "Deploying to production..."');
63
- // Staging step should not be executed
64
- expect(calls).not.toContain('echo "Deploying to staging..."');
65
- });
66
- it('should execute parallel.yaml workflow correctly', async () => {
67
- const yamlContent = readFileSync('examples/yaml-examples/parallel.yaml', 'utf-8');
68
- const workflow = parse(yamlContent);
69
- mockChoicePrompt.mockResolvedValueOnce({ id: 'blue_green', label: 'Blue-Green' });
70
- await executor.execute(workflow);
71
- // All parallel steps should be executed
72
- const calls = mockRun.mock.calls.map((call) => call[0]);
73
- expect(calls).toContain('echo "Running web tests..."');
74
- expect(calls).toContain('echo "Running API tests..."');
75
- // Step execution based on selection
76
- expect(calls).toContain('echo "Deploying with blue-green strategy..."');
77
- });
78
- it('should verify workspace state after each step', async () => {
79
- const yamlContent = readFileSync('examples/yaml-examples/basic.yaml', 'utf-8');
80
- const workflow = parse(yamlContent);
81
- mockChoicePrompt.mockResolvedValueOnce({ id: 'staging', label: 'Staging' });
82
- await executor.execute(workflow);
83
- // Check workspace state
84
- const workspace = executor.workspace;
85
- // Staging choice should be set
86
- expect(workspace.hasChoice('staging')).toBe(true);
87
- expect(workspace.getChoice('staging')).toBe('staging');
88
- // Prod choice should not be set
89
- expect(workspace.hasChoice('prod')).toBe(false);
90
- });
91
- it('should execute base-dir-example.yaml with baseDir correctly', async () => {
92
- const yamlContent = readFileSync('examples/yaml-examples/base-dir-example.yaml', 'utf-8');
93
- const workflow = parse(yamlContent);
94
- // Set file path for baseDir resolution
95
- workflow._filePath = resolve(process.cwd(), 'examples/yaml-examples/base-dir-example.yaml');
96
- await executor.execute(workflow);
97
- // Verify commands were executed
98
- expect(mockRun).toHaveBeenCalledTimes(2);
99
- // Verify baseDir was resolved correctly
100
- // baseDir is relative to YAML file directory (examples/), so ./examples resolves to examples/examples
101
- if (!workflow._filePath) {
102
- throw new Error('_filePath should be set');
103
- }
104
- const yamlDir = dirname(workflow._filePath);
105
- const expectedBaseDir = resolve(yamlDir, 'examples');
106
- const actualBaseDir = executor.baseDir;
107
- expect(actualBaseDir).toBe(expectedBaseDir);
108
- // Verify all commands used the correct cwd
109
- mockRun.mock.calls.forEach((call) => {
110
- expect(call[8]).toBe(expectedBaseDir); // cwd is 9th parameter (index 8)
111
- });
112
- });
113
- });
114
- //# sourceMappingURL=yaml-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yaml-integration.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/yaml-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=yaml-scenarios.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yaml-scenarios.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/yaml-scenarios.test.ts"],"names":[],"mappings":""}
@@ -1,197 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { Executor } from '../executor';
3
- // Mock ChoicePrompt, TextPrompt
4
- vi.mock('../../cli/prompts.js', () => {
5
- return {
6
- ChoicePrompt: vi.fn().mockImplementation(() => {
7
- return {
8
- prompt: vi.fn(),
9
- };
10
- }),
11
- TextPrompt: vi.fn().mockImplementation(() => {
12
- return {
13
- prompt: vi.fn(),
14
- };
15
- }),
16
- };
17
- });
18
- // Mock TaskRunner
19
- const mockRun = vi.fn().mockResolvedValue(true);
20
- vi.mock('../task-runner.js', () => {
21
- return {
22
- TaskRunner: vi.fn().mockImplementation(() => {
23
- return {
24
- run: mockRun,
25
- displayBufferedOutput: vi.fn(),
26
- };
27
- }),
28
- };
29
- });
30
- describe('YAML Scenario Tests', () => {
31
- let executor;
32
- beforeEach(() => {
33
- vi.clearAllMocks();
34
- executor = new Executor();
35
- });
36
- describe('basic.yaml', () => {
37
- it('should execute basic workflow with choice', async () => {
38
- const workflow = {
39
- steps: [
40
- { run: 'echo "Building..."' },
41
- {
42
- choose: {
43
- message: 'Deploy to which environment?',
44
- options: [
45
- { id: 'staging', label: 'Staging' },
46
- { id: 'prod', label: 'Production' },
47
- ],
48
- as: 'env',
49
- },
50
- },
51
- {
52
- when: {
53
- var: {
54
- env: 'staging',
55
- },
56
- },
57
- run: 'echo "Deploying to staging..."',
58
- },
59
- {
60
- when: {
61
- var: {
62
- env: 'prod',
63
- },
64
- },
65
- run: 'echo "Deploying to production..."',
66
- },
67
- ],
68
- };
69
- const choicePrompt = executor.choicePrompt;
70
- choicePrompt.prompt = vi.fn().mockResolvedValue({ id: 'staging', label: 'Staging' });
71
- await executor.execute(workflow);
72
- const calls = mockRun.mock.calls.map((call) => call[0]);
73
- expect(calls).toContain('echo "Deploying to staging..."');
74
- expect(calls).not.toContain('echo "Deploying to production..."');
75
- });
76
- });
77
- describe('prompt.yaml', () => {
78
- it('should execute prompt workflow with variables', async () => {
79
- const workflow = {
80
- steps: [
81
- {
82
- prompt: {
83
- message: 'What is your name?',
84
- as: 'user_name',
85
- },
86
- },
87
- {
88
- when: { var: 'user_name' },
89
- run: 'echo "Hello, {{user_name}}!"',
90
- },
91
- {
92
- prompt: {
93
- message: 'Enter version number:',
94
- as: 'version',
95
- default: '1.0.0',
96
- },
97
- },
98
- {
99
- when: { var: 'version' },
100
- run: 'echo "Building version {{version}}..."',
101
- },
102
- ],
103
- };
104
- const textPrompt = executor.textPrompt;
105
- textPrompt.prompt = vi.fn().mockResolvedValueOnce('John').mockResolvedValueOnce('2.0.0');
106
- await executor.execute(workflow);
107
- const calls = mockRun.mock.calls.map((call) => call[0]);
108
- expect(calls).toContain('echo "Hello, John!"');
109
- expect(calls).toContain('echo "Building version 2.0.0..."');
110
- });
111
- });
112
- describe('parallel.yaml', () => {
113
- it('should execute parallel steps', async () => {
114
- const workflow = {
115
- steps: [
116
- {
117
- parallel: [
118
- { run: 'echo "Running web tests..."' },
119
- { run: 'echo "Running API tests..."' },
120
- ],
121
- },
122
- {
123
- choose: {
124
- message: 'Deploy strategy?',
125
- options: [
126
- { id: 'blue_green', label: 'Blue-Green' },
127
- { id: 'rolling', label: 'Rolling' },
128
- ],
129
- as: 'strategy',
130
- },
131
- },
132
- {
133
- when: {
134
- var: {
135
- strategy: 'blue_green',
136
- },
137
- },
138
- run: 'echo "Deploying with blue-green strategy..."',
139
- },
140
- ],
141
- };
142
- const choicePrompt = executor.choicePrompt;
143
- choicePrompt.prompt = vi.fn().mockResolvedValue({ id: 'blue_green', label: 'Blue-Green' });
144
- await executor.execute(workflow);
145
- const calls = mockRun.mock.calls.map((call) => call[0]);
146
- expect(calls).toContain('echo "Running web tests..."');
147
- expect(calls).toContain('echo "Running API tests..."');
148
- expect(calls).toContain('echo "Deploying with blue-green strategy..."');
149
- });
150
- });
151
- describe('conditions.yaml', () => {
152
- it('should check file existence', async () => {
153
- const workflow = {
154
- steps: [
155
- {
156
- when: { file: 'package.json' },
157
- run: 'echo "Package.json exists"',
158
- },
159
- {
160
- when: {
161
- not: { file: 'nonexistent.txt' },
162
- },
163
- run: 'echo "File does not exist"',
164
- },
165
- ],
166
- };
167
- await executor.execute(workflow);
168
- const calls = mockRun.mock.calls.map((call) => call[0]);
169
- expect(calls).toContain('echo "Package.json exists"');
170
- expect(calls).toContain('echo "File does not exist"');
171
- });
172
- });
173
- describe('variables.yaml', () => {
174
- it('should use variables from prompts', async () => {
175
- const workflow = {
176
- steps: [
177
- {
178
- prompt: {
179
- message: 'Enter project name:',
180
- as: 'project_name',
181
- },
182
- },
183
- {
184
- when: { var: 'project_name' },
185
- run: 'echo "Building {{project_name}}..."',
186
- },
187
- ],
188
- };
189
- const textPrompt = executor.textPrompt;
190
- textPrompt.prompt = vi.fn().mockResolvedValue('my-app');
191
- await executor.execute(workflow);
192
- const calls = mockRun.mock.calls.map((call) => call[0]);
193
- expect(calls).toContain('echo "Building my-app..."');
194
- });
195
- });
196
- });
197
- //# sourceMappingURL=yaml-scenarios.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"yaml-scenarios.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/yaml-scenarios.test.ts"],"names":[],"mappings":"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"}
@@ -1,44 +0,0 @@
1
- import type { Condition } from '../types/condition';
2
- import type { Workspace } from './workspace';
3
- /**
4
- * Condition Evaluator
5
- * Evaluates conditions as questions about the workspace
6
- */
7
- export declare class ConditionEvaluator {
8
- private workspace;
9
- constructor(workspace: Workspace);
10
- /**
11
- * Evaluate condition as a question about the workspace
12
- * Returns true if condition is met, false otherwise
13
- */
14
- evaluate(condition: Condition): boolean;
15
- /**
16
- * Check if a variable or fact exists in workspace, or compare variable value
17
- *
18
- * Supports two formats:
19
- * 1. { var: 'name' } - Check if variable exists
20
- * 2. { var: { name: 'value' } } - Check if variable equals specific value
21
- */
22
- private evaluateVarExists;
23
- /**
24
- * Check if a file or directory exists
25
- */
26
- private evaluateFileExists;
27
- /**
28
- * Check if user made a specific choice
29
- */
30
- private evaluateChoice;
31
- /**
32
- * Check if all conditions are true (AND logic)
33
- */
34
- private evaluateAll;
35
- /**
36
- * Check if any condition is true (OR logic)
37
- */
38
- private evaluateAny;
39
- /**
40
- * Negate a condition (NOT logic)
41
- */
42
- private evaluateNot;
43
- }
44
- //# sourceMappingURL=condition-evaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"condition-evaluator.d.ts","sourceRoot":"","sources":["../../src/core/condition-evaluator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AAEH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAoCvC;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;CAGpB"}
@@ -1,121 +0,0 @@
1
- import { existsSync } from 'fs';
2
- import { resolve } from 'path';
3
- /**
4
- * Condition Evaluator
5
- * Evaluates conditions as questions about the workspace
6
- */
7
- export class ConditionEvaluator {
8
- workspace;
9
- constructor(workspace) {
10
- this.workspace = workspace;
11
- }
12
- /**
13
- * Evaluate condition as a question about the workspace
14
- * Returns true if condition is met, false otherwise
15
- */
16
- evaluate(condition) {
17
- // Check if variable or fact exists, or compare variable value
18
- // This should be checked before 'choice' to support var value comparison
19
- if ('var' in condition || 'has' in condition) {
20
- return this.evaluateVarExists(condition);
21
- }
22
- // Check if file exists
23
- if ('file' in condition) {
24
- return this.evaluateFileExists(condition);
25
- }
26
- // Check if user made a specific choice (deprecated, use var instead)
27
- // Kept for backward compatibility
28
- if ('choice' in condition) {
29
- return this.evaluateChoice(condition);
30
- }
31
- // All conditions must be true (AND)
32
- if ('all' in condition) {
33
- return this.evaluateAll(condition);
34
- }
35
- // Any condition can be true (OR)
36
- if ('any' in condition) {
37
- return this.evaluateAny(condition);
38
- }
39
- // Negate a condition (NOT)
40
- if ('not' in condition) {
41
- return this.evaluateNot(condition);
42
- }
43
- return false;
44
- }
45
- /**
46
- * Check if a variable or fact exists in workspace, or compare variable value
47
- *
48
- * Supports two formats:
49
- * 1. { var: 'name' } - Check if variable exists
50
- * 2. { var: { name: 'value' } } - Check if variable equals specific value
51
- */
52
- evaluateVarExists(condition) {
53
- // Handle 'has' alias (existence check only)
54
- if (condition.has) {
55
- return this.workspace.hasVariable(condition.has) || this.workspace.hasFact(condition.has);
56
- }
57
- if (!condition.var) {
58
- return false;
59
- }
60
- // If var is an object, it's a value comparison: { var: { env: 'dev' } }
61
- if (typeof condition.var === 'object') {
62
- // Check each variable-value pair
63
- for (const [variableName, expectedValue] of Object.entries(condition.var)) {
64
- // Get variable value (prefer variable over fact)
65
- const variableValue = this.workspace.getVariable(variableName);
66
- const factValue = this.workspace.getFact(variableName);
67
- const actualValue = variableValue ?? (factValue !== undefined ? factValue.toString() : undefined);
68
- // If variable doesn't exist, condition is false
69
- if (actualValue === undefined) {
70
- return false;
71
- }
72
- // Compare values (both should be strings for comparison)
73
- if (actualValue !== expectedValue) {
74
- return false;
75
- }
76
- }
77
- return true;
78
- }
79
- // If var is a string, it's an existence check: { var: 'name' }
80
- const variableName = condition.var;
81
- return this.workspace.hasVariable(variableName) || this.workspace.hasFact(variableName);
82
- }
83
- /**
84
- * Check if a file or directory exists
85
- */
86
- evaluateFileExists(condition) {
87
- try {
88
- const filePath = condition.file.trim();
89
- const absolutePath = resolve(process.cwd(), filePath);
90
- return existsSync(absolutePath);
91
- }
92
- catch {
93
- return false;
94
- }
95
- }
96
- /**
97
- * Check if user made a specific choice
98
- */
99
- evaluateChoice(condition) {
100
- return this.workspace.hasChoice(condition.choice);
101
- }
102
- /**
103
- * Check if all conditions are true (AND logic)
104
- */
105
- evaluateAll(condition) {
106
- return condition.all.every((subCondition) => this.evaluate(subCondition));
107
- }
108
- /**
109
- * Check if any condition is true (OR logic)
110
- */
111
- evaluateAny(condition) {
112
- return condition.any.some((subCondition) => this.evaluate(subCondition));
113
- }
114
- /**
115
- * Negate a condition (NOT logic)
116
- */
117
- evaluateNot(condition) {
118
- return !this.evaluate(condition.not);
119
- }
120
- }
121
- //# sourceMappingURL=condition-evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"condition-evaluator.js","sourceRoot":"","sources":["../../src/core/condition-evaluator.ts"],"names":[],"mappings":"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"}