oc 0.50.57-beta.2 → 0.50.57

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 (60) hide show
  1. package/.turbo/turbo-build.log +18 -16
  2. package/.turbo/turbo-test-silent.log +30 -28
  3. package/CHANGELOG.md +0 -6
  4. package/dist/cli/facade/dev.d.ts +140 -2
  5. package/dist/components/oc-client/_package/package.json +38 -1
  6. package/dist/components/oc-client/_package/src/oc-client.js +19 -14
  7. package/dist/components/oc-client/_package/src/oc-client.min.js +1 -1
  8. package/dist/components/oc-client/_package/src/oc-client.min.map +1 -1
  9. package/dist/components/oc-client/src/oc-client.js +19 -14
  10. package/dist/components/oc-client/src/oc-client.min.js +1 -1
  11. package/dist/components/oc-client/src/oc-client.min.map +1 -1
  12. package/dist/index.d.ts +0 -2
  13. package/dist/registry/domain/extract-package.d.ts +2 -3
  14. package/dist/registry/domain/options-sanitiser.d.ts +2 -3
  15. package/dist/registry/domain/options-sanitiser.js +0 -13
  16. package/dist/registry/domain/validators/uploaded-package.d.ts +4 -5
  17. package/dist/registry/index.d.ts +68 -10
  18. package/dist/registry/index.js +16 -14
  19. package/dist/registry/middleware/base-url-handler.d.ts +2 -3
  20. package/dist/registry/middleware/base-url-handler.js +4 -3
  21. package/dist/registry/middleware/compression.d.ts +2 -2
  22. package/dist/registry/middleware/compression.js +1 -1
  23. package/dist/registry/middleware/cors.d.ts +2 -3
  24. package/dist/registry/middleware/cors.js +8 -7
  25. package/dist/registry/middleware/discovery-handler.d.ts +2 -3
  26. package/dist/registry/middleware/discovery-handler.js +4 -3
  27. package/dist/registry/middleware/file-uploads.d.ts +2 -0
  28. package/dist/registry/middleware/file-uploads.js +23 -0
  29. package/dist/registry/middleware/index.d.ts +2 -2
  30. package/dist/registry/middleware/index.js +36 -39
  31. package/dist/registry/middleware/request-handler.d.ts +2 -0
  32. package/dist/registry/middleware/request-handler.js +30 -0
  33. package/dist/registry/router.d.ts +2 -2
  34. package/dist/registry/router.js +27 -33
  35. package/dist/registry/routes/component-info.d.ts +2 -2
  36. package/dist/registry/routes/component-info.js +1 -1
  37. package/dist/registry/routes/component-preview.d.ts +2 -2
  38. package/dist/registry/routes/component.d.ts +2 -2
  39. package/dist/registry/routes/component.js +5 -3
  40. package/dist/registry/routes/components.d.ts +2 -2
  41. package/dist/registry/routes/components.js +1 -3
  42. package/dist/registry/routes/dependencies.d.ts +2 -2
  43. package/dist/registry/routes/helpers/get-component-fallback.d.ts +3 -3
  44. package/dist/registry/routes/helpers/get-component.d.ts +1 -1
  45. package/dist/registry/routes/history.d.ts +2 -2
  46. package/dist/registry/routes/history.js +1 -1
  47. package/dist/registry/routes/index.d.ts +2 -2
  48. package/dist/registry/routes/plugins.d.ts +2 -2
  49. package/dist/registry/routes/publish.d.ts +2 -2
  50. package/dist/registry/routes/static-redirector.d.ts +2 -3
  51. package/dist/registry/routes/static-redirector.js +12 -8
  52. package/dist/registry/routes/validate.d.ts +2 -2
  53. package/dist/types.d.ts +1 -9
  54. package/package.json +5 -5
  55. package/dist/registry/domain/http-server/express-adapter.d.ts +0 -3
  56. package/dist/registry/domain/http-server/express-adapter.js +0 -196
  57. package/dist/registry/domain/http-server/types.d.ts +0 -108
  58. package/dist/registry/domain/http-server/types.js +0 -2
  59. package/dist/registry/domain/server-adapter.d.ts +0 -4
  60. package/dist/registry/domain/server-adapter.js +0 -20
@@ -0,0 +1,23 @@
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.default = fileUpload;
7
+ const multer_1 = __importDefault(require("multer"));
8
+ function fileUpload(req, res, next) {
9
+ if (res.conf.local) {
10
+ return next();
11
+ }
12
+ const normaliseFileName = (x) => x.replace('.tar.gz', '').replace(/\W+/g, '-').toLowerCase();
13
+ const upload = (0, multer_1.default)({
14
+ limits: {
15
+ fieldSize: 10
16
+ },
17
+ storage: multer_1.default.diskStorage({
18
+ destination: res.conf.tempDir,
19
+ filename: (_req, file, cb) => cb(null, `${normaliseFileName(file.originalname)}-${Date.now()}.tar.gz`)
20
+ })
21
+ });
22
+ return upload.any()(req, res, next);
23
+ }
@@ -1,3 +1,3 @@
1
+ import { type Express } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { HttpServerAdapter } from '../domain/http-server/types';
3
- export declare const bind: (adapter: HttpServerAdapter, options: Config) => HttpServerAdapter;
3
+ export declare const bind: (app: Express, options: Config) => Express;
@@ -4,57 +4,54 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.bind = void 0;
7
- const events_handler_1 = __importDefault(require("../domain/events-handler"));
7
+ const cookie_parser_1 = __importDefault(require("cookie-parser"));
8
+ const errorhandler_1 = __importDefault(require("errorhandler"));
9
+ const express_1 = __importDefault(require("express"));
10
+ const morgan_1 = __importDefault(require("morgan"));
8
11
  const base_url_handler_1 = __importDefault(require("./base-url-handler"));
9
12
  const cors_1 = __importDefault(require("./cors"));
10
13
  const discovery_handler_1 = __importDefault(require("./discovery-handler"));
11
- const normaliseFileName = (x) => x.replace('.tar.gz', '').replace(/\W+/g, '-').toLowerCase();
12
- const bind = (adapter, options) => {
13
- adapter.use((_req, res) => {
14
+ const file_uploads_1 = __importDefault(require("./file-uploads"));
15
+ const request_handler_1 = __importDefault(require("./request-handler"));
16
+ const bodyParserJsonArgument = {
17
+ inflate: true
18
+ };
19
+ const bodyParserUrlEncodedArgument = {
20
+ extended: true
21
+ };
22
+ const bind = (app, options) => {
23
+ app.set('port', options.port);
24
+ app.set('json spaces', 0);
25
+ app.set('etag', 'strong');
26
+ app.use((_req, res, next) => {
14
27
  res.conf = options;
28
+ next();
15
29
  });
16
- adapter.enableRequestTiming((req, res, time) => {
17
- const data = {
18
- body: req.body,
19
- duration: time,
20
- headers: req.headers,
21
- method: req.method,
22
- path: req.path,
23
- relativeUrl: req.originalUrl,
24
- query: req.query,
25
- url: req.protocol + '://' + req.get('host') + req.originalUrl,
26
- statusCode: res.statusCode
27
- };
28
- if (res.errorDetails) {
29
- data.errorDetails = res.errorDetails;
30
- }
31
- if (res.errorCode) {
32
- data.errorCode = res.errorCode;
33
- }
34
- events_handler_1.default.fire('request', data);
35
- });
36
- adapter.enableCookies();
37
- adapter.enableBodyParser({ limit: options.postRequestPayloadSize });
38
- adapter.use(cors_1.default);
39
- if (!options.local) {
40
- adapter.enableFileUploads({
41
- tempDir: options.tempDir,
42
- filename: (originalName) => `${normaliseFileName(originalName)}-${Date.now()}.tar.gz`
43
- });
30
+ app.use((0, request_handler_1.default)());
31
+ app.use((0, cookie_parser_1.default)());
32
+ if (options.postRequestPayloadSize) {
33
+ // Type is incorrect since limit can be a string like '50mb'
34
+ bodyParserJsonArgument.limit = options.postRequestPayloadSize;
35
+ bodyParserUrlEncodedArgument.limit =
36
+ options.postRequestPayloadSize;
44
37
  }
45
- adapter.use(base_url_handler_1.default);
46
- adapter.use(discovery_handler_1.default);
38
+ app.use(express_1.default.json(bodyParserJsonArgument));
39
+ app.use(express_1.default.urlencoded(bodyParserUrlEncodedArgument));
40
+ app.use(cors_1.default);
41
+ app.use(file_uploads_1.default);
42
+ app.use(base_url_handler_1.default);
43
+ app.use(discovery_handler_1.default);
47
44
  if (options.verbosity) {
48
- adapter.enableLogging({
45
+ app.use((0, morgan_1.default)('dev', {
49
46
  skip: (req, res) => {
50
47
  // Hide logging development console calls
51
- return req.url.startsWith(`${res.conf?.prefix ?? ''}~actions/$$__oc__server___console__$$`);
48
+ return req.url.startsWith(`${res.conf.prefix}~actions/$$__oc__server___console__$$`);
52
49
  }
53
- });
50
+ }));
54
51
  }
55
52
  if (options.local) {
56
- adapter.enableErrorHandler();
53
+ app.use((0, errorhandler_1.default)());
57
54
  }
58
- return adapter;
55
+ return app;
59
56
  };
60
57
  exports.bind = bind;
@@ -0,0 +1,2 @@
1
+ import type { RequestHandler } from 'express';
2
+ export default function requestHandler(): RequestHandler;
@@ -0,0 +1,30 @@
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.default = requestHandler;
7
+ const response_time_1 = __importDefault(require("response-time"));
8
+ const events_handler_1 = __importDefault(require("../domain/events-handler"));
9
+ function requestHandler() {
10
+ return (0, response_time_1.default)((req, res, time) => {
11
+ const data = {
12
+ body: req.body,
13
+ duration: time,
14
+ headers: req.headers,
15
+ method: req.method,
16
+ path: req.path,
17
+ relativeUrl: req.originalUrl,
18
+ query: req.query,
19
+ url: req.protocol + '://' + req.get('host') + req.originalUrl,
20
+ statusCode: res.statusCode
21
+ };
22
+ if (res.errorDetails) {
23
+ data.errorDetails = res.errorDetails;
24
+ }
25
+ if (res.errorCode) {
26
+ data.errorCode = res.errorCode;
27
+ }
28
+ events_handler_1.default.fire('request', data);
29
+ });
30
+ }
@@ -1,4 +1,4 @@
1
+ import type { Express } from 'express';
1
2
  import type { Repository } from '../registry/domain/repository';
2
3
  import type { Config } from '../types';
3
- import type { HttpServerAdapter } from './domain/http-server/types';
4
- export declare function create(adapter: HttpServerAdapter, conf: Config, repository: Repository): void;
4
+ export declare function create(app: Express, conf: Config, repository: Repository): void;
@@ -16,8 +16,7 @@ const plugins_1 = __importDefault(require("./routes/plugins"));
16
16
  const publish_1 = __importDefault(require("./routes/publish"));
17
17
  const static_redirector_1 = __importDefault(require("./routes/static-redirector"));
18
18
  const validate_1 = __importDefault(require("./routes/validate"));
19
- function create(adapter, conf, repository) {
20
- const route = (method, path, id, ...handlers) => adapter.route(method, path, id, handlers);
19
+ function create(app, conf, repository) {
21
20
  const routes = {
22
21
  component: (0, component_1.default)(conf, repository),
23
22
  components: (0, components_1.default)(conf, repository),
@@ -25,12 +24,7 @@ function create(adapter, conf, repository) {
25
24
  componentPreview: (0, component_preview_1.default)(conf, repository),
26
25
  index: (0, routes_1.default)(repository),
27
26
  publish: (0, publish_1.default)(repository),
28
- staticRedirector: {
29
- client: (0, static_redirector_1.default)(repository, 'client'),
30
- devClient: (0, static_redirector_1.default)(repository, 'dev-client'),
31
- clientMap: (0, static_redirector_1.default)(repository, 'client-map'),
32
- localStatic: (0, static_redirector_1.default)(repository, 'local-static')
33
- },
27
+ staticRedirector: (0, static_redirector_1.default)(repository),
34
28
  plugins: (0, plugins_1.default)(conf),
35
29
  dependencies: (0, dependencies_1.default)(conf),
36
30
  history: (0, history_1.default)(repository),
@@ -39,42 +33,42 @@ function create(adapter, conf, repository) {
39
33
  const prefix = conf.prefix;
40
34
  const definedBaseRoute = conf.routes?.find((route) => route.route === '/');
41
35
  if (prefix !== '/' && !definedBaseRoute) {
42
- route('get', '/', 'root-redirect', (_req, res) => res.redirect(prefix));
43
- route('get', prefix.substring(0, prefix.length - 1), 'prefix-index', routes.index);
36
+ app.get('/', (_req, res) => res.redirect(prefix));
37
+ app.get(prefix.substring(0, prefix.length - 1), routes.index);
44
38
  }
45
- route('get', `${prefix}oc-client/client.js`, 'client', routes.staticRedirector.client);
46
- route('get', `${prefix}oc-client/client.dev.js`, 'dev-client', routes.staticRedirector.devClient);
47
- route('get', `${prefix}oc-client/oc-client.min.map`, 'client-map', routes.staticRedirector.clientMap);
48
- route('get', `${prefix}~registry/plugins`, 'plugins', routes.plugins);
49
- route('get', `${prefix}~registry/dependencies`, 'dependencies', routes.dependencies);
50
- route('get', `${prefix}~registry/history`, 'history', routes.history);
39
+ app.get(`${prefix}oc-client/client.js`, routes.staticRedirector);
40
+ app.get(`${prefix}oc-client/client.dev.js`, routes.staticRedirector);
41
+ app.get(`${prefix}oc-client/oc-client.min.map`, routes.staticRedirector);
42
+ app.get(`${prefix}~registry/plugins`, routes.plugins);
43
+ app.get(`${prefix}~registry/dependencies`, routes.dependencies);
44
+ app.get(`${prefix}~registry/history`, routes.history);
51
45
  if (conf.discovery.validate) {
52
- route('post', `${prefix}~registry/validate`, 'validate', routes.validate);
46
+ app.post(`${prefix}~registry/validate`, routes.validate);
53
47
  }
54
48
  if (conf.local) {
55
- route('get', `${prefix}:componentName/:componentVersion/${settings_1.default.registry.localStaticRedirectorPath}*splat`, 'local-static', routes.staticRedirector.localStatic);
49
+ app.get(`${prefix}:componentName/:componentVersion/${settings_1.default.registry.localStaticRedirectorPath}*splat`, routes.staticRedirector);
56
50
  }
57
51
  else {
58
- route('put', `${prefix}:componentName/:componentVersion`, 'publish', adapter.fromConnect(conf.beforePublish), routes.publish);
52
+ app.put(`${prefix}:componentName/:componentVersion`, conf.beforePublish, routes.publish);
59
53
  }
60
- route('get', prefix, 'index', routes.index);
61
- route('post', prefix, 'components', routes.components);
62
- route('get', `${prefix}:componentName/:componentVersion${settings_1.default.registry.componentInfoPath}`, 'component-version-info', routes.componentInfo);
63
- route('get', `${prefix}:componentName${settings_1.default.registry.componentInfoPath}`, 'component-info', routes.componentInfo);
64
- route('get', `${prefix}:componentName/:componentVersion${settings_1.default.registry.componentPreviewPath}`, 'component-version-preview', routes.componentPreview);
65
- route('get', `${prefix}:componentName${settings_1.default.registry.componentPreviewPath}`, 'component-preview', routes.componentPreview);
66
- route('get', `${prefix}:componentName/:componentVersion`, 'component-version', routes.component);
67
- route('get', `${prefix}:componentName`, 'component', routes.component);
68
- route('post', `${prefix}~actions/:action/:componentName/:componentVersion`, 'component-version-action', routes.component);
69
- route('post', `${prefix}~actions/:action/:componentName`, 'component-action', routes.component);
54
+ app.get(prefix, routes.index);
55
+ app.post(prefix, routes.components);
56
+ app.get(`${prefix}:componentName/:componentVersion${settings_1.default.registry.componentInfoPath}`, routes.componentInfo);
57
+ app.get(`${prefix}:componentName${settings_1.default.registry.componentInfoPath}`, routes.componentInfo);
58
+ app.get(`${prefix}:componentName/:componentVersion${settings_1.default.registry.componentPreviewPath}`, routes.componentPreview);
59
+ app.get(`${prefix}:componentName${settings_1.default.registry.componentPreviewPath}`, routes.componentPreview);
60
+ app.get(`${prefix}:componentName/:componentVersion`, routes.component);
61
+ app.get(`${prefix}:componentName`, routes.component);
62
+ app.post(`${prefix}~actions/:action/:componentName/:componentVersion`, routes.component);
63
+ app.post(`${prefix}~actions/:action/:componentName`, routes.component);
70
64
  if (conf.routes) {
71
- for (const routeConfig of conf.routes) {
65
+ for (const route of conf.routes) {
72
66
  // Ensure handler is a function (should be converted by options-sanitiser)
73
- if (typeof routeConfig.handler === 'function') {
74
- route(routeConfig.method.toLowerCase(), routeConfig.route, routeConfig.route, adapter.fromConnect(routeConfig.handler));
67
+ if (typeof route.handler === 'function') {
68
+ app[route.method.toLowerCase()](route.route, route.handler);
75
69
  }
76
70
  else {
77
- console.warn(`Warning: Route handler for "${routeConfig.route}" is not a function. Skipping route.`);
71
+ console.warn(`Warning: Route handler for "${route.route}" is not a function. Skipping route.`);
78
72
  }
79
73
  }
80
74
  }
@@ -1,4 +1,4 @@
1
+ import type { Request, Response } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
3
  import type { Repository } from '../domain/repository';
4
- export default function componentInfoRoute(conf: Config, repository: Repository): OcHandler;
4
+ export default function componentInfoRoute(conf: Config, repository: Repository): (req: Request, res: Response) => Promise<void>;
@@ -84,7 +84,7 @@ function componentInfo(err, req, res, component, componentDetail) {
84
84
  href = `//${req.headers.host}${res.conf.prefix}`;
85
85
  }
86
86
  // Get theme from cookie or default to dark
87
- const theme = req.cookies?.['oc-theme'] === 'light' ? 'light' : 'dark';
87
+ const theme = req.cookies?.['oc-theme'] || 'dark';
88
88
  res.send((0, info_1.default)({
89
89
  component,
90
90
  componentDetail,
@@ -1,4 +1,4 @@
1
+ import type { Request, Response } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
3
  import type { Repository } from '../domain/repository';
4
- export default function componentPreviewRoute(conf: Config, repository: Repository): OcHandler;
4
+ export default function componentPreviewRoute(conf: Config, repository: Repository): (req: Request, res: Response) => void;
@@ -1,4 +1,4 @@
1
+ import type { RequestHandler } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
3
  import type { Repository } from '../domain/repository';
4
- export default function component(conf: Config, repository: Repository): OcHandler;
4
+ export default function component(conf: Config, repository: Repository): RequestHandler;
@@ -70,7 +70,7 @@ function component(conf, repository) {
70
70
  res.errorDetails = result.response.error;
71
71
  }
72
72
  try {
73
- if (result.headers && Object.keys(result.headers).length) {
73
+ if (Object.keys(result.headers ?? {}).length) {
74
74
  res.set(result.headers);
75
75
  }
76
76
  if (Array.isArray(result.cookies) && result.cookies.length > 0) {
@@ -89,8 +89,10 @@ function component(conf, repository) {
89
89
  nodeStream.on('error', (err) => {
90
90
  res.status(500).end(String(err));
91
91
  });
92
- res.set('Content-Type', 'x-text/stream');
93
- res.stream(nodeStream);
92
+ res.setHeader('Content-Type', 'x-text/stream');
93
+ nodeStream.pipe(res).on('finish', () => {
94
+ res.end();
95
+ });
94
96
  }
95
97
  else {
96
98
  res.status(result.status).json(result.response);
@@ -1,4 +1,4 @@
1
+ import type { RequestHandler } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
3
  import type { Repository } from '../domain/repository';
4
- export default function components(conf: Config, repository: Repository): OcHandler;
4
+ export default function components(conf: Config, repository: Repository): RequestHandler;
@@ -13,9 +13,7 @@ function components(conf, repository) {
13
13
  if (results?.length !== 1 || !results[0] || !res.set) {
14
14
  return;
15
15
  }
16
- if (results[0].headers) {
17
- res.set(results[0].headers);
18
- }
16
+ res.set(results[0].headers);
19
17
  };
20
18
  const setCookies = (results, res) => {
21
19
  if (results?.length !== 1 || !results[0] || !res.cookie) {
@@ -1,3 +1,3 @@
1
+ import type { Request, Response } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
- export default function dependencies(conf: Config): OcHandler;
3
+ export default function dependencies(conf: Config): (_req: Request, res: Response) => void;
@@ -1,6 +1,6 @@
1
1
  import type { IncomingHttpHeaders } from 'node:http';
2
+ import type { Request, Response } from 'express';
2
3
  import type { Component, Config } from '../../../types';
3
- import type { OcRequest, OcResponse } from '../../domain/http-server/types';
4
4
  import type { GetComponentResult } from './get-component';
5
5
  type ComponentCallback = (err: {
6
6
  registryError: any;
@@ -11,6 +11,6 @@ export declare function getComponent(fallbackRegistryUrl: string, headers: Incom
11
11
  version: string;
12
12
  parameters: IncomingHttpHeaders;
13
13
  }, callback: (result: GetComponentResult) => void): void;
14
- export declare function getComponentPreview(conf: Config, req: OcRequest, res: OcResponse, registryError: string | null, callback: ComponentCallback): void;
15
- export declare function getComponentInfo(conf: Config, req: OcRequest, res: OcResponse, registryError: string | null, callback: ComponentCallback): void;
14
+ export declare function getComponentPreview(conf: Config, req: Request, res: Response, registryError: string | null, callback: ComponentCallback): void;
15
+ export declare function getComponentInfo(conf: Config, req: Request, res: Response, registryError: string | null, callback: ComponentCallback): void;
16
16
  export {};
@@ -1,6 +1,6 @@
1
1
  import type { IncomingHttpHeaders } from 'node:http';
2
+ import type { CookieOptions } from 'express';
2
3
  import type { Config } from '../../../types';
3
- import type { CookieOptions } from '../../domain/http-server/types';
4
4
  import type { Repository } from '../../domain/repository';
5
5
  export interface RendererOptions {
6
6
  action?: string;
@@ -1,3 +1,3 @@
1
- import type { OcHandler } from '../domain/http-server/types';
1
+ import type { Request, Response } from 'express';
2
2
  import type { Repository } from '../domain/repository';
3
- export default function history(repository: Repository): OcHandler;
3
+ export default function history(repository: Repository): (_req: Request, res: Response) => Promise<void>;
@@ -11,7 +11,7 @@ function history(repository) {
11
11
  if (res.conf.discovery.ui && !res.conf.local) {
12
12
  const details = await repository.getComponentsDetails();
13
13
  const componentsHistory = (0, get_components_history_1.default)(details);
14
- res.set('Cache-Control', 'public, max-age=600');
14
+ res.setHeader('Cache-Control', 'public, max-age=600');
15
15
  res.status(200).json({ componentsHistory });
16
16
  }
17
17
  else {
@@ -1,3 +1,3 @@
1
- import type { OcHandler } from '../domain/http-server/types';
1
+ import type { Request, Response } from 'express';
2
2
  import type { Repository } from '../domain/repository';
3
- export default function (repository: Repository): OcHandler;
3
+ export default function (repository: Repository): (req: Request, res: Response) => Promise<void>;
@@ -1,3 +1,3 @@
1
+ import type { Request, Response } from 'express';
1
2
  import type { Config } from '../../types';
2
- import type { OcHandler } from '../domain/http-server/types';
3
- export default function plugins(conf: Config): OcHandler;
3
+ export default function plugins(conf: Config): (_req: Request, res: Response) => void;
@@ -1,3 +1,3 @@
1
- import type { OcHandler } from '../domain/http-server/types';
1
+ import type { Request, Response } from 'express';
2
2
  import type { Repository } from '../domain/repository';
3
- export default function publish(repository: Repository): OcHandler;
3
+ export default function publish(repository: Repository): (req: Request, res: Response) => Promise<void>;
@@ -1,4 +1,3 @@
1
- import type { OcHandler } from '../domain/http-server/types';
1
+ import type { Request, Response } from 'express';
2
2
  import type { Repository } from '../domain/repository';
3
- export type StaticRedirectorRouteId = 'client' | 'dev-client' | 'client-map' | 'local-static';
4
- export default function staticRedirector(repository: Repository, routeId: StaticRedirectorRouteId): OcHandler;
3
+ export default function staticRedirector(repository: Repository): (req: Request, res: Response) => void;
@@ -41,10 +41,13 @@ const node_path_1 = __importDefault(require("node:path"));
41
41
  const fs_extra_1 = __importDefault(require("fs-extra"));
42
42
  const storageUtils = __importStar(require("oc-storage-adapters-utils"));
43
43
  const compression_1 = __importDefault(require("../middleware/compression"));
44
- function staticRedirector(repository, routeId) {
44
+ function staticRedirector(repository) {
45
45
  return (req, res) => {
46
46
  let filePath;
47
- if (routeId === 'client' || routeId === 'dev-client') {
47
+ const clientPath = `${res.conf.prefix || '/'}oc-client/client.js`;
48
+ const devClientPath = `${res.conf.prefix || '/'}oc-client/client.dev.js`;
49
+ const clientMapPath = `${res.conf.prefix || '/'}oc-client/oc-client.min.map`;
50
+ if (req.route.path === clientPath || req.route.path === devClientPath) {
48
51
  if (res.conf.local) {
49
52
  if (res.conf.compiledClient) {
50
53
  res.type('application/javascript');
@@ -56,7 +59,7 @@ function staticRedirector(repository, routeId) {
56
59
  else {
57
60
  if (res.conf.compiledClient) {
58
61
  res.type('application/javascript');
59
- if (routeId === 'client') {
62
+ if (req.route.path === clientPath) {
60
63
  (0, compression_1.default)({
61
64
  uncompressed: res.conf.compiledClient.code.minified,
62
65
  brotli: res.conf.compiledClient.code.brotli,
@@ -68,11 +71,11 @@ function staticRedirector(repository, routeId) {
68
71
  }
69
72
  return;
70
73
  }
71
- res.redirect(repository.getStaticClientPath(routeId === 'dev-client'));
74
+ res.redirect(repository.getStaticClientPath(req.route.path === devClientPath));
72
75
  return;
73
76
  }
74
77
  }
75
- else if (routeId === 'client-map') {
78
+ else if (req.route.path === clientMapPath) {
76
79
  if (res.conf.local) {
77
80
  filePath = node_path_1.default.join(__dirname, '../../components/oc-client/_package/src/oc-client.min.map');
78
81
  }
@@ -87,13 +90,14 @@ function staticRedirector(repository, routeId) {
87
90
  }
88
91
  }
89
92
  else if (req.params['componentName'] === 'oc-client') {
90
- filePath = node_path_1.default.join(__dirname, '../../components/oc-client/_package/' + req.params['splat']);
93
+ filePath = node_path_1.default.join(__dirname, '../../components/oc-client/_package/' +
94
+ req.params['splat'].join('/'));
91
95
  }
92
96
  else {
93
97
  filePath =
94
98
  node_path_1.default.join(res.conf.path, req.params['componentName']) +
95
99
  '/_package/' +
96
- req.params['splat'];
100
+ req.params['splat'].join('/');
97
101
  }
98
102
  if (!fs_extra_1.default.existsSync(filePath)) {
99
103
  res.errorDetails = `File ${filePath} not found`;
@@ -115,7 +119,7 @@ function staticRedirector(repository, routeId) {
115
119
  res.set('Content-Encoding', 'gzip');
116
120
  }
117
121
  fileStream.on('open', () => {
118
- res.stream(fileStream);
122
+ fileStream.pipe(res);
119
123
  });
120
124
  };
121
125
  }
@@ -1,2 +1,2 @@
1
- import type { OcHandler } from '../domain/http-server/types';
2
- export default function validate(): OcHandler;
1
+ import type { Request, Response } from 'express';
2
+ export default function validate(): (req: Request, res: Response) => Promise<void>;
package/dist/types.d.ts CHANGED
@@ -2,7 +2,6 @@ import type { NextFunction, Request, Response } from 'express';
2
2
  import type { MetadataStore as MetadataStoreType } from 'oc-metadata-adapters-utils';
3
3
  import type { StorageAdapter } from 'oc-storage-adapters-utils';
4
4
  import type { PackageJson } from 'type-fest';
5
- import type { HttpServerAdapterFactory, HttpServerAdapterOptions } from './registry/domain/http-server/types';
6
5
  export type { ComponentRow, MetadataStore } from 'oc-metadata-adapters-utils';
7
6
  type Middleware = (req: Request, res: Response, next: NextFunction) => void;
8
7
  export interface Author {
@@ -180,7 +179,7 @@ export type PublishAuthConfig = {
180
179
  } | ({
181
180
  type: string | Authentication;
182
181
  } & Record<string, any>);
183
- export interface Config<T = any, TServerAdapter extends HttpServerAdapterFactory = HttpServerAdapterFactory> {
182
+ export interface Config<T = any> {
184
183
  /**
185
184
  * Public base URL where the registry is reachable by consumers.
186
185
  *
@@ -421,13 +420,6 @@ export interface Config<T = any, TServerAdapter extends HttpServerAdapterFactory
421
420
  componentsDir: string;
422
421
  };
423
422
  };
424
- /**
425
- * Low-level HTTP server adapter used by the registry.
426
- */
427
- server: {
428
- adapter: TServerAdapter;
429
- options?: HttpServerAdapterOptions<TServerAdapter>;
430
- };
431
423
  /**
432
424
  * Directory used by the registry for temporary files.
433
425
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oc",
3
- "version": "0.50.57-beta.2",
3
+ "version": "0.50.57",
4
4
  "description": "A framework for developing and distributing html components",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -11,8 +11,8 @@
11
11
  "preview": "bun run preview/uiPreview.ts",
12
12
  "prebuild": "rimraf dist",
13
13
  "build": "npm run lint && tsc && node tasks/build.js",
14
- "test": "node tasks/mochaTest.js",
15
- "test-silent": "node tasks/mochaTest.js --silent",
14
+ "test": "npm run build && node tasks/mochaTest.js",
15
+ "test-silent": "npm run build && node tasks/mochaTest.js --silent",
16
16
  "bench": "node tasks/benchmarks/server-benchmark.js --repetitions=5",
17
17
  "bench:quick": "node tasks/benchmarks/server-benchmark.js --repetitions=3",
18
18
  "bench:update-baseline": "node tasks/benchmarks/server-benchmark.js --repetitions=5 --update-baseline=true",
@@ -95,7 +95,7 @@
95
95
  "multer": "^2.0.2",
96
96
  "nice-cache": "^0.0.5",
97
97
  "oc-client": "^4.0.3",
98
- "oc-client-browser": "*",
98
+ "oc-client-browser": "2.1.11",
99
99
  "oc-empty-response-handler": "^1.0.2",
100
100
  "oc-get-unix-utc-timestamp": "^1.0.6",
101
101
  "oc-metadata-adapters-utils": "^0.1.1",
@@ -118,7 +118,7 @@
118
118
  "source-map": "^0.7.6",
119
119
  "targz": "^1.0.1",
120
120
  "try-require": "^1.2.1",
121
- "undici": "^8.5.0",
121
+ "undici": "^8.4.1",
122
122
  "universalify": "^2.0.1",
123
123
  "yargs": "^17.7.2"
124
124
  }
@@ -1,3 +0,0 @@
1
- import { type Express } from 'express';
2
- import type { HttpServerAdapter } from './types';
3
- export default function createExpressAdapter(options?: unknown): HttpServerAdapter<Express>;