Skip to content

Commit

Permalink
update to spec main branch
Browse files Browse the repository at this point in the history
Signed-off-by: Antonio Mendoza Pérez <[email protected]>
  • Loading branch information
antmendoza committed Jul 22, 2021
1 parent fa2fc40 commit 3142f6d
Show file tree
Hide file tree
Showing 87 changed files with 2,993 additions and 2,256 deletions.
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ import { workflowBuilder, injectstateBuilder, Specification } from '@severlesswo

const workflow: Specification.Workflow = workflowBuilder()
.id("helloworld")
.specVersion("0.7")
.version("1.0")
.name("Hello World Workflow")
.description("Inject Hello World")
Expand All @@ -70,6 +71,7 @@ import { Specification, Workflow } from '@severlessworkflow/sdk-typescript';

const source = `id: helloworld
version: '1.0'
specVerion: '0.7'
name: Hello World Workflow
description: Inject Hello World
start: Hello State
Expand All @@ -94,6 +96,7 @@ import { workflowBuilder, injectstateBuilder, Specification } from '@severlesswo
const workflow: Specification.Workflow = workflowBuilder()
.id("helloworld")
.version("1.0")
.specVersion("0.7")
.name("Hello World Workflow")
.description("Inject Hello World")
.start("Hello State")
Expand Down Expand Up @@ -153,9 +156,10 @@ const workflow: Specification.Workflow = {
} as Specification.Injectstate
]
};

const workflowValidator: WorkflowValidator = new WorkflowValidator(workflow);
if (!workflowValidator.validate()) {
workflowValidator.errors.forEach(error => console.error(error.message));
if (!workflowValidator.isValid) {
workflowValidator.errors.forEach(error => console.error((error as ValidationError).message));
}
```

Expand Down
1 change: 1 addition & 0 deletions examples/browser/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
const workflow = workflowBuilder()
.id("helloworld")
.version("1.0")
.specVersion("0.7")
.name("Hello World Workflow")
.description("Inject Hello World")
.start("Hello State")
Expand Down
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@severlessworkflow/sdk-typescript",
"version": "2.0.0",
"schemaVersion": "0.6",
"schemaVersion": "0.7",
"description": "Typescript SDK for Serverless Workflow Specification",
"main": "umd/index.umd.min.js",
"browser": "umd/index.umd.min.js",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,27 @@
import { Builder, builder } from '../builder';
import { Specification } from '../definitions';
import { validate } from '../utils';
import { setEndValueIfNoTransition } from '../definitions/utils';

/**
* The internal function used by the builder proxy to validate and return its underlying object
* @param {Specification.Subflowstate} data The underlying object
* @returns {Specification.Subflowstate} The validated underlying object
* @param {Specification.Defaultconditiondef} data The underlying object
* @returns {Specification.Defaultconditiondef} The validated underlying object
*/
function subflowstateBuildingFn(data: Specification.Subflowstate): () => Specification.Subflowstate {
function defaultconditiondefBuildingFn(
data: Specification.Defaultconditiondef
): () => Specification.Defaultconditiondef {
return () => {
const model = new Specification.Subflowstate(data);
const model = new Specification.Defaultconditiondef(data);

setEndValueIfNoTransition(model);

validate('Subflowstate', model);
validate('Defaultconditiondef', model);
return model;
};
}

/**
* A factory to create a builder proxy for the type `Specification.Subflowstate`
* @returns {Specification.Subflowstate} A builder for `Specification.Subflowstate`
* A factory to create a builder proxy for the type `Specification.Defaultconditiondef`
* @returns {Specification.Defaultconditiondef} A builder for `Specification.Defaultconditiondef`
*/
export function subflowstateBuilder(): Builder<Specification.Subflowstate> {
return builder<Specification.Subflowstate>(subflowstateBuildingFn);
export function defaultconditiondefBuilder(): Builder<Specification.Defaultconditiondef> {
return builder<Specification.Defaultconditiondef>(defaultconditiondefBuildingFn);
}
8 changes: 4 additions & 4 deletions src/lib/builders/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export * from './callbackstate-builder';
export * from './correlation-def-builder';
export * from './crondef-builder';
export * from './databasedswitch-builder';
export * from './defaultdef-builder';
export * from './defaultconditiondef-builder';
export * from './delaystate-builder';
export * from './end-builder';
export * from './enddatacondition-builder';
Expand All @@ -33,7 +33,6 @@ export * from './eventdatafilter-builder';
export * from './eventdef-builder';
export * from './eventref-builder';
export * from './eventstate-builder';
export * from './exectimeout-builder';
export * from './foreachstate-builder';
export * from './function-builder';
export * from './functionref-builder';
Expand All @@ -43,12 +42,13 @@ export * from './onevents-builder';
export * from './operationstate-builder';
export * from './parallelstate-builder';
export * from './produceeventdef-builder';
export * from './repeat-builder';
export * from './retrydef-builder';
export * from './schedule-builder';
export * from './startdef-builder';
export * from './statedatafilter-builder';
export * from './subflowstate-builder';
export * from './subflowref-builder';
export * from './timeouts-builder';
export * from './transition-builder';
export * from './transitiondatacondition-builder';
export * from './transitioneventcondition-builder';
export * from './workflow-exec-timeout-builder';
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,22 @@ import { validate } from '../utils';

/**
* The internal function used by the builder proxy to validate and return its underlying object
* @param {Specification.Exectimeout} data The underlying object
* @returns {Specification.Exectimeout} The validated underlying object
* @param {Specification.Subflowref} data The underlying object
* @returns {Specification.Subflowref} The validated underlying object
*/
function exectimeoutBuildingFn(data: Specification.Exectimeout): () => Specification.Exectimeout {
function subflowrefBuildingFn(data: Specification.Subflowref): () => Specification.Subflowref {
return () => {
const model = new Specification.Exectimeout(data);
const model = new Specification.Subflowref(data);

validate('Exectimeout', model);
validate('Subflowref', model);
return model;
};
}

/**
* A factory to create a builder proxy for the type `Specification.Exectimeout`
* @returns {Specification.Exectimeout} A builder for `Specification.Exectimeout`
* A factory to create a builder proxy for the type `Specification.Subflowref`
* @returns {Specification.Subflowref} A builder for `Specification.Subflowref`
*/
export function exectimeoutBuilder(): Builder<Specification.Exectimeout> {
return builder<Specification.Exectimeout>(exectimeoutBuildingFn);
export function subflowrefBuilder(): Builder<Specification.Subflowref> {
return builder<Specification.Subflowref>(subflowrefBuildingFn);
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,22 @@ import { validate } from '../utils';

/**
* The internal function used by the builder proxy to validate and return its underlying object
* @param {Specification.Repeat} data The underlying object
* @returns {Specification.Repeat} The validated underlying object
* @param {Specification.Timeouts} data The underlying object
* @returns {Specification.Timeouts} The validated underlying object
*/
function repeatBuildingFn(data: Specification.Repeat): () => Specification.Repeat {
function timeoutsBuildingFn(data: Specification.Timeouts): () => Specification.Timeouts {
return () => {
const model = new Specification.Repeat(data);
const model = new Specification.Timeouts(data);

validate('Repeat', model);
validate('Timeouts', model);
return model;
};
}

/**
* A factory to create a builder proxy for the type `Specification.Repeat`
* @returns {Specification.Repeat} A builder for `Specification.Repeat`
* A factory to create a builder proxy for the type `Specification.Timeouts`
* @returns {Specification.Timeouts} A builder for `Specification.Timeouts`
*/
export function repeatBuilder(): Builder<Specification.Repeat> {
return builder<Specification.Repeat>(repeatBuildingFn);
export function timeoutsBuilder(): Builder<Specification.Timeouts> {
return builder<Specification.Timeouts>(timeoutsBuildingFn);
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,28 +17,27 @@
import { Builder, builder } from '../builder';
import { Specification } from '../definitions';
import { validate } from '../utils';
import { setEndValueIfNoTransition } from '../definitions/utils';

/**
* The internal function used by the builder proxy to validate and return its underlying object
* @param {Specification.Defaultdef} data The underlying object
* @returns {Specification.Defaultdef} The validated underlying object
* @param {Specification.WorkflowExecTimeout} data The underlying object
* @returns {Specification.WorkflowExecTimeout} The validated underlying object
*/
function defaultdefBuildingFn(data: Specification.Defaultdef): () => Specification.Defaultdef {
function workflowExecTimeoutBuildingFn(
data: Specification.WorkflowExecTimeout
): () => Specification.WorkflowExecTimeout {
return () => {
const model = new Specification.Defaultdef(data);
const model = new Specification.WorkflowExecTimeout(data);

setEndValueIfNoTransition(model);

validate('Defaultdef', model);
validate('WorkflowExecTimeout', model);
return model;
};
}

/**
* A factory to create a builder proxy for the type `Specification.Defaultdef`
* @returns {Specification.Defaultdef} A builder for `Specification.Defaultdef`
* A factory to create a builder proxy for the type `Specification.WorkflowExecTimeout`
* @returns {Specification.WorkflowExecTimeout} A builder for `Specification.WorkflowExecTimeout`
*/
export function defaultdefBuilder(): Builder<Specification.Defaultdef> {
return builder<Specification.Defaultdef>(defaultdefBuildingFn);
export function workflowExecTimeoutBuilder(): Builder<Specification.WorkflowExecTimeout> {
return builder<Specification.WorkflowExecTimeout>(workflowExecTimeoutBuildingFn);
}
2 changes: 0 additions & 2 deletions src/lib/definitions/README.md

This file was deleted.

32 changes: 24 additions & 8 deletions src/lib/definitions/action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,42 @@
import { Actiondatafilter } from './actiondatafilter';
import { Eventref } from './eventref';
import { Functionref } from './functionref';
import { overwriteActionDataFilterValue, overwriteEventRefValue, overwriteFunctionRefValue } from './utils';
import {
normalizeSubFlowRefIfObject,
overwriteActionDataFilter,
overwriteEventRef,
overwriteFunctionRefIfObject,
overwriteSubFlowRefIfObject,
} from './utils';
import { Subflowref } from './subflowref';

export class Action {
constructor(model: any) {
Object.assign(this, model);

overwriteFunctionRefValue(this);
overwriteEventRefValue(this);
overwriteActionDataFilterValue(this);
overwriteFunctionRefIfObject(this);
overwriteEventRef(this);
overwriteSubFlowRefIfObject(this);
overwriteActionDataFilter(this);
}

/**
* Unique action definition name
*/
name?: string;
functionRef: string | Functionref;
functionRef?: string | Functionref;
eventRef?: /* Event References */ Eventref;
subFlowRef?: string | Subflowref;
actionDataFilter?: Actiondatafilter;

/**
* Time period to wait for function execution to complete
* Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state.
* @returns {Specification.Action} without deleted properties.
*/
timeout?: string;
actionDataFilter?: Actiondatafilter;
normalize = (): Action => {
const clone = new Action(this);
normalizeSubFlowRefIfObject(clone);

return clone;
};
}
28 changes: 22 additions & 6 deletions src/lib/definitions/branch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,26 +13,42 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import { Action } from './action';
import { overwriteActionsValue } from './utils';
import { normalizeActions, overwriteActions, overwritePropertyAsPlainType } from './utils';
import { ActionExecTimeout, BranchExecTimeout } from './types';

export class Branch /* Branch Definition */ {
constructor(model: any) {
Object.assign(this, model);

overwriteActionsValue(this);
overwriteActions(this);
overwritePropertyAsPlainType('timeouts', this);
}

/**
* Branch name
*/
name: string;
/**
* State specific timeouts
*/
timeouts?: {
actionExecTimeout?: /* Single actions definition execution timeout duration (ISO 8601 duration format) */ ActionExecTimeout;
branchExecTimeout?: /* Single branch execution timeout duration (ISO 8601 duration format) */ BranchExecTimeout;
};
/**
* Actions to be executed in this branch
*/
actions?: Action[];
actions: Action[];

/**
* Unique Id of a workflow to be executed in this branch
* Normalize the value of each property by recursively deleting properties whose value is equal to its default value. Does not modify the object state.
* @returns {Specification.Action} without deleted properties.
*/
workflowId: string;
normalize = (): Branch => {
const clone = new Branch(this);
normalizeActions(clone);

return clone;
};
}
Loading

0 comments on commit 3142f6d

Please sign in to comment.