oc 0.49.13 → 0.49.14

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 (285) hide show
  1. package/.github/workflows/node.js.yml +1 -1
  2. package/.nvmrc +1 -1
  3. package/CHANGELOG.md +11 -1
  4. package/dist/cli/commands.d.ts +163 -163
  5. package/dist/cli/commands.js +162 -162
  6. package/dist/cli/domain/clean.d.ts +2 -2
  7. package/dist/cli/domain/clean.js +24 -24
  8. package/dist/cli/domain/get-components-by-dir.d.ts +1 -1
  9. package/dist/cli/domain/get-components-by-dir.js +41 -41
  10. package/dist/cli/domain/get-mocked-plugins.d.ts +10 -10
  11. package/dist/cli/domain/get-mocked-plugins.js +89 -89
  12. package/dist/cli/domain/handle-dependencies/ensure-compiler-is-declared-as-devDependency.d.ts +6 -6
  13. package/dist/cli/domain/handle-dependencies/ensure-compiler-is-declared-as-devDependency.js +16 -16
  14. package/dist/cli/domain/handle-dependencies/get-compiler.d.ts +10 -10
  15. package/dist/cli/domain/handle-dependencies/get-compiler.js +28 -28
  16. package/dist/cli/domain/handle-dependencies/get-missing-dependencies.d.ts +1 -1
  17. package/dist/cli/domain/handle-dependencies/get-missing-dependencies.js +18 -18
  18. package/dist/cli/domain/handle-dependencies/index.d.ts +10 -10
  19. package/dist/cli/domain/handle-dependencies/index.js +70 -70
  20. package/dist/cli/domain/handle-dependencies/install-compiler.d.ts +8 -8
  21. package/dist/cli/domain/handle-dependencies/install-compiler.js +54 -54
  22. package/dist/cli/domain/handle-dependencies/install-missing-dependencies.d.ts +5 -5
  23. package/dist/cli/domain/handle-dependencies/install-missing-dependencies.js +59 -59
  24. package/dist/cli/domain/handle-dependencies/link-missing-dependencies.d.ts +6 -6
  25. package/dist/cli/domain/handle-dependencies/link-missing-dependencies.js +32 -32
  26. package/dist/cli/domain/handle-dependencies/require-template.d.ts +17 -17
  27. package/dist/cli/domain/handle-dependencies/require-template.js +34 -34
  28. package/dist/cli/domain/init-template/index.d.ts +10 -10
  29. package/dist/cli/domain/init-template/index.js +40 -40
  30. package/dist/cli/domain/init-template/install-template.d.ts +11 -11
  31. package/dist/cli/domain/init-template/install-template.js +54 -54
  32. package/dist/cli/domain/init-template/scaffold.d.ts +11 -11
  33. package/dist/cli/domain/init-template/scaffold.js +30 -30
  34. package/dist/cli/domain/local.d.ts +21 -2
  35. package/dist/cli/domain/local.js +82 -82
  36. package/dist/cli/domain/mock.d.ts +5 -5
  37. package/dist/cli/domain/mock.js +33 -33
  38. package/dist/cli/domain/package-components.d.ts +9 -9
  39. package/dist/cli/domain/package-components.js +67 -67
  40. package/dist/cli/domain/registry.d.ts +20 -6
  41. package/dist/cli/domain/registry.js +139 -139
  42. package/dist/cli/domain/url-parser.d.ts +14 -14
  43. package/dist/cli/domain/url-parser.js +31 -31
  44. package/dist/cli/domain/watch.d.ts +1 -1
  45. package/dist/cli/domain/watch.js +29 -29
  46. package/dist/cli/facade/clean.d.ts +16 -16
  47. package/dist/cli/facade/clean.js +58 -58
  48. package/dist/cli/facade/dev.d.ts +114 -114
  49. package/dist/cli/facade/dev.js +176 -176
  50. package/dist/cli/facade/init.d.ts +18 -18
  51. package/dist/cli/facade/init.js +39 -39
  52. package/dist/cli/facade/mock.d.ts +18 -18
  53. package/dist/cli/facade/mock.js +12 -12
  54. package/dist/cli/facade/package.d.ts +19 -18
  55. package/dist/cli/facade/package.js +49 -49
  56. package/dist/cli/facade/preview.d.ts +14 -14
  57. package/dist/cli/facade/preview.js +20 -20
  58. package/dist/cli/facade/publish.d.ts +24 -23
  59. package/dist/cli/facade/publish.js +145 -145
  60. package/dist/cli/facade/registry-add.d.ts +14 -14
  61. package/dist/cli/facade/registry-add.js +18 -18
  62. package/dist/cli/facade/registry-ls.d.ts +10 -10
  63. package/dist/cli/facade/registry-ls.js +27 -27
  64. package/dist/cli/facade/registry-remove.d.ts +14 -14
  65. package/dist/cli/facade/registry-remove.js +18 -18
  66. package/dist/cli/facade/registry.d.ts +5 -5
  67. package/dist/cli/facade/registry.js +9 -9
  68. package/dist/cli/index.d.ts +1 -1
  69. package/dist/cli/index.js +91 -91
  70. package/dist/cli/logger.d.ts +8 -8
  71. package/dist/cli/logger.js +19 -19
  72. package/dist/cli/programmatic-api.d.ts +84 -84
  73. package/dist/cli/programmatic-api.js +66 -66
  74. package/dist/cli/validate-command.d.ts +2 -2
  75. package/dist/cli/validate-command.js +18 -18
  76. package/dist/components/oc-client/_package/package.json +1 -1
  77. package/dist/components/oc-client/_package/src/oc-client.min.js +2 -2
  78. package/dist/components/oc-client/_package/src/oc-client.min.map +1 -1
  79. package/dist/components/oc-client/package.json +1 -1
  80. package/dist/components/oc-client/src/oc-client.min.js +2 -2
  81. package/dist/components/oc-client/src/oc-client.min.map +1 -1
  82. package/dist/index.d.ts +3 -3
  83. package/dist/index.js +12 -12
  84. package/dist/oc-cli.d.ts +2 -2
  85. package/dist/oc-cli.js +3 -3
  86. package/dist/registry/app-start.d.ts +3 -2
  87. package/dist/registry/app-start.js +44 -44
  88. package/dist/registry/domain/authentication.d.ts +7 -7
  89. package/dist/registry/domain/authentication.js +53 -53
  90. package/dist/registry/domain/components-cache/components-list.d.ts +8 -8
  91. package/dist/registry/domain/components-cache/components-list.js +50 -50
  92. package/dist/registry/domain/components-cache/index.d.ts +7 -7
  93. package/dist/registry/domain/components-cache/index.js +76 -76
  94. package/dist/registry/domain/components-details.d.ts +6 -6
  95. package/dist/registry/domain/components-details.js +64 -64
  96. package/dist/registry/domain/events-handler.d.ts +40 -40
  97. package/dist/registry/domain/events-handler.js +37 -37
  98. package/dist/registry/domain/extract-package.d.ts +8 -8
  99. package/dist/registry/domain/extract-package.js +30 -26
  100. package/dist/registry/domain/get-package-json-from-temp-dir.d.ts +2 -2
  101. package/dist/registry/domain/get-package-json-from-temp-dir.js +11 -11
  102. package/dist/registry/domain/nested-renderer.d.ts +14 -14
  103. package/dist/registry/domain/nested-renderer.js +59 -59
  104. package/dist/registry/domain/options-sanitiser.d.ts +6 -6
  105. package/dist/registry/domain/options-sanitiser.js +109 -106
  106. package/dist/registry/domain/plugins-initialiser.d.ts +3 -3
  107. package/dist/registry/domain/plugins-initialiser.js +95 -95
  108. package/dist/registry/domain/register-templates.d.ts +5 -5
  109. package/dist/registry/domain/register-templates.js +37 -30
  110. package/dist/registry/domain/repository.d.ts +22 -2
  111. package/dist/registry/domain/repository.js +237 -237
  112. package/dist/registry/domain/require-wrapper.d.ts +2 -2
  113. package/dist/registry/domain/require-wrapper.js +33 -33
  114. package/dist/registry/domain/sanitiser.d.ts +2 -2
  115. package/dist/registry/domain/sanitiser.js +52 -52
  116. package/dist/registry/domain/storage-adapter.d.ts +10 -10
  117. package/dist/registry/domain/storage-adapter.js +55 -55
  118. package/dist/registry/domain/url-builder.d.ts +10 -10
  119. package/dist/registry/domain/url-builder.js +60 -60
  120. package/dist/registry/domain/validators/component-parameters.d.ts +11 -11
  121. package/dist/registry/domain/validators/component-parameters.js +79 -79
  122. package/dist/registry/domain/validators/index.d.ts +16 -16
  123. package/dist/registry/domain/validators/index.js +29 -29
  124. package/dist/registry/domain/validators/node-version.d.ts +15 -15
  125. package/dist/registry/domain/validators/node-version.js +40 -40
  126. package/dist/registry/domain/validators/oc-cli-version.d.ts +15 -15
  127. package/dist/registry/domain/validators/oc-cli-version.js +34 -34
  128. package/dist/registry/domain/validators/package-json-validator.d.ts +13 -13
  129. package/dist/registry/domain/validators/package-json-validator.js +23 -23
  130. package/dist/registry/domain/validators/plugins-requirements.d.ts +9 -9
  131. package/dist/registry/domain/validators/plugins-requirements.js +22 -22
  132. package/dist/registry/domain/validators/registry-configuration.d.ts +9 -9
  133. package/dist/registry/domain/validators/registry-configuration.js +113 -113
  134. package/dist/registry/domain/validators/uploaded-package.d.ts +14 -14
  135. package/dist/registry/domain/validators/uploaded-package.js +25 -25
  136. package/dist/registry/domain/version-handler.d.ts +2 -2
  137. package/dist/registry/domain/version-handler.js +22 -22
  138. package/dist/registry/index.d.ts +48 -48
  139. package/dist/registry/index.js +107 -107
  140. package/dist/registry/middleware/base-url-handler.d.ts +2 -2
  141. package/dist/registry/middleware/base-url-handler.js +12 -12
  142. package/dist/registry/middleware/cors.d.ts +2 -2
  143. package/dist/registry/middleware/cors.js +11 -11
  144. package/dist/registry/middleware/discovery-handler.d.ts +2 -2
  145. package/dist/registry/middleware/discovery-handler.js +15 -15
  146. package/dist/registry/middleware/file-uploads.d.ts +2 -2
  147. package/dist/registry/middleware/file-uploads.js +23 -23
  148. package/dist/registry/middleware/index.d.ts +3 -3
  149. package/dist/registry/middleware/index.js +48 -48
  150. package/dist/registry/middleware/request-handler.d.ts +2 -2
  151. package/dist/registry/middleware/request-handler.js +30 -30
  152. package/dist/registry/router.d.ts +4 -3
  153. package/dist/registry/router.js +56 -56
  154. package/dist/registry/routes/component-info.d.ts +4 -3
  155. package/dist/registry/routes/component-info.js +90 -90
  156. package/dist/registry/routes/component-preview.d.ts +4 -3
  157. package/dist/registry/routes/component-preview.js +68 -68
  158. package/dist/registry/routes/component.d.ts +4 -3
  159. package/dist/registry/routes/component.js +43 -43
  160. package/dist/registry/routes/components.d.ts +4 -3
  161. package/dist/registry/routes/components.js +78 -78
  162. package/dist/registry/routes/dependencies.d.ts +3 -3
  163. package/dist/registry/routes/dependencies.js +28 -28
  164. package/dist/registry/routes/helpers/apply-default-values.d.ts +2 -2
  165. package/dist/registry/routes/helpers/apply-default-values.js +13 -13
  166. package/dist/registry/routes/helpers/get-available-dependencies.d.ts +8 -8
  167. package/dist/registry/routes/helpers/get-available-dependencies.js +24 -24
  168. package/dist/registry/routes/helpers/get-component-fallback.d.ts +17 -17
  169. package/dist/registry/routes/helpers/get-component-fallback.js +91 -91
  170. package/dist/registry/routes/helpers/get-component-retrieving-info.d.ts +20 -20
  171. package/dist/registry/routes/helpers/get-component-retrieving-info.js +24 -24
  172. package/dist/registry/routes/helpers/get-component.d.ts +34 -33
  173. package/dist/registry/routes/helpers/get-component.js +406 -406
  174. package/dist/registry/routes/helpers/get-components-history.d.ts +8 -8
  175. package/dist/registry/routes/helpers/get-components-history.js +28 -28
  176. package/dist/registry/routes/helpers/is-url-discoverable.d.ts +3 -3
  177. package/dist/registry/routes/helpers/is-url-discoverable.js +22 -22
  178. package/dist/registry/routes/index.d.ts +3 -3
  179. package/dist/registry/routes/index.js +93 -93
  180. package/dist/registry/routes/plugins.d.ts +3 -3
  181. package/dist/registry/routes/plugins.js +17 -17
  182. package/dist/registry/routes/publish.d.ts +3 -3
  183. package/dist/registry/routes/publish.js +97 -97
  184. package/dist/registry/routes/static-redirector.d.ts +3 -3
  185. package/dist/registry/routes/static-redirector.js +63 -63
  186. package/dist/registry/views/index.d.ts +2 -2
  187. package/dist/registry/views/index.js +39 -39
  188. package/dist/registry/views/info.d.ts +16 -16
  189. package/dist/registry/views/info.js +39 -39
  190. package/dist/registry/views/partials/component-author.d.ts +8 -8
  191. package/dist/registry/views/partials/component-author.js +20 -20
  192. package/dist/registry/views/partials/component-parameters.d.ts +5 -5
  193. package/dist/registry/views/partials/component-parameters.js +24 -24
  194. package/dist/registry/views/partials/component-state.d.ts +5 -5
  195. package/dist/registry/views/partials/component-state.js +6 -6
  196. package/dist/registry/views/partials/component-versions.d.ts +5 -5
  197. package/dist/registry/views/partials/component-versions.js +9 -9
  198. package/dist/registry/views/partials/components-dependencies.d.ts +2 -2
  199. package/dist/registry/views/partials/components-dependencies.js +12 -12
  200. package/dist/registry/views/partials/components-history.d.ts +2 -2
  201. package/dist/registry/views/partials/components-history.js +10 -10
  202. package/dist/registry/views/partials/components-list.d.ts +2 -2
  203. package/dist/registry/views/partials/components-list.js +26 -26
  204. package/dist/registry/views/partials/components-plugins.d.ts +2 -2
  205. package/dist/registry/views/partials/components-plugins.js +8 -8
  206. package/dist/registry/views/partials/components-templates.d.ts +2 -2
  207. package/dist/registry/views/partials/components-templates.js +14 -14
  208. package/dist/registry/views/partials/layout.d.ts +8 -8
  209. package/dist/registry/views/partials/layout.js +11 -11
  210. package/dist/registry/views/partials/property.d.ts +2 -2
  211. package/dist/registry/views/partials/property.js +11 -11
  212. package/dist/registry/views/partials/selected-checkbox.d.ts +4 -4
  213. package/dist/registry/views/partials/selected-checkbox.js +7 -7
  214. package/dist/registry/views/preview.d.ts +8 -8
  215. package/dist/registry/views/preview.js +9 -9
  216. package/dist/registry/views/static/index.d.ts +2 -2
  217. package/dist/registry/views/static/index.js +3 -3
  218. package/dist/registry/views/static/info.d.ts +2 -2
  219. package/dist/registry/views/static/info.js +3 -3
  220. package/dist/registry/views/static/style.d.ts +2 -2
  221. package/dist/registry/views/static/style.js +3 -3
  222. package/dist/resources/index.d.ts +134 -134
  223. package/dist/resources/index.js +145 -145
  224. package/dist/resources/settings.d.ts +17 -17
  225. package/dist/resources/settings.js +18 -18
  226. package/dist/types.d.ts +229 -287
  227. package/dist/types.js +2 -2
  228. package/dist/utils/clean-require.d.ts +16 -16
  229. package/dist/utils/clean-require.js +18 -18
  230. package/dist/utils/date-stringify.d.ts +1 -1
  231. package/dist/utils/date-stringify.js +22 -22
  232. package/dist/utils/error-to-string.d.ts +1 -1
  233. package/dist/utils/error-to-string.js +15 -15
  234. package/dist/utils/is-template-legacy.d.ts +3 -3
  235. package/dist/utils/is-template-legacy.js +6 -6
  236. package/dist/utils/is-template-valid.d.ts +4 -4
  237. package/dist/utils/is-template-valid.js +12 -12
  238. package/dist/utils/module-exists.d.ts +1 -1
  239. package/dist/utils/module-exists.js +15 -15
  240. package/dist/utils/npm-utils.d.ts +20 -20
  241. package/dist/utils/npm-utils.js +74 -74
  242. package/dist/utils/put.d.ts +2 -2
  243. package/dist/utils/put.js +29 -29
  244. package/dist/utils/strip-version.d.ts +1 -1
  245. package/dist/utils/strip-version.js +11 -11
  246. package/logintervals.md +1 -1
  247. package/package.json +7 -7
  248. package/src/cli/domain/local.ts +12 -5
  249. package/src/cli/domain/package-components.ts +1 -1
  250. package/src/cli/domain/registry.ts +10 -8
  251. package/src/cli/facade/clean.ts +1 -1
  252. package/src/cli/facade/dev.ts +1 -1
  253. package/src/cli/facade/init.ts +1 -1
  254. package/src/cli/facade/mock.ts +1 -1
  255. package/src/cli/facade/package.ts +2 -1
  256. package/src/cli/facade/preview.ts +1 -1
  257. package/src/cli/facade/publish.ts +3 -1
  258. package/src/cli/facade/registry-add.ts +1 -1
  259. package/src/cli/facade/registry-ls.ts +1 -1
  260. package/src/cli/facade/registry-remove.ts +1 -1
  261. package/src/cli/programmatic-api.ts +2 -3
  262. package/src/components/oc-client/_package/package.json +1 -1
  263. package/src/components/oc-client/_package/src/oc-client.min.js +2 -2
  264. package/src/components/oc-client/_package/src/oc-client.min.map +1 -1
  265. package/src/components/oc-client/package.json +1 -1
  266. package/src/components/oc-client/src/oc-client.min.js +2 -2
  267. package/src/components/oc-client/src/oc-client.min.map +1 -1
  268. package/src/oc-cli.js +0 -0
  269. package/src/registry/app-start.ts +2 -1
  270. package/src/registry/domain/components-cache/components-list.ts +2 -2
  271. package/src/registry/domain/extract-package.ts +7 -2
  272. package/src/registry/domain/options-sanitiser.ts +4 -0
  273. package/src/registry/domain/register-templates.ts +12 -2
  274. package/src/registry/domain/repository.ts +42 -17
  275. package/src/registry/index.ts +4 -1
  276. package/src/registry/router.ts +2 -1
  277. package/src/registry/routes/component-info.ts +2 -1
  278. package/src/registry/routes/component-preview.ts +2 -1
  279. package/src/registry/routes/component.ts +2 -1
  280. package/src/registry/routes/components.ts +2 -1
  281. package/src/registry/routes/helpers/get-component.ts +2 -1
  282. package/src/registry/routes/index.ts +2 -1
  283. package/src/registry/routes/publish.ts +3 -3
  284. package/src/registry/routes/static-redirector.ts +2 -2
  285. package/src/types.ts +2 -86
@@ -1,406 +1,406 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
- }) : (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- o[k2] = m[k];
8
- }));
9
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
- Object.defineProperty(o, "default", { enumerable: true, value: v });
11
- }) : function(o, v) {
12
- o["default"] = v;
13
- });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
21
- var __importDefault = (this && this.__importDefault) || function (mod) {
22
- return (mod && mod.__esModule) ? mod : { "default": mod };
23
- };
24
- Object.defineProperty(exports, "__esModule", { value: true });
25
- const accept_language_parser_1 = __importDefault(require("accept-language-parser"));
26
- const nice_cache_1 = __importDefault(require("nice-cache"));
27
- const oc_client_1 = __importDefault(require("oc-client"));
28
- const domain_1 = __importDefault(require("domain"));
29
- const oc_empty_response_handler_1 = __importDefault(require("oc-empty-response-handler"));
30
- const vm_1 = __importDefault(require("vm"));
31
- const lodash_1 = __importDefault(require("lodash"));
32
- const apply_default_values_1 = __importDefault(require("./apply-default-values"));
33
- const events_handler_1 = __importDefault(require("../../domain/events-handler"));
34
- const get_component_retrieving_info_1 = __importDefault(require("./get-component-retrieving-info"));
35
- const getComponentFallback = __importStar(require("./get-component-fallback"));
36
- const is_template_legacy_1 = __importDefault(require("../../../utils/is-template-legacy"));
37
- const nested_renderer_1 = __importDefault(require("../../domain/nested-renderer"));
38
- const require_wrapper_1 = __importDefault(require("../../domain/require-wrapper"));
39
- const sanitiser = __importStar(require("../../domain/sanitiser"));
40
- const settings_1 = __importDefault(require("../../../resources/settings"));
41
- const resources_1 = __importDefault(require("../../../resources"));
42
- const urlBuilder = __importStar(require("../../domain/url-builder"));
43
- const validator = __importStar(require("../../domain/validators"));
44
- const universalify_1 = require("universalify");
45
- function getComponent(conf, repository) {
46
- const client = (0, oc_client_1.default)({ templates: conf.templates });
47
- const cache = new nice_cache_1.default({
48
- verbose: !!conf.verbosity,
49
- refreshInterval: conf.refreshInterval
50
- });
51
- const renderer = function (options, cb) {
52
- const nestedRenderer = (0, nested_renderer_1.default)(renderer, options.conf);
53
- const retrievingInfo = (0, get_component_retrieving_info_1.default)(options);
54
- let responseHeaders = {};
55
- const getLanguage = () => {
56
- const paramOverride = !!options.parameters && options.parameters['__ocAcceptLanguage'];
57
- return paramOverride || options.headers['accept-language'];
58
- };
59
- const callback = (result) => {
60
- if (result.response.error) {
61
- retrievingInfo.extend(result.response);
62
- }
63
- retrievingInfo.extend({ status: result.status });
64
- Object.assign(result.response, {
65
- name: options.name,
66
- requestVersion: options.version || ''
67
- });
68
- events_handler_1.default.fire('component-retrieved', retrievingInfo.getData());
69
- return cb(result);
70
- };
71
- let componentCallbackDone = false;
72
- const conf = options.conf;
73
- const acceptLanguage = getLanguage();
74
- const requestedComponent = {
75
- name: options.name,
76
- version: options.version || '',
77
- parameters: options.parameters
78
- };
79
- (0, universalify_1.fromPromise)(repository.getComponent)(requestedComponent.name, requestedComponent.version, (err, component) => {
80
- // check route exist for component and version
81
- if (err) {
82
- if (conf.fallbackRegistryUrl) {
83
- return getComponentFallback.getComponent(conf.fallbackRegistryUrl, options.headers, requestedComponent, callback);
84
- }
85
- return callback({
86
- status: 404,
87
- response: {
88
- code: 'NOT_FOUND',
89
- error: err
90
- }
91
- });
92
- }
93
- // Skip rendering and return only the component info in case of 'accept: application/vnd.oc.info+json'
94
- if (options.headers.accept === settings_1.default.registry.acceptInfoHeader) {
95
- return callback({
96
- status: 200,
97
- response: {
98
- type: conf.local ? 'oc-component-local' : 'oc-component',
99
- version: component.version,
100
- requestVersion: requestedComponent.version,
101
- name: requestedComponent.name
102
- }
103
- });
104
- }
105
- // check component requirements are satisfied by registry
106
- const pluginsCompatibility = validator.validatePluginsRequirements(component.oc.plugins, conf.plugins);
107
- if (!pluginsCompatibility.isValid) {
108
- return callback({
109
- status: 501,
110
- response: {
111
- code: 'PLUGIN_MISSING_FROM_REGISTRY',
112
- error: resources_1.default.errors.registry.PLUGIN_NOT_IMPLEMENTED(pluginsCompatibility.missing.join(', ')),
113
- missingPlugins: pluginsCompatibility.missing
114
- }
115
- });
116
- }
117
- // sanitise and check params
118
- const appliedParams = (0, apply_default_values_1.default)(requestedComponent.parameters, component.oc.parameters);
119
- const params = sanitiser.sanitiseComponentParameters(appliedParams, component.oc.parameters);
120
- const validationResult = validator.validateComponentParameters(
121
- // @ts-ignore
122
- params, component.oc.parameters);
123
- if (!validationResult.isValid) {
124
- return callback({
125
- status: 400,
126
- response: {
127
- code: 'NOT_VALID_REQUEST',
128
- error: validationResult.errors.message
129
- }
130
- });
131
- }
132
- // Support legacy templates
133
- let templateType = component.oc.files.template.type;
134
- const isLegacyTemplate = (0, is_template_legacy_1.default)(templateType);
135
- if (isLegacyTemplate) {
136
- templateType = `oc-template-${templateType}`;
137
- }
138
- if (!repository.getTemplate(templateType)) {
139
- return callback({
140
- status: 400,
141
- response: {
142
- code: 'TEMPLATE_NOT_SUPPORTED',
143
- error: resources_1.default.errors.registry.TEMPLATE_NOT_SUPPORTED(templateType)
144
- }
145
- });
146
- }
147
- const filterCustomHeaders = (headers, requestedVersion, actualVersion) => {
148
- const needFiltering = !lodash_1.default.isEmpty(headers) &&
149
- !lodash_1.default.isEmpty(conf.customHeadersToSkipOnWeakVersion) &&
150
- requestedVersion !== actualVersion;
151
- return needFiltering
152
- ? lodash_1.default.omit(headers, conf.customHeadersToSkipOnWeakVersion)
153
- : headers;
154
- };
155
- const returnComponent = (err, data) => {
156
- if (componentCallbackDone) {
157
- return;
158
- }
159
- componentCallbackDone = true;
160
- const componentHref = urlBuilder.component({
161
- name: component.name,
162
- version: requestedComponent.version,
163
- // @ts-ignore
164
- parameters: params
165
- }, conf.baseUrl);
166
- const isUnrendered = options.headers.accept === settings_1.default.registry.acceptUnrenderedHeader;
167
- const isValidClientRequest = options.headers['user-agent'] &&
168
- !!options.headers['user-agent'].match('oc-client-');
169
- const parseTemplatesHeader = (t) => t.split(';').map(t => t.split(',')[0]);
170
- const supportedTemplates = options.headers['templates']
171
- ? parseTemplatesHeader(options.headers['templates'])
172
- : [];
173
- const isTemplateSupportedByClient = Boolean(isValidClientRequest &&
174
- options.headers['templates'] &&
175
- (lodash_1.default.includes(supportedTemplates, component.oc.files.template.type) ||
176
- lodash_1.default.includes(supportedTemplates, templateType)));
177
- let renderMode = 'rendered';
178
- if (isUnrendered) {
179
- renderMode = 'unrendered';
180
- if (isValidClientRequest &&
181
- !isTemplateSupportedByClient &&
182
- !isLegacyTemplate) {
183
- renderMode = 'rendered';
184
- }
185
- }
186
- retrievingInfo.extend({
187
- href: componentHref,
188
- version: component.version,
189
- renderMode
190
- });
191
- if (!!err || !data) {
192
- err =
193
- err ||
194
- new Error(resources_1.default.errors.registry.DATA_OBJECT_IS_UNDEFINED);
195
- return callback({
196
- status: Number(err.status) || 500,
197
- response: {
198
- code: 'GENERIC_ERROR',
199
- error: resources_1.default.errors.registry.COMPONENT_EXECUTION_ERROR(err.message || ''),
200
- details: {
201
- message: err.message,
202
- stack: err.stack,
203
- originalError: err
204
- }
205
- }
206
- });
207
- }
208
- const response = {
209
- type: conf.local ? 'oc-component-local' : 'oc-component',
210
- version: component.version,
211
- requestVersion: requestedComponent.version,
212
- name: requestedComponent.name,
213
- renderMode
214
- };
215
- if (!options.omitHref) {
216
- response.href = componentHref;
217
- }
218
- responseHeaders = filterCustomHeaders(responseHeaders, requestedComponent.version, component.version);
219
- if (renderMode === 'unrendered') {
220
- callback({
221
- status: 200,
222
- headers: responseHeaders,
223
- response: Object.assign(response, {
224
- data: data,
225
- template: {
226
- src: repository.getStaticFilePath(component.name, component.version, 'template.js'),
227
- type: component.oc.files.template.type,
228
- key: component.oc.files.template.hashKey
229
- }
230
- })
231
- });
232
- }
233
- else {
234
- const cacheKey = `${component.name}/${component.version}/template.js`;
235
- const cached = cache.get('file-contents', cacheKey);
236
- const key = component.oc.files.template.hashKey;
237
- const renderOptions = {
238
- href: componentHref,
239
- key,
240
- version: component.version,
241
- name: component.name,
242
- templateType: component.oc.files.template.type,
243
- container: component.oc.container,
244
- renderInfo: component.oc.renderInfo
245
- };
246
- const returnResult = (template) => {
247
- client.renderTemplate(template, data, renderOptions, (err, html) => {
248
- if (err) {
249
- return callback({
250
- status: 500,
251
- response: {
252
- code: 'INTERNAL_SERVER_ERROR',
253
- error: err
254
- }
255
- });
256
- }
257
- callback({
258
- status: 200,
259
- headers: responseHeaders,
260
- response: Object.assign(response, { html })
261
- });
262
- });
263
- };
264
- if (!!cached && !conf.hotReloading) {
265
- returnResult(cached);
266
- }
267
- else {
268
- (0, universalify_1.fromPromise)(repository.getCompiledView)(component.name, component.version, (_err, templateText) => {
269
- let ocTemplate;
270
- try {
271
- ocTemplate = repository.getTemplate(templateType);
272
- }
273
- catch (err) {
274
- return callback({
275
- status: 400,
276
- response: {
277
- code: 'TEMPLATE_NOT_SUPPORTED',
278
- error: resources_1.default.errors.registry.TEMPLATE_NOT_SUPPORTED(templateType)
279
- }
280
- });
281
- }
282
- const template = ocTemplate.getCompiledTemplate(templateText, key);
283
- cache.set('file-contents', cacheKey, template);
284
- returnResult(template);
285
- });
286
- }
287
- }
288
- };
289
- if (!component.oc.files.dataProvider) {
290
- returnComponent(null, {});
291
- }
292
- else {
293
- const cacheKey = `${component.name}/${component.version}/server.js`;
294
- const cached = cache.get('file-contents', cacheKey);
295
- const domain = domain_1.default.create();
296
- const setEmptyResponse = oc_empty_response_handler_1.default.contextDecorator(returnComponent);
297
- const contextObj = {
298
- acceptLanguage: accept_language_parser_1.default.parse(acceptLanguage),
299
- baseUrl: conf.baseUrl,
300
- env: conf.env,
301
- params,
302
- plugins: conf.plugins,
303
- renderComponent: (0, universalify_1.fromPromise)(nestedRenderer.renderComponent),
304
- renderComponents: (0, universalify_1.fromPromise)(nestedRenderer.renderComponents),
305
- requestHeaders: options.headers,
306
- requestIp: options.ip,
307
- setEmptyResponse,
308
- staticPath: repository
309
- .getStaticFilePath(component.name, component.version, '')
310
- .replace('https:', ''),
311
- setHeader: (header, value) => {
312
- if (!(typeof header === 'string' && typeof value === 'string')) {
313
- throw resources_1.default.errors.registry
314
- .COMPONENT_SET_HEADER_PARAMETERS_NOT_VALID;
315
- }
316
- if (header && value) {
317
- responseHeaders = responseHeaders || {};
318
- responseHeaders[header.toLowerCase()] = value;
319
- }
320
- },
321
- templates: repository.getTemplatesInfo()
322
- };
323
- const setCallbackTimeout = () => {
324
- const executionTimeout = conf.executionTimeout;
325
- if (executionTimeout) {
326
- setTimeout(() => {
327
- const message = `timeout (${executionTimeout * 1000}ms)`;
328
- returnComponent({ message }, undefined);
329
- domain.exit();
330
- }, executionTimeout * 1000);
331
- }
332
- };
333
- if (!!cached && !conf.hotReloading) {
334
- domain.on('error', returnComponent);
335
- try {
336
- domain.run(() => {
337
- cached(contextObj, returnComponent);
338
- setCallbackTimeout();
339
- });
340
- }
341
- catch (e) {
342
- return returnComponent(e, undefined);
343
- }
344
- }
345
- else {
346
- (0, universalify_1.fromPromise)(repository.getDataProvider)(component.name, component.version, (err, dataProvider) => {
347
- if (err) {
348
- componentCallbackDone = true;
349
- return callback({
350
- status: 502,
351
- response: {
352
- code: 'DATA_RESOLVING_ERROR',
353
- error: resources_1.default.errors.registry.RESOLVING_ERROR
354
- }
355
- });
356
- }
357
- const context = {
358
- require: (0, require_wrapper_1.default)(conf.dependencies),
359
- module: {
360
- exports: {}
361
- },
362
- console: conf.local ? console : { log: lodash_1.default.noop },
363
- setTimeout,
364
- Buffer
365
- };
366
- const handleError = (err) => {
367
- if (err.code === 'DEPENDENCY_MISSING_FROM_REGISTRY') {
368
- componentCallbackDone = true;
369
- return callback({
370
- status: 501,
371
- response: {
372
- code: err.code,
373
- error: resources_1.default.errors.registry.DEPENDENCY_NOT_FOUND(err.missing.join(', ')),
374
- missingDependencies: err.missing
375
- }
376
- });
377
- }
378
- returnComponent(err, undefined);
379
- };
380
- const options = conf.local
381
- ? {
382
- displayErrors: true,
383
- filename: dataProvider.filePath
384
- }
385
- : {};
386
- try {
387
- vm_1.default.runInNewContext(dataProvider.content, context, options);
388
- const processData = context.module.exports['data'];
389
- cache.set('file-contents', cacheKey, processData);
390
- domain.on('error', handleError);
391
- domain.run(() => {
392
- processData(contextObj, returnComponent);
393
- setCallbackTimeout();
394
- });
395
- }
396
- catch (err) {
397
- handleError(err);
398
- }
399
- });
400
- }
401
- }
402
- });
403
- };
404
- return renderer;
405
- }
406
- exports.default = getComponent;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ const accept_language_parser_1 = __importDefault(require("accept-language-parser"));
26
+ const nice_cache_1 = __importDefault(require("nice-cache"));
27
+ const oc_client_1 = __importDefault(require("oc-client"));
28
+ const domain_1 = __importDefault(require("domain"));
29
+ const oc_empty_response_handler_1 = __importDefault(require("oc-empty-response-handler"));
30
+ const vm_1 = __importDefault(require("vm"));
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const apply_default_values_1 = __importDefault(require("./apply-default-values"));
33
+ const events_handler_1 = __importDefault(require("../../domain/events-handler"));
34
+ const get_component_retrieving_info_1 = __importDefault(require("./get-component-retrieving-info"));
35
+ const getComponentFallback = __importStar(require("./get-component-fallback"));
36
+ const is_template_legacy_1 = __importDefault(require("../../../utils/is-template-legacy"));
37
+ const nested_renderer_1 = __importDefault(require("../../domain/nested-renderer"));
38
+ const require_wrapper_1 = __importDefault(require("../../domain/require-wrapper"));
39
+ const sanitiser = __importStar(require("../../domain/sanitiser"));
40
+ const settings_1 = __importDefault(require("../../../resources/settings"));
41
+ const resources_1 = __importDefault(require("../../../resources"));
42
+ const urlBuilder = __importStar(require("../../domain/url-builder"));
43
+ const validator = __importStar(require("../../domain/validators"));
44
+ const universalify_1 = require("universalify");
45
+ function getComponent(conf, repository) {
46
+ const client = (0, oc_client_1.default)({ templates: conf.templates });
47
+ const cache = new nice_cache_1.default({
48
+ verbose: !!conf.verbosity,
49
+ refreshInterval: conf.refreshInterval
50
+ });
51
+ const renderer = function (options, cb) {
52
+ const nestedRenderer = (0, nested_renderer_1.default)(renderer, options.conf);
53
+ const retrievingInfo = (0, get_component_retrieving_info_1.default)(options);
54
+ let responseHeaders = {};
55
+ const getLanguage = () => {
56
+ const paramOverride = !!options.parameters && options.parameters['__ocAcceptLanguage'];
57
+ return paramOverride || options.headers['accept-language'];
58
+ };
59
+ const callback = (result) => {
60
+ if (result.response.error) {
61
+ retrievingInfo.extend(result.response);
62
+ }
63
+ retrievingInfo.extend({ status: result.status });
64
+ Object.assign(result.response, {
65
+ name: options.name,
66
+ requestVersion: options.version || ''
67
+ });
68
+ events_handler_1.default.fire('component-retrieved', retrievingInfo.getData());
69
+ return cb(result);
70
+ };
71
+ let componentCallbackDone = false;
72
+ const conf = options.conf;
73
+ const acceptLanguage = getLanguage();
74
+ const requestedComponent = {
75
+ name: options.name,
76
+ version: options.version || '',
77
+ parameters: options.parameters
78
+ };
79
+ (0, universalify_1.fromPromise)(repository.getComponent)(requestedComponent.name, requestedComponent.version, (err, component) => {
80
+ // check route exist for component and version
81
+ if (err) {
82
+ if (conf.fallbackRegistryUrl) {
83
+ return getComponentFallback.getComponent(conf.fallbackRegistryUrl, options.headers, requestedComponent, callback);
84
+ }
85
+ return callback({
86
+ status: 404,
87
+ response: {
88
+ code: 'NOT_FOUND',
89
+ error: err
90
+ }
91
+ });
92
+ }
93
+ // Skip rendering and return only the component info in case of 'accept: application/vnd.oc.info+json'
94
+ if (options.headers.accept === settings_1.default.registry.acceptInfoHeader) {
95
+ return callback({
96
+ status: 200,
97
+ response: {
98
+ type: conf.local ? 'oc-component-local' : 'oc-component',
99
+ version: component.version,
100
+ requestVersion: requestedComponent.version,
101
+ name: requestedComponent.name
102
+ }
103
+ });
104
+ }
105
+ // check component requirements are satisfied by registry
106
+ const pluginsCompatibility = validator.validatePluginsRequirements(component.oc.plugins, conf.plugins);
107
+ if (!pluginsCompatibility.isValid) {
108
+ return callback({
109
+ status: 501,
110
+ response: {
111
+ code: 'PLUGIN_MISSING_FROM_REGISTRY',
112
+ error: resources_1.default.errors.registry.PLUGIN_NOT_IMPLEMENTED(pluginsCompatibility.missing.join(', ')),
113
+ missingPlugins: pluginsCompatibility.missing
114
+ }
115
+ });
116
+ }
117
+ // sanitise and check params
118
+ const appliedParams = (0, apply_default_values_1.default)(requestedComponent.parameters, component.oc.parameters);
119
+ const params = sanitiser.sanitiseComponentParameters(appliedParams, component.oc.parameters);
120
+ const validationResult = validator.validateComponentParameters(
121
+ // @ts-ignore
122
+ params, component.oc.parameters);
123
+ if (!validationResult.isValid) {
124
+ return callback({
125
+ status: 400,
126
+ response: {
127
+ code: 'NOT_VALID_REQUEST',
128
+ error: validationResult.errors.message
129
+ }
130
+ });
131
+ }
132
+ // Support legacy templates
133
+ let templateType = component.oc.files.template.type;
134
+ const isLegacyTemplate = (0, is_template_legacy_1.default)(templateType);
135
+ if (isLegacyTemplate) {
136
+ templateType = `oc-template-${templateType}`;
137
+ }
138
+ if (!repository.getTemplate(templateType)) {
139
+ return callback({
140
+ status: 400,
141
+ response: {
142
+ code: 'TEMPLATE_NOT_SUPPORTED',
143
+ error: resources_1.default.errors.registry.TEMPLATE_NOT_SUPPORTED(templateType)
144
+ }
145
+ });
146
+ }
147
+ const filterCustomHeaders = (headers, requestedVersion, actualVersion) => {
148
+ const needFiltering = !lodash_1.default.isEmpty(headers) &&
149
+ !lodash_1.default.isEmpty(conf.customHeadersToSkipOnWeakVersion) &&
150
+ requestedVersion !== actualVersion;
151
+ return needFiltering
152
+ ? lodash_1.default.omit(headers, conf.customHeadersToSkipOnWeakVersion)
153
+ : headers;
154
+ };
155
+ const returnComponent = (err, data) => {
156
+ if (componentCallbackDone) {
157
+ return;
158
+ }
159
+ componentCallbackDone = true;
160
+ const componentHref = urlBuilder.component({
161
+ name: component.name,
162
+ version: requestedComponent.version,
163
+ // @ts-ignore
164
+ parameters: params
165
+ }, conf.baseUrl);
166
+ const isUnrendered = options.headers.accept === settings_1.default.registry.acceptUnrenderedHeader;
167
+ const isValidClientRequest = options.headers['user-agent'] &&
168
+ !!options.headers['user-agent'].match('oc-client-');
169
+ const parseTemplatesHeader = (t) => t.split(';').map(t => t.split(',')[0]);
170
+ const supportedTemplates = options.headers['templates']
171
+ ? parseTemplatesHeader(options.headers['templates'])
172
+ : [];
173
+ const isTemplateSupportedByClient = Boolean(isValidClientRequest &&
174
+ options.headers['templates'] &&
175
+ (lodash_1.default.includes(supportedTemplates, component.oc.files.template.type) ||
176
+ lodash_1.default.includes(supportedTemplates, templateType)));
177
+ let renderMode = 'rendered';
178
+ if (isUnrendered) {
179
+ renderMode = 'unrendered';
180
+ if (isValidClientRequest &&
181
+ !isTemplateSupportedByClient &&
182
+ !isLegacyTemplate) {
183
+ renderMode = 'rendered';
184
+ }
185
+ }
186
+ retrievingInfo.extend({
187
+ href: componentHref,
188
+ version: component.version,
189
+ renderMode
190
+ });
191
+ if (!!err || !data) {
192
+ err =
193
+ err ||
194
+ new Error(resources_1.default.errors.registry.DATA_OBJECT_IS_UNDEFINED);
195
+ return callback({
196
+ status: Number(err.status) || 500,
197
+ response: {
198
+ code: 'GENERIC_ERROR',
199
+ error: resources_1.default.errors.registry.COMPONENT_EXECUTION_ERROR(err.message || ''),
200
+ details: {
201
+ message: err.message,
202
+ stack: err.stack,
203
+ originalError: err
204
+ }
205
+ }
206
+ });
207
+ }
208
+ const response = {
209
+ type: conf.local ? 'oc-component-local' : 'oc-component',
210
+ version: component.version,
211
+ requestVersion: requestedComponent.version,
212
+ name: requestedComponent.name,
213
+ renderMode
214
+ };
215
+ if (!options.omitHref) {
216
+ response.href = componentHref;
217
+ }
218
+ responseHeaders = filterCustomHeaders(responseHeaders, requestedComponent.version, component.version);
219
+ if (renderMode === 'unrendered') {
220
+ callback({
221
+ status: 200,
222
+ headers: responseHeaders,
223
+ response: Object.assign(response, {
224
+ data: data,
225
+ template: {
226
+ src: repository.getStaticFilePath(component.name, component.version, 'template.js'),
227
+ type: component.oc.files.template.type,
228
+ key: component.oc.files.template.hashKey
229
+ }
230
+ })
231
+ });
232
+ }
233
+ else {
234
+ const cacheKey = `${component.name}/${component.version}/template.js`;
235
+ const cached = cache.get('file-contents', cacheKey);
236
+ const key = component.oc.files.template.hashKey;
237
+ const renderOptions = {
238
+ href: componentHref,
239
+ key,
240
+ version: component.version,
241
+ name: component.name,
242
+ templateType: component.oc.files.template.type,
243
+ container: component.oc.container,
244
+ renderInfo: component.oc.renderInfo
245
+ };
246
+ const returnResult = (template) => {
247
+ client.renderTemplate(template, data, renderOptions, (err, html) => {
248
+ if (err) {
249
+ return callback({
250
+ status: 500,
251
+ response: {
252
+ code: 'INTERNAL_SERVER_ERROR',
253
+ error: err
254
+ }
255
+ });
256
+ }
257
+ callback({
258
+ status: 200,
259
+ headers: responseHeaders,
260
+ response: Object.assign(response, { html })
261
+ });
262
+ });
263
+ };
264
+ if (!!cached && !conf.hotReloading) {
265
+ returnResult(cached);
266
+ }
267
+ else {
268
+ (0, universalify_1.fromPromise)(repository.getCompiledView)(component.name, component.version, (_err, templateText) => {
269
+ let ocTemplate;
270
+ try {
271
+ ocTemplate = repository.getTemplate(templateType);
272
+ }
273
+ catch (err) {
274
+ return callback({
275
+ status: 400,
276
+ response: {
277
+ code: 'TEMPLATE_NOT_SUPPORTED',
278
+ error: resources_1.default.errors.registry.TEMPLATE_NOT_SUPPORTED(templateType)
279
+ }
280
+ });
281
+ }
282
+ const template = ocTemplate.getCompiledTemplate(templateText, key);
283
+ cache.set('file-contents', cacheKey, template);
284
+ returnResult(template);
285
+ });
286
+ }
287
+ }
288
+ };
289
+ if (!component.oc.files.dataProvider) {
290
+ returnComponent(null, {});
291
+ }
292
+ else {
293
+ const cacheKey = `${component.name}/${component.version}/server.js`;
294
+ const cached = cache.get('file-contents', cacheKey);
295
+ const domain = domain_1.default.create();
296
+ const setEmptyResponse = oc_empty_response_handler_1.default.contextDecorator(returnComponent);
297
+ const contextObj = {
298
+ acceptLanguage: accept_language_parser_1.default.parse(acceptLanguage),
299
+ baseUrl: conf.baseUrl,
300
+ env: conf.env,
301
+ params,
302
+ plugins: conf.plugins,
303
+ renderComponent: (0, universalify_1.fromPromise)(nestedRenderer.renderComponent),
304
+ renderComponents: (0, universalify_1.fromPromise)(nestedRenderer.renderComponents),
305
+ requestHeaders: options.headers,
306
+ requestIp: options.ip,
307
+ setEmptyResponse,
308
+ staticPath: repository
309
+ .getStaticFilePath(component.name, component.version, '')
310
+ .replace('https:', ''),
311
+ setHeader: (header, value) => {
312
+ if (!(typeof header === 'string' && typeof value === 'string')) {
313
+ throw resources_1.default.errors.registry
314
+ .COMPONENT_SET_HEADER_PARAMETERS_NOT_VALID;
315
+ }
316
+ if (header && value) {
317
+ responseHeaders = responseHeaders || {};
318
+ responseHeaders[header.toLowerCase()] = value;
319
+ }
320
+ },
321
+ templates: repository.getTemplatesInfo()
322
+ };
323
+ const setCallbackTimeout = () => {
324
+ const executionTimeout = conf.executionTimeout;
325
+ if (executionTimeout) {
326
+ setTimeout(() => {
327
+ const message = `timeout (${executionTimeout * 1000}ms)`;
328
+ returnComponent({ message }, undefined);
329
+ domain.exit();
330
+ }, executionTimeout * 1000);
331
+ }
332
+ };
333
+ if (!!cached && !conf.hotReloading) {
334
+ domain.on('error', returnComponent);
335
+ try {
336
+ domain.run(() => {
337
+ cached(contextObj, returnComponent);
338
+ setCallbackTimeout();
339
+ });
340
+ }
341
+ catch (e) {
342
+ return returnComponent(e, undefined);
343
+ }
344
+ }
345
+ else {
346
+ (0, universalify_1.fromPromise)(repository.getDataProvider)(component.name, component.version, (err, dataProvider) => {
347
+ if (err) {
348
+ componentCallbackDone = true;
349
+ return callback({
350
+ status: 502,
351
+ response: {
352
+ code: 'DATA_RESOLVING_ERROR',
353
+ error: resources_1.default.errors.registry.RESOLVING_ERROR
354
+ }
355
+ });
356
+ }
357
+ const context = {
358
+ require: (0, require_wrapper_1.default)(conf.dependencies),
359
+ module: {
360
+ exports: {}
361
+ },
362
+ console: conf.local ? console : { log: lodash_1.default.noop },
363
+ setTimeout,
364
+ Buffer
365
+ };
366
+ const handleError = (err) => {
367
+ if (err.code === 'DEPENDENCY_MISSING_FROM_REGISTRY') {
368
+ componentCallbackDone = true;
369
+ return callback({
370
+ status: 501,
371
+ response: {
372
+ code: err.code,
373
+ error: resources_1.default.errors.registry.DEPENDENCY_NOT_FOUND(err.missing.join(', ')),
374
+ missingDependencies: err.missing
375
+ }
376
+ });
377
+ }
378
+ returnComponent(err, undefined);
379
+ };
380
+ const options = conf.local
381
+ ? {
382
+ displayErrors: true,
383
+ filename: dataProvider.filePath
384
+ }
385
+ : {};
386
+ try {
387
+ vm_1.default.runInNewContext(dataProvider.content, context, options);
388
+ const processData = context.module.exports['data'];
389
+ cache.set('file-contents', cacheKey, processData);
390
+ domain.on('error', handleError);
391
+ domain.run(() => {
392
+ processData(contextObj, returnComponent);
393
+ setCallbackTimeout();
394
+ });
395
+ }
396
+ catch (err) {
397
+ handleError(err);
398
+ }
399
+ });
400
+ }
401
+ }
402
+ });
403
+ };
404
+ return renderer;
405
+ }
406
+ exports.default = getComponent;