oc 0.49.6 → 0.49.9

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