0.24.0-alpha.0 • Published 3 days ago

@toa.io/extensions.origins v0.24.0-alpha.0

Weekly downloads
-
License
-
Repository
github
Last release
3 days ago

Toa Origins

Enables external communications over supported protocols (HTTP and AMQP).

TL;DR

# manifest.toa.yaml
name: dummy
namespace: dummies

origins:
  docs: http://www.domain.com/docs/
  amazon: amqps://amqp.amazon.com
// Node.js bridge 
async function transition (input, object, context) {
  // direct Aspect invocation
  await context.aspects.http('docs', './example', { method: 'GET' })

  // shortcuts
  await context.http.docs.example.get() // GET http://www.domain.com/docs/example
  await context.amqp.amazon.emit('something_happened', { really: true })
}
# context.toa.yaml
origins:
  dummies.dummy:
    amazon: amqps://amqp.azure.com
    amazon@staging: amqp://amqp.stage

Manifest

origins manifest is an object with origin names as keys an origin URLs as values. Component's origins manifest can be overridden by the Context origins annotation.

Sharded Connections

Origin value may contain shards placeholders.

Environment Variables

Origin value may contain environment variable placeholders.

# manifest.toa.yaml
origins:
  foo@dev: stage${STAGE_NUMBER}.stages.com

This is only usable in local development environment.

HTTP Aspect

Uses node-fetch and returns its result.

Aspect invocation function signature: async (origin: string, rel: string, reuest: fetch.Request): fetch.Response

  • origin: name of the origin in the manifest
  • rel: relative reference to a resource
  • request: Request form node-fetch

Absolute URLs

Requests to arbitrary URLs can be implemented with overloaded direct Aspect invocation.

async (url: string, request: fetch.Request): fetch.Response

By default, requests to arbitrary URLs are not allowed and must be explicitly permitted by setting permissions in the Origins Annotation.

The Rules object is stored in the .http property of the corresponding component. Each key in the Rules object is a regular expression that URLs will be tested against, and each value is a permission — either true to allow the URL or false to deny it. In cases where a URL matches multiple rules, denial takes priority.

The null key is a special case that represents "any URL".

Example

# context.toa.yaml
origins:
  dummies.dummy:
    .http:
      /^https?:\/\/api.domain.com/: true
      /^http:\/\/sandbox.domain.com/@staging: true  # staging environment
      /.*hackers.*/: false                          # deny rule
      ~: true                                       # allow any URL
// Node.js bridge 
async function transition (input, object, context) {
  await context.aspects.http('https://api.domain.com/example', { method: 'POST' })
}

null manifest

To enable the extension for a component that uses arbitrary URLs without any specific origins to declare, the Origins manifest should be set to null.

# manifest.toa.yaml
origins: ~

AMQP Aspect

Uses ComQ, thus, provides interface of comq.IO restricted to emit and request methods.

AMQP origins can have credential secrets deployed. Secret's name must follow origins-{namespace}-{component}-{origin} and it must have keys username and password.

Example

# deploy credentials to the current kubectl context
$ toa conceal origins-dummies-dummiy-messages username=developer password=secret

See toa conceal.

1.0.0-alpha.32

3 days ago

1.0.0-alpha.30

6 days ago

1.0.0-alpha.31

4 days ago

1.0.0-alpha.29

6 days ago

1.0.0-alpha.27

10 days ago

1.0.0-alpha.28

10 days ago

1.0.0-alpha.26

1 month ago

1.0.0-alpha.25

1 month ago

1.0.0-alpha.24

1 month ago

1.0.0-alpha.23

1 month ago

1.0.0-alpha.22

1 month ago

1.0.0-alpha.21

1 month ago

1.0.0-alpha.20

2 months ago

1.0.0-alpha.19

2 months ago

1.0.0-alpha.18

2 months ago

1.0.0-alpha.17

2 months ago

1.0.0-alpha.16

2 months ago

1.0.0-alpha.15

2 months ago

1.0.0-alpha.14

2 months ago

1.0.0-alpha.13

2 months ago

1.0.0-alpha.12

2 months ago

1.0.0-alpha.10

2 months ago

1.0.0-alpha.11

2 months ago

1.0.0-alpha.9

2 months ago

1.0.0-alpha.8

2 months ago

1.0.0-alpha.7

2 months ago

1.0.0-alpha.6

2 months ago

1.0.0-alpha.5

2 months ago

1.0.0-alpha.4

2 months ago

1.0.0-alpha.3

3 months ago

1.0.0-alpha.2

3 months ago

0.24.0-alpha.23

3 months ago

0.24.0-alpha.22

3 months ago

0.24.0-alpha.21

3 months ago

0.24.0-alpha.20

3 months ago

0.24.0-alpha.19

3 months ago

0.24.0-alpha.16

5 months ago

0.24.0-alpha.17

5 months ago

0.24.0-alpha.18

5 months ago

0.24.0-alpha.15

5 months ago

0.24.0-alpha.13

5 months ago

0.24.0-alpha.14

5 months ago

0.23.0-dev.0

6 months ago

0.20.0

6 months ago

1.0.0-alpha.0

6 months ago

0.20.0-dev.29

10 months ago

0.24.0-alpha.4

6 months ago

0.24.0-alpha.3

6 months ago

0.24.0-alpha.10

6 months ago

0.24.0-alpha.6

6 months ago

0.24.0-alpha.11

6 months ago

0.24.0-alpha.5

6 months ago

0.24.0-alpha.12

6 months ago

0.24.0-alpha.8

6 months ago

0.24.0-alpha.7

6 months ago

0.24.0-alpha.9

6 months ago

0.24.0-alpha.0

6 months ago

0.24.0-alpha.2

6 months ago

0.22.1

6 months ago

0.22.0

6 months ago

0.20.0-dev.40

8 months ago

0.20.0-alpha.0

8 months ago

0.20.0-alpha.1

8 months ago

0.20.0-alpha.2

7 months ago

0.20.0-dev.36

9 months ago

0.20.0-dev.35

9 months ago

0.20.0-dev.34

9 months ago

0.20.0-dev.39

9 months ago

0.20.0-dev.38

9 months ago

0.20.0-dev.37

9 months ago

0.20.0-dev.31

10 months ago

0.20.0-dev.30

10 months ago

0.20.1-alpha.0

6 months ago

0.20.0-dev.28

10 months ago

0.20.0-dev.24

11 months ago

0.20.0-dev.23

11 months ago

0.20.0-dev.22

11 months ago

0.20.0-dev.21

11 months ago

0.20.0-dev.20

11 months ago

0.20.0-dev.19

11 months ago

0.20.0-dev.14

11 months ago

0.20.0-dev.18

11 months ago

0.20.0-dev.17

11 months ago

0.20.0-dev.16

11 months ago

0.20.0-dev.15

11 months ago

0.9.2-dev.0

12 months ago

0.10.0-dev.10

12 months ago

0.10.0-dev.11

12 months ago

0.10.0-dev.12

12 months ago

0.10.0-dev.13

12 months ago

0.10.0-dev.15

12 months ago

0.10.0-dev.16

12 months ago

0.9.1-dev.1

12 months ago

0.9.1-dev.0

12 months ago

0.9.2

12 months ago

0.9.1

12 months ago

0.20.0-dev.7

11 months ago

0.20.0-dev.6

11 months ago

0.20.0-dev.5

11 months ago

0.20.0-dev.4

11 months ago

0.20.0-dev.3

11 months ago

0.20.0-dev.2

11 months ago

0.20.0-dev.1

11 months ago

0.9.3-alpha.56

11 months ago

0.20.0-dev.9

11 months ago

0.20.0-dev.8

11 months ago

0.20.0-dev.13

11 months ago

0.20.0-dev.12

11 months ago

0.20.0-dev.11

11 months ago

0.10.0-dev.8

12 months ago

0.10.0-dev.7

12 months ago

0.10.0-dev.9

12 months ago

0.20.0-dev.10

11 months ago

0.10.0-canary.2

11 months ago

0.10.0-canary.1

11 months ago

0.10.0-canary.0

11 months ago

0.10.0-dev.0

12 months ago

0.10.0-dev.2

12 months ago

0.10.0-dev.1

12 months ago

0.10.0-dev.4

12 months ago

0.10.0-dev.3

12 months ago

0.10.0-dev.6

12 months ago

0.10.0-dev.5

12 months ago

0.7.2-dev.0

1 year ago

0.8.0-dev.1

1 year ago

0.8.0-dev.0

1 year ago

0.9.0-dev.0

1 year ago

0.7.0-dev.0

1 year ago

0.7.0-dev.1

1 year ago

0.9.0-dev.1

1 year ago

0.7.0-dev.2

1 year ago

0.8.0-dev.5

1 year ago

0.8.0-dev.4

1 year ago

0.8.0-dev.3

1 year ago

0.8.0-dev.2

1 year ago

0.6.0-dev.4

1 year ago

0.7.1-dev.0

1 year ago

0.8.1-dev.0

1 year ago

0.9.0

1 year ago

0.8.0

1 year ago

0.7.1

1 year ago

0.7.1-dev.2

1 year ago

0.7.0

1 year ago

0.6.0

1 year ago

0.6.0-dev.3

1 year ago

0.6.0-dev.1

1 year ago

0.4.0

1 year ago

0.4.0-dev.9

1 year ago

0.4.0-dev.8

1 year ago

0.4.0-dev.6

1 year ago

0.4.0-dev.2

1 year ago

0.4.0-dev.0

1 year ago

0.3.0

1 year ago

0.2.1-dev.4

1 year ago

0.2.1-dev.3

1 year ago