0.3.10 • Published 4 years ago

sota v0.3.10

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

State of the Arg

sugary-sweet state machine syntax

Warning: this is an early stage work-in-progress and is under heavy development.

install

npm i sota

what is sota?

Simple: It's just Amazon State Language... with enough sugar piled on to mask the notoriously bitter aftertaste.

Let's say you saved the following to a file called state-machine.pdn...

arn:aws:lambda:us-east-1:12345679:function:foo
arn:aws:lambda:us-east-1:12345679:function:bar
[
  [
    arn:aws:states:us-east-1:12345679:activity:a
    arn:aws:lambda:us-east-1:12345679:function:a
  ]
  [
    arn:aws:states:us-east-1:12345679:activity:c
    @try [
      arn:aws:states:us-east-1:12345679:activity:d
      arn:aws:states:us-east-1:12345679:activity:c
    ]
    @retry [
      arn:aws:states:us-east-1:12345679:activity:e
    ]
  ]
]
@if [
  [$.foo >= 1565317676]
  arn:aws:lambda:us-east-1:12345679:function:foo
  boom
]
@fail boom

And then you ran it through sota like so...

cat state-machine.pdn | sota

Well, if you did that, you'd get the following:

{
  "StartAt": "foo",
  "States": {
    "foo": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:12345679:function:foo",
      "ResultPath": "$.foo",
      "Next": "bar"
    },
    "bar": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-east-1:12345679:function:bar",
      "ResultPath": "$.bar",
      "Next": "parallel"
    },
    "parallel": {
      "Type": "Parallel",
      "Branches": [
        {
          "StartAt": "a",
          "States": {
            "a": {
              "Type": "Task",
              "Resource": "arn:aws:states:us-east-1:12345679:activity:a",
              "ResultPath": "$.a",
              "Next": "a-1"
            },
            "a-1": {
              "Type": "Task",
              "Resource": "arn:aws:lambda:us-east-1:12345679:function:a",
              "ResultPath": "$.a-1",
              "End": true
            }
          }
        },
        {
          "StartAt": "c",
          "States": {
            "c": {
              "Type": "Task",
              "Resource": "arn:aws:states:us-east-1:12345679:activity:c",
              "ResultPath": "$.c",
              "Next": "d"
            },
            "d": {
              "Type": "Task",
              "Resource": "arn:aws:states:us-east-1:12345679:activity:d",
              "ResultPath": "$.d",
              "Catch": [
                {
                  "ErrorEqual": [
                    "States.ALL"
                  ],
                  "ResultPath": "$.d-error",
                  "Next": "c"
                }
              ],
              "Next": "e"
            },
            "e": {
              "Type": "Task",
              "Resource": "arn:aws:states:us-east-1:12345679:activity:e",
              "ResultPath": "$.e",
              "Retry": [
                {
                  "ErrorEquals": [
                    "States.ALL"
                  ],
                  "MaxAttempts": 3,
                  "IntervalSeconds": 1,
                  "BackoffRate": 1
                }
              ],
              "End": true
            }
          }
        }
      ],
      "Next": "choice"
    },
    "choice": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.foo",
          "StringGreaterThanEquals": "1565317676",
          "Next": "foo"
        },
        {
          "Variable": "$.foo",
          "NumericGreaterThanEquals": 1565317676,
          "Next": "foo"
        },
        {
          "Variable": "$.foo",
          "TimestampGreaterThanEquals": 1565317676,
          "Next": "foo"
        }
      ],
      "Default": "boom"
    },
    "boom": {
      "Type": "Fail",
      "ResultPath": "$.boom"
    }
  }
}
0.3.10

4 years ago

0.3.9

4 years ago

0.3.8

4 years ago

0.3.7

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.35

4 years ago

0.2.34

4 years ago

0.2.33

4 years ago

0.2.32

4 years ago

0.2.31

4 years ago

0.2.30

4 years ago

0.2.29

4 years ago

0.2.28

4 years ago

0.2.27

4 years ago

0.2.26

5 years ago

0.2.25

5 years ago

0.2.24

5 years ago

0.2.23

5 years ago

0.2.22

5 years ago

0.2.21

5 years ago

0.2.20

5 years ago

0.2.19

5 years ago

0.2.18

5 years ago

0.2.17

5 years ago

0.2.16

5 years ago

0.2.15

5 years ago

0.2.14

5 years ago

0.2.13

5 years ago

0.2.12

5 years ago

0.2.11

5 years ago

0.2.10

5 years ago

0.2.9

5 years ago

0.2.8

5 years ago

0.2.7

5 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago

0.0.29

5 years ago

0.0.28

5 years ago

0.0.27

5 years ago

0.0.26

5 years ago

0.0.25

5 years ago

0.0.24

5 years ago

0.0.23

5 years ago

0.0.22

5 years ago

0.0.21

5 years ago

0.0.20

5 years ago

0.0.19

5 years ago

0.0.18

5 years ago

0.0.17

5 years ago

0.0.16

5 years ago

0.0.15

5 years ago

0.0.14

5 years ago

0.0.13

5 years ago

0.0.12

5 years ago

0.0.11

5 years ago

0.0.10

5 years ago

0.0.9

5 years ago

0.0.8

5 years ago

0.0.7

5 years ago

0.0.6

5 years ago

0.0.5

5 years ago

0.0.4

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago