@toa.io/userland 1.0.0-alpha.3 → 1.0.0-alpha.300

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 (154) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/example/components/echo/manifest.toa.yaml +15 -5
  3. package/example/components/echo/operations/get.js +1 -5
  4. package/example/components/echo/operations/resolve.js +1 -5
  5. package/example/components/echo/operations/signal.js +3 -7
  6. package/example/components/math.calculations/manifest.toa.yaml +19 -6
  7. package/example/components/math.calculations/operations/add.js +1 -5
  8. package/example/components/math.calculations/operations/increment.js +1 -5
  9. package/example/components/math.proxy/manifest.toa.yaml +8 -3
  10. package/example/components/math.proxy/operations/add.js +1 -5
  11. package/example/components/tea.pots/manifest.toa.yaml +37 -9
  12. package/example/components/tea.pots/operations/same.js +1 -5
  13. package/example/components/tea.pots/receivers/store.orders.created.js +1 -5
  14. package/example/components/web/manifest.toa.yaml +2 -4
  15. package/example/components/web/operations/get.js +3 -8
  16. package/example/context.toa.yaml +2 -7
  17. package/example/stage/call.test.js +17 -10
  18. package/example/stage/events.test.js +63 -16
  19. package/example/stage/invoke.test.js +12 -9
  20. package/package.json +18 -13
  21. package/readme.md +0 -2
  22. package/stage/package.json +1 -0
  23. package/stage/src/component.js +3 -12
  24. package/stage/src/composition.js +3 -11
  25. package/stage/src/index.js +17 -17
  26. package/stage/src/manifest.js +2 -6
  27. package/stage/src/remote.js +11 -8
  28. package/stage/src/service.js +11 -10
  29. package/stage/src/shutdown.js +10 -9
  30. package/stage/src/state.js +2 -4
  31. package/stage/src/workload.js +19 -0
  32. package/stage/test/boot.mock.js +9 -11
  33. package/stage/test/component.test.js +20 -10
  34. package/stage/test/composition.test.js +11 -20
  35. package/stage/test/manifest.test.js +15 -8
  36. package/stage/test/remote.test.js +14 -12
  37. package/stage/test/shutdown.test.js +26 -22
  38. package/stage/test/state.mock.js +5 -6
  39. package/stage/test/state.test.js +13 -12
  40. package/stage/types/index.d.ts +17 -9
  41. package/stage/types/state.d.ts +3 -4
  42. package/example/components/echo/samples/get.yaml +0 -12
  43. package/example/components/echo/samples/signal.yaml +0 -4
  44. package/example/components/math.calculations/samples/add.yaml +0 -10
  45. package/example/components/math.calculations/samples/assets/ab.yaml +0 -2
  46. package/example/components/math.calculations/samples/increment.yaml +0 -27
  47. package/example/components/math.proxy/samples/add.yaml +0 -11
  48. package/example/components/tea.pots/samples/same.yaml +0 -8
  49. package/example/components/tea.pots/samples/transit.yaml +0 -43
  50. package/example/components/web/samples/get.yaml +0 -8
  51. package/example/samples/math.proxy.add.yaml +0 -5
  52. package/example/samples/messages/store.orders.created.yaml +0 -8
  53. package/samples/docs/sampling-dark.jpg +0 -0
  54. package/samples/docs/sampling-light.jpg +0 -0
  55. package/samples/notes.md +0 -12
  56. package/samples/package.json +0 -5
  57. package/samples/readme.md +0 -131
  58. package/samples/src/.replay/.suite/component.js +0 -20
  59. package/samples/src/.replay/.suite/index.js +0 -7
  60. package/samples/src/.replay/.suite/messages.js +0 -39
  61. package/samples/src/.replay/.suite/operation.js +0 -28
  62. package/samples/src/.replay/.suite/operations.js +0 -20
  63. package/samples/src/.replay/.suite/translate/.message/index.js +0 -5
  64. package/samples/src/.replay/.suite/translate/.message/request.js +0 -31
  65. package/samples/src/.replay/.suite/translate/.operation/.prepare/cast.js +0 -20
  66. package/samples/src/.replay/.suite/translate/.operation/.prepare/cast.test.js +0 -94
  67. package/samples/src/.replay/.suite/translate/.operation/.prepare/expand.js +0 -14
  68. package/samples/src/.replay/.suite/translate/.operation/.prepare/index.js +0 -7
  69. package/samples/src/.replay/.suite/translate/.operation/.prepare/shortcuts/.aspect.js +0 -26
  70. package/samples/src/.replay/.suite/translate/.operation/.prepare/shortcuts/configuration.js +0 -5
  71. package/samples/src/.replay/.suite/translate/.operation/.prepare/shortcuts/http.js +0 -5
  72. package/samples/src/.replay/.suite/translate/.operation/.prepare/shortcuts/index.js +0 -9
  73. package/samples/src/.replay/.suite/translate/.operation/.prepare/shortcuts/state.js +0 -5
  74. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/async.js +0 -3
  75. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/cast.js +0 -26
  76. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/index.js +0 -5
  77. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/map.js +0 -3
  78. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/set.js +0 -3
  79. package/samples/src/.replay/.suite/translate/.operation/.prepare/types/sync.js +0 -3
  80. package/samples/src/.replay/.suite/translate/.operation/calls.js +0 -49
  81. package/samples/src/.replay/.suite/translate/.operation/cleanup.js +0 -16
  82. package/samples/src/.replay/.suite/translate/.operation/events.js +0 -16
  83. package/samples/src/.replay/.suite/translate/.operation/index.js +0 -11
  84. package/samples/src/.replay/.suite/translate/.operation/prepare.js +0 -14
  85. package/samples/src/.replay/.suite/translate/index.js +0 -7
  86. package/samples/src/.replay/.suite/translate/message.js +0 -26
  87. package/samples/src/.replay/.suite/translate/operation.js +0 -47
  88. package/samples/src/.replay/.suite/translate/schemas/index.js +0 -7
  89. package/samples/src/.replay/.suite/translate/schemas/message.cos.yaml +0 -10
  90. package/samples/src/.replay/.suite/translate/schemas/operation.cos.yaml +0 -23
  91. package/samples/src/.replay/index.js +0 -7
  92. package/samples/src/.replay/stage.js +0 -60
  93. package/samples/src/.replay/suite.js +0 -23
  94. package/samples/src/.replay/test.js +0 -19
  95. package/samples/src/components.js +0 -13
  96. package/samples/src/context.js +0 -23
  97. package/samples/src/index.js +0 -9
  98. package/samples/src/replay.js +0 -16
  99. package/samples/src/suite/.read/filter.js +0 -15
  100. package/samples/src/suite/.read/index.js +0 -7
  101. package/samples/src/suite/.read/messages.js +0 -40
  102. package/samples/src/suite/.read/operations.js +0 -51
  103. package/samples/src/suite/.read/parse.js +0 -20
  104. package/samples/src/suite/components.js +0 -31
  105. package/samples/src/suite/context.js +0 -20
  106. package/samples/src/suite/index.js +0 -7
  107. package/samples/test/components.test.js +0 -42
  108. package/samples/test/context/components/dummy/manifest.toa.yaml +0 -2
  109. package/samples/test/context/components/dummy/samples/do.yaml +0 -11
  110. package/samples/test/context/components/dummy/samples/dummies.dummy.do.yaml +0 -11
  111. package/samples/test/context/components/dummy/samples/dummies.dummy.undo.yaml +0 -7
  112. package/samples/test/context/components/dummy/samples/messages/somewhere.something.happened.yaml +0 -6
  113. package/samples/test/context/components/pot/manifest.toa.yaml +0 -2
  114. package/samples/test/context/components/pot/samples/do.yaml +0 -11
  115. package/samples/test/context/components/pot/samples/messages/somewhere.something.happened.yaml +0 -6
  116. package/samples/test/context/context.toa.yaml +0 -3
  117. package/samples/test/context/samples/dummies.dummy.observe.yaml +0 -6
  118. package/samples/test/context/samples/dummies.dummy.transit.yaml +0 -10
  119. package/samples/test/context/samples/messages/somewhere.something.happened.yaml +0 -6
  120. package/samples/test/context.fixtures.js +0 -8
  121. package/samples/test/context.test.js +0 -82
  122. package/samples/test/replay.mock.js +0 -7
  123. package/samples/test/replay.test.js +0 -152
  124. package/samples/test/replay.translate.message.fixtures.js +0 -24
  125. package/samples/test/replay.translate.message.test.js +0 -119
  126. package/samples/test/replay.translate.mock.js +0 -17
  127. package/samples/test/replay.translate.operation.fixtures.js +0 -107
  128. package/samples/test/replay.translate.operation.test.js +0 -68
  129. package/samples/test/stage.mock.js +0 -30
  130. package/samples/test/suite.components.test.js +0 -122
  131. package/samples/test/suite.context.test.js +0 -79
  132. package/samples/test/suite.mock.js +0 -10
  133. package/samples/types/index.d.ts +0 -8
  134. package/samples/types/message.d.ts +0 -24
  135. package/samples/types/operation.d.ts +0 -36
  136. package/samples/types/replay.d.ts +0 -13
  137. package/samples/types/suite.d.ts +0 -31
  138. package/stage/src/binding/binding.js +0 -50
  139. package/stage/src/binding/consumer.js +0 -30
  140. package/stage/src/binding/emitter.js +0 -26
  141. package/stage/src/binding/factory.js +0 -49
  142. package/stage/src/binding/index.js +0 -10
  143. package/stage/src/binding/label.js +0 -12
  144. package/stage/src/binding/producer.js +0 -43
  145. package/stage/src/binding/receiver.js +0 -34
  146. package/stage/test/binding/binding.test.js +0 -15
  147. package/stage/test/binding/consumer.test.js +0 -52
  148. package/stage/test/binding/emitter.test.js +0 -54
  149. package/stage/test/binding/producer.fixtures.js +0 -10
  150. package/stage/test/binding/producer.test.js +0 -49
  151. package/stage/test/binding/receiver.fixtures.js +0 -7
  152. package/stage/test/binding/receiver.test.js +0 -54
  153. package/stage/test/binding.mock.js +0 -8
  154. package/stage/types/binding.d.ts +0 -20
@@ -1,15 +0,0 @@
1
- 'use strict'
2
-
3
- const { properties, binding, Factory } = require('../../src').binding
4
-
5
- it('should be async', async () => {
6
- expect(properties.async).toStrictEqual(true)
7
- })
8
-
9
- it('should export Factory', async () => {
10
- expect(Factory).toBeDefined()
11
- })
12
-
13
- it('should export binding instance', async () => {
14
- expect(binding).toBeDefined()
15
- })
@@ -1,52 +0,0 @@
1
- 'use strict'
2
-
3
- const { generate } = require('randomstring')
4
- const { Connector, Locator } = require('@toa.io/core')
5
-
6
- const { binding, Factory } = require('../../src/binding')
7
-
8
- const factory = new Factory()
9
-
10
- it('should expose consumers factory', async () => {
11
- expect(factory.consumer).toBeDefined()
12
- })
13
-
14
- /** @type {toa.core.bindings.Consumer} */
15
- let consumer
16
-
17
- /** @type {toa.core.Locator} */
18
- let locator
19
-
20
- /** @type {string} */
21
- let label
22
-
23
- const endpoint = generate()
24
-
25
- beforeEach(() => {
26
- jest.clearAllMocks()
27
- binding.reset()
28
-
29
- const namespace = generate()
30
- const name = generate()
31
-
32
- locator = new Locator(name, namespace)
33
- label = locator.id + '.' + endpoint
34
- consumer = factory.consumer(locator, endpoint)
35
- })
36
-
37
- it('should return Connector', async () => {
38
- expect(consumer).toBeInstanceOf(Connector)
39
- })
40
-
41
- it('should return reply', async () => {
42
- const request = generate()
43
- const reply = generate()
44
- const call = jest.fn(async () => reply)
45
-
46
- await binding.reply(label, call)
47
-
48
- const received = await consumer.request(request)
49
-
50
- expect(call).toHaveBeenCalledWith(request)
51
- expect(received).toStrictEqual(reply)
52
- })
@@ -1,54 +0,0 @@
1
- 'use strict'
2
-
3
- const { generate } = require('randomstring')
4
- const { Locator, Connector } = require('@toa.io/core')
5
-
6
- const { binding, Factory } = require('../../src/binding')
7
-
8
- const factory = new Factory()
9
-
10
- it('should expose emitters factory', async () => {
11
- expect(factory.emitter).toBeDefined()
12
- })
13
-
14
- /** @type {toa.core.bindings.Emitter} */
15
- let emitter
16
-
17
- /** @type {string} */
18
- let label
19
-
20
- /** @type {toa.core.Locator} */
21
- let locator
22
-
23
- const endpoint = generate()
24
-
25
- beforeEach(() => {
26
- jest.clearAllMocks()
27
- binding.reset()
28
-
29
- const namespace = generate()
30
- const name = generate()
31
-
32
- locator = new Locator(name, namespace)
33
- label = locator.id + '.' + endpoint
34
- emitter = factory.emitter(locator, endpoint)
35
- })
36
-
37
- it('should return Connector', async () => {
38
- expect(emitter).toBeInstanceOf(Connector)
39
- })
40
-
41
- it('should call receiver', async () => {
42
- const callback = jest.fn(async () => undefined)
43
-
44
- await binding.subscribe(label, callback)
45
-
46
- const payload = { [generate()]: generate() }
47
-
48
- /** @type {toa.core.Message} */
49
- const message = { payload }
50
-
51
- await emitter.emit(message)
52
-
53
- expect(callback).toHaveBeenCalledWith(message)
54
- })
@@ -1,10 +0,0 @@
1
- 'use strict'
2
-
3
- const { generate } = require('randomstring')
4
-
5
- const endpoints = [generate(), generate()]
6
- const invoke = jest.fn(async () => generate())
7
- const producer = /** @type {jest.MockedObject<toa.core.Component>} */ { invoke }
8
-
9
- exports.endpoints = endpoints
10
- exports.producer = producer
@@ -1,49 +0,0 @@
1
- 'use strict'
2
-
3
- const { generate } = require('randomstring')
4
- const { Locator, Connector } = require('@toa.io/core')
5
- const { sample } = require('@toa.io/generic')
6
-
7
- const fixtures = require('./producer.fixtures')
8
- const { binding, Factory } = require('../../src/binding')
9
-
10
- const factory = new Factory()
11
-
12
- it('should expose producers factory', async () => {
13
- expect(factory.producer).toBeDefined()
14
- })
15
-
16
- /** @type {toa.core.Connector} */
17
- let producer
18
-
19
- /** @type {toa.core.Locator} */
20
- let locator
21
-
22
- beforeEach(async () => {
23
- jest.clearAllMocks()
24
- binding.reset()
25
-
26
- const namespace = generate()
27
- const name = generate()
28
-
29
- locator = new Locator(name, namespace)
30
- producer = factory.producer(locator, fixtures.endpoints, fixtures.producer)
31
-
32
- await producer.connect()
33
- })
34
-
35
- it('should return Connector', async () => {
36
- expect(producer).toBeInstanceOf(Connector)
37
- })
38
-
39
- it('should return result', async () => {
40
- const endpoint = sample(fixtures.endpoints)
41
- const label = locator.id + '.' + endpoint
42
- const request = { [generate()]: generate() }
43
-
44
- const reply = await binding.request(label, request)
45
-
46
- expect(fixtures.producer.invoke).toHaveBeenCalledWith(endpoint, request)
47
-
48
- expect(reply).toStrictEqual(await fixtures.producer.invoke.mock.results[0].value)
49
- })
@@ -1,7 +0,0 @@
1
- 'use strict'
2
-
3
- const receiver = /** @type {jest.MockedObject<toa.core.Receiver>} */ {
4
- receive: jest.fn(async () => undefined)
5
- }
6
-
7
- exports.receiver = receiver
@@ -1,54 +0,0 @@
1
- 'use strict'
2
-
3
- const { generate } = require('randomstring')
4
- const { Locator, Connector } = require('@toa.io/core')
5
-
6
- const fixtures = require('./receiver.fixtures')
7
- const { binding, Factory } = require('../../src/binding')
8
-
9
- const factory = new Factory()
10
-
11
- it('should expose receivers factory', async () => {
12
- expect(factory.receiver).toBeDefined()
13
- })
14
-
15
- /** @type {toa.core.Connector} */
16
- let receiver
17
-
18
- /** @type {toa.core.Locator} */
19
- let locator
20
-
21
- /** @type {string} */
22
- let label
23
-
24
- const group = generate()
25
- const endpoint = generate()
26
-
27
- beforeEach(async () => {
28
- jest.clearAllMocks()
29
- binding.reset()
30
-
31
- const namespace = generate()
32
- const name = generate()
33
-
34
- locator = new Locator(name, namespace)
35
- label = locator.id + '.' + endpoint
36
- receiver = factory.receiver(locator, label, group, fixtures.receiver)
37
-
38
- await receiver.connect()
39
- })
40
-
41
- it('should return connector', async () => {
42
- expect(receiver).toBeInstanceOf(Connector)
43
- })
44
-
45
- it('should call receiver', async () => {
46
- const payload = { [generate()]: generate() }
47
-
48
- /** @type {toa.core.Message} */
49
- const message = { payload }
50
-
51
- await binding.emit(label, message)
52
-
53
- expect(fixtures.receiver.receive).toHaveBeenCalledWith(message)
54
- })
@@ -1,8 +0,0 @@
1
- 'use strict'
2
-
3
- const original = jest.requireActual('../src/binding')
4
-
5
- const reset = jest.fn(() => original.binding.reset())
6
- const binding = { ...original.binding, reset }
7
-
8
- module.exports = { binding }
@@ -1,20 +0,0 @@
1
- import * as _core from '@toa.io/core'
2
-
3
- declare namespace toa.stage.binding{
4
-
5
- type Callback = (message: Object) => Promise<void>
6
- type Call = (request: Object) => Promise<Object>
7
-
8
- interface Binding{
9
- subscribe (label: string, callback: Callback): Promise<void>
10
-
11
- emit (label: string, message: Object): Promise<undefined>
12
-
13
- reply (label, call: Call): Promise<Object>
14
- }
15
-
16
- }
17
-
18
- export type Factory = _core.bindings.Factory
19
- export const binding: toa.stage.binding.Binding
20
- export const properties: _core.bindings.Properties