@toa.io/extensions.exposition 1.0.0-alpha.13 → 1.0.0-alpha.15

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 (106) hide show
  1. package/components/identity.bans/manifest.toa.yaml +13 -5
  2. package/components/identity.bans/operations/transit.d.ts +14 -0
  3. package/components/identity.bans/operations/transit.js +11 -0
  4. package/components/identity.bans/operations/transit.js.map +1 -0
  5. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -0
  6. package/components/identity.bans/source/transit.ts +21 -0
  7. package/components/identity.bans/tsconfig.json +9 -0
  8. package/components/identity.roles/manifest.toa.yaml +4 -4
  9. package/components/identity.roles/operations/grant.d.ts +1 -1
  10. package/components/identity.roles/operations/grant.js +6 -5
  11. package/components/identity.roles/operations/grant.js.map +1 -1
  12. package/components/identity.roles/operations/lib/Entity.d.ts +1 -1
  13. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  14. package/components/identity.roles/source/grant.ts +7 -6
  15. package/components/identity.roles/source/lib/Entity.ts +1 -1
  16. package/components/identity.tokens/manifest.toa.yaml +1 -0
  17. package/components/identity.tokens/operations/authenticate.js +5 -2
  18. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  19. package/components/identity.tokens/operations/encrypt.js +4 -1
  20. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  21. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  22. package/components/identity.tokens/operations/types.d.ts +1 -2
  23. package/components/identity.tokens/receivers/identity.bans.created.js +3 -0
  24. package/components/identity.tokens/source/authenticate.ts +5 -2
  25. package/components/identity.tokens/source/encrypt.ts +4 -1
  26. package/components/identity.tokens/source/types.ts +1 -2
  27. package/documentation/access.md +13 -3
  28. package/documentation/components.md +17 -3
  29. package/documentation/vary.md +9 -3
  30. package/features/access.feature +16 -48
  31. package/features/errors.feature +3 -1
  32. package/features/identity.bans.feature +128 -0
  33. package/features/identity.basic.feature +4 -7
  34. package/features/identity.federation.feature +1 -0
  35. package/features/identity.roles.feature +54 -1
  36. package/features/identity.tokens.feature +1 -0
  37. package/features/io.feature +29 -0
  38. package/features/steps/Database.ts +16 -10
  39. package/features/steps/IdP.ts +28 -23
  40. package/features/steps/components/echo/manifest.toa.yaml +5 -1
  41. package/features/steps/components/echo/operations/identity.js +7 -0
  42. package/features/steps/components/users/manifest.toa.yaml +0 -1
  43. package/features/vary.feature +23 -0
  44. package/package.json +11 -9
  45. package/source/Directive.ts +3 -1
  46. package/source/Gateway.ts +1 -1
  47. package/source/HTTP/exceptions.ts +1 -1
  48. package/source/RTD/factory.ts +1 -1
  49. package/source/Tenant.ts +0 -8
  50. package/source/directives/auth/Authorization.ts +1 -1
  51. package/source/directives/auth/Delegate.ts +4 -1
  52. package/source/directives/auth/Role.test.ts +53 -6
  53. package/source/directives/auth/Role.ts +22 -14
  54. package/source/directives/auth/types.ts +1 -1
  55. package/source/directives/cache/Cache.ts +1 -1
  56. package/source/directives/dev/Development.ts +1 -1
  57. package/source/directives/octets/Octets.ts +1 -1
  58. package/source/directives/vary/Directive.ts +2 -1
  59. package/source/directives/vary/Embed.ts +14 -8
  60. package/source/directives/vary/Vary.ts +6 -4
  61. package/source/directives/vary/embeddings/Embedding.ts +2 -1
  62. package/source/directives/vary/embeddings/Parameter.ts +14 -0
  63. package/source/directives/vary/embeddings/index.ts +3 -3
  64. package/source/exceptions.ts +13 -6
  65. package/transpiled/Directive.js +3 -1
  66. package/transpiled/Directive.js.map +1 -1
  67. package/transpiled/Gateway.js +1 -1
  68. package/transpiled/Gateway.js.map +1 -1
  69. package/transpiled/HTTP/exceptions.d.ts +1 -1
  70. package/transpiled/HTTP/exceptions.js.map +1 -1
  71. package/transpiled/RTD/factory.js +1 -1
  72. package/transpiled/RTD/factory.js.map +1 -1
  73. package/transpiled/Tenant.d.ts +0 -1
  74. package/transpiled/Tenant.js +0 -6
  75. package/transpiled/Tenant.js.map +1 -1
  76. package/transpiled/directives/auth/Authorization.js +1 -1
  77. package/transpiled/directives/auth/Authorization.js.map +1 -1
  78. package/transpiled/directives/auth/Delegate.js +3 -1
  79. package/transpiled/directives/auth/Delegate.js.map +1 -1
  80. package/transpiled/directives/auth/Role.d.ts +4 -1
  81. package/transpiled/directives/auth/Role.js +20 -14
  82. package/transpiled/directives/auth/Role.js.map +1 -1
  83. package/transpiled/directives/cache/Cache.js +1 -1
  84. package/transpiled/directives/cache/Cache.js.map +1 -1
  85. package/transpiled/directives/dev/Development.js +1 -1
  86. package/transpiled/directives/dev/Development.js.map +1 -1
  87. package/transpiled/directives/octets/Octets.js +1 -1
  88. package/transpiled/directives/octets/Octets.js.map +1 -1
  89. package/transpiled/directives/vary/Directive.d.ts +2 -1
  90. package/transpiled/directives/vary/Embed.d.ts +2 -1
  91. package/transpiled/directives/vary/Embed.js +8 -6
  92. package/transpiled/directives/vary/Embed.js.map +1 -1
  93. package/transpiled/directives/vary/Vary.d.ts +2 -2
  94. package/transpiled/directives/vary/Vary.js +3 -3
  95. package/transpiled/directives/vary/Vary.js.map +1 -1
  96. package/transpiled/directives/vary/embeddings/Embedding.d.ts +2 -1
  97. package/transpiled/directives/vary/embeddings/Parameter.d.ts +7 -0
  98. package/transpiled/directives/vary/embeddings/Parameter.js +14 -0
  99. package/transpiled/directives/vary/embeddings/Parameter.js.map +1 -0
  100. package/transpiled/directives/vary/embeddings/index.d.ts +2 -2
  101. package/transpiled/directives/vary/embeddings/index.js +5 -3
  102. package/transpiled/directives/vary/embeddings/index.js.map +1 -1
  103. package/transpiled/exceptions.d.ts +3 -2
  104. package/transpiled/exceptions.js +7 -1
  105. package/transpiled/exceptions.js.map +1 -1
  106. package/transpiled/tsconfig.tsbuildinfo +1 -1
@@ -2,6 +2,7 @@ import { type Component } from '@toa.io/core'
2
2
  import { generate } from 'randomstring'
3
3
  import { Role } from './Role'
4
4
  import { type Identity } from './types'
5
+ import type { Parameter } from '../../RTD'
5
6
 
6
7
  const remote = {
7
8
  invoke: jest.fn()
@@ -16,16 +17,26 @@ beforeEach(() => {
16
17
  it('should return false if not matched', async () => {
17
18
  const roles = ['admin', 'user']
18
19
  const directive = new Role(roles, discovery)
19
- const identity: Identity = { id: generate(), scheme: '', refresh: false }
20
+
21
+ const identity: Identity = {
22
+ id: generate(),
23
+ scheme: '',
24
+ refresh: false
25
+ }
20
26
 
21
27
  remote.invoke.mockResolvedValueOnce(['guest'])
22
28
 
23
- const result = await directive.authorize(identity)
29
+ const result = await directive.authorize(identity, undefined, [])
24
30
 
25
31
  expect(result).toBe(false)
26
32
 
27
33
  expect(remote.invoke)
28
- .toBeCalledWith('list', { query: { criteria: `identity==${identity.id}`, limit: 1024 } })
34
+ .toBeCalledWith('list', {
35
+ query: {
36
+ criteria: `identity==${identity.id}`,
37
+ limit: 1024
38
+ }
39
+ })
29
40
  })
30
41
 
31
42
  it('should return true on exact match', async () => {
@@ -52,11 +63,47 @@ it('should return false on non-scope substring match', async () => {
52
63
  expect(result).toBe(false)
53
64
  })
54
65
 
55
- async function match (expected: string[], actual: string[]): Promise<boolean> {
66
+ it('should return true on match with parameters', async () => {
67
+ const result = await match(['app:{org}:reviews'],
68
+ ['app:29e54ae1:reviews'], [{
69
+ name: 'org',
70
+ value: '29e54ae1'
71
+ }])
72
+
73
+ expect(result).toBe(true)
74
+ })
75
+
76
+ it('should return true on match with parameters', async () => {
77
+ const result = await match(['app:{org}:reviews'],
78
+ ['app:29e54ae1:reviews'], [{
79
+ name: 'org',
80
+ value: '29e54ae1'
81
+ }])
82
+
83
+ expect(result).toBe(true)
84
+ })
85
+
86
+ it('should return false on mismatch with parameters', async () => {
87
+ const result = await match(['app:{org}:reviews'],
88
+ ['app:29e54ae1:reviews'], [{
89
+ name: 'org',
90
+ value: '88584c9b'
91
+ }])
92
+
93
+ expect(result).toBe(false)
94
+ })
95
+
96
+ async function match
97
+ (expected: string[], actual: string[], parameters: Parameter[] = []): Promise<boolean> {
56
98
  const directive = new Role(expected, discovery)
57
- const identity: Identity = { id: generate(), scheme: '', refresh: false }
99
+
100
+ const identity: Identity = {
101
+ id: generate(),
102
+ scheme: '',
103
+ refresh: false
104
+ }
58
105
 
59
106
  remote.invoke.mockResolvedValueOnce(actual)
60
107
 
61
- return await directive.authorize(identity)
108
+ return await directive.authorize(identity, undefined, parameters)
62
109
  }
@@ -1,14 +1,18 @@
1
+ import assert from 'node:assert'
1
2
  import { type Component, type Query } from '@toa.io/core'
2
3
  import { type Directive, type Identity } from './types'
4
+ import type { Parameter } from '../../RTD'
3
5
 
4
6
  export class Role implements Directive {
5
7
  public static remote: Component | null = null
6
8
  private readonly roles: string[]
7
9
  private readonly discovery: Promise<Component>
10
+ private readonly dynamic: boolean
8
11
 
9
12
  public constructor (roles: string | string[], discovery: Promise<Component>) {
10
13
  this.roles = typeof roles === 'string' ? [roles] : roles
11
14
  this.discovery = discovery
15
+ this.dynamic = this.roles.some((role) => role.includes('{'))
12
16
  }
13
17
 
14
18
  public static async set (identity: Identity, discovery: Promise<Component>): Promise<void> {
@@ -22,37 +26,41 @@ export class Role implements Directive {
22
26
  identity.roles = await this.remote.invoke('list', { query })
23
27
  }
24
28
 
25
- public async authorize (identity: Identity | null): Promise<boolean> {
29
+ public async authorize
30
+ (identity: Identity | null, _: unknown, parameters: Parameter[]): Promise<boolean> {
26
31
  if (identity === null)
27
32
  return false
28
33
 
29
34
  await Role.set(identity, this.discovery)
30
35
 
31
- if (identity.roles === undefined)
36
+ if (identity.roles!.length === 0) // Role.set()
37
+
32
38
  return false
33
39
 
34
- return this.match(identity.roles)
40
+ return this.match(identity.roles!, parameters)
35
41
  }
36
42
 
37
- private match (roles: string[]): boolean {
43
+ private match (roles: string[], parameters: Parameter[]): boolean {
44
+ const required = this.dynamic ? this.substitute(parameters) : this.roles
45
+
38
46
  for (const role of roles) {
39
- const index = this.roles.findIndex((expected) => compare(expected, role))
47
+ const ok = required.some((expected) => expected === role || expected.startsWith(role + ':'))
40
48
 
41
- if (index !== -1)
49
+ if (ok)
42
50
  return true
43
51
  }
44
52
 
45
53
  return false
46
54
  }
47
- }
48
55
 
49
- function compare (expected: string, actual: string): boolean {
50
- const exp = expected.split(':')
51
- const act = actual.split(':')
56
+ private substitute (parameters: Parameter[]): string[] {
57
+ return this.roles.map((role) => role.replaceAll(/{(\w+)}/g, (_, key) => {
58
+ const value = parameters.find((parameter) => parameter.name === key)?.value
52
59
 
53
- for (let i = 0; i < act.length; i++)
54
- if (exp[i] !== act[i])
55
- return false
60
+ assert.ok(value !== undefined,
61
+ `Role '${role}' requires '${key}' route parameter.`)
56
62
 
57
- return true
63
+ return value
64
+ }))
65
+ }
58
66
  }
@@ -8,7 +8,7 @@ export interface Directive {
8
8
  authorize: (
9
9
  identity: Identity | null,
10
10
  input: Input,
11
- parameters: Parameter[],
11
+ parameters: Parameter[]
12
12
  ) => boolean | Promise<boolean>
13
13
 
14
14
  reply?: (identity: Identity | null) => http.OutgoingMessage
@@ -13,7 +13,7 @@ export class Cache implements DirectiveFamily<Directive> {
13
13
  const Class = constructors[name]
14
14
 
15
15
  if (Class === undefined)
16
- throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`)
16
+ throw new Error(`Directive 'cache:${name}' is not implemented.`)
17
17
 
18
18
  return new Class(value)
19
19
  }
@@ -12,7 +12,7 @@ export class Development implements DirectiveFamily<Directive> {
12
12
  const Class = constructors[name]
13
13
 
14
14
  if (Class === undefined)
15
- throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`)
15
+ throw new Error(`Directive 'dev:${name}' is not implemented.`)
16
16
 
17
17
  return new Class(value)
18
18
  }
@@ -23,7 +23,7 @@ export class Octets implements DirectiveFamily<Directive> {
23
23
  const Class = DIRECTIVES[name]
24
24
 
25
25
  if (Class === undefined)
26
- throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`)
26
+ throw new Error(`Directive 'octets:${name}' is not implemented.`)
27
27
 
28
28
  this.discovery ??= remotes.discover('octets', 'storage')
29
29
 
@@ -1,6 +1,7 @@
1
1
  import type { Properties } from './Properties'
2
2
  import type { Input } from '../../io'
3
+ import type { Parameter } from '../../RTD'
3
4
 
4
5
  export interface Directive {
5
- preflight: (request: Input, properties: Properties) => void
6
+ preflight: (context: Input, properties: Properties, parameters: Parameter[]) => void
6
7
  }
@@ -1,9 +1,10 @@
1
1
  import assert from 'node:assert'
2
- import { Header, embeddings } from './embeddings'
2
+ import { Header, embeddings, Parameter } from './embeddings'
3
3
  import type { Embedding } from './embeddings'
4
4
  import type { Input } from '../../io'
5
5
  import type { Directive } from './Directive'
6
6
  import type { Properties } from './Properties'
7
+ import type * as RTD from '../../RTD'
7
8
 
8
9
  export class Embed implements Directive {
9
10
  private readonly embeddings: Array<[string, Embedding[]]> = []
@@ -16,6 +17,9 @@ export class Embed implements Directive {
16
17
  if (name[0] === ':')
17
18
  return new Header(name.slice(1))
18
19
 
20
+ if (name.slice(0, 2) === '/:')
21
+ return new Parameter(name.slice(2))
22
+
19
23
  assert.ok(name in embeddings, `Unknown embedding: ${name}`)
20
24
 
21
25
  return new embeddings[name]()
@@ -25,27 +29,29 @@ export class Embed implements Directive {
25
29
  }
26
30
  }
27
31
 
28
- public preflight (input: Input, properties: Properties): void {
32
+ public preflight (context: Input, properties: Properties, parameters: RTD.Parameter[]): void {
29
33
  const values: Record<string, unknown> = {}
30
34
 
31
35
  for (const [key, instances] of this.embeddings)
32
- values[key] = this.resolve(instances, input, properties)
36
+ values[key] = this.resolve(instances, context, properties, parameters)
33
37
 
34
- input.pipelines.body.push(this.embedding(values))
38
+ context.pipelines.body.push(this.embedding(values))
35
39
  }
36
40
 
37
- private resolve (instances: Embedding[], input: Input, properties: Properties): unknown {
41
+ // eslint-disable-next-line max-params
42
+ private resolve (instances: Embedding[],
43
+ input: Input,
44
+ properties: Properties,
45
+ parameters: RTD.Parameter[]): unknown {
38
46
  let value
39
47
 
40
48
  for (const instance of instances) {
41
- value = instance.resolve(input, properties)
49
+ value = instance.resolve(input, properties, parameters)
42
50
 
43
51
  if (value !== undefined)
44
52
  break
45
53
  }
46
54
 
47
- assert.ok(value !== undefined, 'Neither embedding resolved a value.')
48
-
49
55
  return value
50
56
  }
51
57
 
@@ -3,7 +3,7 @@ import { properties, Property } from './Properties'
3
3
  import { Embed } from './Embed'
4
4
  import type { Properties } from './Properties'
5
5
  import type { Directive } from './Directive'
6
- import type { DirectiveFamily } from '../../RTD'
6
+ import type { DirectiveFamily, Parameter } from '../../RTD'
7
7
  import type { Input, Output } from '../../io'
8
8
 
9
9
  export class Vary implements DirectiveFamily {
@@ -15,11 +15,13 @@ export class Vary implements DirectiveFamily {
15
15
  () => name in properties, (name: PN) => new Property(name, value as PV),
16
16
  () => name in directives, (name: keyof typeof directives) => new directives[name](value),
17
17
  () => {
18
- throw new Error(`Unknown directive 'vary:${name}'`)
18
+ throw new Error(`Directive 'vary:${name}' is not implemented.`)
19
19
  })
20
20
  }
21
21
 
22
- public preflight (instances: Array<Directive | Property>, request: Input): Output {
22
+ public preflight (instances: Array<Directive | Property>,
23
+ context: Input,
24
+ parameters: Parameter[]): Output {
23
25
  /*
24
26
  To stop constructing `properties` object on each request, Directive Families must be refactored
25
27
  from singleton factories to per-Node instances on the Tree.
@@ -34,7 +36,7 @@ export class Vary implements DirectiveFamily {
34
36
  directives.push(instance)
35
37
 
36
38
  for (const directive of directives)
37
- directive.preflight(request, properties)
39
+ directive.preflight(context, properties, parameters)
38
40
 
39
41
  return null
40
42
  }
@@ -1,6 +1,7 @@
1
1
  import type { Properties } from '../Properties'
2
2
  import type { Input } from '../../../io'
3
+ import type { Parameter } from '../../../RTD'
3
4
 
4
5
  export interface Embedding {
5
- resolve: (input: Input, properties: Properties) => string | undefined
6
+ resolve: (input: Input, properties: Properties, parameters: Parameter[]) => string | undefined
6
7
  }
@@ -0,0 +1,14 @@
1
+ import type { Embedding } from './Embedding'
2
+ import type * as RTD from '../../../RTD'
3
+
4
+ export class Parameter implements Embedding {
5
+ private readonly name: string
6
+
7
+ public constructor (name: string) {
8
+ this.name = name
9
+ }
10
+
11
+ public resolve (_: unknown, __: unknown, parameters: RTD.Parameter[]): string | undefined {
12
+ return parameters.find((parameter) => parameter.name === this.name)?.value
13
+ }
14
+ }
@@ -1,11 +1,11 @@
1
1
  import { Language } from './Language'
2
- import { Header } from './Header'
3
-
4
2
  import type { Embedding } from './Embedding'
5
3
 
6
4
  export const embeddings: Record<string, new () => Embedding> = {
7
5
  language: Language
8
6
  }
9
7
 
10
- export { Header }
11
8
  export type { Embedding }
9
+
10
+ export { Header } from './Header'
11
+ export { Parameter } from './Parameter'
@@ -1,16 +1,23 @@
1
- import { type Exception } from '@toa.io/core'
2
1
  import { match } from 'matchacho'
3
2
  import * as http from './HTTP'
3
+ import { Exception as HTTPException } from './HTTP'
4
+ import type { Exception } from '@toa.io/core'
4
5
 
5
- export function rethrow (exception: Exception): void {
6
- // see /runtime/core/src/exceptions.js
6
+ export function rethrow (exception: Exception | HTTPException): void {
7
+ if (exception instanceof HTTPException)
8
+ throw exception
7
9
 
8
- throw match<Error>(exception.code,
10
+ // see /runtime/core/src/exceptions.js
11
+ throw match(exception.code,
9
12
  badRequest, () => new http.BadRequest(exception.message),
10
13
  302, NOT_FOUND,
11
14
  303, PRECONDITION_FAILED,
12
- 306, () => new http.Conflict(exception.message),
13
- () => exception)
15
+ 306, () => new http.Conflict(),
16
+ () => {
17
+ console.error(exception)
18
+
19
+ return exception
20
+ })
14
21
  }
15
22
 
16
23
  function badRequest (code: number): boolean {
@@ -70,6 +70,8 @@ exports.shortcuts = new Map([
70
70
  ['id', 'auth:id'],
71
71
  ['role', 'auth:role'],
72
72
  ['rule', 'auth:rule'],
73
- ['incept', 'auth:incept']
73
+ ['incept', 'auth:incept'],
74
+ ['input', 'io:input'],
75
+ ['output', 'io:output']
74
76
  ]);
75
77
  //# sourceMappingURL=Directive.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Directive.js","sourceRoot":"","sources":["../source/Directive.ts"],"names":[],"mappings":"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"}
@@ -44,7 +44,7 @@ class Gateway extends core_1.Connector {
44
44
  return interception;
45
45
  const match = this.tree.match(context.url.pathname);
46
46
  if (match === null)
47
- throw new http.NotFound();
47
+ throw new http.NotFound('Route not found');
48
48
  const { node, parameters } = match;
49
49
  if (!(context.request.method in node.methods))
50
50
  throw new http.MethodNotAllowed();
@@ -1 +1 @@
1
- {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../source/Gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Gateway.js","sourceRoot":"","sources":["../source/Gateway.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export declare class NotFound extends ClientError {
18
18
  constructor(body?: any);
19
19
  }
20
20
  export declare class Conflict extends ClientError {
21
- constructor(body: any);
21
+ constructor(body?: any);
22
22
  }
23
23
  export declare class MethodNotAllowed extends ClientError {
24
24
  constructor();
@@ -1 +1 @@
1
- {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../source/HTTP/exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClB,MAAM,CAAQ;IACd,IAAI,CAAM;IAE1B,YAAuB,MAAc,EAAE,IAAU;QAC/C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AATD,8BASC;AAED,MAAa,WAAY,SAAQ,SAAS;CACzC;AADD,kCACC;AAED,MAAa,UAAW,SAAQ,WAAW;IACzC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,gCAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IAC3C,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAS;QAC3B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC/C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,aAAc,SAAQ,WAAW;IAC5C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,oDAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IACjD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,gDAIC"}
1
+ {"version":3,"file":"exceptions.js","sourceRoot":"","sources":["../../source/HTTP/exceptions.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IAClB,MAAM,CAAQ;IACd,IAAI,CAAM;IAE1B,YAAuB,MAAc,EAAE,IAAU;QAC/C,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;CACF;AATD,8BASC;AAED,MAAa,WAAY,SAAQ,SAAS;CACzC;AADD,kCACC;AAED,MAAa,UAAW,SAAQ,WAAW;IACzC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,gCAIC;AAED,MAAa,YAAa,SAAQ,WAAW;IAC3C,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,oCAIC;AAED,MAAa,SAAU,SAAQ,WAAW;IACxC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,8BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,QAAS,SAAQ,WAAW;IACvC,YAAoB,IAAU;QAC5B,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAClB,CAAC;CACF;AAJD,4BAIC;AAED,MAAa,gBAAiB,SAAQ,WAAW;IAC/C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,4CAIC;AAED,MAAa,aAAc,SAAQ,WAAW;IAC5C;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,sCAIC;AAED,MAAa,oBAAqB,SAAQ,WAAW;IACnD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,oDAIC;AAED,MAAa,kBAAmB,SAAQ,WAAW;IACjD;QACE,KAAK,CAAC,GAAG,CAAC,CAAA;IACZ,CAAC;CACF;AAJD,gDAIC"}
@@ -26,7 +26,7 @@ function createRoute(route, context) {
26
26
  return new Route_1.Route(segments, node);
27
27
  }
28
28
  function createMethod(method, context) {
29
- const stack = context.directives.stack.concat(method.directives);
29
+ const stack = method.directives.concat(context.directives.stack);
30
30
  const directives = context.directives.factory.create(stack);
31
31
  const endpoint = method.mapping?.endpoint === undefined
32
32
  ? null
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../source/RTD/factory.ts"],"names":[],"mappings":";;;AAAA,iCAA8C;AAC9C,mCAA+B;AAC/B,uCAAmC;AACnC,qCAA+C;AAI/C,SAAgB,UAAU,CAAE,IAAiB,EAAE,OAAgB;IAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QACxB,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;QAE1C,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE7E,MAAM,MAAM,GAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/E,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;QAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEtD,MAAM,UAAU,GAAe,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAA;IAEjF,OAAO,IAAI,WAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAC9C,CAAC;AAfD,gCAeC;AAED,SAAS,WAAW,CAAE,KAAmB,EAAE,OAAgB;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,UAAU;IAE3C,OAAO,IAAI,aAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,YAAY,CAAE,MAAqB,EAAE,OAAgB;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS;QACrD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7C,OAAO,IAAI,eAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACzC,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../source/RTD/factory.ts"],"names":[],"mappings":";;;AAAA,iCAA8C;AAC9C,mCAA+B;AAC/B,uCAAmC;AACnC,qCAA+C;AAI/C,SAAgB,UAAU,CAAE,IAAiB,EAAE,OAAgB;IAC7D,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;QACxB,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;;QAE1C,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAE7E,MAAM,MAAM,GAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/E,MAAM,OAAO,GAAY,EAAE,CAAA;IAE3B,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO;QAC/B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAEtD,MAAM,UAAU,GAAe,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAAA;IAEjF,OAAO,IAAI,WAAI,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAC9C,CAAC;AAfD,gCAeC;AAED,SAAS,WAAW,CAAE,KAAmB,EAAE,OAAgB;IACzD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAE5C,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC,UAAU;IAE3C,OAAO,IAAI,aAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,YAAY,CAAE,MAAqB,EAAE,OAAgB;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAE3D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,KAAK,SAAS;QACrD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7C,OAAO,IAAI,eAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;AACzC,CAAC"}
@@ -6,7 +6,6 @@ export declare class Tenant extends Connector {
6
6
  private readonly branch;
7
7
  constructor(broadcast: Broadcast, locator: Locator, node: RTD.Node);
8
8
  open(): Promise<void>;
9
- dispose(): Promise<void>;
10
9
  private expose;
11
10
  }
12
11
  type Broadcast = bindings.Broadcast<Label>;
@@ -19,12 +19,6 @@ class Tenant extends core_1.Connector {
19
19
  async open() {
20
20
  await this.expose();
21
21
  await this.broadcast.receive('ping', this.expose.bind(this));
22
- console.info('Exposition Tenant for ' +
23
- `'${this.branch.namespace}.${this.branch.component}' has started.`);
24
- }
25
- async dispose() {
26
- console.info('Exposition Tenant for ' +
27
- `'${this.branch.namespace}.${this.branch.component}' has been stopped.`);
28
22
  }
29
23
  async expose() {
30
24
  await this.broadcast.transmit('expose', this.branch);
@@ -1 +1 @@
1
- {"version":3,"file":"Tenant.js","sourceRoot":"","sources":["../source/Tenant.ts"],"names":[],"mappings":";;;AAAA,uCAAqE;AAKrE,MAAa,MAAO,SAAQ,gBAAS;IAClB,SAAS,CAAW;IACpB,MAAM,CAAQ;IAE/B,YAAoB,SAAoB,EAAE,OAAgB,EAAE,IAAc;QACxE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,KAAK,UAAU;YAC1C,IAAI;SACL,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAEe,KAAK,CAAC,IAAI;QACxB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5D,OAAO,CAAC,IAAI,CAAC,wBAAwB;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,gBAAgB,CAAC,CAAA;IACvE,CAAC;IAEe,KAAK,CAAC,OAAO;QAC3B,OAAO,CAAC,IAAI,CAAC,wBAAwB;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,qBAAqB,CAAC,CAAA;IAC5E,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;CACF;AAnCD,wBAmCC"}
1
+ {"version":3,"file":"Tenant.js","sourceRoot":"","sources":["../source/Tenant.ts"],"names":[],"mappings":";;;AAAA,uCAAqE;AAKrE,MAAa,MAAO,SAAQ,gBAAS;IAClB,SAAS,CAAW;IACpB,MAAM,CAAQ;IAE/B,YAAoB,SAAoB,EAAE,OAAgB,EAAE,IAAc;QACxE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAE1B,IAAI,CAAC,MAAM,GAAG;YACZ,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,OAAO,CAAC,SAAS,KAAK,UAAU;YAC1C,IAAI;SACL,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IACzB,CAAC;IAEe,KAAK,CAAC,IAAI;QACxB,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;QACnB,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,CAAC;IAEO,KAAK,CAAC,MAAM;QAClB,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;CACF;AA3BD,wBA2BC"}
@@ -49,7 +49,7 @@ class Authorization {
49
49
  tokens = null;
50
50
  bans = null;
51
51
  create(name, value, remotes) {
52
- node_assert_1.default.ok(name in constructors, `Directive '${name}' is not provided by the '${this.name}' family.`);
52
+ node_assert_1.default.ok(name in constructors, `Directive 'auth:${name}' is not implemented.`);
53
53
  const Class = constructors[name];
54
54
  for (const name of REMOTES)
55
55
  this.discovery[name] ??= remotes.discover('identity', name);
@@ -1 +1 @@
1
- {"version":3,"file":"Authorization.js","sourceRoot":"","sources":["../../../source/directives/auth/Authorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Authorization.js","sourceRoot":"","sources":["../../../source/directives/auth/Authorization.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,8 @@ class Delegate {
14
14
  return true;
15
15
  }
16
16
  embed(body, identity) {
17
+ if (body === undefined)
18
+ body = {};
17
19
  check(body);
18
20
  body[this.property] = identity;
19
21
  return body;
@@ -22,6 +24,6 @@ class Delegate {
22
24
  exports.Delegate = Delegate;
23
25
  function check(body) {
24
26
  if (typeof body !== 'object' || body === null)
25
- throw new HTTP_1.BadRequest('Invalid request body.');
27
+ throw new HTTP_1.BadRequest('Invalid request body');
26
28
  }
27
29
  //# sourceMappingURL=Delegate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Delegate.js","sourceRoot":"","sources":["../../../source/directives/auth/Delegate.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAIvC,MAAa,QAAQ;IACF,QAAQ,CAAQ;IAEjC,YAAoB,QAAgB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAEM,SAAS,CAAE,QAAyB,EAAE,OAAc;QACzD,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;QAEjE,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAE,IAAa,EAAE,QAAkB;QAC9C,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;QAE9B,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAtBD,4BAsBC;AAED,SAAS,KAAK,CAAE,IAAa;IAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAC3C,MAAM,IAAI,iBAAU,CAAC,uBAAuB,CAAC,CAAA;AACjD,CAAC"}
1
+ {"version":3,"file":"Delegate.js","sourceRoot":"","sources":["../../../source/directives/auth/Delegate.ts"],"names":[],"mappings":";;;AAAA,qCAAuC;AAIvC,MAAa,QAAQ;IACF,QAAQ,CAAQ;IAEjC,YAAoB,QAAgB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAEM,SAAS,CAAE,QAAyB,EAAE,OAAc;QACzD,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAA;QAEjE,OAAO,IAAI,CAAA;IACb,CAAC;IAEO,KAAK,CAAE,IAAa,EAAE,QAAkB;QAC9C,IAAI,IAAI,KAAK,SAAS;YACpB,IAAI,GAAG,EAAE,CAAA;QAEX,KAAK,CAAC,IAAI,CAAC,CAAA;QACX,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAA;QAE9B,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAzBD,4BAyBC;AAED,SAAS,KAAK,CAAE,IAAa;IAC3B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAC3C,MAAM,IAAI,iBAAU,CAAC,sBAAsB,CAAC,CAAA;AAChD,CAAC"}
@@ -1,11 +1,14 @@
1
1
  import { type Component } from '@toa.io/core';
2
2
  import { type Directive, type Identity } from './types';
3
+ import type { Parameter } from '../../RTD';
3
4
  export declare class Role implements Directive {
4
5
  static remote: Component | null;
5
6
  private readonly roles;
6
7
  private readonly discovery;
8
+ private readonly dynamic;
7
9
  constructor(roles: string | string[], discovery: Promise<Component>);
8
10
  static set(identity: Identity, discovery: Promise<Component>): Promise<void>;
9
- authorize(identity: Identity | null): Promise<boolean>;
11
+ authorize(identity: Identity | null, _: unknown, parameters: Parameter[]): Promise<boolean>;
10
12
  private match;
13
+ private substitute;
11
14
  }