api-machine 1.3.0 → 2.0.0

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 (46) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/LICENSE.md +20 -20
  3. package/README.md +275 -275
  4. package/authentication/authenticated-request.d.ts +5 -0
  5. package/authentication/authentication-scheme.d.ts +8 -1
  6. package/authentication/authentication-scheme.js +46 -4
  7. package/authentication/authentication-scheme.js.map +1 -1
  8. package/authentication/index.d.ts +2 -2
  9. package/authentication/index.js +2 -1
  10. package/authentication/index.js.map +1 -1
  11. package/authentication/schemes/bearer-authentication-scheme.d.ts +5 -4
  12. package/authentication/schemes/bearer-authentication-scheme.js +3 -1
  13. package/authentication/schemes/bearer-authentication-scheme.js.map +1 -1
  14. package/authentication/schemes/client-credentials-oauth2-scheme.d.ts +64 -0
  15. package/authentication/schemes/client-credentials-oauth2-scheme.js +99 -0
  16. package/authentication/schemes/client-credentials-oauth2-scheme.js.map +1 -0
  17. package/authorization/authorization.d.ts +16 -0
  18. package/authorization/authorization.js +3 -0
  19. package/authorization/authorization.js.map +1 -0
  20. package/authorization/index.d.ts +1 -0
  21. package/authorization/index.js +5 -0
  22. package/authorization/index.js.map +1 -0
  23. package/index.d.ts +1 -0
  24. package/index.js +1 -0
  25. package/index.js.map +1 -1
  26. package/package.json +2 -1
  27. package/router/base.d.ts +10 -0
  28. package/router/base.js +32 -3
  29. package/router/base.js.map +1 -1
  30. package/router/endpoint.d.ts +3 -2
  31. package/router/endpoint.js +33 -0
  32. package/router/endpoint.js.map +1 -1
  33. package/router/endpoints/health-check-endpoint.js +2 -0
  34. package/router/endpoints/health-check-endpoint.js.map +1 -1
  35. package/router/index.d.ts +1 -0
  36. package/router/index.js +5 -1
  37. package/router/index.js.map +1 -1
  38. package/server/server-options.d.ts +7 -0
  39. package/server/server-options.js.map +1 -1
  40. package/server/server.d.ts +4 -0
  41. package/server/server.js +24 -0
  42. package/server/server.js.map +1 -1
  43. package/session/session.d.ts +2 -0
  44. package/di/container.d.ts +0 -31
  45. package/di/container.js +0 -57
  46. package/di/container.js.map +0 -1
package/router/index.js CHANGED
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.HealthCheckEndpoint = exports.PatchEndpoint = exports.DeleteEndpoint = exports.PutEndpoint = exports.PostEndpoint = exports.GetEndpoint = exports.BaseApiRouter = exports.BaseApiEndpoint = void 0;
3
+ exports.HealthCheckEndpoint = exports.PatchEndpoint = exports.DeleteEndpoint = exports.PutEndpoint = exports.PostEndpoint = exports.GetEndpoint = exports.AUTHORIZATION_REQUIREMENT_KEY = exports.AUTHORIZATION_KEY = exports.AUTHENTICATION_KEY = exports.BaseApiRouter = exports.BaseApiEndpoint = void 0;
4
4
  var endpoint_1 = require("./endpoint");
5
5
  Object.defineProperty(exports, "BaseApiEndpoint", { enumerable: true, get: function () { return endpoint_1.BaseApiEndpoint; } });
6
6
  var router_1 = require("./router");
7
7
  Object.defineProperty(exports, "BaseApiRouter", { enumerable: true, get: function () { return router_1.BaseApiRouter; } });
8
+ var base_1 = require("./base");
9
+ Object.defineProperty(exports, "AUTHENTICATION_KEY", { enumerable: true, get: function () { return base_1.AUTHENTICATION_KEY; } });
10
+ Object.defineProperty(exports, "AUTHORIZATION_KEY", { enumerable: true, get: function () { return base_1.AUTHORIZATION_KEY; } });
11
+ Object.defineProperty(exports, "AUTHORIZATION_REQUIREMENT_KEY", { enumerable: true, get: function () { return base_1.AUTHORIZATION_REQUIREMENT_KEY; } });
8
12
  var endpoints_1 = require("./endpoints");
9
13
  Object.defineProperty(exports, "GetEndpoint", { enumerable: true, get: function () { return endpoints_1.GetEndpoint; } });
10
14
  Object.defineProperty(exports, "PostEndpoint", { enumerable: true, get: function () { return endpoints_1.PostEndpoint; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/index.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AADnB,2GAAA,eAAe,OAAA;AAGhB,mCAAoD;AAAhC,uGAAA,aAAa,OAAA;AAEjC,yCAOqB;AANpB,wGAAA,WAAW,OAAA;AACX,yGAAA,YAAY,OAAA;AACZ,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,gHAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/index.ts"],"names":[],"mappings":";;;AAAA,uCAMoB;AADnB,2GAAA,eAAe,OAAA;AAGhB,mCAAoD;AAAhC,uGAAA,aAAa,OAAA;AACjC,+BAIgB;AAHf,0GAAA,kBAAkB,OAAA;AAClB,yGAAA,iBAAiB,OAAA;AACjB,qHAAA,6BAA6B,OAAA;AAG9B,yCAOqB;AANpB,wGAAA,WAAW,OAAA;AACX,yGAAA,YAAY,OAAA;AACZ,wGAAA,WAAW,OAAA;AACX,2GAAA,cAAc,OAAA;AACd,0GAAA,aAAa,OAAA;AACb,gHAAA,mBAAmB,OAAA"}
@@ -1,5 +1,6 @@
1
1
  import { LogInterface } from '../log';
2
2
  import { AuthenticationScheme } from '../authentication/authentication-scheme';
3
+ import { ApiAuthorizationService } from '../authorization';
3
4
  export interface SecurityHeadersOptions {
4
5
  /**
5
6
  * Disable the X-Powered-By header to prevent server fingerprinting
@@ -41,6 +42,12 @@ export interface RestServerOptions {
41
42
  * This will be applied to all routers and endpoints unless overridden
42
43
  */
43
44
  authentication?: AuthenticationScheme;
45
+ authorizer?: ApiAuthorizationService;
46
+ /**
47
+ * Fail startup if any endpoint has no effective authentication scheme.
48
+ * Explicitly public endpoints (`authentication = null`) are allowed.
49
+ */
50
+ requireAuthentication?: boolean;
44
51
  }
45
52
  export declare const defaultSecurityHeadersOptions: SecurityHeadersOptions;
46
53
  export declare const defaultRestServerOptions: RestServerOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"server-options.js","sourceRoot":"","sources":["../../../src/server/server-options.ts"],"names":[],"mappings":";;;AAoDa,QAAA,6BAA6B,GAA2B;IACpE,iBAAiB,EAAE,IAAI;IACvB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,MAAM;IACpB,aAAa,EAAE,IAAI;IACnB,IAAI,EAAE,KAAK,EAAE,+CAA+C;CAC5D,CAAC;AAEW,QAAA,wBAAwB,GAAsB;IAC1D,IAAI,EAAE,IAAI;IACV,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,CAAC;IACtB,GAAG,EAAE;QACJ,GAAG,OAAO;QACV,sCAAsC;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,sCAAsC;QACtC,IAAI,EAAE,OAAO,CAAC,GAAG;KACjB;IACD,eAAe,EAAE,qCAA6B;CAC9C,CAAC"}
1
+ {"version":3,"file":"server-options.js","sourceRoot":"","sources":["../../../src/server/server-options.ts"],"names":[],"mappings":";;;AA2Da,QAAA,6BAA6B,GAA2B;IACpE,iBAAiB,EAAE,IAAI;IACvB,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,MAAM;IACpB,aAAa,EAAE,IAAI;IACnB,IAAI,EAAE,KAAK,EAAE,+CAA+C;CAC5D,CAAC;AAEW,QAAA,wBAAwB,GAAsB;IAC1D,IAAI,EAAE,IAAI;IACV,gBAAgB,EAAE,EAAE;IACpB,mBAAmB,EAAE,CAAC;IACtB,GAAG,EAAE;QACJ,GAAG,OAAO;QACV,sCAAsC;QACtC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,sCAAsC;QACtC,IAAI,EAAE,OAAO,CAAC,GAAG;KACjB;IACD,eAAe,EAAE,qCAA6B;CAC9C,CAAC"}
@@ -4,6 +4,7 @@ import http from 'http';
4
4
  import { DependencyContainer } from 'hidi';
5
5
  import { RestServerOptions } from './server-options';
6
6
  import { ApiRouter, BaseApiRouter } from '../router';
7
+ import { BaseApiRoute } from '../router/base';
7
8
  import { AuthenticationScheme } from '../authentication/authentication-scheme';
8
9
  import { LogInterface } from '../log';
9
10
  export declare abstract class RestServer {
@@ -22,6 +23,8 @@ export declare abstract class RestServer {
22
23
  readonly securityHeaders: RestServerOptions['securityHeaders'];
23
24
  swaggerEnabled: boolean;
24
25
  authentication?: AuthenticationScheme;
26
+ authorizer?: RestServerOptions['authorizer'];
27
+ requireAuthentication: boolean;
25
28
  protected app: express.Express;
26
29
  protected listener: http.Server;
27
30
  protected log: LogInterface;
@@ -32,6 +35,7 @@ export declare abstract class RestServer {
32
35
  protected createRouter(): Promise<void>;
33
36
  protected registerAuthentication(): Promise<void>;
34
37
  protected registerRoutes(): Promise<void>;
38
+ protected validateAuthenticationCoverage(route: BaseApiRoute): void;
35
39
  protected registerSwagger(): Promise<void>;
36
40
  protected setupExpress(): Promise<void>;
37
41
  protected setupSecurityHeaders(): Promise<void>;
package/server/server.js CHANGED
@@ -6,6 +6,8 @@ const express_1 = tslib_1.__importDefault(require("express"));
6
6
  const cors_1 = tslib_1.__importDefault(require("cors"));
7
7
  const hidi_1 = require("hidi");
8
8
  const server_options_1 = require("./server-options");
9
+ const router_1 = require("../router");
10
+ const base_1 = require("../router/base");
9
11
  const error_1 = require("../error");
10
12
  const routes_1 = require("../oas/routes");
11
13
  class RestServer {
@@ -24,6 +26,8 @@ class RestServer {
24
26
  securityHeaders;
25
27
  swaggerEnabled = false;
26
28
  authentication;
29
+ authorizer;
30
+ requireAuthentication;
27
31
  app;
28
32
  listener;
29
33
  log;
@@ -33,15 +37,21 @@ class RestServer {
33
37
  this.maxPayloadSizeMB = options.maxPayloadSizeMB;
34
38
  this.maxUrlEncodedSizeMB = options.maxUrlEncodedSizeMB;
35
39
  this.log = options.log;
40
+ this.container.register('log', this.log);
36
41
  this.securityHeaders = {
37
42
  ...server_options_1.defaultRestServerOptions.securityHeaders,
38
43
  ...options.securityHeaders,
39
44
  };
40
45
  this.swaggerEnabled = options.swaggerEnabled ?? false;
41
46
  this.authentication = options.authentication;
47
+ this.authorizer = options.authorizer;
48
+ this.requireAuthentication = options.requireAuthentication ?? false;
42
49
  }
43
50
  async start() {
44
51
  await this.inject();
52
+ if (this.authorizer !== undefined) {
53
+ this.container.register(base_1.AUTHORIZATION_KEY, this.authorizer);
54
+ }
45
55
  await this.setupExpress();
46
56
  await this.createRouter();
47
57
  await this.registerAuthentication();
@@ -72,6 +82,20 @@ class RestServer {
72
82
  }
73
83
  async registerRoutes() {
74
84
  await this.routerInstance.register(this.app, '');
85
+ if (this.requireAuthentication) {
86
+ this.validateAuthenticationCoverage(this.routerInstance);
87
+ }
88
+ }
89
+ validateAuthenticationCoverage(route) {
90
+ if (route.routeType === 'endpoint' &&
91
+ route.getEffectiveAuthentication() === undefined) {
92
+ throw new Error(`Authentication is required but missing for ${route.fullPath}`);
93
+ }
94
+ if (route instanceof router_1.BaseApiRouter) {
95
+ for (const child of route.registeredRoutes) {
96
+ this.validateAuthenticationCoverage(child);
97
+ }
98
+ }
75
99
  }
76
100
  async registerSwagger() {
77
101
  if (this.swaggerEnabled) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ import { AuthenticatedPrincipal } from '../authentication/authenticated-request';
1
2
  export interface Session {
2
3
  id: string;
4
+ principal?: AuthenticatedPrincipal;
3
5
  }
package/di/container.d.ts DELETED
@@ -1,31 +0,0 @@
1
- export declare class DependencyContainer {
2
- protected dependencies: Map<string, any>;
3
- protected parent?: DependencyContainer;
4
- constructor(parent?: DependencyContainer);
5
- /**
6
- * Register a dependency
7
- * @param key The key to register the dependency under
8
- * @param value The dependency value
9
- */
10
- register<T>(key: string, value: T): void;
11
- /**
12
- * Get a dependency, searching up the parent chain if not found locally
13
- * @param key The key of the dependency to retrieve
14
- * @returns The dependency value, or undefined if not found
15
- */
16
- get<T>(key: string): T | undefined;
17
- /**
18
- * Check if a dependency exists in the container or its parents
19
- * @param key The key to check
20
- */
21
- has(key: string): boolean;
22
- /**
23
- * Create a child container that inherits from this one
24
- */
25
- createChild(): DependencyContainer;
26
- /**
27
- * Set the parent container
28
- * @internal
29
- */
30
- setParent(parent: DependencyContainer): void;
31
- }
package/di/container.js DELETED
@@ -1,57 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DependencyContainer = void 0;
4
- class DependencyContainer {
5
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
6
- dependencies = new Map();
7
- // eslint-disable-next-line no-use-before-define
8
- parent;
9
- // eslint-disable-next-line no-use-before-define
10
- constructor(parent) {
11
- this.parent = parent;
12
- }
13
- /**
14
- * Register a dependency
15
- * @param key The key to register the dependency under
16
- * @param value The dependency value
17
- */
18
- register(key, value) {
19
- this.dependencies.set(key, value);
20
- }
21
- /**
22
- * Get a dependency, searching up the parent chain if not found locally
23
- * @param key The key of the dependency to retrieve
24
- * @returns The dependency value, or undefined if not found
25
- */
26
- get(key) {
27
- if (this.dependencies.has(key)) {
28
- return this.dependencies.get(key);
29
- }
30
- if (this.parent) {
31
- return this.parent.get(key);
32
- }
33
- return undefined;
34
- }
35
- /**
36
- * Check if a dependency exists in the container or its parents
37
- * @param key The key to check
38
- */
39
- has(key) {
40
- return this.dependencies.has(key) || (this.parent?.has(key) ?? false);
41
- }
42
- /**
43
- * Create a child container that inherits from this one
44
- */
45
- createChild() {
46
- return new DependencyContainer(this);
47
- }
48
- /**
49
- * Set the parent container
50
- * @internal
51
- */
52
- setParent(parent) {
53
- this.parent = parent;
54
- }
55
- }
56
- exports.DependencyContainer = DependencyContainer;
57
- //# sourceMappingURL=container.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/di/container.ts"],"names":[],"mappings":";;;AAAA,MAAa,mBAAmB;IAC/B,8DAA8D;IACpD,YAAY,GAAqB,IAAI,GAAG,EAAE,CAAC;IACrD,gDAAgD;IACtC,MAAM,CAAuB;IAEvC,gDAAgD;IAChD,YAAY,MAA4B;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAI,GAAW,EAAE,KAAQ;QACvC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,GAAG,CAAI,GAAW;QACxB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACI,WAAW;QACjB,OAAO,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,SAAS,CAAC,MAA2B;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACtB,CAAC;CACD;AA3DD,kDA2DC"}