diff --git a/.eslintignore b/.eslintignore
new file mode 100644
index 00000000..3a974ae1
--- /dev/null
+++ b/.eslintignore
@@ -0,0 +1,7 @@
+# don't ever lint node_modules
+node_modules
+# don't lint definitions
+src/lib/definitions/**/*
+# don't lint build output
+dist
+out-tsc
\ No newline at end of file
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..74b489ef
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,17 @@
+module.exports = {
+ root: true,
+ parser: '@typescript-eslint/parser',
+ plugins: [
+ '@typescript-eslint',
+ ],
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/eslint-recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'prettier'
+ ],
+ rules: {
+ '@typescript-eslint/no-explicit-any': 0,
+ '@typescript-eslint/no-inferrable-types': 0
+ }
+};
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md
index 9478bcd1..e463fcd5 100644
--- a/.github/ISSUE_TEMPLATE/bug-report.md
+++ b/.github/ISSUE_TEMPLATE/bug-report.md
@@ -1,16 +1,16 @@
----
-name: Bug Report
-about: Report a bug encountered with the Serverless Workflow Typescript SDK
-labels: kind/bug
-
----
-
-**What happened**:
-
-**What you expected to happen**:
-
-**How to reproduce it**:
-
-**Anything else we need to know?**:
-
+---
+name: Bug Report
+about: Report a bug encountered with the Serverless Workflow Typescript SDK
+labels: kind/bug
+
+---
+
+**What happened**:
+
+**What you expected to happen**:
+
+**How to reproduce it**:
+
+**Anything else we need to know?**:
+
**Environment**:
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md
index 065b2b60..56685e51 100644
--- a/.github/ISSUE_TEMPLATE/enhancement.md
+++ b/.github/ISSUE_TEMPLATE/enhancement.md
@@ -1,10 +1,10 @@
----
-name: Enhancement Request
-about: Suggest an enhancement to the Serverless Workflow Typescript SDK
-labels: kind/feature
-
----
-
-**What would you like to be added**:
-
+---
+name: Enhancement Request
+about: Suggest an enhancement to the Serverless Workflow Typescript SDK
+labels: kind/feature
+
+---
+
+**What would you like to be added**:
+
**Why is this needed**:
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/question.md b/.github/ISSUE_TEMPLATE/question.md
index e094964f..88910eb8 100644
--- a/.github/ISSUE_TEMPLATE/question.md
+++ b/.github/ISSUE_TEMPLATE/question.md
@@ -1,8 +1,8 @@
----
-name: Question
-about: Ask a question about the Serverless Workflow Typescript SDK
-labels: kind/question
-
----
-
+---
+name: Question
+about: Ask a question about the Serverless Workflow Typescript SDK
+labels: kind/question
+
+---
+
**What is the question**:
\ No newline at end of file
diff --git a/.github/OWNERS b/.github/OWNERS
index 1010c333..f5553dfc 100644
--- a/.github/OWNERS
+++ b/.github/OWNERS
@@ -1,12 +1,12 @@
-reviewers:
- - tsurdilo
- - manuelstein
- - ricardozanini
- - antmendoza
-approvers:
- - tsurdilo
- - manuelstein
- - ricardozanini
- - antmendoza
-labels:
+reviewers:
+ - tsurdilo
+ - manuelstein
+ - ricardozanini
+ - antmendoza
+approvers:
+ - tsurdilo
+ - manuelstein
+ - ricardozanini
+ - antmendoza
+labels:
- sig/contributor-experience
\ No newline at end of file
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 157cd18e..0f2ec2f8 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -1,7 +1,7 @@
-**Many thanks for submitting your Pull Request :heart:!**
-
-**What this PR does / why we need it**:
-
-**Special notes for reviewers**:
-
+**Many thanks for submitting your Pull Request :heart:!**
+
+**What this PR does / why we need it**:
+
+**Special notes for reviewers**:
+
**Additional information (if needed):**
\ No newline at end of file
diff --git a/.github/workflows/node-ci.yml b/.github/workflows/node-ci.yml
index d9371cbb..7fe57b39 100644
--- a/.github/workflows/node-ci.yml
+++ b/.github/workflows/node-ci.yml
@@ -1,26 +1,26 @@
-name: Node CI
-
-on:
- push:
- branches: [ main ]
- pull_request:
- branches: [ main ]
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- strategy:
- matrix:
- node-version: [10.x, 12.x, 14.x, 15.x]
-
- steps:
- - uses: actions/checkout@v2
- - name: Use Node.js ${{ matrix.node-version }}
- uses: actions/setup-node@v1
- with:
- node-version: ${{ matrix.node-version }}
- - run: npm ci
- - run: npm run build --if-present
+name: Node CI
+
+on:
+ push:
+ branches: [ main ]
+ pull_request:
+ branches: [ main ]
+
+jobs:
+ build:
+
+ runs-on: ubuntu-latest
+
+ strategy:
+ matrix:
+ node-version: [10.x, 12.x, 14.x, 15.x]
+
+ steps:
+ - uses: actions/checkout@v2
+ - name: Use Node.js ${{ matrix.node-version }}
+ uses: actions/setup-node@v1
+ with:
+ node-version: ${{ matrix.node-version }}
+ - run: npm ci
+ - run: npm run build --if-present
- run: npm test
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 3ff7bd71..67739384 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,19 +1,19 @@
-# Dependency directory
-node_modules
-bower_components
-
-# Editors
-.idea
-.vscode
-*.iml
-
-# OS metadata
-.DS_Store
-Thumbs.db
-
-# Ignore built ts files
-dist/**/*
-out-tsc
-
-# ignore yarn.lock
+# Dependency directory
+node_modules
+bower_components
+
+# Editors
+.idea
+.vscode
+*.iml
+
+# OS metadata
+.DS_Store
+Thumbs.db
+
+# Ignore built ts files
+dist/**/*
+out-tsc
+
+# ignore yarn.lock
yarn.lock
\ No newline at end of file
diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile
index 11afbf8e..626e1a32 100644
--- a/.gitpod.Dockerfile
+++ b/.gitpod.Dockerfile
@@ -1 +1 @@
-FROM node:16-buster
+FROM node:16-buster
diff --git a/.gitpod.yml b/.gitpod.yml
index 1c012315..1dd668f1 100644
--- a/.gitpod.yml
+++ b/.gitpod.yml
@@ -1,20 +1,20 @@
-image:
- file: .gitpod.Dockerfile
-
-# List the start up tasks. You can start them in parallel in multiple terminals.
-# https://www.gitpod.io/docs/config-start-tasks/
-tasks:
- - init: >
- npm install &&
- npm run build
- command: npm run test
-
-# Enable prebuilds of your project to enable faster workspace start times.
-# https://www.gitpod.io/docs/prebuilds/#configure-the-github-app
-github:
- prebuilds:
- master: true
- branches: true
- pullRequests: true
- pullRequestsFromForks: true
- addCheck: true
+image:
+ file: .gitpod.Dockerfile
+
+# List the start up tasks. You can start them in parallel in multiple terminals.
+# https://www.gitpod.io/docs/config-start-tasks/
+tasks:
+ - init: >
+ npm install &&
+ npm run build
+ command: npm run test
+
+# Enable prebuilds of your project to enable faster workspace start times.
+# https://www.gitpod.io/docs/prebuilds/#configure-the-github-app
+github:
+ prebuilds:
+ master: true
+ branches: true
+ pullRequests: true
+ pullRequestsFromForks: true
+ addCheck: true
diff --git a/.husky/.gitignore b/.husky/.gitignore
new file mode 100644
index 00000000..31354ec1
--- /dev/null
+++ b/.husky/.gitignore
@@ -0,0 +1 @@
+_
diff --git a/.huskyrc.json b/.huskyrc.json
new file mode 100644
index 00000000..47cebfdb
--- /dev/null
+++ b/.huskyrc.json
@@ -0,0 +1,6 @@
+{
+ "hooks": {
+ "pre-commit": "lint-staged",
+ "pre-push": "npm run test"
+ }
+}
\ No newline at end of file
diff --git a/.lintstagedrc.json b/.lintstagedrc.json
new file mode 100644
index 00000000..353b9297
--- /dev/null
+++ b/.lintstagedrc.json
@@ -0,0 +1,3 @@
+{
+ "*.ts": "prettier --write"
+}
\ No newline at end of file
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..28a7ecfb
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1,4 @@
+node_modules
+dist
+out-tsc
+src/lib/validation/validators-paths.ts
\ No newline at end of file
diff --git a/.prettierrc.js b/.prettierrc.js
new file mode 100644
index 00000000..ac12b22c
--- /dev/null
+++ b/.prettierrc.js
@@ -0,0 +1,24 @@
+module.exports = {
+ printWidth: 120, /** Specify the line length that the printer will wrap on. */
+ // tabWidth: 2, /** Specify the number of spaces per indentation-level. */
+ // useTabs: false, /** Indent lines with tabs instead of spaces. */
+ // semi: true, /** Print semicolons at the ends of statements. */
+ singleQuote: true, /** Use single quotes instead of double quotes. */
+ // quoteProps: 'as-needed', /** Change when properties in objects are quoted. */
+ // jsxSingleQuote: false, /** Use single quotes instead of double quotes in JSX. */
+ // trailingComma: 'es5', /** Print trailing commas wherever possible in multi-line comma-separated syntactic structures. (A single-line array, for example, never gets trailing commas.) */
+ // bracketSpacing: true, /** Print spaces between brackets in object literals. */
+ // jsxBracketSameLine: false, /** Put the > of a multi-line JSX element at the end of the last line instead of being alone on the next line (does not apply to self closing elements). */
+ // arrowParens: 'always', /** Include parentheses around a sole arrow function parameter. */
+ // rangeStart: 0, /** Format only a segment of a file. */
+ // rangeEnd: Infinity, /** Format only a segment of a file. */
+ // parser: None, /** Prettier automatically infers the parser from the input file path, so you shouldn’t have to change this setting. */
+ // filepath: None, /** Specify the file name to use to infer which parser to use. */
+ // requirePragma: false, /** Prettier can restrict itself to only format files that contain a special comment, called a pragma, at the top of the file. This is very useful when gradually transitioning large, unformatted codebases to Prettier. */
+ // insertPragma: false, /** Prettier can insert a special @format marker at the top of files specifying that the file has been formatted with Prettier. This works well when used in tandem with the --require-pragma option. If there is already a docblock at the top of the file then this option will add a newline to it with the @format marker. */
+ // proseWrap: 'preserve', /** By default, Prettier will wrap markdown text as-is since some services use a linebreak-sensitive renderer, e.g. GitHub comment and BitBucket. In some cases you may want to rely on editor/viewer soft wrapping instead, so this option allows you to opt out with "never". */
+ // htmlWhitespaceSensitivity: 'css', /** Specify the global whitespace sensitivity for HTML, Vue, Angular, and Handlebars. See whitespace-sensitive formatting for more info. */
+ // vueIndentScriptAndStyle: false, /** Whether or not to indent the code inside
-
-