@sonisoft/now-sdk-ext-core 2.2.0 → 2.4.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.
Files changed (68) hide show
  1. package/dist/comm/http/RequestHandler.js +7 -11
  2. package/dist/comm/http/RequestHandler.js.map +1 -1
  3. package/dist/comm/http/TableAPIRequest.js +3 -10
  4. package/dist/comm/http/TableAPIRequest.js.map +1 -1
  5. package/dist/index.d.ts +18 -0
  6. package/dist/index.js +18 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/sn/BackgroundScriptExecutor.d.ts +40 -0
  9. package/dist/sn/BackgroundScriptExecutor.js +129 -8
  10. package/dist/sn/BackgroundScriptExecutor.js.map +1 -1
  11. package/dist/sn/application/ApplicationManager.d.ts +58 -1
  12. package/dist/sn/application/ApplicationManager.js +202 -11
  13. package/dist/sn/application/ApplicationManager.js.map +1 -1
  14. package/dist/sn/application/StoreApplicationModels.d.ts +99 -0
  15. package/dist/sn/application/StoreApplicationModels.js +2 -0
  16. package/dist/sn/application/StoreApplicationModels.js.map +1 -0
  17. package/dist/sn/attachment/AttachmentManager.d.ts +32 -0
  18. package/dist/sn/attachment/AttachmentManager.js +87 -0
  19. package/dist/sn/attachment/AttachmentManager.js.map +1 -0
  20. package/dist/sn/attachment/AttachmentModels.d.ts +28 -0
  21. package/dist/sn/attachment/AttachmentModels.js +2 -0
  22. package/dist/sn/attachment/AttachmentModels.js.map +1 -0
  23. package/dist/sn/batch/BatchModels.d.ts +90 -0
  24. package/dist/sn/batch/BatchModels.js +5 -0
  25. package/dist/sn/batch/BatchModels.js.map +1 -0
  26. package/dist/sn/batch/BatchOperations.d.ts +40 -0
  27. package/dist/sn/batch/BatchOperations.js +169 -0
  28. package/dist/sn/batch/BatchOperations.js.map +1 -0
  29. package/dist/sn/schema/SchemaDiscovery.d.ts +68 -0
  30. package/dist/sn/schema/SchemaDiscovery.js +346 -0
  31. package/dist/sn/schema/SchemaDiscovery.js.map +1 -0
  32. package/dist/sn/schema/SchemaModels.d.ts +277 -0
  33. package/dist/sn/schema/SchemaModels.js +5 -0
  34. package/dist/sn/schema/SchemaModels.js.map +1 -0
  35. package/dist/sn/scope/ScopeManager.d.ts +51 -0
  36. package/dist/sn/scope/ScopeManager.js +177 -0
  37. package/dist/sn/scope/ScopeManager.js.map +1 -0
  38. package/dist/sn/scope/ScopeModels.d.ts +66 -0
  39. package/dist/sn/scope/ScopeModels.js +5 -0
  40. package/dist/sn/scope/ScopeModels.js.map +1 -0
  41. package/dist/sn/scriptsync/ScriptSync.d.ts +38 -0
  42. package/dist/sn/scriptsync/ScriptSync.js +266 -0
  43. package/dist/sn/scriptsync/ScriptSync.js.map +1 -0
  44. package/dist/sn/scriptsync/ScriptSyncModels.d.ts +55 -0
  45. package/dist/sn/scriptsync/ScriptSyncModels.js +8 -0
  46. package/dist/sn/scriptsync/ScriptSyncModels.js.map +1 -0
  47. package/dist/sn/scriptsync/ScriptWatcher.d.ts +30 -0
  48. package/dist/sn/scriptsync/ScriptWatcher.js +74 -0
  49. package/dist/sn/scriptsync/ScriptWatcher.js.map +1 -0
  50. package/dist/sn/task/TaskModels.d.ts +85 -0
  51. package/dist/sn/task/TaskModels.js +5 -0
  52. package/dist/sn/task/TaskModels.js.map +1 -0
  53. package/dist/sn/task/TaskOperations.d.ts +63 -0
  54. package/dist/sn/task/TaskOperations.js +195 -0
  55. package/dist/sn/task/TaskOperations.js.map +1 -0
  56. package/dist/sn/updateset/UpdateSetManager.d.ts +78 -0
  57. package/dist/sn/updateset/UpdateSetManager.js +391 -0
  58. package/dist/sn/updateset/UpdateSetManager.js.map +1 -0
  59. package/dist/sn/updateset/UpdateSetModels.d.ts +177 -0
  60. package/dist/sn/updateset/UpdateSetModels.js +5 -0
  61. package/dist/sn/updateset/UpdateSetModels.js.map +1 -0
  62. package/dist/sn/workflow/WorkflowManager.d.ts +81 -0
  63. package/dist/sn/workflow/WorkflowManager.js +388 -0
  64. package/dist/sn/workflow/WorkflowManager.js.map +1 -0
  65. package/dist/sn/workflow/WorkflowModels.d.ts +242 -0
  66. package/dist/sn/workflow/WorkflowModels.js +5 -0
  67. package/dist/sn/workflow/WorkflowModels.js.map +1 -0
  68. package/package.json +5 -5
@@ -0,0 +1,81 @@
1
+ import { ServiceNowInstance } from "../ServiceNowInstance.js";
2
+ import { CreateWorkflowOptions, CreateWorkflowResult, CreateWorkflowVersionOptions, CreateWorkflowVersionResult, CreateActivityOptions, CreateActivityResult, CreateTransitionOptions, CreateTransitionResult, CreateConditionOptions, CreateConditionResult, PublishWorkflowOptions, CompleteWorkflowSpec, CompleteWorkflowResult } from './WorkflowModels.js';
3
+ /**
4
+ * Manages ServiceNow workflow lifecycle operations including creating workflows,
5
+ * versions, activities, transitions, conditions, and publishing.
6
+ * Also provides a high-level orchestration method to create a complete workflow
7
+ * from a single specification.
8
+ */
9
+ export declare class WorkflowManager {
10
+ private static readonly WF_WORKFLOW;
11
+ private static readonly WF_WORKFLOW_VERSION;
12
+ private static readonly WF_ACTIVITY;
13
+ private static readonly WF_TRANSITION;
14
+ private static readonly WF_CONDITION;
15
+ private _logger;
16
+ private _req;
17
+ private _tableAPI;
18
+ private _instance;
19
+ constructor(instance: ServiceNowInstance);
20
+ /**
21
+ * Create a new workflow record.
22
+ *
23
+ * @param options Workflow creation options
24
+ * @returns The sys_id and name of the created workflow
25
+ * @throws Error if the API call fails
26
+ */
27
+ createWorkflow(options: CreateWorkflowOptions): Promise<CreateWorkflowResult>;
28
+ /**
29
+ * Create a new workflow version.
30
+ *
31
+ * @param options Workflow version creation options
32
+ * @returns The sys_id and name of the created version
33
+ * @throws Error if the API call fails
34
+ */
35
+ createWorkflowVersion(options: CreateWorkflowVersionOptions): Promise<CreateWorkflowVersionResult>;
36
+ /**
37
+ * Create a new workflow activity.
38
+ *
39
+ * @param options Activity creation options
40
+ * @returns The sys_id and name of the created activity
41
+ * @throws Error if the API call fails
42
+ */
43
+ createActivity(options: CreateActivityOptions): Promise<CreateActivityResult>;
44
+ /**
45
+ * Create a transition between two activities.
46
+ *
47
+ * @param options Transition creation options
48
+ * @returns The sys_id of the created transition
49
+ * @throws Error if the API call fails
50
+ */
51
+ createTransition(options: CreateTransitionOptions): Promise<CreateTransitionResult>;
52
+ /**
53
+ * Create a condition on an activity.
54
+ *
55
+ * @param options Condition creation options
56
+ * @returns The sys_id and name of the created condition
57
+ * @throws Error if the API call fails
58
+ */
59
+ createCondition(options: CreateConditionOptions): Promise<CreateConditionResult>;
60
+ /**
61
+ * Publish a workflow version by setting published=true and the start activity.
62
+ *
63
+ * @param options Publish options including version sys_id and start activity sys_id
64
+ * @throws Error if the API call fails
65
+ */
66
+ publishWorkflow(options: PublishWorkflowOptions): Promise<void>;
67
+ /**
68
+ * Create a complete workflow from a single specification.
69
+ * Orchestrates: create workflow -> create version -> create activities ->
70
+ * create transitions -> optionally publish.
71
+ *
72
+ * Activity references in transitions use the activity's id field (if set) or
73
+ * its index in the activities array (as a string like "0", "1", etc.).
74
+ *
75
+ * @param spec The complete workflow specification
76
+ * @param onProgress Optional progress callback
77
+ * @returns The complete result including all created sys_ids
78
+ * @throws Error if any step fails
79
+ */
80
+ createCompleteWorkflow(spec: CompleteWorkflowSpec, onProgress?: (message: string) => void): Promise<CompleteWorkflowResult>;
81
+ }
@@ -0,0 +1,388 @@
1
+ import { Logger } from "../../util/Logger.js";
2
+ import { ServiceNowRequest } from "../../comm/http/ServiceNowRequest.js";
3
+ import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
4
+ /**
5
+ * Manages ServiceNow workflow lifecycle operations including creating workflows,
6
+ * versions, activities, transitions, conditions, and publishing.
7
+ * Also provides a high-level orchestration method to create a complete workflow
8
+ * from a single specification.
9
+ */
10
+ export class WorkflowManager {
11
+ static WF_WORKFLOW = 'wf_workflow';
12
+ static WF_WORKFLOW_VERSION = 'wf_workflow_version';
13
+ static WF_ACTIVITY = 'wf_activity';
14
+ static WF_TRANSITION = 'wf_transition';
15
+ static WF_CONDITION = 'wf_condition';
16
+ _logger = new Logger("WorkflowManager");
17
+ _req;
18
+ _tableAPI;
19
+ _instance;
20
+ constructor(instance) {
21
+ this._instance = instance;
22
+ this._req = new ServiceNowRequest(instance);
23
+ this._tableAPI = new TableAPIRequest(instance);
24
+ }
25
+ /**
26
+ * Create a new workflow record.
27
+ *
28
+ * @param options Workflow creation options
29
+ * @returns The sys_id and name of the created workflow
30
+ * @throws Error if the API call fails
31
+ */
32
+ async createWorkflow(options) {
33
+ if (!options.name || options.name.trim().length === 0) {
34
+ throw new Error('Workflow name is required');
35
+ }
36
+ this._logger.info(`Creating workflow: ${options.name}`);
37
+ const body = {
38
+ name: options.name
39
+ };
40
+ if (options.description !== undefined) {
41
+ body.description = options.description;
42
+ }
43
+ if (options.template !== undefined) {
44
+ body.template = options.template;
45
+ }
46
+ if (options.access !== undefined) {
47
+ body.access = options.access;
48
+ }
49
+ const response = await this._tableAPI.post(WorkflowManager.WF_WORKFLOW, {}, body);
50
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result?.sys_id) {
51
+ const result = response.bodyObject.result;
52
+ this._logger.info(`Created workflow '${options.name}' with sys_id=${result.sys_id}`);
53
+ return {
54
+ workflowSysId: result.sys_id,
55
+ name: result.name || options.name
56
+ };
57
+ }
58
+ throw new Error(`Failed to create workflow '${options.name}'. Status: ${response?.status ?? 'unknown'}`);
59
+ }
60
+ /**
61
+ * Create a new workflow version.
62
+ *
63
+ * @param options Workflow version creation options
64
+ * @returns The sys_id and name of the created version
65
+ * @throws Error if the API call fails
66
+ */
67
+ async createWorkflowVersion(options) {
68
+ if (!options.name || options.name.trim().length === 0) {
69
+ throw new Error('Workflow version name is required');
70
+ }
71
+ if (!options.workflowSysId || options.workflowSysId.trim().length === 0) {
72
+ throw new Error('Workflow sys_id is required');
73
+ }
74
+ if (!options.table || options.table.trim().length === 0) {
75
+ throw new Error('Table name is required');
76
+ }
77
+ this._logger.info(`Creating workflow version: ${options.name} for workflow ${options.workflowSysId}`);
78
+ const body = {
79
+ name: options.name,
80
+ workflow: options.workflowSysId,
81
+ table: options.table
82
+ };
83
+ if (options.description !== undefined) {
84
+ body.description = options.description;
85
+ }
86
+ if (options.active !== undefined) {
87
+ body.active = options.active;
88
+ }
89
+ if (options.published !== undefined) {
90
+ body.published = options.published;
91
+ }
92
+ if (options.condition !== undefined) {
93
+ body.condition = options.condition;
94
+ }
95
+ if (options.order !== undefined) {
96
+ body.order = options.order;
97
+ }
98
+ const response = await this._tableAPI.post(WorkflowManager.WF_WORKFLOW_VERSION, {}, body);
99
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result?.sys_id) {
100
+ const result = response.bodyObject.result;
101
+ this._logger.info(`Created workflow version '${options.name}' with sys_id=${result.sys_id}`);
102
+ return {
103
+ versionSysId: result.sys_id,
104
+ name: result.name || options.name
105
+ };
106
+ }
107
+ throw new Error(`Failed to create workflow version '${options.name}'. Status: ${response?.status ?? 'unknown'}`);
108
+ }
109
+ /**
110
+ * Create a new workflow activity.
111
+ *
112
+ * @param options Activity creation options
113
+ * @returns The sys_id and name of the created activity
114
+ * @throws Error if the API call fails
115
+ */
116
+ async createActivity(options) {
117
+ if (!options.name || options.name.trim().length === 0) {
118
+ throw new Error('Activity name is required');
119
+ }
120
+ if (!options.workflowVersionSysId || options.workflowVersionSysId.trim().length === 0) {
121
+ throw new Error('Workflow version sys_id is required');
122
+ }
123
+ this._logger.info(`Creating activity: ${options.name} for version ${options.workflowVersionSysId}`);
124
+ const body = {
125
+ name: options.name,
126
+ workflow_version: options.workflowVersionSysId
127
+ };
128
+ if (options.activityDefinitionSysId !== undefined) {
129
+ body.activity_definition = options.activityDefinitionSysId;
130
+ }
131
+ if (options.x !== undefined) {
132
+ body.x = options.x;
133
+ }
134
+ if (options.y !== undefined) {
135
+ body.y = options.y;
136
+ }
137
+ if (options.width !== undefined) {
138
+ body.width = options.width;
139
+ }
140
+ if (options.height !== undefined) {
141
+ body.height = options.height;
142
+ }
143
+ if (options.script !== undefined) {
144
+ body.script = options.script;
145
+ }
146
+ if (options.vars !== undefined) {
147
+ body.vars = options.vars;
148
+ }
149
+ const response = await this._tableAPI.post(WorkflowManager.WF_ACTIVITY, {}, body);
150
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result?.sys_id) {
151
+ const result = response.bodyObject.result;
152
+ this._logger.info(`Created activity '${options.name}' with sys_id=${result.sys_id}`);
153
+ return {
154
+ activitySysId: result.sys_id,
155
+ name: result.name || options.name
156
+ };
157
+ }
158
+ throw new Error(`Failed to create activity '${options.name}'. Status: ${response?.status ?? 'unknown'}`);
159
+ }
160
+ /**
161
+ * Create a transition between two activities.
162
+ *
163
+ * @param options Transition creation options
164
+ * @returns The sys_id of the created transition
165
+ * @throws Error if the API call fails
166
+ */
167
+ async createTransition(options) {
168
+ if (!options.fromActivitySysId || options.fromActivitySysId.trim().length === 0) {
169
+ throw new Error('From activity sys_id is required');
170
+ }
171
+ if (!options.toActivitySysId || options.toActivitySysId.trim().length === 0) {
172
+ throw new Error('To activity sys_id is required');
173
+ }
174
+ this._logger.info(`Creating transition: ${options.fromActivitySysId} -> ${options.toActivitySysId}`);
175
+ const body = {
176
+ from: options.fromActivitySysId,
177
+ to: options.toActivitySysId
178
+ };
179
+ if (options.conditionSysId !== undefined) {
180
+ body.condition = options.conditionSysId;
181
+ }
182
+ if (options.order !== undefined) {
183
+ body.order = options.order;
184
+ }
185
+ const response = await this._tableAPI.post(WorkflowManager.WF_TRANSITION, {}, body);
186
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result?.sys_id) {
187
+ const result = response.bodyObject.result;
188
+ this._logger.info(`Created transition with sys_id=${result.sys_id}`);
189
+ return {
190
+ transitionSysId: result.sys_id
191
+ };
192
+ }
193
+ throw new Error(`Failed to create transition from '${options.fromActivitySysId}' to '${options.toActivitySysId}'. Status: ${response?.status ?? 'unknown'}`);
194
+ }
195
+ /**
196
+ * Create a condition on an activity.
197
+ *
198
+ * @param options Condition creation options
199
+ * @returns The sys_id and name of the created condition
200
+ * @throws Error if the API call fails
201
+ */
202
+ async createCondition(options) {
203
+ if (!options.activitySysId || options.activitySysId.trim().length === 0) {
204
+ throw new Error('Activity sys_id is required');
205
+ }
206
+ if (!options.name || options.name.trim().length === 0) {
207
+ throw new Error('Condition name is required');
208
+ }
209
+ this._logger.info(`Creating condition: ${options.name} on activity ${options.activitySysId}`);
210
+ const body = {
211
+ activity: options.activitySysId,
212
+ name: options.name
213
+ };
214
+ if (options.description !== undefined) {
215
+ body.description = options.description;
216
+ }
217
+ if (options.condition !== undefined) {
218
+ body.condition = options.condition;
219
+ }
220
+ if (options.order !== undefined) {
221
+ body.order = options.order;
222
+ }
223
+ if (options.elseFlag !== undefined) {
224
+ body.else_flag = options.elseFlag;
225
+ }
226
+ const response = await this._tableAPI.post(WorkflowManager.WF_CONDITION, {}, body);
227
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result?.sys_id) {
228
+ const result = response.bodyObject.result;
229
+ this._logger.info(`Created condition '${options.name}' with sys_id=${result.sys_id}`);
230
+ return {
231
+ conditionSysId: result.sys_id,
232
+ name: result.name || options.name
233
+ };
234
+ }
235
+ throw new Error(`Failed to create condition '${options.name}'. Status: ${response?.status ?? 'unknown'}`);
236
+ }
237
+ /**
238
+ * Publish a workflow version by setting published=true and the start activity.
239
+ *
240
+ * @param options Publish options including version sys_id and start activity sys_id
241
+ * @throws Error if the API call fails
242
+ */
243
+ async publishWorkflow(options) {
244
+ if (!options.versionSysId || options.versionSysId.trim().length === 0) {
245
+ throw new Error('Workflow version sys_id is required');
246
+ }
247
+ if (!options.startActivitySysId || options.startActivitySysId.trim().length === 0) {
248
+ throw new Error('Start activity sys_id is required');
249
+ }
250
+ this._logger.info(`Publishing workflow version ${options.versionSysId} with start activity ${options.startActivitySysId}`);
251
+ const body = {
252
+ published: true,
253
+ start: options.startActivitySysId
254
+ };
255
+ const response = await this._tableAPI.put(WorkflowManager.WF_WORKFLOW_VERSION, options.versionSysId, body);
256
+ if (response && response.status === 200 && response.bodyObject?.result) {
257
+ this._logger.info(`Successfully published workflow version ${options.versionSysId}`);
258
+ return;
259
+ }
260
+ throw new Error(`Failed to publish workflow version ${options.versionSysId}. Status: ${response?.status ?? 'unknown'}`);
261
+ }
262
+ /**
263
+ * Create a complete workflow from a single specification.
264
+ * Orchestrates: create workflow -> create version -> create activities ->
265
+ * create transitions -> optionally publish.
266
+ *
267
+ * Activity references in transitions use the activity's id field (if set) or
268
+ * its index in the activities array (as a string like "0", "1", etc.).
269
+ *
270
+ * @param spec The complete workflow specification
271
+ * @param onProgress Optional progress callback
272
+ * @returns The complete result including all created sys_ids
273
+ * @throws Error if any step fails
274
+ */
275
+ async createCompleteWorkflow(spec, onProgress) {
276
+ if (!spec.name || spec.name.trim().length === 0) {
277
+ throw new Error('Workflow name is required');
278
+ }
279
+ if (!spec.activities || spec.activities.length === 0) {
280
+ throw new Error('At least one activity is required');
281
+ }
282
+ this._logger.info(`Creating complete workflow: ${spec.name}`);
283
+ // Step 1: Create workflow
284
+ if (onProgress) {
285
+ onProgress(`Creating workflow '${spec.name}'`);
286
+ }
287
+ const workflowResult = await this.createWorkflow({
288
+ name: spec.name,
289
+ description: spec.description,
290
+ template: spec.template,
291
+ access: spec.access
292
+ });
293
+ // Step 2: Create workflow version
294
+ if (onProgress) {
295
+ onProgress(`Creating workflow version for '${spec.name}'`);
296
+ }
297
+ const versionResult = await this.createWorkflowVersion({
298
+ name: spec.name,
299
+ workflowSysId: workflowResult.workflowSysId,
300
+ table: spec.table,
301
+ description: spec.description,
302
+ active: spec.active,
303
+ condition: spec.condition
304
+ });
305
+ // Step 3: Create activities
306
+ const activitySysIds = {};
307
+ for (let i = 0; i < spec.activities.length; i++) {
308
+ const activitySpec = spec.activities[i];
309
+ if (onProgress) {
310
+ onProgress(`Creating activity ${i + 1}/${spec.activities.length}: '${activitySpec.name}'`);
311
+ }
312
+ const activityResult = await this.createActivity({
313
+ name: activitySpec.name,
314
+ workflowVersionSysId: versionResult.versionSysId,
315
+ activityDefinitionSysId: activitySpec.activityType,
316
+ x: activitySpec.x,
317
+ y: activitySpec.y,
318
+ width: activitySpec.width,
319
+ height: activitySpec.height,
320
+ script: activitySpec.script,
321
+ vars: activitySpec.vars
322
+ });
323
+ // Store by id if provided, and always by index
324
+ if (activitySpec.id) {
325
+ activitySysIds[activitySpec.id] = activityResult.activitySysId;
326
+ }
327
+ activitySysIds[String(i)] = activityResult.activitySysId;
328
+ }
329
+ // Step 4: Create transitions
330
+ const transitionSysIds = [];
331
+ if (spec.transitions && spec.transitions.length > 0) {
332
+ for (let i = 0; i < spec.transitions.length; i++) {
333
+ const transitionSpec = spec.transitions[i];
334
+ if (onProgress) {
335
+ onProgress(`Creating transition ${i + 1}/${spec.transitions.length}: '${transitionSpec.from}' -> '${transitionSpec.to}'`);
336
+ }
337
+ const fromSysId = activitySysIds[transitionSpec.from];
338
+ const toSysId = activitySysIds[transitionSpec.to];
339
+ if (!fromSysId) {
340
+ throw new Error(`Transition 'from' activity '${transitionSpec.from}' not found in activity map`);
341
+ }
342
+ if (!toSysId) {
343
+ throw new Error(`Transition 'to' activity '${transitionSpec.to}' not found in activity map`);
344
+ }
345
+ const transitionResult = await this.createTransition({
346
+ fromActivitySysId: fromSysId,
347
+ toActivitySysId: toSysId,
348
+ conditionSysId: transitionSpec.conditionSysId,
349
+ order: transitionSpec.order
350
+ });
351
+ transitionSysIds.push(transitionResult.transitionSysId);
352
+ }
353
+ }
354
+ // Step 5: Publish if requested
355
+ let published = false;
356
+ let startActivityKey;
357
+ if (spec.publish) {
358
+ if (!spec.startActivity) {
359
+ throw new Error('startActivity is required when publish=true');
360
+ }
361
+ const startSysId = activitySysIds[spec.startActivity];
362
+ if (!startSysId) {
363
+ throw new Error(`Start activity '${spec.startActivity}' not found in activity map`);
364
+ }
365
+ if (onProgress) {
366
+ onProgress(`Publishing workflow '${spec.name}'`);
367
+ }
368
+ await this.publishWorkflow({
369
+ versionSysId: versionResult.versionSysId,
370
+ startActivitySysId: startSysId
371
+ });
372
+ published = true;
373
+ startActivityKey = spec.startActivity;
374
+ }
375
+ if (onProgress) {
376
+ onProgress(`Complete workflow '${spec.name}' created successfully`);
377
+ }
378
+ return {
379
+ workflowSysId: workflowResult.workflowSysId,
380
+ versionSysId: versionResult.versionSysId,
381
+ activitySysIds,
382
+ transitionSysIds,
383
+ published,
384
+ startActivity: startActivityKey
385
+ };
386
+ }
387
+ }
388
+ //# sourceMappingURL=WorkflowManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowManager.js","sourceRoot":"","sources":["../../../src/sn/workflow/WorkflowManager.ts"],"names":[],"mappings":"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"}