api-machine 1.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.
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +20 -0
- package/README.md +383 -0
- package/authentication/authenticated-request.d.ts +4 -0
- package/authentication/authenticated-request.js +3 -0
- package/authentication/authenticated-request.js.map +1 -0
- package/authentication/authentication-scheme.d.ts +38 -0
- package/authentication/authentication-scheme.js +21 -0
- package/authentication/authentication-scheme.js.map +1 -0
- package/authentication/index.d.ts +4 -0
- package/authentication/index.js +9 -0
- package/authentication/index.js.map +1 -0
- package/authentication/middleware/bearer-authentication.d.ts +12 -0
- package/authentication/middleware/bearer-authentication.js +49 -0
- package/authentication/middleware/bearer-authentication.js.map +1 -0
- package/authentication/middleware/index.d.ts +1 -0
- package/authentication/middleware/index.js +6 -0
- package/authentication/middleware/index.js.map +1 -0
- package/authentication/schemes/bearer-authentication-scheme.d.ts +37 -0
- package/authentication/schemes/bearer-authentication-scheme.js +43 -0
- package/authentication/schemes/bearer-authentication-scheme.js.map +1 -0
- package/authentication/schemes/index.d.ts +1 -0
- package/authentication/schemes/index.js +6 -0
- package/authentication/schemes/index.js.map +1 -0
- package/error/error-options.d.ts +4 -0
- package/error/error-options.js +3 -0
- package/error/error-options.js.map +1 -0
- package/error/error-response.d.ts +7 -0
- package/error/error-response.js +3 -0
- package/error/error-response.js.map +1 -0
- package/error/http-errors/400-bad-request-error.d.ts +12 -0
- package/error/http-errors/400-bad-request-error.js +20 -0
- package/error/http-errors/400-bad-request-error.js.map +1 -0
- package/error/http-errors/401-unauthorized-error.d.ts +14 -0
- package/error/http-errors/401-unauthorized-error.js +24 -0
- package/error/http-errors/401-unauthorized-error.js.map +1 -0
- package/error/http-errors/402-payment-required-error.d.ts +10 -0
- package/error/http-errors/402-payment-required-error.js +18 -0
- package/error/http-errors/402-payment-required-error.js.map +1 -0
- package/error/http-errors/403-forbidden-error.d.ts +10 -0
- package/error/http-errors/403-forbidden-error.js +18 -0
- package/error/http-errors/403-forbidden-error.js.map +1 -0
- package/error/http-errors/404-not-found-error.d.ts +10 -0
- package/error/http-errors/404-not-found-error.js +18 -0
- package/error/http-errors/404-not-found-error.js.map +1 -0
- package/error/http-errors/405-method-not-allowed-error.d.ts +13 -0
- package/error/http-errors/405-method-not-allowed-error.js +27 -0
- package/error/http-errors/405-method-not-allowed-error.js.map +1 -0
- package/error/http-errors/406-not-acceptable-error.d.ts +11 -0
- package/error/http-errors/406-not-acceptable-error.js +19 -0
- package/error/http-errors/406-not-acceptable-error.js.map +1 -0
- package/error/http-errors/407-proxy-authentication-required-error.d.ts +13 -0
- package/error/http-errors/407-proxy-authentication-required-error.js +23 -0
- package/error/http-errors/407-proxy-authentication-required-error.js.map +1 -0
- package/error/http-errors/408-request-timeout-error.d.ts +10 -0
- package/error/http-errors/408-request-timeout-error.js +18 -0
- package/error/http-errors/408-request-timeout-error.js.map +1 -0
- package/error/http-errors/409-conflict-error.d.ts +10 -0
- package/error/http-errors/409-conflict-error.js +18 -0
- package/error/http-errors/409-conflict-error.js.map +1 -0
- package/error/http-errors/410-gone-error.d.ts +10 -0
- package/error/http-errors/410-gone-error.js +18 -0
- package/error/http-errors/410-gone-error.js.map +1 -0
- package/error/http-errors/411-length-required-error.d.ts +10 -0
- package/error/http-errors/411-length-required-error.js +18 -0
- package/error/http-errors/411-length-required-error.js.map +1 -0
- package/error/http-errors/412-precondition-failed-error.d.ts +10 -0
- package/error/http-errors/412-precondition-failed-error.js +18 -0
- package/error/http-errors/412-precondition-failed-error.js.map +1 -0
- package/error/http-errors/413-payload-too-large-error.d.ts +10 -0
- package/error/http-errors/413-payload-too-large-error.js +18 -0
- package/error/http-errors/413-payload-too-large-error.js.map +1 -0
- package/error/http-errors/414-uri-too-long-error.d.ts +10 -0
- package/error/http-errors/414-uri-too-long-error.js +18 -0
- package/error/http-errors/414-uri-too-long-error.js.map +1 -0
- package/error/http-errors/415-unsupported-media-type-error.d.ts +13 -0
- package/error/http-errors/415-unsupported-media-type-error.js +25 -0
- package/error/http-errors/415-unsupported-media-type-error.js.map +1 -0
- package/error/http-errors/416-range-not-satisfiable-error.d.ts +13 -0
- package/error/http-errors/416-range-not-satisfiable-error.js +25 -0
- package/error/http-errors/416-range-not-satisfiable-error.js.map +1 -0
- package/error/http-errors/417-expectation-failed-error.d.ts +10 -0
- package/error/http-errors/417-expectation-failed-error.js +18 -0
- package/error/http-errors/417-expectation-failed-error.js.map +1 -0
- package/error/http-errors/418-im-a-teapot-error.d.ts +10 -0
- package/error/http-errors/418-im-a-teapot-error.js +18 -0
- package/error/http-errors/418-im-a-teapot-error.js.map +1 -0
- package/error/http-errors/421-misdirected-request-error.d.ts +10 -0
- package/error/http-errors/421-misdirected-request-error.js +18 -0
- package/error/http-errors/421-misdirected-request-error.js.map +1 -0
- package/error/http-errors/422-unprocessable-entity-error.d.ts +10 -0
- package/error/http-errors/422-unprocessable-entity-error.js +18 -0
- package/error/http-errors/422-unprocessable-entity-error.js.map +1 -0
- package/error/http-errors/423-locked-error.d.ts +10 -0
- package/error/http-errors/423-locked-error.js +18 -0
- package/error/http-errors/423-locked-error.js.map +1 -0
- package/error/http-errors/424-failed-dependency-error.d.ts +10 -0
- package/error/http-errors/424-failed-dependency-error.js +18 -0
- package/error/http-errors/424-failed-dependency-error.js.map +1 -0
- package/error/http-errors/425-too-early-error.d.ts +10 -0
- package/error/http-errors/425-too-early-error.js +18 -0
- package/error/http-errors/425-too-early-error.js.map +1 -0
- package/error/http-errors/426-upgrade-required-error.d.ts +13 -0
- package/error/http-errors/426-upgrade-required-error.js +22 -0
- package/error/http-errors/426-upgrade-required-error.js.map +1 -0
- package/error/http-errors/428-precondition-required-error.d.ts +10 -0
- package/error/http-errors/428-precondition-required-error.js +18 -0
- package/error/http-errors/428-precondition-required-error.js.map +1 -0
- package/error/http-errors/429-too-many-requests-error.d.ts +13 -0
- package/error/http-errors/429-too-many-requests-error.js +25 -0
- package/error/http-errors/429-too-many-requests-error.js.map +1 -0
- package/error/http-errors/431-request-header-fields-too-large-error.d.ts +11 -0
- package/error/http-errors/431-request-header-fields-too-large-error.js +19 -0
- package/error/http-errors/431-request-header-fields-too-large-error.js.map +1 -0
- package/error/http-errors/451-unavailable-for-legal-reasons-error.d.ts +10 -0
- package/error/http-errors/451-unavailable-for-legal-reasons-error.js +18 -0
- package/error/http-errors/451-unavailable-for-legal-reasons-error.js.map +1 -0
- package/error/http-errors/http-error.d.ts +26 -0
- package/error/http-errors/http-error.js +37 -0
- package/error/http-errors/http-error.js.map +1 -0
- package/error/http-errors/index.d.ts +30 -0
- package/error/http-errors/index.js +67 -0
- package/error/http-errors/index.js.map +1 -0
- package/error/index.d.ts +3 -0
- package/error/index.js +5 -0
- package/error/index.js.map +1 -0
- package/index.d.ts +4 -0
- package/index.js +8 -0
- package/index.js.map +1 -0
- package/log/index.d.ts +1 -0
- package/log/index.js +3 -0
- package/log/index.js.map +1 -0
- package/log/log-interface.d.ts +7 -0
- package/log/log-interface.js +3 -0
- package/log/log-interface.js.map +1 -0
- package/oas/index.d.ts +2 -0
- package/oas/index.js +8 -0
- package/oas/index.js.map +1 -0
- package/oas/oas-endpoint-component-converter.d.ts +15 -0
- package/oas/oas-endpoint-component-converter.js +33 -0
- package/oas/oas-endpoint-component-converter.js.map +1 -0
- package/oas/oas-endpoint-converter.d.ts +17 -0
- package/oas/oas-endpoint-converter.js +89 -0
- package/oas/oas-endpoint-converter.js.map +1 -0
- package/oas/oas-rest-server-converter.d.ts +13 -0
- package/oas/oas-rest-server-converter.js +82 -0
- package/oas/oas-rest-server-converter.js.map +1 -0
- package/oas/routes.d.ts +8 -0
- package/oas/routes.js +24 -0
- package/oas/routes.js.map +1 -0
- package/package.json +34 -0
- package/router/base.d.ts +35 -0
- package/router/base.js +59 -0
- package/router/base.js.map +1 -0
- package/router/endpoint.d.ts +44 -0
- package/router/endpoint.js +76 -0
- package/router/endpoint.js.map +1 -0
- package/router/endpoints/delete-endpoint.d.ts +5 -0
- package/router/endpoints/delete-endpoint.js +10 -0
- package/router/endpoints/delete-endpoint.js.map +1 -0
- package/router/endpoints/get-endpoint.d.ts +5 -0
- package/router/endpoints/get-endpoint.js +10 -0
- package/router/endpoints/get-endpoint.js.map +1 -0
- package/router/endpoints/health-check-endpoint.d.ts +15 -0
- package/router/endpoints/health-check-endpoint.js +30 -0
- package/router/endpoints/health-check-endpoint.js.map +1 -0
- package/router/endpoints/index.d.ts +6 -0
- package/router/endpoints/index.js +16 -0
- package/router/endpoints/index.js.map +1 -0
- package/router/endpoints/patch-endpoint.d.ts +5 -0
- package/router/endpoints/patch-endpoint.js +10 -0
- package/router/endpoints/patch-endpoint.js.map +1 -0
- package/router/endpoints/post-endpoint.d.ts +5 -0
- package/router/endpoints/post-endpoint.js +10 -0
- package/router/endpoints/post-endpoint.js.map +1 -0
- package/router/endpoints/put-endpoint.d.ts +5 -0
- package/router/endpoints/put-endpoint.js +10 -0
- package/router/endpoints/put-endpoint.js.map +1 -0
- package/router/index.d.ts +3 -0
- package/router/index.js +15 -0
- package/router/index.js.map +1 -0
- package/router/router.d.ts +15 -0
- package/router/router.js +67 -0
- package/router/router.js.map +1 -0
- package/router/validation-middleware.d.ts +13 -0
- package/router/validation-middleware.js +45 -0
- package/router/validation-middleware.js.map +1 -0
- package/server/index.d.ts +2 -0
- package/server/index.js +8 -0
- package/server/index.js.map +1 -0
- package/server/server-options.d.ts +46 -0
- package/server/server-options.js +24 -0
- package/server/server-options.js.map +1 -0
- package/server/server.d.ts +38 -0
- package/server/server.js +178 -0
- package/server/server.js.map +1 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/* eslint-disable max-len */
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.UnavailableForLegalReasonsError = exports.RequestHeaderFieldsTooLargeError = exports.TooManyRequestsError = exports.PreconditionRequiredError = exports.UpgradeRequiredError = exports.TooEarlyError = exports.FailedDependencyError = exports.LockedError = exports.UnprocessableEntityError = exports.MisdirectedRequestError = exports.ImATeapotError = exports.ExpectationFailedError = exports.RangeNotSatisfiableError = exports.UnsupportedMediaTypeError = exports.URITooLongError = exports.PayloadTooLargeError = exports.PreconditionFailedError = exports.LengthRequiredError = exports.GoneError = exports.ConflictError = exports.RequestTimeoutError = exports.ProxyAuthenticationRequiredError = exports.NotAcceptableError = exports.MethodNotAllowedError = exports.NotFoundError = exports.ForbiddenError = exports.PaymentRequiredError = exports.UnauthorizedError = exports.BadRequestError = exports.HTTPError = void 0;
|
|
5
|
+
// Base HTTP Error
|
|
6
|
+
var http_error_1 = require("./http-error");
|
|
7
|
+
Object.defineProperty(exports, "HTTPError", { enumerable: true, get: function () { return http_error_1.HTTPError; } });
|
|
8
|
+
// 4xx Client Errors (in order)
|
|
9
|
+
var _400_bad_request_error_1 = require("./400-bad-request-error");
|
|
10
|
+
Object.defineProperty(exports, "BadRequestError", { enumerable: true, get: function () { return _400_bad_request_error_1.BadRequestError; } });
|
|
11
|
+
var _401_unauthorized_error_1 = require("./401-unauthorized-error");
|
|
12
|
+
Object.defineProperty(exports, "UnauthorizedError", { enumerable: true, get: function () { return _401_unauthorized_error_1.UnauthorizedError; } });
|
|
13
|
+
var _402_payment_required_error_1 = require("./402-payment-required-error");
|
|
14
|
+
Object.defineProperty(exports, "PaymentRequiredError", { enumerable: true, get: function () { return _402_payment_required_error_1.PaymentRequiredError; } });
|
|
15
|
+
var _403_forbidden_error_1 = require("./403-forbidden-error");
|
|
16
|
+
Object.defineProperty(exports, "ForbiddenError", { enumerable: true, get: function () { return _403_forbidden_error_1.ForbiddenError; } });
|
|
17
|
+
var _404_not_found_error_1 = require("./404-not-found-error");
|
|
18
|
+
Object.defineProperty(exports, "NotFoundError", { enumerable: true, get: function () { return _404_not_found_error_1.NotFoundError; } });
|
|
19
|
+
var _405_method_not_allowed_error_1 = require("./405-method-not-allowed-error");
|
|
20
|
+
Object.defineProperty(exports, "MethodNotAllowedError", { enumerable: true, get: function () { return _405_method_not_allowed_error_1.MethodNotAllowedError; } });
|
|
21
|
+
var _406_not_acceptable_error_1 = require("./406-not-acceptable-error");
|
|
22
|
+
Object.defineProperty(exports, "NotAcceptableError", { enumerable: true, get: function () { return _406_not_acceptable_error_1.NotAcceptableError; } });
|
|
23
|
+
var _407_proxy_authentication_required_error_1 = require("./407-proxy-authentication-required-error");
|
|
24
|
+
Object.defineProperty(exports, "ProxyAuthenticationRequiredError", { enumerable: true, get: function () { return _407_proxy_authentication_required_error_1.ProxyAuthenticationRequiredError; } });
|
|
25
|
+
var _408_request_timeout_error_1 = require("./408-request-timeout-error");
|
|
26
|
+
Object.defineProperty(exports, "RequestTimeoutError", { enumerable: true, get: function () { return _408_request_timeout_error_1.RequestTimeoutError; } });
|
|
27
|
+
var _409_conflict_error_1 = require("./409-conflict-error");
|
|
28
|
+
Object.defineProperty(exports, "ConflictError", { enumerable: true, get: function () { return _409_conflict_error_1.ConflictError; } });
|
|
29
|
+
var _410_gone_error_1 = require("./410-gone-error");
|
|
30
|
+
Object.defineProperty(exports, "GoneError", { enumerable: true, get: function () { return _410_gone_error_1.GoneError; } });
|
|
31
|
+
var _411_length_required_error_1 = require("./411-length-required-error");
|
|
32
|
+
Object.defineProperty(exports, "LengthRequiredError", { enumerable: true, get: function () { return _411_length_required_error_1.LengthRequiredError; } });
|
|
33
|
+
var _412_precondition_failed_error_1 = require("./412-precondition-failed-error");
|
|
34
|
+
Object.defineProperty(exports, "PreconditionFailedError", { enumerable: true, get: function () { return _412_precondition_failed_error_1.PreconditionFailedError; } });
|
|
35
|
+
var _413_payload_too_large_error_1 = require("./413-payload-too-large-error");
|
|
36
|
+
Object.defineProperty(exports, "PayloadTooLargeError", { enumerable: true, get: function () { return _413_payload_too_large_error_1.PayloadTooLargeError; } });
|
|
37
|
+
var _414_uri_too_long_error_1 = require("./414-uri-too-long-error");
|
|
38
|
+
Object.defineProperty(exports, "URITooLongError", { enumerable: true, get: function () { return _414_uri_too_long_error_1.URITooLongError; } });
|
|
39
|
+
var _415_unsupported_media_type_error_1 = require("./415-unsupported-media-type-error");
|
|
40
|
+
Object.defineProperty(exports, "UnsupportedMediaTypeError", { enumerable: true, get: function () { return _415_unsupported_media_type_error_1.UnsupportedMediaTypeError; } });
|
|
41
|
+
var _416_range_not_satisfiable_error_1 = require("./416-range-not-satisfiable-error");
|
|
42
|
+
Object.defineProperty(exports, "RangeNotSatisfiableError", { enumerable: true, get: function () { return _416_range_not_satisfiable_error_1.RangeNotSatisfiableError; } });
|
|
43
|
+
var _417_expectation_failed_error_1 = require("./417-expectation-failed-error");
|
|
44
|
+
Object.defineProperty(exports, "ExpectationFailedError", { enumerable: true, get: function () { return _417_expectation_failed_error_1.ExpectationFailedError; } });
|
|
45
|
+
var _418_im_a_teapot_error_1 = require("./418-im-a-teapot-error");
|
|
46
|
+
Object.defineProperty(exports, "ImATeapotError", { enumerable: true, get: function () { return _418_im_a_teapot_error_1.ImATeapotError; } });
|
|
47
|
+
var _421_misdirected_request_error_1 = require("./421-misdirected-request-error");
|
|
48
|
+
Object.defineProperty(exports, "MisdirectedRequestError", { enumerable: true, get: function () { return _421_misdirected_request_error_1.MisdirectedRequestError; } });
|
|
49
|
+
var _422_unprocessable_entity_error_1 = require("./422-unprocessable-entity-error");
|
|
50
|
+
Object.defineProperty(exports, "UnprocessableEntityError", { enumerable: true, get: function () { return _422_unprocessable_entity_error_1.UnprocessableEntityError; } });
|
|
51
|
+
var _423_locked_error_1 = require("./423-locked-error");
|
|
52
|
+
Object.defineProperty(exports, "LockedError", { enumerable: true, get: function () { return _423_locked_error_1.LockedError; } });
|
|
53
|
+
var _424_failed_dependency_error_1 = require("./424-failed-dependency-error");
|
|
54
|
+
Object.defineProperty(exports, "FailedDependencyError", { enumerable: true, get: function () { return _424_failed_dependency_error_1.FailedDependencyError; } });
|
|
55
|
+
var _425_too_early_error_1 = require("./425-too-early-error");
|
|
56
|
+
Object.defineProperty(exports, "TooEarlyError", { enumerable: true, get: function () { return _425_too_early_error_1.TooEarlyError; } });
|
|
57
|
+
var _426_upgrade_required_error_1 = require("./426-upgrade-required-error");
|
|
58
|
+
Object.defineProperty(exports, "UpgradeRequiredError", { enumerable: true, get: function () { return _426_upgrade_required_error_1.UpgradeRequiredError; } });
|
|
59
|
+
var _428_precondition_required_error_1 = require("./428-precondition-required-error");
|
|
60
|
+
Object.defineProperty(exports, "PreconditionRequiredError", { enumerable: true, get: function () { return _428_precondition_required_error_1.PreconditionRequiredError; } });
|
|
61
|
+
var _429_too_many_requests_error_1 = require("./429-too-many-requests-error");
|
|
62
|
+
Object.defineProperty(exports, "TooManyRequestsError", { enumerable: true, get: function () { return _429_too_many_requests_error_1.TooManyRequestsError; } });
|
|
63
|
+
var _431_request_header_fields_too_large_error_1 = require("./431-request-header-fields-too-large-error");
|
|
64
|
+
Object.defineProperty(exports, "RequestHeaderFieldsTooLargeError", { enumerable: true, get: function () { return _431_request_header_fields_too_large_error_1.RequestHeaderFieldsTooLargeError; } });
|
|
65
|
+
var _451_unavailable_for_legal_reasons_error_1 = require("./451-unavailable-for-legal-reasons-error");
|
|
66
|
+
Object.defineProperty(exports, "UnavailableForLegalReasonsError", { enumerable: true, get: function () { return _451_unavailable_for_legal_reasons_error_1.UnavailableForLegalReasonsError; } });
|
|
67
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/error/http-errors/index.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;AAE5B,kBAAkB;AAClB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAElB,+BAA+B;AAC/B,kEAA0D;AAAjD,yHAAA,eAAe,OAAA;AACxB,oEAGkC;AAFjC,4HAAA,iBAAiB,OAAA;AAGlB,4EAAoE;AAA3D,mIAAA,oBAAoB,OAAA;AAC7B,8DAAuD;AAA9C,sHAAA,cAAc,OAAA;AACvB,8DAAsD;AAA7C,qHAAA,aAAa,OAAA;AACtB,gFAGwC;AAFvC,sIAAA,qBAAqB,OAAA;AAGtB,wEAAgE;AAAvD,+HAAA,kBAAkB,OAAA;AAC3B,sGAGmD;AAFlD,4JAAA,gCAAgC,OAAA;AAGjC,0EAAkE;AAAzD,iIAAA,mBAAmB,OAAA;AAC5B,4DAAqD;AAA5C,oHAAA,aAAa,OAAA;AACtB,oDAA6C;AAApC,4GAAA,SAAS,OAAA;AAClB,0EAAkE;AAAzD,iIAAA,mBAAmB,OAAA;AAC5B,kFAA0E;AAAjE,yIAAA,uBAAuB,OAAA;AAChC,8EAAqE;AAA5D,oIAAA,oBAAoB,OAAA;AAC7B,oEAA2D;AAAlD,0HAAA,eAAe,OAAA;AACxB,wFAG4C;AAF3C,8IAAA,yBAAyB,OAAA;AAG1B,sFAG2C;AAF1C,4IAAA,wBAAwB,OAAA;AAGzB,gFAAwE;AAA/D,uIAAA,sBAAsB,OAAA;AAC/B,kEAAyD;AAAhD,wHAAA,cAAc,OAAA;AACvB,kFAA0E;AAAjE,yIAAA,uBAAuB,OAAA;AAChC,oFAA4E;AAAnE,2IAAA,wBAAwB,OAAA;AACjC,wDAAiD;AAAxC,gHAAA,WAAW,OAAA;AACpB,8EAAsE;AAA7D,qIAAA,qBAAqB,OAAA;AAC9B,8DAAsD;AAA7C,qHAAA,aAAa,OAAA;AACtB,4EAGsC;AAFrC,mIAAA,oBAAoB,OAAA;AAGrB,sFAA8E;AAArE,6IAAA,yBAAyB,OAAA;AAClC,8EAGuC;AAFtC,oIAAA,oBAAoB,OAAA;AAGrB,0GAA+F;AAAtF,8JAAA,gCAAgC,OAAA;AACzC,sGAA4F;AAAnF,2JAAA,+BAA+B,OAAA"}
|
package/error/index.d.ts
ADDED
package/error/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/error/index.ts"],"names":[],"mappings":";;;AAEA,wDAA8B"}
|
package/index.d.ts
ADDED
package/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./router"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./server"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./error"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./authentication"), exports);
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,mDAAyB;AACzB,kDAAwB;AACxB,2DAAiC"}
|
package/log/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { LogInterface } from './log-interface';
|
package/log/index.js
ADDED
package/log/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/log/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-interface.js","sourceRoot":"","sources":["../../../src/log/log-interface.ts"],"names":[],"mappings":""}
|
package/oas/index.d.ts
ADDED
package/oas/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OasEndpointConverter = exports.OasRestServerConverter = void 0;
|
|
4
|
+
var oas_rest_server_converter_1 = require("./oas-rest-server-converter");
|
|
5
|
+
Object.defineProperty(exports, "OasRestServerConverter", { enumerable: true, get: function () { return oas_rest_server_converter_1.OasRestServerConverter; } });
|
|
6
|
+
var oas_endpoint_converter_1 = require("./oas-endpoint-converter");
|
|
7
|
+
Object.defineProperty(exports, "OasEndpointConverter", { enumerable: true, get: function () { return oas_endpoint_converter_1.OasEndpointConverter; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
package/oas/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/oas/index.ts"],"names":[],"mappings":";;;AAAA,yEAAqE;AAA5D,mIAAA,sBAAsB,OAAA;AAC/B,mEAAgE;AAAvD,8HAAA,oBAAoB,OAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ObjectSanitizer } from 'valsan';
|
|
2
|
+
import { SchemaObject } from 'auto-oas/oas/v3.1';
|
|
3
|
+
import { BaseApiEndpoint } from '../router';
|
|
4
|
+
/**
|
|
5
|
+
* Builds OpenAPI component schemas for an endpoint from valsans
|
|
6
|
+
*/
|
|
7
|
+
export declare class OasEndpointComponentConverter {
|
|
8
|
+
protected schemas: Record<string, SchemaObject>;
|
|
9
|
+
getSchemas(endpoint: BaseApiEndpoint): Record<string, SchemaObject>;
|
|
10
|
+
protected addSchema({ name, sanitizer, example, }: {
|
|
11
|
+
name: string;
|
|
12
|
+
sanitizer: ObjectSanitizer;
|
|
13
|
+
example?: any;
|
|
14
|
+
}): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OasEndpointComponentConverter = void 0;
|
|
4
|
+
const auto_oas_1 = require("auto-oas/auto-oas");
|
|
5
|
+
/**
|
|
6
|
+
* Builds OpenAPI component schemas for an endpoint from valsans
|
|
7
|
+
*/
|
|
8
|
+
class OasEndpointComponentConverter {
|
|
9
|
+
schemas = {};
|
|
10
|
+
// Return a map of schema name -> SchemaObject for the endpoint
|
|
11
|
+
getSchemas(endpoint) {
|
|
12
|
+
const bodySanitizer = endpoint.body;
|
|
13
|
+
if (bodySanitizer) {
|
|
14
|
+
this.addSchema({
|
|
15
|
+
name: `${endpoint.name}Body`,
|
|
16
|
+
sanitizer: bodySanitizer,
|
|
17
|
+
example: endpoint.bodyExample,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return this.schemas;
|
|
21
|
+
}
|
|
22
|
+
addSchema({ name, sanitizer, example, }) {
|
|
23
|
+
const schema = (0, auto_oas_1.buildObjectSchema)(sanitizer);
|
|
24
|
+
if (schema) {
|
|
25
|
+
if (example) {
|
|
26
|
+
schema.example = example;
|
|
27
|
+
}
|
|
28
|
+
this.schemas[name] = schema;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.OasEndpointComponentConverter = OasEndpointComponentConverter;
|
|
33
|
+
//# sourceMappingURL=oas-endpoint-component-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oas-endpoint-component-converter.js","sourceRoot":"","sources":["../../../src/oas/oas-endpoint-component-converter.ts"],"names":[],"mappings":";;;AAIA,gDAAsD;AAEtD;;GAEG;AACH,MAAa,6BAA6B;IAC/B,OAAO,GAAiC,EAAE,CAAC;IAErD,+DAA+D;IACxD,UAAU,CAAC,QAAyB;QAC1C,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEpC,IAAI,aAAa,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC;gBACd,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,MAAM;gBAC5B,SAAS,EAAE,aAAa;gBACxB,OAAO,EAAE,QAAQ,CAAC,WAAW;aAC7B,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACrB,CAAC;IAES,SAAS,CAAC,EACnB,IAAI,EACJ,SAAS,EACT,OAAO,GAMP;QACA,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,MAAM,EAAE,CAAC;YACZ,IAAI,OAAO,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAC7B,CAAC;IACF,CAAC;CACD;AAtCD,sEAsCC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ObjectSanitizer } from 'valsan';
|
|
2
|
+
import { PathItemObject, ParameterObject } from 'auto-oas/oas/v3.1';
|
|
3
|
+
import { BaseApiEndpoint } from '../router';
|
|
4
|
+
import { AuthenticationScheme } from '../authentication/authentication-scheme';
|
|
5
|
+
/**
|
|
6
|
+
* Returns OpenAPI path item for an endpoint,
|
|
7
|
+
* based on validation.
|
|
8
|
+
*/
|
|
9
|
+
export declare class OasEndpointConverter {
|
|
10
|
+
protected parameters: ParameterObject[];
|
|
11
|
+
getOpenApiPath(endpoint: BaseApiEndpoint, authentication?: AuthenticationScheme | null): PathItemObject;
|
|
12
|
+
protected addParams({ location, sanitizer, example, }: {
|
|
13
|
+
location: 'path' | 'query' | 'header';
|
|
14
|
+
sanitizer?: ObjectSanitizer;
|
|
15
|
+
example?: any;
|
|
16
|
+
}): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OasEndpointConverter = void 0;
|
|
4
|
+
const auto_oas_1 = require("auto-oas/auto-oas");
|
|
5
|
+
/**
|
|
6
|
+
* Returns OpenAPI path item for an endpoint,
|
|
7
|
+
* based on validation.
|
|
8
|
+
*/
|
|
9
|
+
class OasEndpointConverter {
|
|
10
|
+
parameters = [];
|
|
11
|
+
getOpenApiPath(endpoint, authentication) {
|
|
12
|
+
this.addParams({
|
|
13
|
+
location: 'path',
|
|
14
|
+
sanitizer: endpoint.params,
|
|
15
|
+
example: endpoint.paramsExample,
|
|
16
|
+
});
|
|
17
|
+
this.addParams({
|
|
18
|
+
location: 'query',
|
|
19
|
+
sanitizer: endpoint.query,
|
|
20
|
+
example: endpoint.queryExample,
|
|
21
|
+
});
|
|
22
|
+
this.addParams({
|
|
23
|
+
location: 'header',
|
|
24
|
+
sanitizer: endpoint.headers,
|
|
25
|
+
example: endpoint.headersExample,
|
|
26
|
+
});
|
|
27
|
+
let requestBody = undefined;
|
|
28
|
+
const bodySanitizer = endpoint.body;
|
|
29
|
+
if (bodySanitizer && bodySanitizer.schema) {
|
|
30
|
+
requestBody = {
|
|
31
|
+
required: true,
|
|
32
|
+
content: {
|
|
33
|
+
'application/json': {
|
|
34
|
+
schema: {
|
|
35
|
+
$ref: '#/components/schemas/' +
|
|
36
|
+
endpoint.getName() +
|
|
37
|
+
'Body',
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Use statusCode for response
|
|
44
|
+
const status = endpoint.statusCode;
|
|
45
|
+
const responses = {
|
|
46
|
+
[status]: { description: 'Success' },
|
|
47
|
+
};
|
|
48
|
+
const errors = endpoint.getErrors();
|
|
49
|
+
for (const error in errors) {
|
|
50
|
+
const httpError = errors[error];
|
|
51
|
+
responses[httpError.getStatusCode()] = {
|
|
52
|
+
description: httpError.message || 'Error response',
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
// Add security requirement if authentication is present
|
|
56
|
+
// null means explicitly public (no auth),
|
|
57
|
+
// undefined inherited from parent
|
|
58
|
+
const security = authentication !== undefined && authentication !== null
|
|
59
|
+
? [authentication.getSecurityRequirement()]
|
|
60
|
+
: authentication === null
|
|
61
|
+
? []
|
|
62
|
+
: undefined;
|
|
63
|
+
return {
|
|
64
|
+
[endpoint.method]: {
|
|
65
|
+
summary: endpoint.getName(),
|
|
66
|
+
description: endpoint.description,
|
|
67
|
+
tags: [endpoint.getTag()],
|
|
68
|
+
parameters: this.parameters.length > 0 ? this.parameters : undefined,
|
|
69
|
+
requestBody,
|
|
70
|
+
responses,
|
|
71
|
+
security,
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
addParams({ location, sanitizer, example, }) {
|
|
76
|
+
if (sanitizer && sanitizer.schema) {
|
|
77
|
+
for (const key in sanitizer.schema) {
|
|
78
|
+
const valSan = sanitizer.schema[key];
|
|
79
|
+
const param = (0, auto_oas_1.buildParameter)(key, valSan, location);
|
|
80
|
+
if (example && example[key] !== undefined) {
|
|
81
|
+
param.example = example[key];
|
|
82
|
+
}
|
|
83
|
+
this.parameters.push(param);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
exports.OasEndpointConverter = OasEndpointConverter;
|
|
89
|
+
//# sourceMappingURL=oas-endpoint-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oas-endpoint-converter.js","sourceRoot":"","sources":["../../../src/oas/oas-endpoint-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ComponentsObject, InfoObject, OpenAPIObject, PathItemObject, SecuritySchemeObject, TagObject } from 'auto-oas/oas/v3.1';
|
|
2
|
+
import { RestServer } from '../server';
|
|
3
|
+
import { BaseApiEndpoint, BaseApiRouter } from '../router';
|
|
4
|
+
export declare class OasRestServerConverter {
|
|
5
|
+
protected paths: Record<string, PathItemObject>;
|
|
6
|
+
protected components: ComponentsObject;
|
|
7
|
+
protected tags: TagObject[];
|
|
8
|
+
protected securitySchemes: Record<string, SecuritySchemeObject>;
|
|
9
|
+
getOpenApiSpec(server: RestServer): Promise<OpenAPIObject>;
|
|
10
|
+
getOpenApiInfo(server: RestServer): Promise<InfoObject>;
|
|
11
|
+
convertRouter(router: BaseApiRouter): Promise<void>;
|
|
12
|
+
convertEndpoint(endpoint: BaseApiEndpoint): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OasRestServerConverter = void 0;
|
|
4
|
+
const router_1 = require("../router");
|
|
5
|
+
const oas_endpoint_converter_1 = require("./oas-endpoint-converter");
|
|
6
|
+
// eslint-disable-next-line max-len
|
|
7
|
+
const oas_endpoint_component_converter_1 = require("./oas-endpoint-component-converter");
|
|
8
|
+
class OasRestServerConverter {
|
|
9
|
+
paths = {};
|
|
10
|
+
components = {};
|
|
11
|
+
tags = [];
|
|
12
|
+
securitySchemes = {};
|
|
13
|
+
async getOpenApiSpec(server) {
|
|
14
|
+
await this.convertRouter(server.routerInstance);
|
|
15
|
+
// Add collected security schemes to components
|
|
16
|
+
if (Object.keys(this.securitySchemes).length > 0) {
|
|
17
|
+
if (!this.components.securitySchemes) {
|
|
18
|
+
this.components.securitySchemes = {};
|
|
19
|
+
}
|
|
20
|
+
Object.assign(this.components.securitySchemes, this.securitySchemes);
|
|
21
|
+
}
|
|
22
|
+
// Set global security if server has authentication
|
|
23
|
+
const globalSecurity = [];
|
|
24
|
+
if (server.authentication) {
|
|
25
|
+
globalSecurity.push(server.authentication.getSecurityRequirement());
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
openapi: '3.1.0',
|
|
29
|
+
info: await this.getOpenApiInfo(server),
|
|
30
|
+
servers: [],
|
|
31
|
+
paths: this.paths,
|
|
32
|
+
components: this.components,
|
|
33
|
+
security: globalSecurity,
|
|
34
|
+
tags: this.tags,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async getOpenApiInfo(server) {
|
|
38
|
+
return {
|
|
39
|
+
title: server.name,
|
|
40
|
+
version: server.version,
|
|
41
|
+
description: server.description,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async convertRouter(router) {
|
|
45
|
+
for (const route of router.registeredRoutes) {
|
|
46
|
+
if (route instanceof router_1.BaseApiEndpoint) {
|
|
47
|
+
await this.convertEndpoint(route);
|
|
48
|
+
}
|
|
49
|
+
else if (route instanceof router_1.BaseApiRouter) {
|
|
50
|
+
await this.convertRouter(route);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
async convertEndpoint(endpoint) {
|
|
55
|
+
// Get effective authentication for this endpoint
|
|
56
|
+
const effectiveAuth = endpoint.getEffectiveAuthentication();
|
|
57
|
+
// Collect authentication scheme if present and not null
|
|
58
|
+
// (null = public)
|
|
59
|
+
if (effectiveAuth) {
|
|
60
|
+
const schemeName = effectiveAuth.schemeName;
|
|
61
|
+
if (!this.securitySchemes[schemeName]) {
|
|
62
|
+
this.securitySchemes[schemeName] =
|
|
63
|
+
effectiveAuth.getSecurityScheme();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const endpointConverter = new oas_endpoint_converter_1.OasEndpointConverter();
|
|
67
|
+
const pathItem = endpointConverter.getOpenApiPath(endpoint, effectiveAuth);
|
|
68
|
+
const path = (endpoint.fullPath || '/').replace(/:([a-zA-Z0-9_]+)/g, '{$1}');
|
|
69
|
+
if (this.paths[path] === undefined) {
|
|
70
|
+
this.paths[path] = {};
|
|
71
|
+
}
|
|
72
|
+
Object.assign(this.paths[path], pathItem);
|
|
73
|
+
const endpointComponentConverter = new oas_endpoint_component_converter_1.OasEndpointComponentConverter();
|
|
74
|
+
const endpointComponents = endpointComponentConverter.getSchemas(endpoint);
|
|
75
|
+
if (!this.components.schemas) {
|
|
76
|
+
this.components.schemas = {};
|
|
77
|
+
}
|
|
78
|
+
Object.assign(this.components.schemas, endpointComponents);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
exports.OasRestServerConverter = OasRestServerConverter;
|
|
82
|
+
//# sourceMappingURL=oas-rest-server-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oas-rest-server-converter.js","sourceRoot":"","sources":["../../../src/oas/oas-rest-server-converter.ts"],"names":[],"mappings":"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"}
|
package/oas/routes.d.ts
ADDED
package/oas/routes.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oasRoutes = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const swagger_ui_express_1 = tslib_1.__importDefault(require("swagger-ui-express"));
|
|
6
|
+
const oas_rest_server_converter_1 = require("./oas-rest-server-converter");
|
|
7
|
+
async function oasRoutes({ router, server, oasPath, swaggerPath, }) {
|
|
8
|
+
oasPath = oasPath || '/openapi.json';
|
|
9
|
+
swaggerPath = swaggerPath || '/docs';
|
|
10
|
+
const converter = new oas_rest_server_converter_1.OasRestServerConverter();
|
|
11
|
+
const spec = await converter.getOpenApiSpec(server);
|
|
12
|
+
// Expose OpenAPI spec
|
|
13
|
+
router.get(oasPath, async (req, res) => {
|
|
14
|
+
res.json(spec);
|
|
15
|
+
});
|
|
16
|
+
// Serve Swagger UI static assets
|
|
17
|
+
router.use(swaggerPath, swagger_ui_express_1.default.serve);
|
|
18
|
+
// Serve Swagger UI HTML
|
|
19
|
+
router.get(swaggerPath, async (req, res, next) => {
|
|
20
|
+
return swagger_ui_express_1.default.setup(spec)(req, res, next);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
exports.oasRoutes = oasRoutes;
|
|
24
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/oas/routes.ts"],"names":[],"mappings":";;;;AACA,oFAA2C;AAG3C,2EAAqE;AAE9D,KAAK,UAAU,SAAS,CAAC,EAC/B,MAAM,EACN,MAAM,EACN,OAAO,EACP,WAAW,GAMX;IACA,OAAO,GAAG,OAAO,IAAI,eAAe,CAAC;IACrC,WAAW,GAAG,WAAW,IAAI,OAAO,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,kDAAsB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAEpD,sBAAsB;IACtB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,4BAAS,CAAC,KAAK,CAAC,CAAC;IAEzC,wBAAwB;IACxB,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QAChD,OAAO,4BAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACJ,CAAC;AA5BD,8BA4BC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "api-machine",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "api-machine",
|
|
5
|
+
"typescript-template": {
|
|
6
|
+
"base": "1.0.1",
|
|
7
|
+
"jasmine": "1.0.0",
|
|
8
|
+
"library": "1.0.0"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {},
|
|
11
|
+
"dependencies": {
|
|
12
|
+
"auto-oas": "^1.2.0",
|
|
13
|
+
"cors": "^2.8.5",
|
|
14
|
+
"express": "^5.1.0",
|
|
15
|
+
"swagger-ui-express": "^5.0.1",
|
|
16
|
+
"valsan": "^2.2.0"
|
|
17
|
+
},
|
|
18
|
+
"peerDependencies": {
|
|
19
|
+
"valsan": "^2.2.0"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/StatelessStudio/api-machine.git"
|
|
24
|
+
},
|
|
25
|
+
"author": "StatelessStudio",
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/StatelessStudio/api-machine/issues"
|
|
29
|
+
},
|
|
30
|
+
"homepage": "https://github.com/StatelessStudio/api-machine#readme",
|
|
31
|
+
"keywords": [],
|
|
32
|
+
"main": "index.js",
|
|
33
|
+
"types": "index.d.ts"
|
|
34
|
+
}
|
package/router/base.d.ts
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Router as ExpressRouter, RequestHandler } from 'express';
|
|
2
|
+
import { AuthenticationScheme } from '../authentication/authentication-scheme';
|
|
3
|
+
export declare abstract class BaseApiRoute {
|
|
4
|
+
path: string;
|
|
5
|
+
fullPath: string;
|
|
6
|
+
name: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Optional array of Express middleware to apply
|
|
10
|
+
*/
|
|
11
|
+
middleware: RequestHandler[];
|
|
12
|
+
/**
|
|
13
|
+
* Authentication scheme for this route
|
|
14
|
+
* Set to null to explicitly make a route public (no authentication)
|
|
15
|
+
* If undefined, inherits from parent router or server
|
|
16
|
+
*/
|
|
17
|
+
authentication?: AuthenticationScheme | null;
|
|
18
|
+
/**
|
|
19
|
+
* Parent route in the hierarchy (used for authentication cascading)
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
parentRoute?: BaseApiRoute;
|
|
23
|
+
abstract register(parentRouter: ExpressRouter, parentPath: string): Promise<void>;
|
|
24
|
+
getName(): string;
|
|
25
|
+
registerRoutePath(parentPath: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Get the effective authentication scheme for this route
|
|
28
|
+
* Implements cascading logic: endpoint → router → server
|
|
29
|
+
* @returns The authentication scheme to use, or undefined if public
|
|
30
|
+
*/
|
|
31
|
+
getEffectiveAuthentication(): AuthenticationScheme | undefined | null;
|
|
32
|
+
}
|
|
33
|
+
export type ApiRoute = {
|
|
34
|
+
new (): BaseApiRoute;
|
|
35
|
+
};
|
package/router/base.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseApiRoute = void 0;
|
|
4
|
+
class BaseApiRoute {
|
|
5
|
+
path;
|
|
6
|
+
fullPath;
|
|
7
|
+
name;
|
|
8
|
+
description;
|
|
9
|
+
/**
|
|
10
|
+
* Optional array of Express middleware to apply
|
|
11
|
+
*/
|
|
12
|
+
middleware = [];
|
|
13
|
+
/**
|
|
14
|
+
* Authentication scheme for this route
|
|
15
|
+
* Set to null to explicitly make a route public (no authentication)
|
|
16
|
+
* If undefined, inherits from parent router or server
|
|
17
|
+
*/
|
|
18
|
+
authentication;
|
|
19
|
+
/**
|
|
20
|
+
* Parent route in the hierarchy (used for authentication cascading)
|
|
21
|
+
* @internal
|
|
22
|
+
*/
|
|
23
|
+
// eslint-disable-next-line no-use-before-define
|
|
24
|
+
parentRoute;
|
|
25
|
+
getName() {
|
|
26
|
+
return this.name || this.constructor.name;
|
|
27
|
+
}
|
|
28
|
+
registerRoutePath(parentPath) {
|
|
29
|
+
if (!this.path) {
|
|
30
|
+
this.path = '';
|
|
31
|
+
}
|
|
32
|
+
else if (!this.path.startsWith('/')) {
|
|
33
|
+
this.path = '/' + this.path;
|
|
34
|
+
}
|
|
35
|
+
if (parentPath.endsWith('/')) {
|
|
36
|
+
parentPath = parentPath.slice(0, -1);
|
|
37
|
+
}
|
|
38
|
+
this.fullPath = parentPath + this.path;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Get the effective authentication scheme for this route
|
|
42
|
+
* Implements cascading logic: endpoint → router → server
|
|
43
|
+
* @returns The authentication scheme to use, or undefined if public
|
|
44
|
+
*/
|
|
45
|
+
getEffectiveAuthentication() {
|
|
46
|
+
// If explicitly set (including null for public routes), use it
|
|
47
|
+
if (this.authentication !== undefined) {
|
|
48
|
+
return this.authentication;
|
|
49
|
+
}
|
|
50
|
+
// Otherwise, cascade to parent
|
|
51
|
+
if (this.parentRoute) {
|
|
52
|
+
return this.parentRoute.getEffectiveAuthentication();
|
|
53
|
+
}
|
|
54
|
+
// No authentication at any level
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.BaseApiRoute = BaseApiRoute;
|
|
59
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/router/base.ts"],"names":[],"mappings":";;;AAGA,MAAsB,YAAY;IAC1B,IAAI,CAAS;IACb,QAAQ,CAAS;IACjB,IAAI,CAAS;IACb,WAAW,CAAU;IAE5B;;OAEG;IACI,UAAU,GAAqB,EAAE,CAAC;IAEzC;;;;OAIG;IACI,cAAc,CAA+B;IAEpD;;;OAGG;IACH,gDAAgD;IACzC,WAAW,CAAgB;IAO3B,OAAO;QACb,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;IAC3C,CAAC;IAEM,iBAAiB,CAAC,UAAkB;QAC1C,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAChB,CAAC;aACI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACI,0BAA0B;QAIhC,+DAA+D;QAC/D,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,cAAc,CAAC;QAC5B,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,WAAW,CAAC,0BAA0B,EAAE,CAAC;QACtD,CAAC;QAED,iCAAiC;QACjC,OAAO,SAAS,CAAC;IAClB,CAAC;CACD;AAvED,oCAuEC"}
|