@toa.io/extensions.exposition 0.23.0-dev.0 → 0.24.0-alpha.10

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 (290) hide show
  1. package/components/identity.basic/manifest.toa.yaml +1 -1
  2. package/components/identity.basic/operations/authenticate.d.ts +9 -0
  3. package/components/identity.basic/operations/authenticate.js +25 -0
  4. package/components/identity.basic/operations/authenticate.js.map +1 -0
  5. package/components/identity.basic/operations/create.d.ts +10 -0
  6. package/components/identity.basic/operations/create.js +10 -0
  7. package/components/identity.basic/operations/create.js.map +1 -0
  8. package/components/identity.basic/operations/transit.d.ts +12 -0
  9. package/components/identity.basic/operations/transit.js +53 -0
  10. package/components/identity.basic/operations/transit.js.map +1 -0
  11. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -0
  12. package/components/identity.basic/operations/types.d.ts +38 -0
  13. package/components/identity.basic/operations/types.js +3 -0
  14. package/components/identity.basic/operations/types.js.map +1 -0
  15. package/components/identity.roles/operations/list.d.ts +5 -0
  16. package/components/identity.roles/operations/list.js +8 -0
  17. package/components/identity.roles/operations/list.js.map +1 -0
  18. package/components/identity.roles/operations/principal.d.ts +15 -0
  19. package/components/identity.roles/operations/principal.js +8 -0
  20. package/components/identity.roles/operations/principal.js.map +1 -0
  21. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -0
  22. package/components/identity.tokens/operations/authenticate.d.ts +9 -0
  23. package/components/identity.tokens/operations/authenticate.js +32 -0
  24. package/components/identity.tokens/operations/authenticate.js.map +1 -0
  25. package/components/identity.tokens/operations/decrypt.d.ts +3 -0
  26. package/components/identity.tokens/operations/decrypt.js +32 -0
  27. package/components/identity.tokens/operations/decrypt.js.map +1 -0
  28. package/components/identity.tokens/operations/encrypt.d.ts +8 -0
  29. package/components/identity.tokens/operations/encrypt.js +22 -0
  30. package/components/identity.tokens/operations/encrypt.js.map +1 -0
  31. package/components/identity.tokens/operations/revoke.d.ts +2 -0
  32. package/components/identity.tokens/operations/revoke.js +8 -0
  33. package/components/identity.tokens/operations/revoke.js.map +1 -0
  34. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -0
  35. package/components/identity.tokens/operations/types.d.ts +40 -0
  36. package/components/identity.tokens/operations/types.js +3 -0
  37. package/components/identity.tokens/operations/types.js.map +1 -0
  38. package/documentation/access.md +2 -3
  39. package/documentation/cache.md +42 -0
  40. package/documentation/components.md +1 -1
  41. package/documentation/octets.md +3 -3
  42. package/documentation/tree.md +1 -5
  43. package/features/cache.feature +160 -0
  44. package/features/steps/HTTP.ts +13 -80
  45. package/features/steps/Parameters.ts +1 -2
  46. package/features/steps/Workspace.ts +5 -3
  47. package/package.json +15 -12
  48. package/readme.md +1 -0
  49. package/source/HTTP/Server.test.ts +5 -3
  50. package/source/HTTP/Server.ts +30 -18
  51. package/source/HTTP/messages.ts +4 -4
  52. package/source/RTD/syntax/parse.ts +2 -1
  53. package/source/Tenant.ts +5 -0
  54. package/source/directives/auth/Family.ts +2 -2
  55. package/source/directives/cache/Control.ts +59 -0
  56. package/source/directives/cache/Exact.ts +7 -0
  57. package/source/directives/cache/Family.ts +36 -0
  58. package/source/directives/cache/index.ts +3 -0
  59. package/source/directives/cache/types.ts +9 -0
  60. package/source/directives/index.ts +2 -1
  61. package/source/directives/octets/Fetch.ts +3 -3
  62. package/transpiled/Annotation.d.ts +7 -0
  63. package/transpiled/Annotation.js +3 -0
  64. package/transpiled/Annotation.js.map +1 -0
  65. package/transpiled/Branch.d.ts +7 -0
  66. package/transpiled/Branch.js +3 -0
  67. package/transpiled/Branch.js.map +1 -0
  68. package/transpiled/Composition.d.ts +14 -0
  69. package/transpiled/Composition.js +43 -0
  70. package/transpiled/Composition.js.map +1 -0
  71. package/transpiled/Context.d.ts +5 -0
  72. package/transpiled/Context.js +3 -0
  73. package/transpiled/Context.js.map +1 -0
  74. package/transpiled/Directive.d.ts +32 -0
  75. package/transpiled/Directive.js +76 -0
  76. package/transpiled/Directive.js.map +1 -0
  77. package/transpiled/Endpoint.d.ts +20 -0
  78. package/transpiled/Endpoint.js +45 -0
  79. package/transpiled/Endpoint.js.map +1 -0
  80. package/transpiled/Factory.d.ts +10 -0
  81. package/transpiled/Factory.js +66 -0
  82. package/transpiled/Factory.js.map +1 -0
  83. package/transpiled/Gateway.d.ts +19 -0
  84. package/transpiled/Gateway.js +92 -0
  85. package/transpiled/Gateway.js.map +1 -0
  86. package/transpiled/HTTP/Server.d.ts +22 -0
  87. package/transpiled/HTTP/Server.fixtures.d.ts +11 -0
  88. package/transpiled/HTTP/Server.fixtures.js +32 -0
  89. package/transpiled/HTTP/Server.fixtures.js.map +1 -0
  90. package/transpiled/HTTP/Server.js +131 -0
  91. package/transpiled/HTTP/Server.js.map +1 -0
  92. package/transpiled/HTTP/exceptions.d.ts +34 -0
  93. package/transpiled/HTTP/exceptions.js +71 -0
  94. package/transpiled/HTTP/exceptions.js.map +1 -0
  95. package/transpiled/HTTP/formats/index.d.ts +10 -0
  96. package/transpiled/HTTP/formats/index.js +38 -0
  97. package/transpiled/HTTP/formats/index.js.map +1 -0
  98. package/transpiled/HTTP/formats/json.d.ts +6 -0
  99. package/transpiled/HTTP/formats/json.js +17 -0
  100. package/transpiled/HTTP/formats/json.js.map +1 -0
  101. package/transpiled/HTTP/formats/msgpack.d.ts +6 -0
  102. package/transpiled/HTTP/formats/msgpack.js +38 -0
  103. package/transpiled/HTTP/formats/msgpack.js.map +1 -0
  104. package/transpiled/HTTP/formats/text.d.ts +6 -0
  105. package/transpiled/HTTP/formats/text.js +15 -0
  106. package/transpiled/HTTP/formats/text.js.map +1 -0
  107. package/transpiled/HTTP/formats/yaml.d.ts +6 -0
  108. package/transpiled/HTTP/formats/yaml.js +41 -0
  109. package/transpiled/HTTP/formats/yaml.js.map +1 -0
  110. package/transpiled/HTTP/index.d.ts +3 -0
  111. package/transpiled/HTTP/index.js +20 -0
  112. package/transpiled/HTTP/index.js.map +1 -0
  113. package/transpiled/HTTP/messages.d.ts +28 -0
  114. package/transpiled/HTTP/messages.js +70 -0
  115. package/transpiled/HTTP/messages.js.map +1 -0
  116. package/transpiled/Mapping.d.ts +8 -0
  117. package/transpiled/Mapping.js +38 -0
  118. package/transpiled/Mapping.js.map +1 -0
  119. package/transpiled/Query.d.ts +13 -0
  120. package/transpiled/Query.js +107 -0
  121. package/transpiled/Query.js.map +1 -0
  122. package/transpiled/RTD/Context.d.ts +11 -0
  123. package/transpiled/RTD/Context.js +3 -0
  124. package/transpiled/RTD/Context.js.map +1 -0
  125. package/transpiled/RTD/Directives.d.ts +7 -0
  126. package/transpiled/RTD/Directives.js +3 -0
  127. package/transpiled/RTD/Directives.js.map +1 -0
  128. package/transpiled/RTD/Endpoint.d.ts +9 -0
  129. package/transpiled/RTD/Endpoint.js +3 -0
  130. package/transpiled/RTD/Endpoint.js.map +1 -0
  131. package/transpiled/RTD/Match.d.ts +11 -0
  132. package/transpiled/RTD/Match.js +3 -0
  133. package/transpiled/RTD/Match.js.map +1 -0
  134. package/transpiled/RTD/Method.d.ts +9 -0
  135. package/transpiled/RTD/Method.js +16 -0
  136. package/transpiled/RTD/Method.js.map +1 -0
  137. package/transpiled/RTD/Node.d.ts +21 -0
  138. package/transpiled/RTD/Node.js +61 -0
  139. package/transpiled/RTD/Node.js.map +1 -0
  140. package/transpiled/RTD/Route.d.ts +14 -0
  141. package/transpiled/RTD/Route.js +49 -0
  142. package/transpiled/RTD/Route.js.map +1 -0
  143. package/transpiled/RTD/Tree.d.ts +14 -0
  144. package/transpiled/RTD/Tree.js +40 -0
  145. package/transpiled/RTD/Tree.js.map +1 -0
  146. package/transpiled/RTD/factory.d.ts +6 -0
  147. package/transpiled/RTD/factory.js +36 -0
  148. package/transpiled/RTD/factory.js.map +1 -0
  149. package/transpiled/RTD/index.d.ts +8 -0
  150. package/transpiled/RTD/index.js +38 -0
  151. package/transpiled/RTD/index.js.map +1 -0
  152. package/transpiled/RTD/segment.d.ts +8 -0
  153. package/transpiled/RTD/segment.js +25 -0
  154. package/transpiled/RTD/segment.js.map +1 -0
  155. package/transpiled/RTD/syntax/index.d.ts +2 -0
  156. package/transpiled/RTD/syntax/index.js +19 -0
  157. package/transpiled/RTD/syntax/index.js.map +1 -0
  158. package/transpiled/RTD/syntax/parse.d.ts +4 -0
  159. package/transpiled/RTD/syntax/parse.js +128 -0
  160. package/transpiled/RTD/syntax/parse.js.map +1 -0
  161. package/transpiled/RTD/syntax/types.d.ts +41 -0
  162. package/transpiled/RTD/syntax/types.js +5 -0
  163. package/transpiled/RTD/syntax/types.js.map +1 -0
  164. package/transpiled/Remotes.d.ts +9 -0
  165. package/transpiled/Remotes.js +25 -0
  166. package/transpiled/Remotes.js.map +1 -0
  167. package/transpiled/Tenant.d.ts +13 -0
  168. package/transpiled/Tenant.js +34 -0
  169. package/transpiled/Tenant.js.map +1 -0
  170. package/transpiled/deployment.d.ts +3 -0
  171. package/transpiled/deployment.js +67 -0
  172. package/transpiled/deployment.js.map +1 -0
  173. package/transpiled/directives/auth/Anonymous.d.ts +6 -0
  174. package/transpiled/directives/auth/Anonymous.js +17 -0
  175. package/transpiled/directives/auth/Anonymous.js.map +1 -0
  176. package/transpiled/directives/auth/Echo.d.ts +6 -0
  177. package/transpiled/directives/auth/Echo.js +13 -0
  178. package/transpiled/directives/auth/Echo.js.map +1 -0
  179. package/transpiled/directives/auth/Family.d.ts +20 -0
  180. package/transpiled/directives/auth/Family.js +118 -0
  181. package/transpiled/directives/auth/Family.js.map +1 -0
  182. package/transpiled/directives/auth/Id.d.ts +7 -0
  183. package/transpiled/directives/auth/Id.js +17 -0
  184. package/transpiled/directives/auth/Id.js.map +1 -0
  185. package/transpiled/directives/auth/Incept.d.ts +10 -0
  186. package/transpiled/directives/auth/Incept.js +58 -0
  187. package/transpiled/directives/auth/Incept.js.map +1 -0
  188. package/transpiled/directives/auth/Role.d.ts +11 -0
  189. package/transpiled/directives/auth/Role.js +44 -0
  190. package/transpiled/directives/auth/Role.js.map +1 -0
  191. package/transpiled/directives/auth/Rule.d.ts +9 -0
  192. package/transpiled/directives/auth/Rule.js +22 -0
  193. package/transpiled/directives/auth/Rule.js.map +1 -0
  194. package/transpiled/directives/auth/Scheme.d.ts +7 -0
  195. package/transpiled/directives/auth/Scheme.js +47 -0
  196. package/transpiled/directives/auth/Scheme.js.map +1 -0
  197. package/transpiled/directives/auth/index.d.ts +2 -0
  198. package/transpiled/directives/auth/index.js +7 -0
  199. package/transpiled/directives/auth/index.js.map +1 -0
  200. package/transpiled/directives/auth/schemes.d.ts +3 -0
  201. package/transpiled/directives/auth/schemes.js +9 -0
  202. package/transpiled/directives/auth/schemes.js.map +1 -0
  203. package/transpiled/directives/auth/split.d.ts +2 -0
  204. package/transpiled/directives/auth/split.js +38 -0
  205. package/transpiled/directives/auth/split.js.map +1 -0
  206. package/transpiled/directives/auth/types.d.ts +31 -0
  207. package/transpiled/directives/auth/types.js +3 -0
  208. package/transpiled/directives/auth/types.js.map +1 -0
  209. package/transpiled/directives/cache/Control.d.ts +9 -0
  210. package/transpiled/directives/cache/Control.js +42 -0
  211. package/transpiled/directives/cache/Control.js.map +1 -0
  212. package/transpiled/directives/cache/Exact.d.ts +4 -0
  213. package/transpiled/directives/cache/Exact.js +11 -0
  214. package/transpiled/directives/cache/Exact.js.map +1 -0
  215. package/transpiled/directives/cache/Family.d.ts +12 -0
  216. package/transpiled/directives/cache/Family.js +26 -0
  217. package/transpiled/directives/cache/Family.js.map +1 -0
  218. package/transpiled/directives/cache/index.d.ts +2 -0
  219. package/transpiled/directives/cache/index.js +7 -0
  220. package/transpiled/directives/cache/index.js.map +1 -0
  221. package/transpiled/directives/cache/types.d.ts +7 -0
  222. package/transpiled/directives/cache/types.js +3 -0
  223. package/transpiled/directives/cache/types.js.map +1 -0
  224. package/transpiled/directives/dev/Family.d.ts +10 -0
  225. package/transpiled/directives/dev/Family.js +27 -0
  226. package/transpiled/directives/dev/Family.js.map +1 -0
  227. package/transpiled/directives/dev/Stub.d.ts +7 -0
  228. package/transpiled/directives/dev/Stub.js +14 -0
  229. package/transpiled/directives/dev/Stub.js.map +1 -0
  230. package/transpiled/directives/dev/Throw.d.ts +7 -0
  231. package/transpiled/directives/dev/Throw.js +14 -0
  232. package/transpiled/directives/dev/Throw.js.map +1 -0
  233. package/transpiled/directives/dev/index.d.ts +2 -0
  234. package/transpiled/directives/dev/index.js +7 -0
  235. package/transpiled/directives/dev/index.js.map +1 -0
  236. package/transpiled/directives/dev/types.d.ts +4 -0
  237. package/transpiled/directives/dev/types.js +3 -0
  238. package/transpiled/directives/dev/types.js.map +1 -0
  239. package/transpiled/directives/index.d.ts +2 -0
  240. package/transpiled/directives/index.js +12 -0
  241. package/transpiled/directives/index.js.map +1 -0
  242. package/transpiled/directives/octets/Context.d.ts +8 -0
  243. package/transpiled/directives/octets/Context.js +40 -0
  244. package/transpiled/directives/octets/Context.js.map +1 -0
  245. package/transpiled/directives/octets/Delete.d.ts +10 -0
  246. package/transpiled/directives/octets/Delete.js +47 -0
  247. package/transpiled/directives/octets/Delete.js.map +1 -0
  248. package/transpiled/directives/octets/Family.d.ts +12 -0
  249. package/transpiled/directives/octets/Family.js +49 -0
  250. package/transpiled/directives/octets/Family.js.map +1 -0
  251. package/transpiled/directives/octets/Fetch.d.ts +18 -0
  252. package/transpiled/directives/octets/Fetch.js +77 -0
  253. package/transpiled/directives/octets/Fetch.js.map +1 -0
  254. package/transpiled/directives/octets/List.d.ts +10 -0
  255. package/transpiled/directives/octets/List.js +47 -0
  256. package/transpiled/directives/octets/List.js.map +1 -0
  257. package/transpiled/directives/octets/Permute.d.ts +10 -0
  258. package/transpiled/directives/octets/Permute.js +51 -0
  259. package/transpiled/directives/octets/Permute.js.map +1 -0
  260. package/transpiled/directives/octets/Store.d.ts +33 -0
  261. package/transpiled/directives/octets/Store.js +124 -0
  262. package/transpiled/directives/octets/Store.js.map +1 -0
  263. package/transpiled/directives/octets/index.d.ts +2 -0
  264. package/transpiled/directives/octets/index.js +7 -0
  265. package/transpiled/directives/octets/index.js.map +1 -0
  266. package/transpiled/directives/octets/schemas.d.ts +6 -0
  267. package/transpiled/directives/octets/schemas.js +17 -0
  268. package/transpiled/directives/octets/schemas.js.map +1 -0
  269. package/transpiled/directives/octets/types.d.ts +9 -0
  270. package/transpiled/directives/octets/types.js +3 -0
  271. package/transpiled/directives/octets/types.js.map +1 -0
  272. package/transpiled/discovery.d.ts +1 -0
  273. package/transpiled/discovery.js +3 -0
  274. package/transpiled/discovery.js.map +1 -0
  275. package/transpiled/exceptions.d.ts +2 -0
  276. package/transpiled/exceptions.js +39 -0
  277. package/transpiled/exceptions.js.map +1 -0
  278. package/transpiled/index.d.ts +5 -0
  279. package/transpiled/index.js +12 -0
  280. package/transpiled/index.js.map +1 -0
  281. package/transpiled/manifest.d.ts +3 -0
  282. package/transpiled/manifest.js +61 -0
  283. package/transpiled/manifest.js.map +1 -0
  284. package/transpiled/root.d.ts +2 -0
  285. package/transpiled/root.js +39 -0
  286. package/transpiled/root.js.map +1 -0
  287. package/transpiled/schemas.d.ts +3 -0
  288. package/transpiled/schemas.js +14 -0
  289. package/transpiled/schemas.js.map +1 -0
  290. package/transpiled/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,38 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,31 @@
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>;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/directives/auth/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
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
+ }
@@ -0,0 +1,42 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ import { Control } from './Control';
2
+ export declare class Exact extends Control {
3
+ protected resolve(): string;
4
+ }
@@ -0,0 +1,11 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,12 @@
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;
@@ -0,0 +1,26 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Family.js","sourceRoot":"","sources":["../../../source/directives/cache/Family.ts"],"names":[],"mappings":";AACA,uCAAmC;AAEnC,mCAA+B;AAG/B,MAAM,KAAK;IACO,IAAI,GAAW,OAAO,CAAA;IACtB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAU;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,6BAA6B,IAAI,CAAC,IAAI,WAAW,CAAC,CAAA;QAEtF,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAEM,KAAK,CAAC,MAAM,CAClB,UAAuB,EAAE,OAAc,EAAE,QAA8B;QACtE,QAAQ,CAAC,OAAO,KAAK,IAAI,OAAO,EAAE,CAAA;QAClC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;IAC/C,CAAC;CACF;AAED,MAAM,YAAY,GAAkD;IAClE,OAAO,EAAE,iBAAO;IAChB,KAAK,EAAE,aAAK;CACb,CAAA;AAED,iBAAS,IAAI,KAAK,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ import Family from './Family';
2
+ export = Family;
@@ -0,0 +1,7 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/directives/cache/index.ts"],"names":[],"mappings":";;;;AAAA,sDAA6B;AAE7B,iBAAS,gBAAM,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type Input } from '../../Directive';
2
+ export interface Directive {
3
+ set: (input: Input, headers: Headers) => void;
4
+ }
5
+ export interface AuthenticatedRequest extends Input {
6
+ identity?: unknown | null;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/directives/cache/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { type Input, type Output, type Family } from '../../Directive';
2
+ import { type Directive } from './types';
3
+ declare class Development implements Family<Directive> {
4
+ readonly name: string;
5
+ readonly mandatory: boolean;
6
+ create(name: string, value: any): Directive;
7
+ preflight(directives: Directive[], input: Input): Output;
8
+ }
9
+ declare const _default: Development;
10
+ export = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ const Stub_1 = require("./Stub");
3
+ const Throw_1 = require("./Throw");
4
+ class Development {
5
+ name = 'dev';
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(directives, input) {
14
+ for (const directive of directives) {
15
+ const output = directive.apply(input);
16
+ if (output !== null)
17
+ return output;
18
+ }
19
+ return null;
20
+ }
21
+ }
22
+ const constructors = {
23
+ stub: Stub_1.Stub,
24
+ throw: Throw_1.Throw
25
+ };
26
+ module.exports = new Development();
27
+ //# sourceMappingURL=Family.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Family.js","sourceRoot":"","sources":["../../../source/directives/dev/Family.ts"],"names":[],"mappings":";AACA,iCAA6B;AAC7B,mCAA+B;AAG/B,MAAM,WAAW;IACC,IAAI,GAAW,KAAK,CAAA;IACpB,SAAS,GAAY,KAAK,CAAA;IAEnC,MAAM,CAAE,IAAY,EAAE,KAAU;QACrC,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAEhC,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,6BAA6B,IAAI,CAAC,IAAI,WAAW,CAAC,CAAA;QAEtF,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAEM,SAAS,CAAE,UAAuB,EAAE,KAAY;QACrD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAErC,IAAI,MAAM,KAAK,IAAI;gBACjB,OAAO,MAAM,CAAA;SAChB;QAED,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED,MAAM,YAAY,GAAkD;IAClE,IAAI,EAAE,WAAI;IACV,KAAK,EAAE,aAAK;CACb,CAAA;AAED,iBAAS,IAAI,WAAW,EAAE,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { type Output } from '../../Directive';
2
+ import { type Directive } from './types';
3
+ export declare class Stub implements Directive {
4
+ private readonly value;
5
+ constructor(value: any);
6
+ apply(): Output;
7
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Stub = void 0;
4
+ class Stub {
5
+ value;
6
+ constructor(value) {
7
+ this.value = value;
8
+ }
9
+ apply() {
10
+ return { body: this.value };
11
+ }
12
+ }
13
+ exports.Stub = Stub;
14
+ //# sourceMappingURL=Stub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stub.js","sourceRoot":"","sources":["../../../source/directives/dev/Stub.ts"],"names":[],"mappings":";;;AAGA,MAAa,IAAI;IACE,KAAK,CAAK;IAE3B,YAAoB,KAAU;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAEM,KAAK;QACV,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;CACF;AAVD,oBAUC"}
@@ -0,0 +1,7 @@
1
+ import { type Output } from '../../Directive';
2
+ import { type Directive } from './types';
3
+ export declare class Throw implements Directive {
4
+ private readonly message;
5
+ constructor(message: any);
6
+ apply(): Output;
7
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Throw = void 0;
4
+ class Throw {
5
+ message;
6
+ constructor(message) {
7
+ this.message = message;
8
+ }
9
+ apply() {
10
+ throw new Error(this.message);
11
+ }
12
+ }
13
+ exports.Throw = Throw;
14
+ //# sourceMappingURL=Throw.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Throw.js","sourceRoot":"","sources":["../../../source/directives/dev/Throw.ts"],"names":[],"mappings":";;;AAGA,MAAa,KAAK;IACC,OAAO,CAAK;IAE7B,YAAoB,OAAY;QAC9B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;IAEM,KAAK;QACV,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,CAAC;CACF;AAVD,sBAUC"}
@@ -0,0 +1,2 @@
1
+ import Family from './Family';
2
+ export = Family;
@@ -0,0 +1,7 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/directives/dev/index.ts"],"names":[],"mappings":";;;;AAAA,sDAA6B;AAE7B,iBAAS,gBAAM,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { type Input, type Output } from '../../Directive';
2
+ export interface Directive {
3
+ apply: (input: Input) => Output;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/directives/dev/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { type Family } from '../Directive';
2
+ export declare const families: Family[];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.families = void 0;
7
+ const dev_1 = __importDefault(require("./dev"));
8
+ const auth_1 = __importDefault(require("./auth"));
9
+ const cache_1 = __importDefault(require("./cache"));
10
+ const octets_1 = __importDefault(require("./octets"));
11
+ exports.families = [auth_1.default, octets_1.default, dev_1.default, cache_1.default];
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/directives/index.ts"],"names":[],"mappings":";;;;;;AACA,gDAAuB;AACvB,kDAAyB;AACzB,oDAA2B;AAC3B,sDAA6B;AAEhB,QAAA,QAAQ,GAAa,CAAC,cAAI,EAAE,gBAAM,EAAE,aAAG,EAAE,eAAK,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ import type { Output } from '../../Directive';
2
+ import type { Directive } from './types';
3
+ export declare class Context implements Directive {
4
+ readonly targeted = false;
5
+ readonly storage: string;
6
+ constructor(value: any);
7
+ apply(): Output;
8
+ }
@@ -0,0 +1,40 @@
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.Context = void 0;
27
+ const schemas = __importStar(require("./schemas"));
28
+ class Context {
29
+ targeted = false;
30
+ storage;
31
+ constructor(value) {
32
+ schemas.context.validate(value);
33
+ this.storage = value;
34
+ }
35
+ apply() {
36
+ return null;
37
+ }
38
+ }
39
+ exports.Context = Context;
40
+ //# sourceMappingURL=Context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Context.js","sourceRoot":"","sources":["../../../source/directives/octets/Context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAoC;AAIpC,MAAa,OAAO;IACF,QAAQ,GAAG,KAAK,CAAA;IAChB,OAAO,CAAQ;IAE/B,YAAoB,KAAU;QAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE/B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAbD,0BAaC"}
@@ -0,0 +1,10 @@
1
+ import type { Component } from '@toa.io/core';
2
+ import type { Output } from '../../Directive';
3
+ import type { Directive, Input } from './types';
4
+ export declare class Delete implements Directive {
5
+ readonly targeted = true;
6
+ private readonly discovery;
7
+ private storage;
8
+ constructor(value: null, discovery: Promise<Component>);
9
+ apply(storage: string, request: Input): Promise<Output>;
10
+ }
@@ -0,0 +1,47 @@
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.Delete = void 0;
27
+ const HTTP_1 = require("../../HTTP");
28
+ const schemas = __importStar(require("./schemas"));
29
+ class Delete {
30
+ targeted = true;
31
+ discovery;
32
+ storage = null;
33
+ constructor(value, discovery) {
34
+ schemas.remove.validate(value);
35
+ this.discovery = discovery;
36
+ }
37
+ async apply(storage, request) {
38
+ this.storage ??= await this.discovery;
39
+ const input = { storage, path: request.path };
40
+ const error = await this.storage.invoke('delete', { input });
41
+ if (error instanceof Error)
42
+ throw new HTTP_1.NotFound();
43
+ return {};
44
+ }
45
+ }
46
+ exports.Delete = Delete;
47
+ //# sourceMappingURL=Delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Delete.js","sourceRoot":"","sources":["../../../source/directives/octets/Delete.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAqC;AACrC,mDAAoC;AAOpC,MAAa,MAAM;IACD,QAAQ,GAAG,IAAI,CAAA;IAEd,SAAS,CAAoB;IACtC,OAAO,GAAqB,IAAI,CAAA;IAExC,YAAoB,KAAW,EAAE,SAA6B;QAC5D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAE9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;IAC5B,CAAC;IAEM,KAAK,CAAC,KAAK,CAAE,OAAe,EAAE,OAAc;QACjD,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,SAAS,CAAA;QAErC,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;QAC7C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAiB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5E,IAAI,KAAK,YAAY,KAAK;YACxB,MAAM,IAAI,eAAQ,EAAE,CAAA;QAEtB,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAvBD,wBAuBC"}
@@ -0,0 +1,12 @@
1
+ import type { Remotes } from '../../Remotes';
2
+ import type { Output, Family } from '../../Directive';
3
+ import type { Directive, Input } from './types';
4
+ declare class Octets implements Family<Directive> {
5
+ readonly name: string;
6
+ readonly mandatory: boolean;
7
+ private discovery;
8
+ create(name: string, value: any, remotes: Remotes): Directive;
9
+ preflight(directives: Directive[], input: Input): Promise<Output>;
10
+ }
11
+ declare const _default: Octets;
12
+ export = _default;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ const HTTP_1 = require("../../HTTP");
3
+ const Context_1 = require("./Context");
4
+ const Store_1 = require("./Store");
5
+ const Fetch_1 = require("./Fetch");
6
+ const List_1 = require("./List");
7
+ const Delete_1 = require("./Delete");
8
+ const Permute_1 = require("./Permute");
9
+ class Octets {
10
+ name = 'octets';
11
+ mandatory = false;
12
+ discovery = null;
13
+ create(name, value, remotes) {
14
+ const Class = DIRECTIVES[name];
15
+ if (Class === undefined)
16
+ throw new Error(`Directive '${name}' is not provided by the '${this.name}' family.`);
17
+ this.discovery ??= remotes.discover('octets', 'storage');
18
+ return new Class(value, this.discovery, remotes);
19
+ }
20
+ async preflight(directives, input) {
21
+ let context = null;
22
+ let action = null;
23
+ for (const directive of directives)
24
+ if (directive instanceof Context_1.Context)
25
+ context ??= directive;
26
+ else if (action === null)
27
+ action = directive;
28
+ else
29
+ throw new Error('Octets action is umbiguous.');
30
+ if (action === null)
31
+ return null;
32
+ if (context === null)
33
+ throw new Error('Octets context is not defined.');
34
+ const targeted = input.path[input.path.length - 1] !== '/';
35
+ if (targeted !== action.targeted)
36
+ throw new HTTP_1.NotFound(`Trailing slash is ${action.targeted ? 'redundant' : 'required'}.`);
37
+ return await action.apply(context.storage, input);
38
+ }
39
+ }
40
+ const DIRECTIVES = {
41
+ context: Context_1.Context,
42
+ store: Store_1.Store,
43
+ fetch: Fetch_1.Fetch,
44
+ list: List_1.List,
45
+ delete: Delete_1.Delete,
46
+ permute: Permute_1.Permute
47
+ };
48
+ module.exports = new Octets();
49
+ //# sourceMappingURL=Family.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Family.js","sourceRoot":"","sources":["../../../source/directives/octets/Family.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,uCAAmC;AACnC,mCAA+B;AAC/B,mCAA+B;AAC/B,iCAA6B;AAC7B,qCAAiC;AACjC,uCAAmC;AAMnC,MAAM,MAAM;IACM,IAAI,GAAW,QAAQ,CAAA;IACvB,SAAS,GAAY,KAAK,CAAA;IAElC,SAAS,GAAG,IAAqC,CAAA;IAElD,MAAM,CAAE,IAAY,EAAE,KAAU,EAAE,OAAgB;QACvD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,KAAK,KAAK,SAAS;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,6BAA6B,IAAI,CAAC,IAAI,WAAW,CAAC,CAAA;QAEtF,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;QAExD,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;IAClD,CAAC;IAEM,KAAK,CAAC,SAAS,CAAE,UAAuB,EAAE,KAAY;QAC3D,IAAI,OAAO,GAAmB,IAAI,CAAA;QAClC,IAAI,MAAM,GAAqB,IAAI,CAAA;QAEnC,KAAK,MAAM,SAAS,IAAI,UAAU;YAChC,IAAI,SAAS,YAAY,iBAAO;gBAC9B,OAAO,KAAK,SAAS,CAAA;iBAClB,IAAI,MAAM,KAAK,IAAI;gBACtB,MAAM,GAAG,SAAS,CAAA;;gBAElB,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;QAElD,IAAI,MAAM,KAAK,IAAI;YACjB,OAAO,IAAI,CAAA;QAEb,IAAI,OAAO,KAAK,IAAI;YAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;QAEnD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,CAAA;QAE1D,IAAI,QAAQ,KAAK,MAAM,CAAC,QAAQ;YAC9B,MAAM,IAAI,eAAQ,CAAC,qBAAqB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAA;QAExF,OAAO,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACnD,CAAC;CACF;AAED,MAAM,UAAU,GAAgC;IAC9C,OAAO,EAAE,iBAAO;IAChB,KAAK,EAAE,aAAK;IACZ,KAAK,EAAE,aAAK;IACZ,IAAI,EAAE,WAAI;IACV,MAAM,EAAE,eAAM;IACd,OAAO,EAAE,iBAAO;CACjB,CAAA;AAID,iBAAS,IAAI,MAAM,EAAE,CAAA"}
@@ -0,0 +1,18 @@
1
+ import type { Component } from '@toa.io/core';
2
+ import type { Output } from '../../Directive';
3
+ import type { Directive, Input } from './types';
4
+ export declare class Fetch implements Directive {
5
+ readonly targeted = true;
6
+ private readonly permissions;
7
+ private readonly discovery;
8
+ private storage;
9
+ constructor(permissions: Partial<Permissions> | null, discovery: Promise<Component>);
10
+ apply(storage: string, request: Input): Promise<Output>;
11
+ private fetch;
12
+ private get;
13
+ }
14
+ interface Permissions {
15
+ blob: boolean;
16
+ meta: boolean;
17
+ }
18
+ export {};