@toa.io/extensions.exposition 0.24.0-alpha.0 → 0.24.0-alpha.3

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 (231) hide show
  1. package/features/steps/HTTP.ts +12 -85
  2. package/package.json +8 -8
  3. package/transpiled/Annotation.d.ts +0 -7
  4. package/transpiled/Annotation.js +0 -3
  5. package/transpiled/Annotation.js.map +0 -1
  6. package/transpiled/Branch.d.ts +0 -7
  7. package/transpiled/Branch.js +0 -3
  8. package/transpiled/Branch.js.map +0 -1
  9. package/transpiled/Composition.d.ts +0 -14
  10. package/transpiled/Composition.js +0 -43
  11. package/transpiled/Composition.js.map +0 -1
  12. package/transpiled/Context.d.ts +0 -5
  13. package/transpiled/Context.js +0 -3
  14. package/transpiled/Context.js.map +0 -1
  15. package/transpiled/Directive.d.ts +0 -32
  16. package/transpiled/Directive.js +0 -76
  17. package/transpiled/Directive.js.map +0 -1
  18. package/transpiled/Endpoint.d.ts +0 -20
  19. package/transpiled/Endpoint.js +0 -45
  20. package/transpiled/Endpoint.js.map +0 -1
  21. package/transpiled/Factory.d.ts +0 -10
  22. package/transpiled/Factory.js +0 -66
  23. package/transpiled/Factory.js.map +0 -1
  24. package/transpiled/Gateway.d.ts +0 -19
  25. package/transpiled/Gateway.js +0 -92
  26. package/transpiled/Gateway.js.map +0 -1
  27. package/transpiled/HTTP/Server.d.ts +0 -22
  28. package/transpiled/HTTP/Server.fixtures.d.ts +0 -11
  29. package/transpiled/HTTP/Server.fixtures.js +0 -32
  30. package/transpiled/HTTP/Server.fixtures.js.map +0 -1
  31. package/transpiled/HTTP/Server.js +0 -131
  32. package/transpiled/HTTP/Server.js.map +0 -1
  33. package/transpiled/HTTP/exceptions.d.ts +0 -34
  34. package/transpiled/HTTP/exceptions.js +0 -71
  35. package/transpiled/HTTP/exceptions.js.map +0 -1
  36. package/transpiled/HTTP/formats/index.d.ts +0 -10
  37. package/transpiled/HTTP/formats/index.js +0 -38
  38. package/transpiled/HTTP/formats/index.js.map +0 -1
  39. package/transpiled/HTTP/formats/json.d.ts +0 -6
  40. package/transpiled/HTTP/formats/json.js +0 -17
  41. package/transpiled/HTTP/formats/json.js.map +0 -1
  42. package/transpiled/HTTP/formats/msgpack.d.ts +0 -6
  43. package/transpiled/HTTP/formats/msgpack.js +0 -38
  44. package/transpiled/HTTP/formats/msgpack.js.map +0 -1
  45. package/transpiled/HTTP/formats/text.d.ts +0 -6
  46. package/transpiled/HTTP/formats/text.js +0 -15
  47. package/transpiled/HTTP/formats/text.js.map +0 -1
  48. package/transpiled/HTTP/formats/yaml.d.ts +0 -6
  49. package/transpiled/HTTP/formats/yaml.js +0 -41
  50. package/transpiled/HTTP/formats/yaml.js.map +0 -1
  51. package/transpiled/HTTP/index.d.ts +0 -3
  52. package/transpiled/HTTP/index.js +0 -20
  53. package/transpiled/HTTP/index.js.map +0 -1
  54. package/transpiled/HTTP/messages.d.ts +0 -28
  55. package/transpiled/HTTP/messages.js +0 -70
  56. package/transpiled/HTTP/messages.js.map +0 -1
  57. package/transpiled/Mapping.d.ts +0 -8
  58. package/transpiled/Mapping.js +0 -38
  59. package/transpiled/Mapping.js.map +0 -1
  60. package/transpiled/Query.d.ts +0 -13
  61. package/transpiled/Query.js +0 -107
  62. package/transpiled/Query.js.map +0 -1
  63. package/transpiled/RTD/Context.d.ts +0 -11
  64. package/transpiled/RTD/Context.js +0 -3
  65. package/transpiled/RTD/Context.js.map +0 -1
  66. package/transpiled/RTD/Directives.d.ts +0 -7
  67. package/transpiled/RTD/Directives.js +0 -3
  68. package/transpiled/RTD/Directives.js.map +0 -1
  69. package/transpiled/RTD/Endpoint.d.ts +0 -9
  70. package/transpiled/RTD/Endpoint.js +0 -3
  71. package/transpiled/RTD/Endpoint.js.map +0 -1
  72. package/transpiled/RTD/Match.d.ts +0 -11
  73. package/transpiled/RTD/Match.js +0 -3
  74. package/transpiled/RTD/Match.js.map +0 -1
  75. package/transpiled/RTD/Method.d.ts +0 -9
  76. package/transpiled/RTD/Method.js +0 -16
  77. package/transpiled/RTD/Method.js.map +0 -1
  78. package/transpiled/RTD/Node.d.ts +0 -21
  79. package/transpiled/RTD/Node.js +0 -61
  80. package/transpiled/RTD/Node.js.map +0 -1
  81. package/transpiled/RTD/Route.d.ts +0 -14
  82. package/transpiled/RTD/Route.js +0 -49
  83. package/transpiled/RTD/Route.js.map +0 -1
  84. package/transpiled/RTD/Tree.d.ts +0 -14
  85. package/transpiled/RTD/Tree.js +0 -40
  86. package/transpiled/RTD/Tree.js.map +0 -1
  87. package/transpiled/RTD/factory.d.ts +0 -6
  88. package/transpiled/RTD/factory.js +0 -36
  89. package/transpiled/RTD/factory.js.map +0 -1
  90. package/transpiled/RTD/index.d.ts +0 -8
  91. package/transpiled/RTD/index.js +0 -38
  92. package/transpiled/RTD/index.js.map +0 -1
  93. package/transpiled/RTD/segment.d.ts +0 -8
  94. package/transpiled/RTD/segment.js +0 -25
  95. package/transpiled/RTD/segment.js.map +0 -1
  96. package/transpiled/RTD/syntax/index.d.ts +0 -2
  97. package/transpiled/RTD/syntax/index.js +0 -19
  98. package/transpiled/RTD/syntax/index.js.map +0 -1
  99. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  100. package/transpiled/RTD/syntax/parse.js +0 -128
  101. package/transpiled/RTD/syntax/parse.js.map +0 -1
  102. package/transpiled/RTD/syntax/types.d.ts +0 -41
  103. package/transpiled/RTD/syntax/types.js +0 -5
  104. package/transpiled/RTD/syntax/types.js.map +0 -1
  105. package/transpiled/Remotes.d.ts +0 -9
  106. package/transpiled/Remotes.js +0 -25
  107. package/transpiled/Remotes.js.map +0 -1
  108. package/transpiled/Tenant.d.ts +0 -13
  109. package/transpiled/Tenant.js +0 -34
  110. package/transpiled/Tenant.js.map +0 -1
  111. package/transpiled/deployment.d.ts +0 -3
  112. package/transpiled/deployment.js +0 -67
  113. package/transpiled/deployment.js.map +0 -1
  114. package/transpiled/directives/auth/Anonymous.d.ts +0 -6
  115. package/transpiled/directives/auth/Anonymous.js +0 -17
  116. package/transpiled/directives/auth/Anonymous.js.map +0 -1
  117. package/transpiled/directives/auth/Echo.d.ts +0 -6
  118. package/transpiled/directives/auth/Echo.js +0 -13
  119. package/transpiled/directives/auth/Echo.js.map +0 -1
  120. package/transpiled/directives/auth/Family.d.ts +0 -20
  121. package/transpiled/directives/auth/Family.js +0 -118
  122. package/transpiled/directives/auth/Family.js.map +0 -1
  123. package/transpiled/directives/auth/Id.d.ts +0 -7
  124. package/transpiled/directives/auth/Id.js +0 -17
  125. package/transpiled/directives/auth/Id.js.map +0 -1
  126. package/transpiled/directives/auth/Incept.d.ts +0 -10
  127. package/transpiled/directives/auth/Incept.js +0 -58
  128. package/transpiled/directives/auth/Incept.js.map +0 -1
  129. package/transpiled/directives/auth/Role.d.ts +0 -11
  130. package/transpiled/directives/auth/Role.js +0 -44
  131. package/transpiled/directives/auth/Role.js.map +0 -1
  132. package/transpiled/directives/auth/Rule.d.ts +0 -9
  133. package/transpiled/directives/auth/Rule.js +0 -22
  134. package/transpiled/directives/auth/Rule.js.map +0 -1
  135. package/transpiled/directives/auth/Scheme.d.ts +0 -7
  136. package/transpiled/directives/auth/Scheme.js +0 -47
  137. package/transpiled/directives/auth/Scheme.js.map +0 -1
  138. package/transpiled/directives/auth/index.d.ts +0 -2
  139. package/transpiled/directives/auth/index.js +0 -7
  140. package/transpiled/directives/auth/index.js.map +0 -1
  141. package/transpiled/directives/auth/schemes.d.ts +0 -3
  142. package/transpiled/directives/auth/schemes.js +0 -9
  143. package/transpiled/directives/auth/schemes.js.map +0 -1
  144. package/transpiled/directives/auth/split.d.ts +0 -2
  145. package/transpiled/directives/auth/split.js +0 -38
  146. package/transpiled/directives/auth/split.js.map +0 -1
  147. package/transpiled/directives/auth/types.d.ts +0 -31
  148. package/transpiled/directives/auth/types.js +0 -3
  149. package/transpiled/directives/auth/types.js.map +0 -1
  150. package/transpiled/directives/cache/Control.d.ts +0 -9
  151. package/transpiled/directives/cache/Control.js +0 -42
  152. package/transpiled/directives/cache/Control.js.map +0 -1
  153. package/transpiled/directives/cache/Exact.d.ts +0 -4
  154. package/transpiled/directives/cache/Exact.js +0 -11
  155. package/transpiled/directives/cache/Exact.js.map +0 -1
  156. package/transpiled/directives/cache/Family.d.ts +0 -12
  157. package/transpiled/directives/cache/Family.js +0 -26
  158. package/transpiled/directives/cache/Family.js.map +0 -1
  159. package/transpiled/directives/cache/index.d.ts +0 -2
  160. package/transpiled/directives/cache/index.js +0 -7
  161. package/transpiled/directives/cache/index.js.map +0 -1
  162. package/transpiled/directives/cache/types.d.ts +0 -7
  163. package/transpiled/directives/cache/types.js +0 -3
  164. package/transpiled/directives/cache/types.js.map +0 -1
  165. package/transpiled/directives/dev/Family.d.ts +0 -10
  166. package/transpiled/directives/dev/Family.js +0 -27
  167. package/transpiled/directives/dev/Family.js.map +0 -1
  168. package/transpiled/directives/dev/Stub.d.ts +0 -7
  169. package/transpiled/directives/dev/Stub.js +0 -14
  170. package/transpiled/directives/dev/Stub.js.map +0 -1
  171. package/transpiled/directives/dev/Throw.d.ts +0 -7
  172. package/transpiled/directives/dev/Throw.js +0 -14
  173. package/transpiled/directives/dev/Throw.js.map +0 -1
  174. package/transpiled/directives/dev/index.d.ts +0 -2
  175. package/transpiled/directives/dev/index.js +0 -7
  176. package/transpiled/directives/dev/index.js.map +0 -1
  177. package/transpiled/directives/dev/types.d.ts +0 -4
  178. package/transpiled/directives/dev/types.js +0 -3
  179. package/transpiled/directives/dev/types.js.map +0 -1
  180. package/transpiled/directives/index.d.ts +0 -2
  181. package/transpiled/directives/index.js +0 -12
  182. package/transpiled/directives/index.js.map +0 -1
  183. package/transpiled/directives/octets/Context.d.ts +0 -8
  184. package/transpiled/directives/octets/Context.js +0 -40
  185. package/transpiled/directives/octets/Context.js.map +0 -1
  186. package/transpiled/directives/octets/Delete.d.ts +0 -10
  187. package/transpiled/directives/octets/Delete.js +0 -47
  188. package/transpiled/directives/octets/Delete.js.map +0 -1
  189. package/transpiled/directives/octets/Family.d.ts +0 -12
  190. package/transpiled/directives/octets/Family.js +0 -49
  191. package/transpiled/directives/octets/Family.js.map +0 -1
  192. package/transpiled/directives/octets/Fetch.d.ts +0 -18
  193. package/transpiled/directives/octets/Fetch.js +0 -77
  194. package/transpiled/directives/octets/Fetch.js.map +0 -1
  195. package/transpiled/directives/octets/List.d.ts +0 -10
  196. package/transpiled/directives/octets/List.js +0 -47
  197. package/transpiled/directives/octets/List.js.map +0 -1
  198. package/transpiled/directives/octets/Permute.d.ts +0 -10
  199. package/transpiled/directives/octets/Permute.js +0 -51
  200. package/transpiled/directives/octets/Permute.js.map +0 -1
  201. package/transpiled/directives/octets/Store.d.ts +0 -33
  202. package/transpiled/directives/octets/Store.js +0 -124
  203. package/transpiled/directives/octets/Store.js.map +0 -1
  204. package/transpiled/directives/octets/index.d.ts +0 -2
  205. package/transpiled/directives/octets/index.js +0 -7
  206. package/transpiled/directives/octets/index.js.map +0 -1
  207. package/transpiled/directives/octets/schemas.d.ts +0 -6
  208. package/transpiled/directives/octets/schemas.js +0 -17
  209. package/transpiled/directives/octets/schemas.js.map +0 -1
  210. package/transpiled/directives/octets/types.d.ts +0 -9
  211. package/transpiled/directives/octets/types.js +0 -3
  212. package/transpiled/directives/octets/types.js.map +0 -1
  213. package/transpiled/discovery.d.ts +0 -1
  214. package/transpiled/discovery.js +0 -3
  215. package/transpiled/discovery.js.map +0 -1
  216. package/transpiled/exceptions.d.ts +0 -2
  217. package/transpiled/exceptions.js +0 -39
  218. package/transpiled/exceptions.js.map +0 -1
  219. package/transpiled/index.d.ts +0 -5
  220. package/transpiled/index.js +0 -12
  221. package/transpiled/index.js.map +0 -1
  222. package/transpiled/manifest.d.ts +0 -3
  223. package/transpiled/manifest.js +0 -61
  224. package/transpiled/manifest.js.map +0 -1
  225. package/transpiled/root.d.ts +0 -2
  226. package/transpiled/root.js +0 -39
  227. package/transpiled/root.js.map +0 -1
  228. package/transpiled/schemas.d.ts +0 -3
  229. package/transpiled/schemas.js +0 -14
  230. package/transpiled/schemas.js.map +0 -1
  231. package/transpiled/tsconfig.tsbuildinfo +0 -1
@@ -1,118 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- const matchacho_1 = require("matchacho");
26
- const http = __importStar(require("../../HTTP"));
27
- const Anonymous_1 = require("./Anonymous");
28
- const Id_1 = require("./Id");
29
- const Role_1 = require("./Role");
30
- const Rule_1 = require("./Rule");
31
- const Incept_1 = require("./Incept");
32
- const Echo_1 = require("./Echo");
33
- const split_1 = require("./split");
34
- const Scheme_1 = require("./Scheme");
35
- const schemes_1 = require("./schemes");
36
- class Authorization {
37
- name = 'auth';
38
- mandatory = true;
39
- schemes = {};
40
- discovery = {};
41
- tokens = null;
42
- bans = null;
43
- create(name, value, remotes) {
44
- const Class = CLASSES[name];
45
- if (Class === undefined)
46
- throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`);
47
- for (const name of REMOTES)
48
- this.discovery[name] ??= remotes.discover('identity', name);
49
- return (0, matchacho_1.match)(Class, Role_1.Role, () => new Role_1.Role(value, this.discovery.roles), Rule_1.Rule, () => new Rule_1.Rule(value, this.create.bind(this)), Incept_1.Incept, () => new Incept_1.Incept(value, this.discovery), () => new Class(value));
50
- }
51
- async preflight(directives, input, parameters) {
52
- const identity = await this.resolve(input.headers.authorization);
53
- input.identity = identity;
54
- for (const directive of directives) {
55
- const allow = await directive.authorize(identity, input, parameters);
56
- if (allow)
57
- return directive.reply?.(identity) ?? null;
58
- }
59
- if (identity === null)
60
- throw new http.Unauthorized();
61
- else
62
- throw new http.Forbidden();
63
- }
64
- async settle(directives, request, response) {
65
- for (const directive of directives)
66
- await directive.settle?.(request, response);
67
- const identity = request.identity;
68
- if (identity === null)
69
- return;
70
- if (identity.scheme === schemes_1.PRIMARY && !identity.refresh)
71
- return;
72
- // Role directive may have already set the value
73
- if (identity.roles === undefined)
74
- await Role_1.Role.set(identity, this.discovery.roles);
75
- this.tokens ??= await this.discovery.tokens;
76
- const token = await this.tokens.invoke('encrypt', { input: { identity } });
77
- const authorization = `Token ${token}`;
78
- if (response.headers === undefined)
79
- response.headers = new Headers();
80
- response.headers.set('authorization', authorization);
81
- }
82
- async resolve(authorization) {
83
- if (authorization === undefined)
84
- return null;
85
- const [scheme, credentials] = (0, split_1.split)(authorization);
86
- const provider = schemes_1.PROVIDERS[scheme];
87
- if (!(provider in this.discovery))
88
- throw new http.Unauthorized(`Unknown authentication scheme '${scheme}'.`);
89
- this.schemes[scheme] ??= await this.discovery[provider];
90
- const result = await this.schemes[scheme]
91
- .invoke('authenticate', { input: credentials });
92
- if (result instanceof Error)
93
- return null;
94
- const identity = result.identity;
95
- if (scheme !== schemes_1.PRIMARY && await this.banned(identity))
96
- throw new http.Unauthorized();
97
- identity.scheme = scheme;
98
- identity.refresh = result.refresh;
99
- return identity;
100
- }
101
- async banned(identity) {
102
- this.bans ??= await this.discovery.bans;
103
- const ban = await this.bans.invoke('observe', { query: { id: identity.id } });
104
- return ban.banned;
105
- }
106
- }
107
- const CLASSES = {
108
- anonymous: Anonymous_1.Anonymous,
109
- id: Id_1.Id,
110
- role: Role_1.Role,
111
- rule: Rule_1.Rule,
112
- incept: Incept_1.Incept,
113
- scheme: Scheme_1.Scheme,
114
- echo: Echo_1.Echo
115
- };
116
- const REMOTES = ['basic', 'tokens', 'roles', 'bans'];
117
- module.exports = new Authorization();
118
- //# sourceMappingURL=Family.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Family.js","sourceRoot":"","sources":["../../../source/directives/auth/Family.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { type Parameter } from '../../RTD';
2
- import { type Directive, type Identity } from './types';
3
- export declare class Id implements Directive {
4
- private readonly parameter;
5
- constructor(parameter: string);
6
- authorize(identity: Identity | null, _: any, parameters: Parameter[]): boolean;
7
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Id = void 0;
4
- class Id {
5
- parameter;
6
- constructor(parameter) {
7
- this.parameter = parameter;
8
- }
9
- authorize(identity, _, parameters) {
10
- if (identity === null)
11
- return false;
12
- const parameter = parameters.find((parameter) => parameter.name === this.parameter);
13
- return parameter?.value === identity.id;
14
- }
15
- }
16
- exports.Id = Id;
17
- //# sourceMappingURL=Id.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Id.js","sourceRoot":"","sources":["../../../source/directives/auth/Id.ts"],"names":[],"mappings":";;;AAGA,MAAa,EAAE;IACI,SAAS,CAAQ;IAElC,YAAoB,SAAiB;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,SAAS,CAAE,QAAyB,EAAE,CAAM,EAAE,UAAuB;QAC1E,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,CAAA;QAEnF,OAAO,SAAS,EAAE,KAAK,KAAK,QAAQ,CAAC,EAAE,CAAA;IACzC,CAAC;CACF;AAfD,gBAeC"}
@@ -1,10 +0,0 @@
1
- import * as http from '../../HTTP';
2
- import { type Directive, type Discovery, type Identity, type Input } from './types';
3
- export declare class Incept implements Directive {
4
- private readonly property;
5
- private readonly discovery;
6
- private readonly schemes;
7
- constructor(property: string, discovery: Discovery);
8
- authorize(identity: Identity | null, input: Input): boolean;
9
- settle(request: Input, response: http.OutgoingMessage): Promise<void>;
10
- }
@@ -1,58 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Incept = void 0;
27
- const http = __importStar(require("../../HTTP"));
28
- const split_1 = require("./split");
29
- const schemes_1 = require("./schemes");
30
- class Incept {
31
- property;
32
- discovery;
33
- schemes = {};
34
- constructor(property, discovery) {
35
- this.property = property;
36
- this.discovery = discovery;
37
- }
38
- authorize(identity, input) {
39
- return identity === null && 'authorization' in input.headers;
40
- }
41
- async settle(request, response) {
42
- const id = response.body?.[this.property];
43
- if (id === undefined)
44
- throw new http.Conflict('Identity inception has failed as the response body ' +
45
- ` does not contain the '${this.property}' property.`);
46
- const [scheme, credentials] = (0, split_1.split)(request.headers.authorization);
47
- const provider = schemes_1.PROVIDERS[scheme];
48
- this.schemes[scheme] ??= await this.discovery[provider];
49
- const identity = await this.schemes[scheme]
50
- .invoke('create', { input: { id, credentials } });
51
- if (identity instanceof Error)
52
- throw new http.Conflict(identity);
53
- request.identity = identity;
54
- request.identity.scheme = scheme;
55
- }
56
- }
57
- exports.Incept = Incept;
58
- //# sourceMappingURL=Incept.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Incept.js","sourceRoot":"","sources":["../../../source/directives/auth/Incept.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iDAAkC;AAElC,mCAA+B;AAC/B,uCAAqC;AAErC,MAAa,MAAM;IACA,QAAQ,CAAQ;IAChB,SAAS,CAAW;IACpB,OAAO,GAAY,EAAwB,CAAA;IAE5D,YAAoB,QAAgB,EAAE,SAAoB;QACxD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,SAAS,CAAE,QAAyB,EAAE,KAAY;QACvD,OAAO,QAAQ,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAC,OAAO,CAAA;IAC9D,CAAC;IAEM,KAAK,CAAC,MAAM,CAAE,OAAc,EAAE,QAA8B;QACjE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEzC,IAAI,EAAE,KAAK,SAAS;YAClB,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,qDAAqD;gBAC3E,0BAA0B,IAAI,CAAC,QAAQ,aAAa,CAAC,CAAA;QAEzD,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAA,aAAK,EAAC,OAAO,CAAC,OAAO,CAAC,aAAuB,CAAC,CAAA;QAC5E,MAAM,QAAQ,GAAG,mBAAS,CAAC,MAAM,CAAC,CAAA;QAElC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;QAEvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;aACxC,MAAM,CAAkB,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,CAAC,CAAA;QAEpE,IAAI,QAAQ,YAAY,KAAK;YAC3B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAEnC,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAA;QAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAA;IAClC,CAAC;CACF;AAnCD,wBAmCC"}
@@ -1,11 +0,0 @@
1
- import { type Component } from '@toa.io/core';
2
- import { type Directive, type Identity } from './types';
3
- export declare class Role implements Directive {
4
- static remote: Component | null;
5
- private readonly roles;
6
- private readonly discovery;
7
- constructor(roles: string | string[], discovery: Promise<Component>);
8
- static set(identity: Identity, discovery: Promise<Component>): Promise<void>;
9
- authorize(identity: Identity | null): Promise<boolean>;
10
- private match;
11
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Role = void 0;
4
- class Role {
5
- static remote = null;
6
- roles;
7
- discovery;
8
- constructor(roles, discovery) {
9
- this.roles = typeof roles === 'string' ? [roles] : roles;
10
- this.discovery = discovery;
11
- }
12
- static async set(identity, discovery) {
13
- this.remote ??= await discovery;
14
- const query = { criteria: `identity==${identity.id}`, limit: 1024 };
15
- const roles = await this.remote.invoke('list', { query });
16
- identity.roles = roles;
17
- }
18
- async authorize(identity) {
19
- if (identity === null)
20
- return false;
21
- await Role.set(identity, this.discovery);
22
- if (identity.roles === undefined)
23
- return false;
24
- return this.match(identity.roles);
25
- }
26
- match(roles) {
27
- for (const role of roles) {
28
- const index = this.roles.findIndex((expected) => compare(expected, role));
29
- if (index !== -1)
30
- return true;
31
- }
32
- return false;
33
- }
34
- }
35
- exports.Role = Role;
36
- function compare(expected, actual) {
37
- const exp = expected.split(':');
38
- const act = actual.split(':');
39
- for (let i = 0; i < act.length; i++)
40
- if (exp[i] !== act[i])
41
- return false;
42
- return true;
43
- }
44
- //# sourceMappingURL=Role.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Role.js","sourceRoot":"","sources":["../../../source/directives/auth/Role.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IACR,MAAM,CAAC,MAAM,GAAqB,IAAI,CAAA;IAC5B,KAAK,CAAU;IACf,SAAS,CAAoB;IAE9C,YAAoB,KAAwB,EAAE,SAA6B;QACzE,IAAI,CAAC,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAE,QAAkB,EAAE,SAA6B;QACxE,IAAI,CAAC,MAAM,KAAK,MAAM,SAAS,CAAA;QAE/B,MAAM,KAAK,GAAU,EAAE,QAAQ,EAAE,aAAa,QAAQ,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;QAC1E,MAAM,KAAK,GAAa,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAEnE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAA;IACxB,CAAC;IAEM,KAAK,CAAC,SAAS,CAAE,QAAyB;QAC/C,IAAI,QAAQ,KAAK,IAAI;YACnB,OAAO,KAAK,CAAA;QAEd,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;YAC9B,OAAO,KAAK,CAAA;QAEd,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnC,CAAC;IAEO,KAAK,CAAE,KAAe;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAA;YAEzE,IAAI,KAAK,KAAK,CAAC,CAAC;gBACd,OAAO,IAAI,CAAA;SACd;QAED,OAAO,KAAK,CAAA;IACd,CAAC;;AAxCH,oBAyCC;AAED,SAAS,OAAO,CAAE,QAAgB,EAAE,MAAc;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;QACjC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnB,OAAO,KAAK,CAAA;IAEhB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -1,9 +0,0 @@
1
- import { type Parameter } from '../../RTD';
2
- import { type Directive, type Identity } from './types';
3
- export declare class Rule implements Directive {
4
- private readonly directives;
5
- constructor(directives: Record<string, any>, create: Create);
6
- authorize(identity: Identity | null, input: any, parameters: Parameter[]): Promise<boolean>;
7
- }
8
- type Create = (name: string, value: any, ...args: any[]) => Directive;
9
- export {};
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Rule = void 0;
4
- class Rule {
5
- directives = [];
6
- constructor(directives, create) {
7
- for (const [name, value] of Object.entries(directives)) {
8
- const directive = create(name, value);
9
- this.directives.push(directive);
10
- }
11
- }
12
- async authorize(identity, input, parameters) {
13
- for (const directive of this.directives) {
14
- const authorized = await directive.authorize(identity, input, parameters);
15
- if (!authorized)
16
- return false;
17
- }
18
- return true;
19
- }
20
- }
21
- exports.Rule = Rule;
22
- //# sourceMappingURL=Rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Rule.js","sourceRoot":"","sources":["../../../source/directives/auth/Rule.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IACE,UAAU,GAAgB,EAAE,CAAA;IAE7C,YAAoB,UAA+B,EAAE,MAAc;QACjE,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACtD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YAErC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;SAChC;IACH,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,QAAyB,EAAE,KAAU,EAAE,UAAuB;QAC7D,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA;YAEzE,IAAI,CAAC,UAAU;gBACb,OAAO,KAAK,CAAA;SACf;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAtBD,oBAsBC"}
@@ -1,7 +0,0 @@
1
- import { type Directive, type Identity, type Input } from './types';
2
- export declare class Scheme implements Directive {
3
- private readonly scheme;
4
- private readonly Scheme;
5
- constructor(scheme: string);
6
- authorize(_: Identity | null, input: Input): boolean;
7
- }
@@ -1,47 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Scheme = void 0;
27
- const http = __importStar(require("../../HTTP"));
28
- const split_1 = require("./split");
29
- class Scheme {
30
- scheme;
31
- Scheme;
32
- constructor(scheme) {
33
- this.scheme = scheme.toLowerCase();
34
- this.Scheme = scheme[0].toUpperCase() + scheme.substring(1);
35
- }
36
- authorize(_, input) {
37
- if (input.headers.authorization === undefined)
38
- return false;
39
- const [scheme] = (0, split_1.split)(input.headers.authorization);
40
- if (scheme !== this.scheme)
41
- throw new http.Forbidden(this.Scheme +
42
- ' authentication scheme is required to access this resource.');
43
- return false;
44
- }
45
- }
46
- exports.Scheme = Scheme;
47
- //# sourceMappingURL=Scheme.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scheme.js","sourceRoot":"","sources":["../../../source/directives/auth/Scheme.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAElC,mCAA+B;AAE/B,MAAa,MAAM;IACA,MAAM,CAAQ;IACd,MAAM,CAAQ;IAE/B,YAAoB,MAAc;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC7D,CAAC;IAEM,SAAS,CAAE,CAAkB,EAAE,KAAY;QAChD,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;YAC3C,OAAO,KAAK,CAAA;QAEd,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QAEnD,IAAI,MAAM,KAAK,IAAI,CAAC,MAAM;YACxB,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM;gBAClC,6DAA6D,CAAC,CAAA;QAElE,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AArBD,wBAqBC"}
@@ -1,2 +0,0 @@
1
- import Family from './Family';
2
- export = Family;
@@ -1,7 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- const Family_1 = __importDefault(require("./Family"));
6
- module.exports = Family_1.default;
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/directives/auth/index.ts"],"names":[],"mappings":";;;;AAAA,sDAA6B;AAE7B,iBAAS,gBAAM,CAAA"}
@@ -1,3 +0,0 @@
1
- import { type Remote, type Scheme } from './types';
2
- export declare const PROVIDERS: Record<Scheme, Remote>;
3
- export declare const PRIMARY: Scheme;
@@ -1,9 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PRIMARY = exports.PROVIDERS = void 0;
4
- exports.PROVIDERS = {
5
- basic: 'basic',
6
- token: 'tokens'
7
- };
8
- exports.PRIMARY = 'token';
9
- //# sourceMappingURL=schemes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schemes.js","sourceRoot":"","sources":["../../../source/directives/auth/schemes.ts"],"names":[],"mappings":";;;AAEa,QAAA,SAAS,GAA2B;IAC/C,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,QAAQ;CAChB,CAAA;AAEY,QAAA,OAAO,GAAW,OAAO,CAAA"}
@@ -1,2 +0,0 @@
1
- import { type Scheme } from './types';
2
- export declare function split(authorization: string): [Scheme, string];
@@ -1,38 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.split = void 0;
27
- const http = __importStar(require("../../HTTP"));
28
- function split(authorization) {
29
- const space = authorization.indexOf(' ');
30
- if (space === -1)
31
- throw new http.Unauthorized('Malformed authorization header.');
32
- const Scheme = authorization.slice(0, space);
33
- const scheme = Scheme.toLowerCase();
34
- const value = authorization.slice(space + 1);
35
- return [scheme, value];
36
- }
37
- exports.split = split;
38
- //# sourceMappingURL=split.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../source/directives/auth/split.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAkC;AAGlC,SAAgB,KAAK,CAAE,aAAqB;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAExC,IAAI,KAAK,KAAK,CAAC,CAAC;QACd,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAA;IAEhE,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAY,CAAA;IAC7C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;IAE5C,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC;AAXD,sBAWC"}
@@ -1,31 +0,0 @@
1
- import { type Component } from '@toa.io/core';
2
- import { type Maybe } from '@toa.io/types';
3
- import { type Parameter } from '../../RTD';
4
- import type * as http from '../../HTTP';
5
- import type * as directive from '../../Directive';
6
- export interface Directive {
7
- authorize: (identity: Identity | null, input: Input, parameters: Parameter[]) => boolean | Promise<boolean>;
8
- reply?: (identity: Identity | null) => http.OutgoingMessage;
9
- settle?: (request: Input, response: http.OutgoingMessage) => Promise<void>;
10
- }
11
- export interface Identity {
12
- readonly id: string;
13
- scheme: string;
14
- roles?: string[];
15
- refresh: boolean;
16
- }
17
- export interface Extension {
18
- identity: Identity | null;
19
- }
20
- export interface Ban {
21
- banned: boolean;
22
- }
23
- export type Input = directive.Input & Extension;
24
- export type AuthenticationResult = Maybe<{
25
- identity: Identity;
26
- refresh: boolean;
27
- }>;
28
- export type Scheme = 'basic' | 'token';
29
- export type Remote = 'basic' | 'tokens' | 'roles' | 'bans';
30
- export type Discovery = Record<Remote, Promise<Component>>;
31
- export type Schemes = Record<Scheme, Component>;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/directives/auth/types.ts"],"names":[],"mappings":""}
@@ -1,9 +0,0 @@
1
- import type { AuthenticatedRequest, Directive } from './types';
2
- export declare class Control implements Directive {
3
- protected readonly value: string;
4
- private cache;
5
- constructor(value: string);
6
- set(request: AuthenticatedRequest, headers: Headers): void;
7
- protected resolve(request: AuthenticatedRequest): string;
8
- private mask;
9
- }
@@ -1,42 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Control = void 0;
4
- const matchacho_1 = require("matchacho");
5
- class Control {
6
- value;
7
- cache = null;
8
- constructor(value) {
9
- this.value = value;
10
- }
11
- set(request, headers) {
12
- if (!['GET', 'HEAD', 'OPTIONS'].includes(request.method))
13
- return;
14
- this.cache ??= this.resolve(request);
15
- headers.set('cache-control', this.cache);
16
- }
17
- resolve(request) {
18
- if (request.identity === null)
19
- return this.value;
20
- const directives = this.mask();
21
- if ((directives & (PUBLIC | NO_CACHE)) === PUBLIC)
22
- return 'no-cache, ' + this.value;
23
- if ((directives & (PUBLIC | PRIVATE)) === 0)
24
- return 'private, ' + this.value;
25
- return this.value;
26
- }
27
- mask() {
28
- const directives = this.value.match(DIRECTIVES_RX);
29
- if (directives === null)
30
- return 0;
31
- let mask = 0;
32
- for (const directive of directives)
33
- mask |= (0, matchacho_1.match)(directive, 'private', PRIVATE, 'public', PUBLIC, 'no-cache', NO_CACHE, 0);
34
- return mask;
35
- }
36
- }
37
- exports.Control = Control;
38
- const DIRECTIVES_RX = /\b(private|public|no-cache)\b/ig;
39
- const PUBLIC = 1;
40
- const PRIVATE = 2;
41
- const NO_CACHE = 4;
42
- //# sourceMappingURL=Control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Control.js","sourceRoot":"","sources":["../../../source/directives/cache/Control.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,MAAa,OAAO;IACC,KAAK,CAAQ;IACxB,KAAK,GAAkB,IAAI,CAAA;IAEnC,YAAoB,KAAa;QAC/B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEM,GAAG,CAAE,OAA6B,EAAE,OAAgB;QACzD,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;YACtD,OAAM;QAER,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;QAEpC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAES,OAAO,CAAE,OAA6B;QAC9C,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;YAC3B,OAAO,IAAI,CAAC,KAAK,CAAA;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAE9B,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,KAAK,MAAM;YAC/C,OAAO,YAAY,GAAG,IAAI,CAAC,KAAK,CAAA;QAElC,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,KAAK,CAAC;YACzC,OAAO,WAAW,GAAG,IAAI,CAAC,KAAK,CAAA;QAEjC,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAEO,IAAI;QACV,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;QAElD,IAAI,UAAU,KAAK,IAAI;YACrB,OAAO,CAAC,CAAA;QAEV,IAAI,IAAI,GAAG,CAAC,CAAA;QAEZ,KAAK,MAAM,SAAS,IAAI,UAAU;YAChC,IAAI,IAAI,IAAA,iBAAK,EAAS,SAAS,EAC7B,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,QAAQ,EACpB,CAAC,CAAC,CAAA;QAEN,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAjDD,0BAiDC;AAED,MAAM,aAAa,GAAG,iCAAiC,CAAA;AAEvD,MAAM,MAAM,GAAG,CAAC,CAAA;AAChB,MAAM,OAAO,GAAG,CAAC,CAAA;AACjB,MAAM,QAAQ,GAAG,CAAC,CAAA"}
@@ -1,4 +0,0 @@
1
- import { Control } from './Control';
2
- export declare class Exact extends Control {
3
- protected resolve(): string;
4
- }
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Exact = void 0;
4
- const Control_1 = require("./Control");
5
- class Exact extends Control_1.Control {
6
- resolve() {
7
- return this.value;
8
- }
9
- }
10
- exports.Exact = Exact;
11
- //# sourceMappingURL=Exact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Exact.js","sourceRoot":"","sources":["../../../source/directives/cache/Exact.ts"],"names":[],"mappings":";;;AAAA,uCAAmC;AAEnC,MAAa,KAAM,SAAQ,iBAAO;IACb,OAAO;QACxB,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAJD,sBAIC"}
@@ -1,12 +0,0 @@
1
- import { type Input, type Output, type Family } from '../../Directive';
2
- import { type Directive } from './types';
3
- import type * as http from '../../HTTP';
4
- declare class Cache implements Family<Directive> {
5
- readonly name: string;
6
- readonly mandatory: boolean;
7
- create(name: string, value: any): Directive;
8
- preflight(): Output;
9
- settle(directives: Directive[], request: Input, response: http.OutgoingMessage): Promise<void>;
10
- }
11
- declare const _default: Cache;
12
- export = _default;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- const Control_1 = require("./Control");
3
- const Exact_1 = require("./Exact");
4
- class Cache {
5
- name = 'cache';
6
- mandatory = false;
7
- create(name, value) {
8
- const Class = constructors[name];
9
- if (Class === undefined)
10
- throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`);
11
- return new Class(value);
12
- }
13
- preflight() {
14
- return null;
15
- }
16
- async settle(directives, request, response) {
17
- response.headers ??= new Headers();
18
- directives[0]?.set(request, response.headers);
19
- }
20
- }
21
- const constructors = {
22
- control: Control_1.Control,
23
- exact: Exact_1.Exact
24
- };
25
- module.exports = new Cache();
26
- //# sourceMappingURL=Family.js.map