@sonisoft/now-sdk-ext-cli 2.0.1 → 2.1.0
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.md +127 -68
- package/dist/commands/flow/run.d.ts.map +1 -1
- package/dist/commands/flow/run.js +3 -1
- package/dist/commands/flow/run.js.map +1 -1
- package/dist/commands/flow/subflow.d.ts.map +1 -1
- package/dist/commands/flow/subflow.js +3 -1
- package/dist/commands/flow/subflow.js.map +1 -1
- package/dist/commands/flow/test.d.ts +18 -0
- package/dist/commands/flow/test.d.ts.map +1 -0
- package/dist/commands/flow/test.js +91 -0
- package/dist/commands/flow/test.js.map +1 -0
- package/dist/services/flow-display.service.d.ts +9 -0
- package/dist/services/flow-display.service.d.ts.map +1 -1
- package/dist/services/flow-display.service.js +30 -0
- package/dist/services/flow-display.service.js.map +1 -1
- package/oclif.manifest.json +222 -120
- package/package.json +2 -2
|
@@ -5,9 +5,11 @@ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
|
5
5
|
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
6
|
export class FlowRun extends AuthenticatedCommand {
|
|
7
7
|
static args = {};
|
|
8
|
-
static description = 'Execute a Flow Designer flow by scoped name.\n\n' +
|
|
8
|
+
static description = 'Execute a published Flow Designer flow by scoped name.\n\n' +
|
|
9
9
|
'Runs a flow using the sn_fd.FlowAPI ScriptableFlowRunner. ' +
|
|
10
10
|
'Supports foreground (synchronous) and background (asynchronous) execution modes.\n\n' +
|
|
11
|
+
'Note: This command requires the flow to be published. For testing flows that ' +
|
|
12
|
+
'are not yet published (draft/saved state), use `flow test` instead.\n\n' +
|
|
11
13
|
'Features:\n' +
|
|
12
14
|
' \u2022 Execute flows by scoped name (e.g. global.my_flow)\n' +
|
|
13
15
|
' \u2022 Pass input values as JSON\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/flow/run.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,OAAO,OAAQ,SAAQ,oBAAoC;IAE/D,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;IAClB,MAAM,CAAC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/commands/flow/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subflow.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,WAAY,SAAQ,oBAAoB,CAAC,OAAO,WAAW,CAAC;IAEvE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,
|
|
1
|
+
{"version":3,"file":"subflow.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,WAAY,SAAQ,oBAAoB,CAAC,OAAO,WAAW,CAAC;IAEvE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SAQgD;IAClE,MAAM,CAAC,QAAQ;;;QASZ;IACH,MAAM,CAAC,KAAK;;;;;;;MAiCT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAoC3B"}
|
|
@@ -5,8 +5,10 @@ import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
|
5
5
|
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
6
|
export class FlowSubflow extends AuthenticatedCommand {
|
|
7
7
|
static args = {};
|
|
8
|
-
static description = 'Execute a Flow Designer subflow by scoped name.\n\n' +
|
|
8
|
+
static description = 'Execute a published Flow Designer subflow by scoped name.\n\n' +
|
|
9
9
|
'Runs a subflow using the sn_fd.FlowAPI ScriptableFlowRunner.\n\n' +
|
|
10
|
+
'Note: This command requires the subflow to be published. For testing flows that ' +
|
|
11
|
+
'are not yet published (draft/saved state), use `flow test` instead.\n\n' +
|
|
10
12
|
'Features:\n' +
|
|
11
13
|
' \u2022 Execute subflows by scoped name\n' +
|
|
12
14
|
' \u2022 Pass input values as JSON\n' +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subflow.js","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAExD,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAE3E,MAAM,OAAO,WAAY,SAAQ,oBAAwC;IAEvE,MAAM,CAAC,IAAI,GAAG,EAAE,CAAA;IAClB,MAAM,CAAC,WAAW,GAAG
|
|
1
|
+
{"version":3,"file":"subflow.js","sourceRoot":"","sources":["../../../src/commands/flow/subflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
2
|
+
export declare class FlowTest extends AuthenticatedCommand<typeof FlowTest> {
|
|
3
|
+
static args: {};
|
|
4
|
+
static description: string;
|
|
5
|
+
static examples: {
|
|
6
|
+
description: string;
|
|
7
|
+
command: string;
|
|
8
|
+
}[];
|
|
9
|
+
static flags: {
|
|
10
|
+
'flow-id': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
11
|
+
'output-map': import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
12
|
+
scope: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
13
|
+
synchronous: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
14
|
+
json: import("@oclif/core/lib/interfaces/parser.js").BooleanFlag<boolean>;
|
|
15
|
+
};
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAA;AAG5E,qBAAa,QAAS,SAAQ,oBAAoB,CAAC,OAAO,QAAQ,CAAC;IAEjE,MAAM,CAAC,IAAI,KAAK;IAClB,MAAM,CAAC,WAAW,SASmC;IACrD,MAAM,CAAC,QAAQ;;;QAaZ;IACH,MAAM,CAAC,KAAK;;;;;;MA2BT;IAEK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAkC3B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
import { Flags } from '@oclif/core';
|
|
3
|
+
import { FlowManager } from '@sonisoft/now-sdk-ext-core';
|
|
4
|
+
import { AuthenticatedCommand } from '../../common/authenticated-command.js';
|
|
5
|
+
import { FlowDisplayService } from '../../services/flow-display.service.js';
|
|
6
|
+
export class FlowTest extends AuthenticatedCommand {
|
|
7
|
+
static args = {};
|
|
8
|
+
static description = 'Test a Flow Designer flow without requiring it to be published.\n\n' +
|
|
9
|
+
'Invokes the same API as the "Test" button in Flow Designer, running the flow ' +
|
|
10
|
+
'in its current saved (draft) state. Unlike `flow run` which requires a published ' +
|
|
11
|
+
'flow and uses sn_fd.FlowAPI, `flow test` works on unpublished drafts via the ' +
|
|
12
|
+
'ProcessFlow REST API.\n\n' +
|
|
13
|
+
'Features:\n' +
|
|
14
|
+
' \u2022 Test flows by sys_id or scoped name\n' +
|
|
15
|
+
' \u2022 Pass trigger output values as JSON via --output-map\n' +
|
|
16
|
+
' \u2022 Auto-resolves scope from flow definition if not provided\n' +
|
|
17
|
+
' \u2022 Synchronous or asynchronous execution';
|
|
18
|
+
static examples = [
|
|
19
|
+
{
|
|
20
|
+
description: 'Test a flow by sys_id',
|
|
21
|
+
command: '<%= config.bin %> <%= command.id %> --flow-id 887dda5583237210fdb8f7b6feaad32c --output-map \'{"current":"0ecd7552db252200a6a2b31be0b8f5e6","table_name":"change_request"}\' --auth dev',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
description: 'Test a flow by scoped name with explicit scope',
|
|
25
|
+
command: '<%= config.bin %> <%= command.id %> -f x_myapp.my_flow -o \'{"current":"abc123","table_name":"incident"}\' --scope x_myapp --auth dev',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
description: 'Test with JSON output',
|
|
29
|
+
command: '<%= config.bin %> <%= command.id %> -f 887dda5583237210fdb8f7b6feaad32c -o \'{"current":"abc123"}\' --json --auth dev',
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
static flags = {
|
|
33
|
+
'flow-id': Flags.string({
|
|
34
|
+
char: 'f',
|
|
35
|
+
description: 'Flow sys_id or scoped name (e.g. x_myapp.my_flow)',
|
|
36
|
+
required: true,
|
|
37
|
+
}),
|
|
38
|
+
'output-map': Flags.string({
|
|
39
|
+
char: 'o',
|
|
40
|
+
description: 'JSON mapping of trigger output variable names to test values (e.g. \'{"current":"<sys_id>","table_name":"change_request"}\')',
|
|
41
|
+
required: true,
|
|
42
|
+
}),
|
|
43
|
+
'scope': Flags.string({
|
|
44
|
+
description: 'Scope sys_id for transaction scope (auto-resolved from flow definition if omitted)',
|
|
45
|
+
required: false,
|
|
46
|
+
}),
|
|
47
|
+
'synchronous': Flags.boolean({
|
|
48
|
+
description: 'Run test synchronously (default: true)',
|
|
49
|
+
required: false,
|
|
50
|
+
default: true,
|
|
51
|
+
allowNo: true,
|
|
52
|
+
}),
|
|
53
|
+
'json': Flags.boolean({
|
|
54
|
+
char: 'j',
|
|
55
|
+
description: 'Output results as JSON',
|
|
56
|
+
required: false,
|
|
57
|
+
default: false,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
async run() {
|
|
61
|
+
const { flags } = await this.parse(FlowTest);
|
|
62
|
+
const displayService = new FlowDisplayService();
|
|
63
|
+
try {
|
|
64
|
+
let outputMap;
|
|
65
|
+
try {
|
|
66
|
+
outputMap = JSON.parse(flags['output-map']);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
this.error('Invalid JSON in --output-map flag.');
|
|
70
|
+
}
|
|
71
|
+
// Constructor scope sets the auth/session context; testFlow scope sets the transaction scope
|
|
72
|
+
const flowManager = new FlowManager(this.instance, flags.scope);
|
|
73
|
+
this.log(`Testing flow: ${flags['flow-id']} (${flags.synchronous ? 'synchronous' : 'asynchronous'})`);
|
|
74
|
+
const result = await flowManager.testFlow({
|
|
75
|
+
flowId: flags['flow-id'],
|
|
76
|
+
outputMap,
|
|
77
|
+
scope: flags.scope,
|
|
78
|
+
runOnThread: flags.synchronous,
|
|
79
|
+
});
|
|
80
|
+
const lines = displayService.formatTestResult(result, flags.json ?? false);
|
|
81
|
+
for (const line of lines) {
|
|
82
|
+
(flags.json ?? false) ? console.log(line) : this.log(line);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this._logger.error("Error testing flow.", error);
|
|
87
|
+
this.error(error);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../../src/commands/flow/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
export interface FlowTestResult {
|
|
2
|
+
success: boolean;
|
|
3
|
+
contextId?: string;
|
|
4
|
+
flowId?: string;
|
|
5
|
+
state?: string;
|
|
6
|
+
outputs?: Record<string, unknown>;
|
|
7
|
+
errorMessage?: string;
|
|
8
|
+
}
|
|
1
9
|
export declare class FlowDisplayService {
|
|
2
10
|
formatCancelResult(result: any, jsonOutput: boolean): string[];
|
|
3
11
|
formatErrorResult(result: any, jsonOutput: boolean): string[];
|
|
@@ -5,6 +13,7 @@ export declare class FlowDisplayService {
|
|
|
5
13
|
formatMessageResult(result: any, jsonOutput: boolean): string[];
|
|
6
14
|
formatOutputsResult(result: any, jsonOutput: boolean): string[];
|
|
7
15
|
formatStatusResult(result: any, jsonOutput: boolean): string[];
|
|
16
|
+
formatTestResult(result: FlowTestResult, jsonOutput: boolean): string[];
|
|
8
17
|
private _stateIcon;
|
|
9
18
|
}
|
|
10
19
|
//# sourceMappingURL=flow-display.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-display.service.d.ts","sourceRoot":"","sources":["../../src/services/flow-display.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flow-display.service.d.ts","sourceRoot":"","sources":["../../src/services/flow-display.service.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,kBAAkB;IAC7B,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAoB9D,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAwB7D,qBAAqB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IA6CjE,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAoB/D,mBAAmB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IA4B/D,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAwC9D,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE;IAuCvE,OAAO,CAAC,UAAU;CAwBnB"}
|
|
@@ -135,6 +135,36 @@ export class FlowDisplayService {
|
|
|
135
135
|
lines.push(" " + "\u2500".repeat(50));
|
|
136
136
|
return lines;
|
|
137
137
|
}
|
|
138
|
+
formatTestResult(result, jsonOutput) {
|
|
139
|
+
if (jsonOutput) {
|
|
140
|
+
return [JSON.stringify(result, null, 2)];
|
|
141
|
+
}
|
|
142
|
+
const lines = [];
|
|
143
|
+
const icon = result.success ? '\u2714' : '\u2718';
|
|
144
|
+
lines.push(`\n${icon} Flow Test — ${result.flowId ?? 'unknown'}`);
|
|
145
|
+
lines.push(" " + "\u2500".repeat(60));
|
|
146
|
+
lines.push(` Status: ${result.success ? 'Success' : 'Failed'}`);
|
|
147
|
+
if (result.contextId) {
|
|
148
|
+
lines.push(` Context ID: ${result.contextId}`);
|
|
149
|
+
}
|
|
150
|
+
if (result.state) {
|
|
151
|
+
lines.push(` State: ${result.state}`);
|
|
152
|
+
}
|
|
153
|
+
if (result.outputs && Object.keys(result.outputs).length > 0) {
|
|
154
|
+
lines.push("");
|
|
155
|
+
lines.push(" Outputs:");
|
|
156
|
+
for (const [key, value] of Object.entries(result.outputs)) {
|
|
157
|
+
const display = typeof value === 'object' ? JSON.stringify(value) : String(value);
|
|
158
|
+
lines.push(` ${key}: ${display}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (result.errorMessage) {
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push(` Error: ${result.errorMessage}`);
|
|
164
|
+
}
|
|
165
|
+
lines.push(" " + "\u2500".repeat(60));
|
|
166
|
+
return lines;
|
|
167
|
+
}
|
|
138
168
|
_stateIcon(state) {
|
|
139
169
|
switch (state) {
|
|
140
170
|
case 'CANCELLED': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow-display.service.js","sourceRoot":"","sources":["../../src/services/flow-display.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flow-display.service.js","sourceRoot":"","sources":["../../src/services/flow-display.service.ts"],"names":[],"mappings":"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"}
|