@decohere/http 0.0.1-dev.131 → 0.0.1-dev.20261105.110

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 (70) hide show
  1. package/es6/src/routing/services/route-registry.js +5 -0
  2. package/package.json +9 -14
  3. package/commonjs/src/app/app.js +0 -166
  4. package/commonjs/src/app/index.js +0 -19
  5. package/commonjs/src/app/module.js +0 -17
  6. package/commonjs/src/auth/ability.js +0 -54
  7. package/commonjs/src/auth/auth.config.js +0 -23
  8. package/commonjs/src/auth/auth.extensions.js +0 -106
  9. package/commonjs/src/auth/auth.types.js +0 -65
  10. package/commonjs/src/auth/casl-authorization.service.js +0 -36
  11. package/commonjs/src/auth/index.js +0 -23
  12. package/commonjs/src/auth/principal-provider.js +0 -19
  13. package/commonjs/src/auth/safe-outbound-url.js +0 -102
  14. package/commonjs/src/auth/token-service.js +0 -151
  15. package/commonjs/src/builder/builder.js +0 -95
  16. package/commonjs/src/builder/index.js +0 -18
  17. package/commonjs/src/const.js +0 -86
  18. package/commonjs/src/health/health.controller.js +0 -75
  19. package/commonjs/src/health/health.extensions.js +0 -50
  20. package/commonjs/src/health/index.js +0 -21
  21. package/commonjs/src/health/readiness.service.js +0 -67
  22. package/commonjs/src/health/readiness.types.js +0 -7
  23. package/commonjs/src/hosting/hosted-service-host.js +0 -88
  24. package/commonjs/src/hosting/hosted-service.js +0 -11
  25. package/commonjs/src/hosting/index.js +0 -19
  26. package/commonjs/src/http/http.compression.js +0 -27
  27. package/commonjs/src/http/http.extensions.js +0 -269
  28. package/commonjs/src/http/http.options.js +0 -26
  29. package/commonjs/src/http/http.options.store.js +0 -20
  30. package/commonjs/src/http/http.security.js +0 -27
  31. package/commonjs/src/http/http.static.js +0 -248
  32. package/commonjs/src/http/index.js +0 -22
  33. package/commonjs/src/index.js +0 -27
  34. package/commonjs/src/openapi/index.js +0 -45
  35. package/commonjs/src/openapi/openapi.generator.js +0 -103
  36. package/commonjs/src/openapi/openapi.types.js +0 -4
  37. package/commonjs/src/openapi/request-schema.js +0 -187
  38. package/commonjs/src/openapi/request-validator.js +0 -85
  39. package/commonjs/src/providers/fastify.provider.js +0 -391
  40. package/commonjs/src/providers/index.js +0 -18
  41. package/commonjs/src/routing/decorators/argument.decorator.js +0 -49
  42. package/commonjs/src/routing/decorators/auth.decorator.js +0 -70
  43. package/commonjs/src/routing/decorators/controller.decorator.js +0 -16
  44. package/commonjs/src/routing/decorators/field.decorator.js +0 -25
  45. package/commonjs/src/routing/decorators/index.js +0 -24
  46. package/commonjs/src/routing/decorators/request.decorator.js +0 -30
  47. package/commonjs/src/routing/decorators/response.decorator.js +0 -34
  48. package/commonjs/src/routing/decorators/route.decorator.js +0 -67
  49. package/commonjs/src/routing/filters/exception-filter-host.js +0 -145
  50. package/commonjs/src/routing/filters/exception-filter.js +0 -28
  51. package/commonjs/src/routing/http.types.js +0 -99
  52. package/commonjs/src/routing/index.js +0 -25
  53. package/commonjs/src/routing/middleware/http-access-log.middleware.js +0 -47
  54. package/commonjs/src/routing/middleware/middleware.js +0 -20
  55. package/commonjs/src/routing/middleware/request-id.js +0 -30
  56. package/commonjs/src/routing/path.util.js +0 -51
  57. package/commonjs/src/routing/pipes/index.js +0 -18
  58. package/commonjs/src/routing/pipes/pipes.js +0 -145
  59. package/commonjs/src/routing/services/index.js +0 -18
  60. package/commonjs/src/routing/services/route-argument-resolver.js +0 -77
  61. package/commonjs/src/routing/services/route-registry.js +0 -194
  62. package/commonjs/src/routing/services/router.js +0 -158
  63. package/commonjs/src/sse/index.js +0 -26
  64. package/commonjs/src/sse/sse.decorator.js +0 -42
  65. package/commonjs/src/sse/sse.encoder.js +0 -73
  66. package/commonjs/src/sse/sse.types.js +0 -36
  67. package/commonjs/src/sse/sse.wire.js +0 -40
  68. package/commonjs/src/testing/boot-module.js +0 -38
  69. package/commonjs/src/testing/index.js +0 -20
  70. package/commonjs/src/testing/sse-reader.js +0 -98
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "Request", {
6
- enumerable: true,
7
- get: function() {
8
- return Request;
9
- }
10
- });
11
- const _reflection = require("@decohere/core/reflection");
12
- const _const = require("../../const.js");
13
- function Request(mappingKey) {
14
- return (target)=>{
15
- const inst = new target();
16
- const fieldMap = (0, _reflection.getMeta)(_const.MetadataKeys.fieldMap, target.prototype) ?? new Map();
17
- const fields = (0, _reflection.getFields)(inst);
18
- for (const field of fields){
19
- const fieldType = (0, _reflection.getFieldType)(target.prototype, field.key);
20
- const overrides = fieldMap.get(field.key);
21
- fieldMap.set(field.key, {
22
- fieldKey: field.key,
23
- mappingKey: overrides?.mappingKey ?? field.key,
24
- fieldType: overrides?.fieldType ?? fieldType,
25
- fieldLocation: overrides?.fieldLocation ?? mappingKey
26
- });
27
- }
28
- (0, _reflection.defineMeta)(_const.MetadataKeys.fieldMap, fieldMap, target.prototype);
29
- };
30
- }
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get Header () {
13
- return Header;
14
- },
15
- get HttpCode () {
16
- return HttpCode;
17
- }
18
- });
19
- const _reflection = require("@decohere/core/reflection");
20
- const _const = require("../../const.js");
21
- function HttpCode(statusCode) {
22
- return (_target, _methodName, descriptor)=>{
23
- (0, _reflection.defineMeta)(_const.MetadataKeys.httpCode, statusCode, descriptor.value);
24
- };
25
- }
26
- function Header(name, value) {
27
- return (_target, _methodName, descriptor)=>{
28
- const existing = (0, _reflection.getMeta)(_const.MetadataKeys.headers, descriptor.value) ?? {};
29
- (0, _reflection.defineMeta)(_const.MetadataKeys.headers, {
30
- ...existing,
31
- [name]: value
32
- }, descriptor.value);
33
- };
34
- }
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get Delete () {
13
- return Delete;
14
- },
15
- get Get () {
16
- return Get;
17
- },
18
- get Patch () {
19
- return Patch;
20
- },
21
- get Post () {
22
- return Post;
23
- },
24
- get Put () {
25
- return Put;
26
- },
27
- get Route () {
28
- return Route;
29
- }
30
- });
31
- const _reflection = require("@decohere/core/reflection");
32
- const _const = require("../../const.js");
33
- const _httptypes = require("../http.types.js");
34
- function Get(path) {
35
- return routeDecorator(_const.HTTPMethods.GET, path);
36
- }
37
- function Post(path) {
38
- return routeDecorator(_const.HTTPMethods.POST, path);
39
- }
40
- function Put(path) {
41
- return routeDecorator(_const.HTTPMethods.PUT, path);
42
- }
43
- function Patch(path) {
44
- return routeDecorator(_const.HTTPMethods.PATCH, path);
45
- }
46
- function Delete(path) {
47
- return routeDecorator(_const.HTTPMethods.DELETE, path);
48
- }
49
- function Route(method, path) {
50
- return routeDecorator(method, path);
51
- }
52
- /**
53
- * Store method + relative path only. Controller / global prefixes are applied
54
- * at registration time in RouteRegistry (avoids TS decorator-order issues).
55
- */ function routeDecorator(method, path = "") {
56
- return (targetClass, functionName, descriptor)=>{
57
- if (path !== "" && !path.startsWith("/")) {
58
- throw new _httptypes.RouteConfigurationError(`Error configuring routes. Path defined in controller ${targetClass.constructor.name}.${functionName}() should start '/'`);
59
- }
60
- const { value: handler } = descriptor;
61
- const routeConfig = {
62
- method,
63
- path
64
- };
65
- (0, _reflection.defineMeta)(_const.MetadataKeys.route, routeConfig, handler);
66
- };
67
- }
@@ -1,145 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get DefaultHttpExceptionFilter () {
13
- return DefaultHttpExceptionFilter;
14
- },
15
- get ExceptionFilterHost () {
16
- return ExceptionFilterHost;
17
- }
18
- });
19
- const _crucible = require("@decohere/crucible");
20
- const _decorators = require("@decohere/crucible/decorators");
21
- const _scribe = require("@decohere/scribe");
22
- const _const = require("../../const.js");
23
- const _httptypes = require("../http.types.js");
24
- const _exceptionfilter = require("./exception-filter.js");
25
- function _ts_decorate(decorators, target, key, desc) {
26
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
27
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
28
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29
- return c > 3 && r && Object.defineProperty(target, key, r), r;
30
- }
31
- function _ts_metadata(k, v) {
32
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
33
- }
34
- function _ts_param(paramIndex, decorator) {
35
- return function(target, key) {
36
- decorator(target, key, paramIndex);
37
- };
38
- }
39
- class DefaultHttpExceptionFilter {
40
- logger = _scribe.scribe.logger(DefaultHttpExceptionFilter.name);
41
- catch(error, _ctx) {
42
- if (error instanceof _httptypes.ValidationError) {
43
- return {
44
- status: 400,
45
- body: {
46
- statusCode: 400,
47
- error: "Bad Request",
48
- message: error.message,
49
- errors: error.errors
50
- }
51
- };
52
- }
53
- if (error instanceof _httptypes.HttpError) {
54
- // Never expose internal auth failure details (header shape, issuer, etc.) to clients.
55
- if (error.status === 401) {
56
- this.logger.warn(error.message);
57
- return {
58
- status: 401,
59
- body: {
60
- message: "Unauthorized"
61
- }
62
- };
63
- }
64
- // Sanitize only true 500s. Keep intentional 503 probe messages (e.g. /ready).
65
- if (error.status === 500) {
66
- this.logger.error(error.message);
67
- return {
68
- status: 500,
69
- body: {
70
- message: "Internal Server Error"
71
- }
72
- };
73
- }
74
- return {
75
- status: error.status,
76
- body: {
77
- message: error.message
78
- }
79
- };
80
- }
81
- if (error instanceof Error) {
82
- this.logger.error(error.message, error.stack);
83
- return {
84
- status: 500,
85
- body: {
86
- message: "Internal Server Error"
87
- }
88
- };
89
- }
90
- return {
91
- status: 500,
92
- body: {
93
- message: "Internal Server Error"
94
- }
95
- };
96
- }
97
- }
98
- DefaultHttpExceptionFilter = _ts_decorate([
99
- (0, _decorators.injectable)()
100
- ], DefaultHttpExceptionFilter);
101
- class ExceptionFilterHost {
102
- options;
103
- scope;
104
- filters;
105
- constructor(options, scope){
106
- this.options = options;
107
- this.scope = scope;
108
- }
109
- async handle(error, ctx) {
110
- for (const filter of this.getFilters()){
111
- const filterType = filter.constructor;
112
- const types = (0, _exceptionfilter.getCatchTypes)(filterType);
113
- if (types.length === 0 || types.some((t)=>error instanceof t)) {
114
- return await filter.catch(error, ctx);
115
- }
116
- }
117
- return new DefaultHttpExceptionFilter().catch(error, ctx);
118
- }
119
- getFilters() {
120
- if (this.filters != null) {
121
- return this.filters;
122
- }
123
- const custom = this.options?.filterTypes.map((type)=>{
124
- if (this.scope == null) {
125
- return new type();
126
- }
127
- return this.scope.resolve(type);
128
- }) ?? [];
129
- this.filters = [
130
- ...custom,
131
- new DefaultHttpExceptionFilter()
132
- ];
133
- return this.filters;
134
- }
135
- }
136
- ExceptionFilterHost = _ts_decorate([
137
- (0, _decorators.injectable)(),
138
- _ts_param(0, (0, _decorators.inject)(_const.HttpOptionsToken)),
139
- _ts_param(1, (0, _decorators.inject)(_crucible.LifetimeScopeToken)),
140
- _ts_metadata("design:type", Function),
141
- _ts_metadata("design:paramtypes", [
142
- typeof HttpOptions === "undefined" ? Object : HttpOptions,
143
- typeof LifetimeScope === "undefined" ? Object : LifetimeScope
144
- ])
145
- ], ExceptionFilterHost);
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get Catch () {
13
- return Catch;
14
- },
15
- get getCatchTypes () {
16
- return getCatchTypes;
17
- }
18
- });
19
- const _reflection = require("@decohere/core/reflection");
20
- const _const = require("../../const.js");
21
- function Catch(...types) {
22
- return (target)=>{
23
- (0, _reflection.defineMeta)(_const.MetadataKeys.catch, types, target);
24
- };
25
- }
26
- function getCatchTypes(filterType) {
27
- return (0, _reflection.getMeta)(_const.MetadataKeys.catch, filterType) ?? [];
28
- }
@@ -1,99 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get ForbiddenError () {
13
- return ForbiddenError;
14
- },
15
- get HttpError () {
16
- return HttpError;
17
- },
18
- get HttpRequest () {
19
- return HttpRequest;
20
- },
21
- get InjectedParts () {
22
- return InjectedParts;
23
- },
24
- get RequestParts () {
25
- return RequestParts;
26
- },
27
- get RouteConfigurationError () {
28
- return RouteConfigurationError;
29
- },
30
- get RoutingError () {
31
- return RoutingError;
32
- },
33
- get TransformError () {
34
- return TransformError;
35
- },
36
- get UnauthorizedError () {
37
- return UnauthorizedError;
38
- },
39
- get ValidationError () {
40
- return ValidationError;
41
- }
42
- });
43
- const RequestParts = {
44
- query: "query",
45
- params: "params",
46
- body: "body",
47
- principal: "principal",
48
- signal: "signal",
49
- lastEventId: "lastEventId"
50
- };
51
- const InjectedParts = [
52
- "principal",
53
- "signal",
54
- "lastEventId"
55
- ];
56
- class HttpRequest {
57
- constructor(data){
58
- Object.assign(this, data);
59
- }
60
- requestId = "";
61
- url;
62
- method;
63
- params = {};
64
- query = {};
65
- body;
66
- headers = {};
67
- /** Aborts when the client disconnects or the app stops. Never aborts if the provider cannot tell. */ signal = new AbortController().signal;
68
- /** Outbound headers set by middleware; applied by the HTTP provider. */ responseHeaders = {};
69
- }
70
- class RouteConfigurationError extends Error {
71
- }
72
- class RoutingError extends Error {
73
- }
74
- class TransformError extends Error {
75
- }
76
- class HttpError extends Error {
77
- status;
78
- constructor(message, status){
79
- super(message);
80
- this.status = status;
81
- }
82
- }
83
- class UnauthorizedError extends HttpError {
84
- constructor(message = "Unauthorized"){
85
- super(message, 401);
86
- }
87
- }
88
- class ForbiddenError extends HttpError {
89
- constructor(message = "Forbidden"){
90
- super(message, 403);
91
- }
92
- }
93
- class ValidationError extends HttpError {
94
- errors;
95
- constructor(message = "Bad Request", errors = []){
96
- super(message, 400);
97
- this.errors = errors;
98
- }
99
- }
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./http.types.js"), exports);
6
- _export_star(require("./decorators/index.js"), exports);
7
- _export_star(require("./filters/exception-filter.js"), exports);
8
- _export_star(require("./filters/exception-filter-host.js"), exports);
9
- _export_star(require("./middleware/http-access-log.middleware.js"), exports);
10
- _export_star(require("./middleware/middleware.js"), exports);
11
- _export_star(require("./middleware/request-id.js"), exports);
12
- _export_star(require("./pipes/index.js"), exports);
13
- function _export_star(from, to) {
14
- Object.keys(from).forEach(function(k) {
15
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
16
- Object.defineProperty(to, k, {
17
- enumerable: true,
18
- get: function() {
19
- return from[k];
20
- }
21
- });
22
- }
23
- });
24
- return from;
25
- }
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "HttpAccessLogMiddleware", {
6
- enumerable: true,
7
- get: function() {
8
- return HttpAccessLogMiddleware;
9
- }
10
- });
11
- const _decorators = require("@decohere/crucible/decorators");
12
- const _scribe = require("@decohere/scribe");
13
- const _httptypes = require("../http.types.js");
14
- const _requestid = require("./request-id.js");
15
- function _ts_decorate(decorators, target, key, desc) {
16
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
18
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19
- return c > 3 && r && Object.defineProperty(target, key, r), r;
20
- }
21
- class HttpAccessLogMiddleware {
22
- async use(ctx, next) {
23
- const logger = _scribe.scribe.logger(HttpAccessLogMiddleware.name);
24
- const start = performance.now();
25
- ctx.request.responseHeaders[_requestid.REQUEST_ID_HEADER] = ctx.request.requestId;
26
- let status = ctx.route.httpCode ?? 200;
27
- try {
28
- return await next();
29
- } catch (error) {
30
- status = error instanceof _httptypes.HttpError ? error.status : 500;
31
- throw error;
32
- } finally{
33
- const durationMs = Math.round(performance.now() - start);
34
- logger.info({
35
- msg: "access",
36
- method: ctx.request.method,
37
- path: ctx.request.url,
38
- status,
39
- durationMs,
40
- requestId: ctx.request.requestId
41
- });
42
- }
43
- }
44
- }
45
- HttpAccessLogMiddleware = _ts_decorate([
46
- (0, _decorators.injectable)()
47
- ], HttpAccessLogMiddleware);
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "composeMiddleware", {
6
- enumerable: true,
7
- get: function() {
8
- return composeMiddleware;
9
- }
10
- });
11
- function composeMiddleware(middlewares, handler, ctx) {
12
- const dispatch = (index)=>{
13
- if (index >= middlewares.length) {
14
- return handler();
15
- }
16
- const middleware = middlewares[index];
17
- return middleware.use(ctx, ()=>dispatch(index + 1));
18
- };
19
- return dispatch(0);
20
- }
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get REQUEST_ID_HEADER () {
13
- return REQUEST_ID_HEADER;
14
- },
15
- get resolveRequestId () {
16
- return resolveRequestId;
17
- }
18
- });
19
- const _nodecrypto = require("node:crypto");
20
- const REQUEST_ID_HEADER = "x-request-id";
21
- function resolveRequestId(headers, fallback) {
22
- const fromHeader = headers[REQUEST_ID_HEADER]?.trim();
23
- if (fromHeader) {
24
- return fromHeader;
25
- }
26
- if (fallback?.trim()) {
27
- return fallback.trim();
28
- }
29
- return (0, _nodecrypto.randomUUID)();
30
- }
@@ -1,51 +0,0 @@
1
- /** Normalize a prefix to `/foo` form with no trailing slash. Empty → `""`. */ "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get applyGlobalPrefix () {
13
- return applyGlobalPrefix;
14
- },
15
- get joinRoutePath () {
16
- return joinRoutePath;
17
- },
18
- get normalizePrefix () {
19
- return normalizePrefix;
20
- }
21
- });
22
- function normalizePrefix(prefix) {
23
- if (prefix == null || prefix === "" || prefix === "/") {
24
- return "";
25
- }
26
- const withSlash = prefix.startsWith("/") ? prefix : `/${prefix}`;
27
- return withSlash.replace(/\/+$/, "");
28
- }
29
- function joinRoutePath(prefix, routePath) {
30
- const p = normalizePrefix(prefix);
31
- if (routePath === "" || routePath == null) {
32
- return p === "" ? "/" : p;
33
- }
34
- if (routePath === "/") {
35
- return p === "" ? "/" : `${p}/`;
36
- }
37
- if (!routePath.startsWith("/")) {
38
- throw new Error(`Route path must start with '/': ${routePath}`);
39
- }
40
- return `${p}${routePath}`;
41
- }
42
- function applyGlobalPrefix(globalPrefix, path) {
43
- const g = normalizePrefix(globalPrefix);
44
- if (g === "") {
45
- return path === "" ? "/" : path;
46
- }
47
- if (path === "/") {
48
- return `${g}/`;
49
- }
50
- return `${g}${path.startsWith("/") ? path : `/${path}`}`;
51
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- _export_star(require("./pipes.js"), exports);
6
- function _export_star(from, to) {
7
- Object.keys(from).forEach(function(k) {
8
- if (k !== "default" && !Object.prototype.hasOwnProperty.call(to, k)) {
9
- Object.defineProperty(to, k, {
10
- enumerable: true,
11
- get: function() {
12
- return from[k];
13
- }
14
- });
15
- }
16
- });
17
- return from;
18
- }