@rippling/rippling-sdk 0.2.0-alpha.104 → 0.2.0-alpha.105

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 (115) hide show
  1. package/client.d.mts +6 -0
  2. package/client.d.mts.map +1 -1
  3. package/client.d.ts +6 -0
  4. package/client.d.ts.map +1 -1
  5. package/client.js +6 -0
  6. package/client.js.map +1 -1
  7. package/client.mjs +6 -0
  8. package/client.mjs.map +1 -1
  9. package/lib/manifest/_existing-component-fields.d.mts.map +1 -1
  10. package/lib/manifest/_existing-component-fields.d.ts.map +1 -1
  11. package/lib/manifest/_existing-component-fields.js +2 -0
  12. package/lib/manifest/_existing-component-fields.js.map +1 -1
  13. package/lib/manifest/_existing-component-fields.mjs +2 -0
  14. package/lib/manifest/_existing-component-fields.mjs.map +1 -1
  15. package/lib/manifest/existing-manifest-context.d.mts +3 -0
  16. package/lib/manifest/existing-manifest-context.d.mts.map +1 -1
  17. package/lib/manifest/existing-manifest-context.d.ts +3 -0
  18. package/lib/manifest/existing-manifest-context.d.ts.map +1 -1
  19. package/lib/manifest/existing-manifest-context.js +14 -0
  20. package/lib/manifest/existing-manifest-context.js.map +1 -1
  21. package/lib/manifest/existing-manifest-context.mjs +14 -0
  22. package/lib/manifest/existing-manifest-context.mjs.map +1 -1
  23. package/lib/manifest/workflow/index.d.mts +4 -0
  24. package/lib/manifest/workflow/index.d.mts.map +1 -1
  25. package/lib/manifest/workflow/index.d.ts +4 -0
  26. package/lib/manifest/workflow/index.d.ts.map +1 -1
  27. package/lib/manifest/workflow/index.js +49 -0
  28. package/lib/manifest/workflow/index.js.map +1 -1
  29. package/lib/manifest/workflow/index.mjs +49 -0
  30. package/lib/manifest/workflow/index.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/resources/activity-log.d.mts +517 -0
  33. package/resources/activity-log.d.mts.map +1 -0
  34. package/resources/activity-log.d.ts +517 -0
  35. package/resources/activity-log.d.ts.map +1 -0
  36. package/resources/activity-log.js +171 -0
  37. package/resources/activity-log.js.map +1 -0
  38. package/resources/activity-log.mjs +167 -0
  39. package/resources/activity-log.mjs.map +1 -0
  40. package/resources/compensations.d.mts +1 -1
  41. package/resources/compensations.d.ts +1 -1
  42. package/resources/compensations.js +1 -1
  43. package/resources/compensations.mjs +1 -1
  44. package/resources/developer-program-application.d.mts +1 -1
  45. package/resources/developer-program-application.d.ts +1 -1
  46. package/resources/developer-program-application.js +1 -1
  47. package/resources/developer-program-application.mjs +1 -1
  48. package/resources/developer-users.d.mts +2 -1
  49. package/resources/developer-users.d.mts.map +1 -1
  50. package/resources/developer-users.d.ts +2 -1
  51. package/resources/developer-users.d.ts.map +1 -1
  52. package/resources/developer-users.js +2 -1
  53. package/resources/developer-users.js.map +1 -1
  54. package/resources/developer-users.mjs +2 -1
  55. package/resources/developer-users.mjs.map +1 -1
  56. package/resources/index.d.mts +1 -0
  57. package/resources/index.d.mts.map +1 -1
  58. package/resources/index.d.ts +1 -0
  59. package/resources/index.d.ts.map +1 -1
  60. package/resources/index.js +5 -2
  61. package/resources/index.js.map +1 -1
  62. package/resources/index.mjs +1 -0
  63. package/resources/index.mjs.map +1 -1
  64. package/resources/listing-submissions.d.mts +1 -1
  65. package/resources/listing-submissions.d.ts +1 -1
  66. package/resources/listing-submissions.js +1 -1
  67. package/resources/listing-submissions.mjs +1 -1
  68. package/resources/listing-transitions.d.mts +1 -1
  69. package/resources/listing-transitions.d.ts +1 -1
  70. package/resources/listing-transitions.js +1 -1
  71. package/resources/listing-transitions.mjs +1 -1
  72. package/resources/listing.d.mts +1 -1
  73. package/resources/listing.d.ts +1 -1
  74. package/resources/listing.js +1 -1
  75. package/resources/listing.mjs +1 -1
  76. package/resources/variable-compensation-payout-labels.d.mts +2 -1
  77. package/resources/variable-compensation-payout-labels.d.mts.map +1 -1
  78. package/resources/variable-compensation-payout-labels.d.ts +2 -1
  79. package/resources/variable-compensation-payout-labels.d.ts.map +1 -1
  80. package/resources/variable-compensation-payout-labels.js +2 -1
  81. package/resources/variable-compensation-payout-labels.js.map +1 -1
  82. package/resources/variable-compensation-payout-labels.mjs +2 -1
  83. package/resources/variable-compensation-payout-labels.mjs.map +1 -1
  84. package/resources/variable-compensation-payout-types.d.mts +1 -1
  85. package/resources/variable-compensation-payout-types.d.ts +1 -1
  86. package/resources/variable-compensation-payout-types.js +1 -1
  87. package/resources/variable-compensation-payout-types.mjs +1 -1
  88. package/resources/variable-compensation-payouts.d.mts +4 -1
  89. package/resources/variable-compensation-payouts.d.mts.map +1 -1
  90. package/resources/variable-compensation-payouts.d.ts +4 -1
  91. package/resources/variable-compensation-payouts.d.ts.map +1 -1
  92. package/resources/variable-compensation-payouts.js +4 -1
  93. package/resources/variable-compensation-payouts.js.map +1 -1
  94. package/resources/variable-compensation-payouts.mjs +4 -1
  95. package/resources/variable-compensation-payouts.mjs.map +1 -1
  96. package/src/client.ts +22 -0
  97. package/src/lib/manifest/_existing-component-fields.ts +2 -0
  98. package/src/lib/manifest/existing-manifest-context.ts +22 -0
  99. package/src/lib/manifest/workflow/index.ts +64 -0
  100. package/src/resources/activity-log.ts +645 -0
  101. package/src/resources/compensations.ts +1 -1
  102. package/src/resources/developer-program-application.ts +1 -1
  103. package/src/resources/developer-users.ts +2 -1
  104. package/src/resources/index.ts +8 -0
  105. package/src/resources/listing-submissions.ts +1 -1
  106. package/src/resources/listing-transitions.ts +1 -1
  107. package/src/resources/listing.ts +1 -1
  108. package/src/resources/variable-compensation-payout-labels.ts +2 -1
  109. package/src/resources/variable-compensation-payout-types.ts +1 -1
  110. package/src/resources/variable-compensation-payouts.ts +4 -1
  111. package/src/version.ts +1 -1
  112. package/version.d.mts +1 -1
  113. package/version.d.ts +1 -1
  114. package/version.js +1 -1
  115. package/version.mjs +1 -1
@@ -16,6 +16,7 @@ import { ManifestFunction } from './manifest-function';
16
16
  import { Rule } from './rule';
17
17
  import { SduiPage } from './sdui-page';
18
18
  import { Validation } from './validation';
19
+ import { Workflow } from './workflow';
19
20
  import {
20
21
  optionalStringComponentField,
21
22
  requireObjectComponentField,
@@ -92,6 +93,8 @@ function componentLabel(component: Record<string, any>): string {
92
93
  component['source_skill_id'] ??
93
94
  component['field_api_name'] ??
94
95
  component['section_id'] ??
96
+ component['definition_id'] ??
97
+ component['obj_id'] ??
95
98
  'unknown';
96
99
  return `${type}:${id}`;
97
100
  }
@@ -355,6 +358,15 @@ export class ExistingManifestContext {
355
358
  return this.loadACPAgentComponent(component);
356
359
  }
357
360
 
361
+ loadWorkflow(definitionId: string): Workflow {
362
+ const component = this.findUnique(
363
+ 'WORKFLOW_DEFINITION',
364
+ (candidate) => candidate['definition_id'] === definitionId,
365
+ `WORKFLOW_DEFINITION ${definitionId}`,
366
+ );
367
+ return this.loadWorkflowComponent(component);
368
+ }
369
+
358
370
  private loadComponent(component: Record<string, any>): unknown {
359
371
  switch (component['type']) {
360
372
  case 'AGENT':
@@ -391,6 +403,8 @@ export class ExistingManifestContext {
391
403
  return this.loadSduiPageComponent(component);
392
404
  case 'CUSTOM_APP':
393
405
  return this.loadAppComponent(component);
406
+ case 'WORKFLOW_DEFINITION':
407
+ return this.loadWorkflowComponent(component);
394
408
  default:
395
409
  return this.loadRawComponent(component);
396
410
  }
@@ -626,6 +640,14 @@ export class ExistingManifestContext {
626
640
  );
627
641
  }
628
642
 
643
+ private loadWorkflowComponent(component: Record<string, any>): Workflow {
644
+ const definitionId = requireStringComponentField(component, 'definition_id', Workflow.componentType);
645
+ const cacheKey = this.cacheKey('WORKFLOW_DEFINITION', definitionId);
646
+ return this.getOrLoad(cacheKey, () =>
647
+ Workflow._fromExistingComponent(this.getManifestBuilder(), component),
648
+ );
649
+ }
650
+
629
651
  private loadRawComponent(component: Record<string, any>): ExistingRawComponent {
630
652
  const index = this.componentIndexes.get(component) ?? -1;
631
653
  const cacheKey = this.cacheKey('RAW', `${index}:${componentLabel(component)}`);
@@ -1,5 +1,10 @@
1
1
  import { generateId } from '../_helpers';
2
2
  import type { BusinessEventKey } from '../business-event';
3
+ import { requireObjectComponentField, requireStringComponentField } from '../_existing-component-fields';
4
+ import {
5
+ getExistingManifestContext,
6
+ type ExistingManifestContextOptions,
7
+ } from '../existing-manifest-context';
3
8
  import type { ManifestFunction } from '../manifest-function';
4
9
  import type { ManifestComponentDeletion, ManifestScope } from '../manifest-builder';
5
10
  import type { WorkflowActionPayloads } from './actions';
@@ -473,6 +478,11 @@ export interface WorkflowProps {
473
478
  categories?: WorkflowCategory[];
474
479
  }
475
480
 
481
+ function cloneJson<T>(value: T): T {
482
+ if (value == null) return value;
483
+ return JSON.parse(JSON.stringify(value)) as T;
484
+ }
485
+
476
486
  function assertNonEmptyString(value: unknown, path: string): void {
477
487
  if (typeof value !== 'string' || !value.trim()) throw new Error(`${path} is required.`);
478
488
  }
@@ -882,6 +892,60 @@ export class Workflow {
882
892
  scope._register(this);
883
893
  }
884
894
 
895
+ static loadFromExisting(definitionId: string, options: ExistingManifestContextOptions = {}): Workflow {
896
+ return getExistingManifestContext(options).loadWorkflow(definitionId);
897
+ }
898
+
899
+ /** @internal Hydrates a workflow from existing manifest wire JSON. */
900
+ static _fromExistingComponent(scope: ManifestScope, component: Record<string, any>): Workflow {
901
+ const workflowMeta = requireObjectComponentField(component, 'workflow_meta', Workflow.componentType);
902
+ const definitionId = requireStringComponentField(component, 'definition_id', Workflow.componentType);
903
+ const props: WorkflowProps = {
904
+ definitionId,
905
+ title: requireStringComponentField(
906
+ { definition_id: definitionId, name: workflowMeta['name'] },
907
+ 'name',
908
+ Workflow.componentType,
909
+ ),
910
+ trigger: cloneJson(
911
+ requireObjectComponentField(component, 'trigger', Workflow.componentType),
912
+ ) as WorkflowTrigger,
913
+ };
914
+ if (typeof workflowMeta['description'] === 'string') props.description = workflowMeta['description'];
915
+ if (typeof workflowMeta['recipe_id'] === 'string') props.recipeId = workflowMeta['recipe_id'];
916
+ if (typeof component['function_api_name'] === 'string') {
917
+ props.function = component['function_api_name'];
918
+ }
919
+ if (typeof component['version_status'] === 'string') {
920
+ props.versionStatus = component['version_status'] as WorkflowVersionStatus;
921
+ }
922
+ if (typeof component['trigger_status'] === 'string') {
923
+ props.triggerStatus = component['trigger_status'] as WorkflowTriggerStatus;
924
+ }
925
+ if (component['graph'] != null) {
926
+ props.graph = cloneJson(component['graph']) as WorkflowGraph;
927
+ }
928
+ if (component['functions_inferred_graph'] != null) {
929
+ props.functionsInferredGraph = cloneJson(component['functions_inferred_graph']) as WorkflowGraph;
930
+ }
931
+ if (component['custom_variables'] != null) {
932
+ props.customVariables = cloneJson(component['custom_variables']) as Record<
933
+ string,
934
+ WorkflowCustomVariable
935
+ >;
936
+ }
937
+ if (component['function_api_names_by_old_id'] != null) {
938
+ props.functionApiNamesByOldId = cloneJson(component['function_api_names_by_old_id']) as Record<
939
+ string,
940
+ string
941
+ >;
942
+ }
943
+ if (component['categories'] != null) {
944
+ props.categories = cloneJson(component['categories']) as WorkflowCategory[];
945
+ }
946
+ return new Workflow(scope, props);
947
+ }
948
+
885
949
  private _validate(): void {
886
950
  assertNonEmptyString(this._title, 'Workflow.workflow_meta.name');
887
951
  if (this._props.function !== undefined)