task-pipeliner 0.2.2 → 0.2.4
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/README.ko.md +17 -1
- package/README.md +17 -1
- package/dist/index.cjs +18 -16
- package/dist/index.js +18 -16
- package/dist/task-pipeliner-rs.node +0 -0
- package/package.json +17 -1
- package/dist/cli/index.d.ts +0 -19
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -305
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/prompts.d.ts +0 -48
- package/dist/cli/prompts.d.ts.map +0 -1
- package/dist/cli/prompts.js +0 -75
- package/dist/cli/prompts.js.map +0 -1
- package/dist/cli/ui.d.ts +0 -39
- package/dist/cli/ui.d.ts.map +0 -1
- package/dist/cli/ui.js +0 -84
- package/dist/cli/ui.js.map +0 -1
- package/dist/core/__tests__/actual-execution.test.d.ts +0 -2
- package/dist/core/__tests__/actual-execution.test.d.ts.map +0 -1
- package/dist/core/__tests__/actual-execution.test.js +0 -147
- package/dist/core/__tests__/actual-execution.test.js.map +0 -1
- package/dist/core/__tests__/base-dir.test.d.ts +0 -2
- package/dist/core/__tests__/base-dir.test.d.ts.map +0 -1
- package/dist/core/__tests__/base-dir.test.js +0 -146
- package/dist/core/__tests__/base-dir.test.js.map +0 -1
- package/dist/core/__tests__/built-code-execution.test.d.ts +0 -2
- package/dist/core/__tests__/built-code-execution.test.d.ts.map +0 -1
- package/dist/core/__tests__/built-code-execution.test.js +0 -48
- package/dist/core/__tests__/built-code-execution.test.js.map +0 -1
- package/dist/core/__tests__/choose-as-var-condition.test.d.ts +0 -2
- package/dist/core/__tests__/choose-as-var-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/choose-as-var-condition.test.js +0 -308
- package/dist/core/__tests__/choose-as-var-condition.test.js.map +0 -1
- package/dist/core/__tests__/cli-integration.test.d.ts +0 -2
- package/dist/core/__tests__/cli-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/cli-integration.test.js +0 -83
- package/dist/core/__tests__/cli-integration.test.js.map +0 -1
- package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts +0 -2
- package/dist/core/__tests__/comprehensive-basic-yaml.test.d.ts.map +0 -1
- package/dist/core/__tests__/comprehensive-basic-yaml.test.js +0 -114
- package/dist/core/__tests__/comprehensive-basic-yaml.test.js.map +0 -1
- package/dist/core/__tests__/condition-evaluator.test.d.ts +0 -2
- package/dist/core/__tests__/condition-evaluator.test.d.ts.map +0 -1
- package/dist/core/__tests__/condition-evaluator.test.js +0 -164
- package/dist/core/__tests__/condition-evaluator.test.js.map +0 -1
- package/dist/core/__tests__/debug-basic-yaml.test.d.ts +0 -2
- package/dist/core/__tests__/debug-basic-yaml.test.d.ts.map +0 -1
- package/dist/core/__tests__/debug-basic-yaml.test.js +0 -126
- package/dist/core/__tests__/debug-basic-yaml.test.js.map +0 -1
- package/dist/core/__tests__/example-files.test.d.ts +0 -2
- package/dist/core/__tests__/example-files.test.d.ts.map +0 -1
- package/dist/core/__tests__/example-files.test.js +0 -199
- package/dist/core/__tests__/example-files.test.js.map +0 -1
- package/dist/core/__tests__/executor-choice-integration.test.d.ts +0 -2
- package/dist/core/__tests__/executor-choice-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-choice-integration.test.js +0 -169
- package/dist/core/__tests__/executor-choice-integration.test.js.map +0 -1
- package/dist/core/__tests__/executor-choice.test.d.ts +0 -2
- package/dist/core/__tests__/executor-choice.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-choice.test.js +0 -170
- package/dist/core/__tests__/executor-choice.test.js.map +0 -1
- package/dist/core/__tests__/executor-parallel.test.d.ts +0 -2
- package/dist/core/__tests__/executor-parallel.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-parallel.test.js +0 -129
- package/dist/core/__tests__/executor-parallel.test.js.map +0 -1
- package/dist/core/__tests__/executor-prompt.test.d.ts +0 -2
- package/dist/core/__tests__/executor-prompt.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-prompt.test.js +0 -147
- package/dist/core/__tests__/executor-prompt.test.js.map +0 -1
- package/dist/core/__tests__/executor-real-scenario.test.d.ts +0 -2
- package/dist/core/__tests__/executor-real-scenario.test.d.ts.map +0 -1
- package/dist/core/__tests__/executor-real-scenario.test.js +0 -169
- package/dist/core/__tests__/executor-real-scenario.test.js.map +0 -1
- package/dist/core/__tests__/file-condition.test.d.ts +0 -2
- package/dist/core/__tests__/file-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/file-condition.test.js +0 -172
- package/dist/core/__tests__/file-condition.test.js.map +0 -1
- package/dist/core/__tests__/final-verification.test.d.ts +0 -2
- package/dist/core/__tests__/final-verification.test.d.ts.map +0 -1
- package/dist/core/__tests__/final-verification.test.js +0 -56
- package/dist/core/__tests__/final-verification.test.js.map +0 -1
- package/dist/core/__tests__/parallel-when-condition.test.d.ts +0 -2
- package/dist/core/__tests__/parallel-when-condition.test.d.ts.map +0 -1
- package/dist/core/__tests__/parallel-when-condition.test.js +0 -155
- package/dist/core/__tests__/parallel-when-condition.test.js.map +0 -1
- package/dist/core/__tests__/parser.test.d.ts +0 -2
- package/dist/core/__tests__/parser.test.d.ts.map +0 -1
- package/dist/core/__tests__/parser.test.js +0 -91
- package/dist/core/__tests__/parser.test.js.map +0 -1
- package/dist/core/__tests__/real-inquirer-test.test.d.ts +0 -2
- package/dist/core/__tests__/real-inquirer-test.test.d.ts.map +0 -1
- package/dist/core/__tests__/real-inquirer-test.test.js +0 -20
- package/dist/core/__tests__/real-inquirer-test.test.js.map +0 -1
- package/dist/core/__tests__/reproduce-bug.test.d.ts +0 -2
- package/dist/core/__tests__/reproduce-bug.test.d.ts.map +0 -1
- package/dist/core/__tests__/reproduce-bug.test.js +0 -85
- package/dist/core/__tests__/reproduce-bug.test.js.map +0 -1
- package/dist/core/__tests__/timeout-retry.test.d.ts +0 -2
- package/dist/core/__tests__/timeout-retry.test.d.ts.map +0 -1
- package/dist/core/__tests__/timeout-retry.test.js +0 -184
- package/dist/core/__tests__/timeout-retry.test.js.map +0 -1
- package/dist/core/__tests__/workflow-validation.test.d.ts +0 -2
- package/dist/core/__tests__/workflow-validation.test.d.ts.map +0 -1
- package/dist/core/__tests__/workflow-validation.test.js +0 -116
- package/dist/core/__tests__/workflow-validation.test.js.map +0 -1
- package/dist/core/__tests__/workspace.test.d.ts +0 -2
- package/dist/core/__tests__/workspace.test.d.ts.map +0 -1
- package/dist/core/__tests__/workspace.test.js +0 -29
- package/dist/core/__tests__/workspace.test.js.map +0 -1
- package/dist/core/__tests__/yaml-integration.test.d.ts +0 -2
- package/dist/core/__tests__/yaml-integration.test.d.ts.map +0 -1
- package/dist/core/__tests__/yaml-integration.test.js +0 -114
- package/dist/core/__tests__/yaml-integration.test.js.map +0 -1
- package/dist/core/__tests__/yaml-scenarios.test.d.ts +0 -2
- package/dist/core/__tests__/yaml-scenarios.test.d.ts.map +0 -1
- package/dist/core/__tests__/yaml-scenarios.test.js +0 -197
- package/dist/core/__tests__/yaml-scenarios.test.js.map +0 -1
- package/dist/core/condition-evaluator.d.ts +0 -44
- package/dist/core/condition-evaluator.d.ts.map +0 -1
- package/dist/core/condition-evaluator.js +0 -121
- package/dist/core/condition-evaluator.js.map +0 -1
- package/dist/core/executor.d.ts +0 -172
- package/dist/core/executor.d.ts.map +0 -1
- package/dist/core/executor.js +0 -590
- package/dist/core/executor.js.map +0 -1
- package/dist/core/history.d.ts +0 -51
- package/dist/core/history.d.ts.map +0 -1
- package/dist/core/history.js +0 -57
- package/dist/core/history.js.map +0 -1
- package/dist/core/parser.d.ts +0 -41
- package/dist/core/parser.d.ts.map +0 -1
- package/dist/core/parser.js +0 -206
- package/dist/core/parser.js.map +0 -1
- package/dist/core/recorder.d.ts +0 -48
- package/dist/core/recorder.d.ts.map +0 -1
- package/dist/core/recorder.js +0 -56
- package/dist/core/recorder.js.map +0 -1
- package/dist/core/rust-task-runner.d.ts +0 -14
- package/dist/core/rust-task-runner.d.ts.map +0 -1
- package/dist/core/rust-task-runner.js +0 -34
- package/dist/core/rust-task-runner.js.map +0 -1
- package/dist/core/task-runner.d.ts +0 -63
- package/dist/core/task-runner.d.ts.map +0 -1
- package/dist/core/task-runner.js +0 -259
- package/dist/core/task-runner.js.map +0 -1
- package/dist/core/template.d.ts +0 -11
- package/dist/core/template.d.ts.map +0 -1
- package/dist/core/template.js +0 -36
- package/dist/core/template.js.map +0 -1
- package/dist/core/workflow-schema.d.ts +0 -31
- package/dist/core/workflow-schema.d.ts.map +0 -1
- package/dist/core/workflow-schema.js +0 -127
- package/dist/core/workflow-schema.js.map +0 -1
- package/dist/core/workspace.d.ts +0 -90
- package/dist/core/workspace.d.ts.map +0 -1
- package/dist/core/workspace.js +0 -143
- package/dist/core/workspace.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types/condition.d.ts +0 -62
- package/dist/types/condition.d.ts.map +0 -1
- package/dist/types/condition.js +0 -6
- package/dist/types/condition.js.map +0 -1
- package/dist/types/workflow.d.ts +0 -90
- package/dist/types/workflow.d.ts.map +0 -1
- package/dist/types/workflow.js +0 -2
- package/dist/types/workflow.js.map +0 -1
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { YAMLParser, JSONParser, getParser } from '../parser';
|
|
3
|
-
describe('Workflow Parser', () => {
|
|
4
|
-
describe('YAMLParser', () => {
|
|
5
|
-
it('should parse YAML workflow', () => {
|
|
6
|
-
const parser = new YAMLParser();
|
|
7
|
-
const yaml = `
|
|
8
|
-
name: test
|
|
9
|
-
steps:
|
|
10
|
-
- run: echo "hello"
|
|
11
|
-
- run: echo "world"
|
|
12
|
-
`;
|
|
13
|
-
const workflow = parser.parse(yaml);
|
|
14
|
-
expect(workflow.name).toBe('test');
|
|
15
|
-
expect(workflow.steps).toHaveLength(2);
|
|
16
|
-
expect(workflow.steps[0]).toHaveProperty('run', 'echo "hello"');
|
|
17
|
-
expect(workflow.steps[1]).toHaveProperty('run', 'echo "world"');
|
|
18
|
-
});
|
|
19
|
-
it('should extract step line numbers from YAML', () => {
|
|
20
|
-
const parser = new YAMLParser();
|
|
21
|
-
const yaml = `steps:
|
|
22
|
-
- run: echo "hello"
|
|
23
|
-
- run: echo "world"
|
|
24
|
-
`;
|
|
25
|
-
const lineNumbers = parser.extractStepLineNumbers(yaml);
|
|
26
|
-
expect(lineNumbers.get(0)).toBe(2); // First step is on line 2
|
|
27
|
-
expect(lineNumbers.get(1)).toBe(3); // Second step is on line 3
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('JSONParser', () => {
|
|
31
|
-
it('should parse JSON workflow', () => {
|
|
32
|
-
const parser = new JSONParser();
|
|
33
|
-
const json = JSON.stringify({
|
|
34
|
-
name: 'test',
|
|
35
|
-
steps: [{ run: 'echo "hello"' }, { run: 'echo "world"' }],
|
|
36
|
-
});
|
|
37
|
-
const workflow = parser.parse(json);
|
|
38
|
-
expect(workflow.name).toBe('test');
|
|
39
|
-
expect(workflow.steps).toHaveLength(2);
|
|
40
|
-
expect(workflow.steps[0]).toHaveProperty('run', 'echo "hello"');
|
|
41
|
-
expect(workflow.steps[1]).toHaveProperty('run', 'echo "world"');
|
|
42
|
-
});
|
|
43
|
-
it('should throw error for invalid JSON', () => {
|
|
44
|
-
const parser = new JSONParser();
|
|
45
|
-
const invalidJson = '{ invalid json }';
|
|
46
|
-
expect(() => parser.parse(invalidJson)).toThrow('Invalid JSON format');
|
|
47
|
-
});
|
|
48
|
-
it('should extract step line numbers from JSON', () => {
|
|
49
|
-
const parser = new JSONParser();
|
|
50
|
-
const json = `{
|
|
51
|
-
"steps": [
|
|
52
|
-
{
|
|
53
|
-
"run": "echo hello"
|
|
54
|
-
},
|
|
55
|
-
{
|
|
56
|
-
"run": "echo world"
|
|
57
|
-
}
|
|
58
|
-
]
|
|
59
|
-
}`;
|
|
60
|
-
const lineNumbers = parser.extractStepLineNumbers(json);
|
|
61
|
-
// JSON steps start at the line where the object starts
|
|
62
|
-
expect(lineNumbers.size).toBeGreaterThan(0);
|
|
63
|
-
expect(lineNumbers.get(0)).toBeDefined();
|
|
64
|
-
expect(lineNumbers.get(1)).toBeDefined();
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
describe('getParser', () => {
|
|
68
|
-
it('should return YAMLParser for .yaml extension', () => {
|
|
69
|
-
const parser = getParser('workflow.yaml');
|
|
70
|
-
expect(parser).toBeInstanceOf(YAMLParser);
|
|
71
|
-
});
|
|
72
|
-
it('should return YAMLParser for .yml extension', () => {
|
|
73
|
-
const parser = getParser('workflow.yml');
|
|
74
|
-
expect(parser).toBeInstanceOf(YAMLParser);
|
|
75
|
-
});
|
|
76
|
-
it('should return JSONParser for .json extension', () => {
|
|
77
|
-
const parser = getParser('workflow.json');
|
|
78
|
-
expect(parser).toBeInstanceOf(JSONParser);
|
|
79
|
-
});
|
|
80
|
-
it('should default to YAMLParser for unknown extension', () => {
|
|
81
|
-
const parser = getParser('workflow.txt');
|
|
82
|
-
expect(parser).toBeInstanceOf(YAMLParser);
|
|
83
|
-
});
|
|
84
|
-
it('should handle case-insensitive extensions', () => {
|
|
85
|
-
expect(getParser('workflow.YAML')).toBeInstanceOf(YAMLParser);
|
|
86
|
-
expect(getParser('workflow.YML')).toBeInstanceOf(YAMLParser);
|
|
87
|
-
expect(getParser('workflow.JSON')).toBeInstanceOf(JSONParser);
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
});
|
|
91
|
-
//# sourceMappingURL=parser.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/parser.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-inquirer-test.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/real-inquirer-test.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import inquirer from 'inquirer';
|
|
2
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
-
import { ChoicePrompt } from '../../cli/prompts';
|
|
4
|
-
// Test using actual inquirer
|
|
5
|
-
describe('Real Inquirer Test', () => {
|
|
6
|
-
it('should return correct format from inquirer', async () => {
|
|
7
|
-
const choicePrompt = new ChoicePrompt();
|
|
8
|
-
// Mock inquirer directly
|
|
9
|
-
const mockInquirer = vi.spyOn(inquirer, 'prompt');
|
|
10
|
-
mockInquirer.mockResolvedValueOnce({ choice: 'staging' });
|
|
11
|
-
const result = await choicePrompt.prompt('Test message', [
|
|
12
|
-
{ id: 'staging', label: 'Staging' },
|
|
13
|
-
{ id: 'prod', label: 'Production' },
|
|
14
|
-
]);
|
|
15
|
-
expect(result).toEqual({ id: 'staging', label: 'Staging' });
|
|
16
|
-
expect(result.id).toBe('staging');
|
|
17
|
-
mockInquirer.mockRestore();
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=real-inquirer-test.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"real-inquirer-test.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/real-inquirer-test.test.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,6BAA6B;AAC7B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QAExC,yBAAyB;QACzB,MAAM,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAClD,YAAY,CAAC,qBAAqB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE;YACvD,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;YACnC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAElC,YAAY,CAAC,WAAW,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce-bug.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/reproduce-bug.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from 'fs';
|
|
2
|
-
import { describe, expect, it, vi } from 'vitest';
|
|
3
|
-
import { parse } from 'yaml';
|
|
4
|
-
import { Executor } from '../executor';
|
|
5
|
-
// Bug reproduction test: same environment as actual execution
|
|
6
|
-
describe('BUG REPRODUCTION: Choice condition not working', () => {
|
|
7
|
-
it('REPRODUCE: Execute basic.yaml and verify staging step runs', async () => {
|
|
8
|
-
const content = readFileSync('examples/yaml-examples/basic.yaml', 'utf-8');
|
|
9
|
-
const workflow = parse(content);
|
|
10
|
-
const executor = new Executor();
|
|
11
|
-
const executed = [];
|
|
12
|
-
// Use actual taskRunner
|
|
13
|
-
const taskRunner = executor.taskRunner;
|
|
14
|
-
const originalRun = taskRunner.run.bind(taskRunner);
|
|
15
|
-
taskRunner.run = vi.fn().mockImplementation(async (cmd) => {
|
|
16
|
-
executed.push(cmd);
|
|
17
|
-
console.log(`[EXEC] ${cmd}`);
|
|
18
|
-
return await originalRun(cmd);
|
|
19
|
-
});
|
|
20
|
-
// Use actual choicePrompt (mocked)
|
|
21
|
-
const choicePrompt = executor.choicePrompt;
|
|
22
|
-
choicePrompt.prompt = vi.fn().mockResolvedValue({ id: 'staging', label: 'Staging' });
|
|
23
|
-
// Mock TextPrompt (prevent timeout)
|
|
24
|
-
const textPrompt = executor.textPrompt;
|
|
25
|
-
textPrompt.prompt = vi.fn().mockResolvedValue('1.0.0');
|
|
26
|
-
process.env.CI = 'false';
|
|
27
|
-
try {
|
|
28
|
-
// Execute
|
|
29
|
-
await executor.execute(workflow);
|
|
30
|
-
// Verify
|
|
31
|
-
console.log('\n=== EXECUTION RESULT ===');
|
|
32
|
-
console.log('Executed:', executed);
|
|
33
|
-
console.log('Workspace choices:', Array.from(executor.workspace.state.choices.entries()));
|
|
34
|
-
// Required: staging step must execute
|
|
35
|
-
expect(executed).toContain('echo "Deploying to staging..."');
|
|
36
|
-
expect(executed).not.toContain('echo "Deploying to production..."');
|
|
37
|
-
// Verify workspace
|
|
38
|
-
const workspace = executor.workspace;
|
|
39
|
-
expect(workspace.hasChoice('staging')).toBe(true);
|
|
40
|
-
expect(workspace.getChoice('staging')).toBe('staging');
|
|
41
|
-
if (!executed.includes('echo "Deploying to staging..."')) {
|
|
42
|
-
throw new Error('BUG REPRODUCED: staging step did not execute!');
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
finally {
|
|
46
|
-
delete process.env.CI;
|
|
47
|
-
}
|
|
48
|
-
});
|
|
49
|
-
it('DEBUG: Trace exact execution flow', async () => {
|
|
50
|
-
const workflow = {
|
|
51
|
-
steps: [
|
|
52
|
-
{ choose: { message: 'Choose?', options: [{ id: 'staging', label: 'S' }] } },
|
|
53
|
-
{ choose: { message: 'Choose?', options: [{ id: 'staging', label: 'S' }], as: 'env' } },
|
|
54
|
-
{ when: { var: { env: 'staging' } }, run: 'echo "Staging"' },
|
|
55
|
-
],
|
|
56
|
-
};
|
|
57
|
-
const executor = new Executor();
|
|
58
|
-
const executed = [];
|
|
59
|
-
const taskRunner = executor.taskRunner;
|
|
60
|
-
taskRunner.run = vi.fn().mockImplementation((cmd) => {
|
|
61
|
-
executed.push(cmd);
|
|
62
|
-
return Promise.resolve(true);
|
|
63
|
-
});
|
|
64
|
-
const choicePrompt = executor.choicePrompt;
|
|
65
|
-
choicePrompt.prompt = vi
|
|
66
|
-
.fn()
|
|
67
|
-
.mockResolvedValueOnce({ id: 'staging', label: 'S' })
|
|
68
|
-
.mockResolvedValueOnce({ id: 'staging', label: 'S' });
|
|
69
|
-
// Mock TextPrompt (prevent timeout)
|
|
70
|
-
const textPrompt = executor.textPrompt;
|
|
71
|
-
textPrompt.prompt = vi.fn().mockResolvedValue('1.0.0');
|
|
72
|
-
// Workspace state before execution
|
|
73
|
-
const workspaceBefore = executor.workspace;
|
|
74
|
-
console.log('Before execution - choices:', Array.from(workspaceBefore.state.choices.entries()));
|
|
75
|
-
await executor.execute(workflow);
|
|
76
|
-
// Workspace state after execution
|
|
77
|
-
const workspaceAfter = executor.workspace;
|
|
78
|
-
console.log('After execution - choices:', Array.from(workspaceAfter.state.choices.entries()));
|
|
79
|
-
console.log('Executed commands:', executed);
|
|
80
|
-
// Required verification
|
|
81
|
-
expect(workspaceAfter.hasChoice('staging')).toBe(true);
|
|
82
|
-
expect(executed).toContain('echo "Staging"');
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
//# sourceMappingURL=reproduce-bug.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reproduce-bug.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/reproduce-bug.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeout-retry.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/timeout-retry.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
-
import { Executor } from '../executor';
|
|
3
|
-
// Mock TaskRunner
|
|
4
|
-
const mockRun = vi.fn();
|
|
5
|
-
vi.mock('../task-runner.js', () => {
|
|
6
|
-
return {
|
|
7
|
-
TaskRunner: vi.fn().mockImplementation(() => {
|
|
8
|
-
return {
|
|
9
|
-
run: mockRun,
|
|
10
|
-
};
|
|
11
|
-
}),
|
|
12
|
-
};
|
|
13
|
-
});
|
|
14
|
-
describe('Timeout and Retry', () => {
|
|
15
|
-
let executor;
|
|
16
|
-
beforeEach(() => {
|
|
17
|
-
vi.clearAllMocks();
|
|
18
|
-
executor = new Executor();
|
|
19
|
-
});
|
|
20
|
-
describe('Timeout', () => {
|
|
21
|
-
it('should pass timeout to TaskRunner', async () => {
|
|
22
|
-
mockRun.mockResolvedValueOnce(true);
|
|
23
|
-
const workflow = {
|
|
24
|
-
steps: [
|
|
25
|
-
{
|
|
26
|
-
run: 'echo "test"',
|
|
27
|
-
timeout: 30, // 30 seconds
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
};
|
|
31
|
-
await executor.execute(workflow);
|
|
32
|
-
expect(mockRun).toHaveBeenCalledWith('echo "test"', expect.any(Number), 'echo "test"', undefined, false, false, undefined, undefined, undefined, 30 // timeout should be passed
|
|
33
|
-
);
|
|
34
|
-
});
|
|
35
|
-
it('should handle timeout when command exceeds limit', async () => {
|
|
36
|
-
// Simulate timeout by returning false
|
|
37
|
-
mockRun.mockResolvedValueOnce(false);
|
|
38
|
-
const workflow = {
|
|
39
|
-
steps: [
|
|
40
|
-
{
|
|
41
|
-
run: 'sleep 100',
|
|
42
|
-
timeout: 1, // 1 second timeout
|
|
43
|
-
},
|
|
44
|
-
],
|
|
45
|
-
};
|
|
46
|
-
// Executor throws error on failure, which is expected
|
|
47
|
-
await expect(executor.execute(workflow)).rejects.toThrow();
|
|
48
|
-
expect(mockRun).toHaveBeenCalledWith('sleep 100', expect.any(Number), 'sleep 100', undefined, false, false, undefined, undefined, undefined, 1);
|
|
49
|
-
});
|
|
50
|
-
it('should work without timeout (undefined)', async () => {
|
|
51
|
-
mockRun.mockResolvedValueOnce(true);
|
|
52
|
-
const workflow = {
|
|
53
|
-
steps: [
|
|
54
|
-
{
|
|
55
|
-
run: 'echo "test"',
|
|
56
|
-
// no timeout specified
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
};
|
|
60
|
-
await executor.execute(workflow);
|
|
61
|
-
expect(mockRun).toHaveBeenCalledWith('echo "test"', expect.any(Number), 'echo "test"', undefined, false, false, undefined, undefined, undefined, undefined // timeout should be undefined
|
|
62
|
-
);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('Retry', () => {
|
|
66
|
-
it('should retry on failure', async () => {
|
|
67
|
-
// First attempt fails, second succeeds
|
|
68
|
-
mockRun.mockResolvedValueOnce(false);
|
|
69
|
-
mockRun.mockResolvedValueOnce(true);
|
|
70
|
-
const workflow = {
|
|
71
|
-
steps: [
|
|
72
|
-
{
|
|
73
|
-
run: 'echo "test"',
|
|
74
|
-
retry: 1, // Retry once
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
};
|
|
78
|
-
await executor.execute(workflow);
|
|
79
|
-
// Should be called twice (initial + 1 retry)
|
|
80
|
-
expect(mockRun).toHaveBeenCalledTimes(2);
|
|
81
|
-
});
|
|
82
|
-
it('should retry multiple times', async () => {
|
|
83
|
-
// First two attempts fail, third succeeds
|
|
84
|
-
mockRun.mockResolvedValueOnce(false);
|
|
85
|
-
mockRun.mockResolvedValueOnce(false);
|
|
86
|
-
mockRun.mockResolvedValueOnce(true);
|
|
87
|
-
const workflow = {
|
|
88
|
-
steps: [
|
|
89
|
-
{
|
|
90
|
-
run: 'echo "test"',
|
|
91
|
-
retry: 2, // Retry twice
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
};
|
|
95
|
-
await executor.execute(workflow);
|
|
96
|
-
// Should be called 3 times (initial + 2 retries)
|
|
97
|
-
expect(mockRun).toHaveBeenCalledTimes(3);
|
|
98
|
-
});
|
|
99
|
-
it('should stop retrying after success', async () => {
|
|
100
|
-
// First attempt succeeds
|
|
101
|
-
mockRun.mockResolvedValueOnce(true);
|
|
102
|
-
const workflow = {
|
|
103
|
-
steps: [
|
|
104
|
-
{
|
|
105
|
-
run: 'echo "test"',
|
|
106
|
-
retry: 5, // Even though retry is 5, should stop after success
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
};
|
|
110
|
-
await executor.execute(workflow);
|
|
111
|
-
// Should be called only once (success on first try)
|
|
112
|
-
expect(mockRun).toHaveBeenCalledTimes(1);
|
|
113
|
-
});
|
|
114
|
-
it('should stop after max retries even if still failing', async () => {
|
|
115
|
-
// All attempts fail
|
|
116
|
-
mockRun.mockResolvedValue(false);
|
|
117
|
-
const workflow = {
|
|
118
|
-
steps: [
|
|
119
|
-
{
|
|
120
|
-
run: 'echo "test"',
|
|
121
|
-
retry: 2, // Retry twice
|
|
122
|
-
},
|
|
123
|
-
],
|
|
124
|
-
};
|
|
125
|
-
// Executor throws error on failure after all retries, which is expected
|
|
126
|
-
await expect(executor.execute(workflow)).rejects.toThrow();
|
|
127
|
-
// Should be called 3 times (initial + 2 retries), then stop
|
|
128
|
-
expect(mockRun).toHaveBeenCalledTimes(3);
|
|
129
|
-
});
|
|
130
|
-
it('should not retry if retry is 0', async () => {
|
|
131
|
-
mockRun.mockResolvedValueOnce(false);
|
|
132
|
-
const workflow = {
|
|
133
|
-
steps: [
|
|
134
|
-
{
|
|
135
|
-
run: 'echo "test"',
|
|
136
|
-
retry: 0, // No retry
|
|
137
|
-
},
|
|
138
|
-
],
|
|
139
|
-
};
|
|
140
|
-
// Executor throws error on failure, which is expected
|
|
141
|
-
await expect(executor.execute(workflow)).rejects.toThrow();
|
|
142
|
-
// Should be called only once
|
|
143
|
-
expect(mockRun).toHaveBeenCalledTimes(1);
|
|
144
|
-
});
|
|
145
|
-
it('should not retry if retry is not specified', async () => {
|
|
146
|
-
mockRun.mockResolvedValueOnce(false);
|
|
147
|
-
const workflow = {
|
|
148
|
-
steps: [
|
|
149
|
-
{
|
|
150
|
-
run: 'echo "test"',
|
|
151
|
-
// retry not specified
|
|
152
|
-
},
|
|
153
|
-
],
|
|
154
|
-
};
|
|
155
|
-
// Executor throws error on failure, which is expected
|
|
156
|
-
await expect(executor.execute(workflow)).rejects.toThrow();
|
|
157
|
-
// Should be called only once (default: no retry)
|
|
158
|
-
expect(mockRun).toHaveBeenCalledTimes(1);
|
|
159
|
-
});
|
|
160
|
-
});
|
|
161
|
-
describe('Timeout and Retry Combined', () => {
|
|
162
|
-
it('should support both timeout and retry', async () => {
|
|
163
|
-
mockRun.mockResolvedValueOnce(false);
|
|
164
|
-
mockRun.mockResolvedValueOnce(true);
|
|
165
|
-
const workflow = {
|
|
166
|
-
steps: [
|
|
167
|
-
{
|
|
168
|
-
run: 'echo "test"',
|
|
169
|
-
timeout: 30,
|
|
170
|
-
retry: 1,
|
|
171
|
-
},
|
|
172
|
-
],
|
|
173
|
-
};
|
|
174
|
-
await executor.execute(workflow);
|
|
175
|
-
// Both timeout and retry should be passed
|
|
176
|
-
expect(mockRun).toHaveBeenCalledTimes(2);
|
|
177
|
-
expect(mockRun).toHaveBeenNthCalledWith(1, 'echo "test"', expect.any(Number), 'echo "test"', undefined, false, false, undefined, undefined, undefined, 30 // timeout
|
|
178
|
-
);
|
|
179
|
-
expect(mockRun).toHaveBeenNthCalledWith(2, 'echo "test"', expect.any(Number), 'echo "test"', undefined, false, false, undefined, undefined, undefined, 30 // timeout (same for retry)
|
|
180
|
-
);
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
//# sourceMappingURL=timeout-retry.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeout-retry.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/timeout-retry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-validation.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/workflow-validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { YAMLParser, JSONParser } from '../parser';
|
|
3
|
-
describe('Workflow Validation', () => {
|
|
4
|
-
describe('YAMLParser', () => {
|
|
5
|
-
it('should validate correct workflow', () => {
|
|
6
|
-
const parser = new YAMLParser();
|
|
7
|
-
const yaml = `
|
|
8
|
-
name: test
|
|
9
|
-
steps:
|
|
10
|
-
- run: echo "hello"
|
|
11
|
-
`;
|
|
12
|
-
const workflow = parser.parse(yaml);
|
|
13
|
-
expect(workflow.name).toBe('test');
|
|
14
|
-
expect(workflow.steps).toHaveLength(1);
|
|
15
|
-
});
|
|
16
|
-
it('should reject workflow with invalid step', () => {
|
|
17
|
-
const parser = new YAMLParser();
|
|
18
|
-
const yaml = `
|
|
19
|
-
name: test
|
|
20
|
-
steps:
|
|
21
|
-
- invalid_step: "this should fail"
|
|
22
|
-
`;
|
|
23
|
-
expect(() => parser.parse(yaml)).toThrow('Invalid workflow structure');
|
|
24
|
-
});
|
|
25
|
-
it('should reject workflow without steps', () => {
|
|
26
|
-
const parser = new YAMLParser();
|
|
27
|
-
const yaml = `
|
|
28
|
-
name: test
|
|
29
|
-
`;
|
|
30
|
-
expect(() => parser.parse(yaml)).toThrow('Invalid workflow structure');
|
|
31
|
-
});
|
|
32
|
-
it('should reject workflow with empty steps array', () => {
|
|
33
|
-
const parser = new YAMLParser();
|
|
34
|
-
const yaml = `
|
|
35
|
-
name: test
|
|
36
|
-
steps: []
|
|
37
|
-
`;
|
|
38
|
-
expect(() => parser.parse(yaml)).toThrow('Invalid workflow structure');
|
|
39
|
-
});
|
|
40
|
-
it('should validate workflow with all step types', () => {
|
|
41
|
-
const parser = new YAMLParser();
|
|
42
|
-
const yaml = `
|
|
43
|
-
name: test
|
|
44
|
-
steps:
|
|
45
|
-
- run: echo "hello"
|
|
46
|
-
- choose:
|
|
47
|
-
message: "Select"
|
|
48
|
-
options:
|
|
49
|
-
- id: opt1
|
|
50
|
-
label: "Option 1"
|
|
51
|
-
as: choice
|
|
52
|
-
- prompt:
|
|
53
|
-
message: "Enter name"
|
|
54
|
-
as: name
|
|
55
|
-
- parallel:
|
|
56
|
-
- run: echo "task1"
|
|
57
|
-
- run: echo "task2"
|
|
58
|
-
- fail:
|
|
59
|
-
message: "Error"
|
|
60
|
-
`;
|
|
61
|
-
const workflow = parser.parse(yaml);
|
|
62
|
-
expect(workflow.steps).toHaveLength(5);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
describe('JSONParser', () => {
|
|
66
|
-
it('should validate correct workflow', () => {
|
|
67
|
-
const parser = new JSONParser();
|
|
68
|
-
const json = JSON.stringify({
|
|
69
|
-
name: 'test',
|
|
70
|
-
steps: [{ run: 'echo "hello"' }],
|
|
71
|
-
});
|
|
72
|
-
const workflow = parser.parse(json);
|
|
73
|
-
expect(workflow.name).toBe('test');
|
|
74
|
-
expect(workflow.steps).toHaveLength(1);
|
|
75
|
-
});
|
|
76
|
-
it('should reject workflow with invalid step', () => {
|
|
77
|
-
const parser = new JSONParser();
|
|
78
|
-
const json = JSON.stringify({
|
|
79
|
-
name: 'test',
|
|
80
|
-
steps: [{ invalid_step: 'this should fail' }],
|
|
81
|
-
});
|
|
82
|
-
expect(() => parser.parse(json)).toThrow('Invalid workflow structure');
|
|
83
|
-
});
|
|
84
|
-
it('should reject workflow without steps', () => {
|
|
85
|
-
const parser = new JSONParser();
|
|
86
|
-
const json = JSON.stringify({
|
|
87
|
-
name: 'test',
|
|
88
|
-
});
|
|
89
|
-
expect(() => parser.parse(json)).toThrow('Invalid workflow structure');
|
|
90
|
-
});
|
|
91
|
-
it('should reject invalid JSON format', () => {
|
|
92
|
-
const parser = new JSONParser();
|
|
93
|
-
const json = '{ invalid json }';
|
|
94
|
-
expect(() => parser.parse(json)).toThrow('Invalid JSON format');
|
|
95
|
-
});
|
|
96
|
-
it('should validate workflow with conditions', () => {
|
|
97
|
-
const parser = new JSONParser();
|
|
98
|
-
const json = JSON.stringify({
|
|
99
|
-
steps: [
|
|
100
|
-
{
|
|
101
|
-
run: 'echo "hello"',
|
|
102
|
-
when: {
|
|
103
|
-
var: {
|
|
104
|
-
env: 'dev',
|
|
105
|
-
},
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
],
|
|
109
|
-
});
|
|
110
|
-
const workflow = parser.parse(json);
|
|
111
|
-
expect(workflow.steps).toHaveLength(1);
|
|
112
|
-
expect(workflow.steps[0]).toHaveProperty('when');
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
});
|
|
116
|
-
//# sourceMappingURL=workflow-validation.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-validation.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/workflow-validation.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/workspace.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { Workspace } from '../workspace';
|
|
3
|
-
describe('Workspace', () => {
|
|
4
|
-
it('should set and get facts', () => {
|
|
5
|
-
const workspace = new Workspace();
|
|
6
|
-
workspace.setFact('test', true);
|
|
7
|
-
expect(workspace.hasFact('test')).toBe(true);
|
|
8
|
-
expect(workspace.getFact('test')).toBe(true);
|
|
9
|
-
});
|
|
10
|
-
it('should set and get choices', () => {
|
|
11
|
-
const workspace = new Workspace();
|
|
12
|
-
workspace.setChoice('staging', 'staging');
|
|
13
|
-
expect(workspace.hasChoice('staging')).toBe(true);
|
|
14
|
-
expect(workspace.getChoice('staging')).toBe('staging');
|
|
15
|
-
});
|
|
16
|
-
it('should return false for non-existent choice', () => {
|
|
17
|
-
const workspace = new Workspace();
|
|
18
|
-
expect(workspace.hasChoice('nonexistent')).toBe(false);
|
|
19
|
-
});
|
|
20
|
-
it('should clone workspace state', () => {
|
|
21
|
-
const workspace = new Workspace();
|
|
22
|
-
workspace.setFact('test', true);
|
|
23
|
-
workspace.setChoice('staging', 'staging');
|
|
24
|
-
const cloned = workspace.clone();
|
|
25
|
-
expect(cloned.hasFact('test')).toBe(true);
|
|
26
|
-
expect(cloned.hasChoice('staging')).toBe(true);
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
//# sourceMappingURL=workspace.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/workspace.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAClC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAChC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-integration.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/yaml-integration.test.ts"],"names":[],"mappings":""}
|