@squiz/render-runtime-lib 1.74.0 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/lib/PreviewComponentService.js +43 -0
  2. package/lib/PreviewComponentService.js.map +1 -0
  3. package/lib/PreviewComponentService.spec.js +64 -0
  4. package/lib/PreviewComponentService.spec.js.map +1 -0
  5. package/lib/RenderInputService.js +286 -0
  6. package/lib/RenderInputService.js.map +1 -0
  7. package/lib/RenderInputService.spec.js +645 -0
  8. package/lib/RenderInputService.spec.js.map +1 -0
  9. package/lib/component-runner/ComponentRootUrlResolver.js +3 -0
  10. package/lib/component-runner/ComponentRootUrlResolver.js.map +1 -0
  11. package/lib/component-runner/ComponentRunnerServiceWithWorkers.js +91 -0
  12. package/lib/component-runner/ComponentRunnerServiceWithWorkers.js.map +1 -0
  13. package/lib/component-runner/ComponentRunnerServiceWithWorkers.spec.js +104 -0
  14. package/lib/component-runner/ComponentRunnerServiceWithWorkers.spec.js.map +1 -0
  15. package/lib/component-runner/ComponentRuntimeContext.d.ts +1 -8
  16. package/lib/component-runner/ComponentRuntimeContext.js +3 -0
  17. package/lib/component-runner/ComponentRuntimeContext.js.map +1 -0
  18. package/lib/component-runner/ContentRuntimeService.js +31 -0
  19. package/lib/component-runner/ContentRuntimeService.js.map +1 -0
  20. package/lib/component-runner/ExecuteComponentTask.d.ts +1 -9
  21. package/lib/component-runner/ExecuteComponentTask.js +8 -0
  22. package/lib/component-runner/ExecuteComponentTask.js.map +1 -0
  23. package/lib/component-runner/FunctionReturnTypes.js +3 -0
  24. package/lib/component-runner/FunctionReturnTypes.js.map +1 -0
  25. package/lib/component-runner/index.js +23 -0
  26. package/lib/component-runner/index.js.map +1 -0
  27. package/lib/component-runner/worker/component-bootstrapper.js +63 -0
  28. package/lib/component-runner/worker/component-bootstrapper.js.map +1 -0
  29. package/lib/health-check-service.js +3 -0
  30. package/lib/health-check-service.js.map +1 -0
  31. package/lib/index.d.ts +0 -16
  32. package/lib/index.js +23 -4610
  33. package/lib/index.js.map +1 -7
  34. package/lib/ioc.js +37 -0
  35. package/lib/ioc.js.map +1 -0
  36. package/lib/test/helpers/fixtures.js +152 -0
  37. package/lib/test/helpers/fixtures.js.map +1 -0
  38. package/lib/test/helpers/stack.js +121 -0
  39. package/lib/test/helpers/stack.js.map +1 -0
  40. package/lib/test/index.js +21 -0
  41. package/lib/test/index.js.map +1 -0
  42. package/lib/test/mock-services/MockedComponentSetService.js +413 -0
  43. package/lib/test/mock-services/MockedComponentSetService.js.map +1 -0
  44. package/lib/test/mock-services/MockedContentItemService.js +37 -0
  45. package/lib/test/mock-services/MockedContentItemService.js.map +1 -0
  46. package/lib/test-helpers.d.ts +16 -0
  47. package/lib/test-helpers.js +44 -0
  48. package/lib/test-helpers.js.map +1 -0
  49. package/lib/utils/getContentItemIdFromInput.js +13 -0
  50. package/lib/utils/getContentItemIdFromInput.js.map +1 -0
  51. package/lib/utils/getContentItemIdFromInput.spec.js +18 -0
  52. package/lib/utils/getContentItemIdFromInput.spec.js.map +1 -0
  53. package/lib/utils/resolvePreviewOutput.js +71 -0
  54. package/lib/utils/resolvePreviewOutput.js.map +1 -0
  55. package/lib/utils/resolvePreviewOutput.spec.js +168 -0
  56. package/lib/utils/resolvePreviewOutput.spec.js.map +1 -0
  57. package/lib/utils/setHeadersOnExpressResponse.js +15 -0
  58. package/lib/utils/setHeadersOnExpressResponse.js.map +1 -0
  59. package/lib/utils/setHeadersOnExpressResponse.sepc.js +21 -0
  60. package/lib/utils/setHeadersOnExpressResponse.sepc.js.map +1 -0
  61. package/lib/webserver/app.js +78 -0
  62. package/lib/webserver/app.js.map +1 -0
  63. package/lib/webserver/controllers/CoreController.js +116 -0
  64. package/lib/webserver/controllers/CoreController.js.map +1 -0
  65. package/lib/webserver/controllers/CoreController.spec.js +132 -0
  66. package/lib/webserver/controllers/CoreController.spec.js.map +1 -0
  67. package/lib/webserver/controllers/DefinitionController.js +162 -0
  68. package/lib/webserver/controllers/DefinitionController.js.map +1 -0
  69. package/lib/webserver/controllers/DefinitionController.spec.js +16 -0
  70. package/lib/webserver/controllers/DefinitionController.spec.js.map +1 -0
  71. package/lib/webserver/controllers/DevelopmentController.js +149 -0
  72. package/lib/webserver/controllers/DevelopmentController.js.map +1 -0
  73. package/lib/webserver/controllers/DevelopmentController.spec.js +29 -0
  74. package/lib/webserver/controllers/DevelopmentController.spec.js.map +1 -0
  75. package/lib/webserver/controllers/PreviewController.spec.js +124 -0
  76. package/lib/webserver/controllers/PreviewController.spec.js.map +1 -0
  77. package/lib/webserver/controllers/RenderController.d.ts +3 -2
  78. package/lib/webserver/controllers/RenderController.js +221 -0
  79. package/lib/webserver/controllers/RenderController.js.map +1 -0
  80. package/lib/webserver/controllers/RenderController.spec.js +441 -0
  81. package/lib/webserver/controllers/RenderController.spec.js.map +1 -0
  82. package/lib/webserver/controllers/StaticController.js +149 -0
  83. package/lib/webserver/controllers/StaticController.js.map +1 -0
  84. package/lib/webserver/controllers/StaticController.spec.js +28 -0
  85. package/lib/webserver/controllers/StaticController.spec.js.map +1 -0
  86. package/lib/webserver/controllers/test/definition-route-tests.js +627 -0
  87. package/lib/webserver/controllers/test/definition-route-tests.js.map +1 -0
  88. package/lib/webserver/controllers/test/development-route-tests.js +110 -0
  89. package/lib/webserver/controllers/test/development-route-tests.js.map +1 -0
  90. package/lib/webserver/controllers/test/preview-route-tests.js +122 -0
  91. package/lib/webserver/controllers/test/preview-route-tests.js.map +1 -0
  92. package/lib/webserver/controllers/test/render-route-sandbox-tests.js +194 -0
  93. package/lib/webserver/controllers/test/render-route-sandbox-tests.js.map +1 -0
  94. package/lib/webserver/controllers/test/render-route-tests.js +422 -0
  95. package/lib/webserver/controllers/test/render-route-tests.js.map +1 -0
  96. package/lib/webserver/controllers/test/static-route-tests.js +96 -0
  97. package/lib/webserver/controllers/test/static-route-tests.js.map +1 -0
  98. package/lib/webserver/index.js +6 -0
  99. package/lib/webserver/index.js.map +1 -0
  100. package/lib/webserver/routes/routes.js +902 -0
  101. package/lib/webserver/routes/routes.js.map +1 -0
  102. package/package.json +13 -6
  103. package/lib/migrations/20220704054051_initial.sql +0 -19
  104. package/lib/migrations/20220718172237_adding_component_sets.sql +0 -23
  105. package/lib/migrations/20220728113941_add_env_vars_field.sql +0 -1
  106. package/lib/migrations/20220817113300_removing_null_props_from_jsonb.sql +0 -41
  107. package/lib/migrations/20221027151225_dummy.sql +0 -2
  108. package/lib/migrations/20221117151200_add_detail_columns_to_component_version.js +0 -40
  109. package/lib/migrations/20221220151200_add_required_to_manifests.js +0 -7794
  110. package/lib/migrations/20221222151200_add_required_to_manifests.js +0 -7856
  111. package/lib/migrations/20223525103556_component_set_rule.sql +0 -19
  112. package/lib/migrations/20230111095522_update_environment_property.js +0 -7802
  113. package/lib/migrations/20230203084900_ensure_static_root_exists.js +0 -47
  114. package/lib/migrations/20230210143300_lowercase_all_uri_names.js +0 -88
  115. package/lib/migrations/20230217151212_component_set_component_version_updates.sql +0 -38
  116. package/lib/migrations/20230218121212_add_component_set_rules.js +0 -24
  117. package/lib/migrations/202406061447_edge_component_type.sql +0 -1
  118. package/lib/migrations/202407111308_component_version_type.sql +0 -1
  119. package/lib/migrations/202408061132_update_type_to_server.sql +0 -1
  120. package/lib/public/docs.json +0 -5509
  121. package/lib/worker/component-bootstrapper.js +0 -170132
  122. package/lib/worker/component-bootstrapper.js.map +0 -7
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var DefinitionController_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.DefinitionController = void 0;
17
+ const tsoa_1 = require("tsoa");
18
+ const inversify_1 = require("inversify");
19
+ const inversify_binding_decorators_1 = require("inversify-binding-decorators");
20
+ const dx_common_lib_1 = require("@squiz/dx-common-lib");
21
+ const component_lib_1 = require("@squiz/component-lib");
22
+ const setHeadersOnExpressResponse_1 = require("../../utils/setHeadersOnExpressResponse");
23
+ let DefinitionController = DefinitionController_1 = class DefinitionController extends tsoa_1.Controller {
24
+ constructor(componentSetService, manifestService, componentFunctionService, componentRootUrlResolver) {
25
+ super();
26
+ this.componentSetService = componentSetService;
27
+ this.manifestService = manifestService;
28
+ this.componentFunctionService = componentFunctionService;
29
+ this.componentRootUrlResolver = componentRootUrlResolver;
30
+ }
31
+ async getComponentVersionManifest(namespace, componentName, version, request, _previewKey, _componentSet) {
32
+ const response = request.res;
33
+ (0, dx_common_lib_1.assertIsDefined)(response);
34
+ this.assertValidQueryParametersForDefinition(_previewKey, _componentSet);
35
+ const rootUrl = this.componentRootUrlResolver(request);
36
+ const manifest = await this.manifestService.loadManifest(namespace, componentName, version);
37
+ if (_previewKey !== undefined) {
38
+ return this.componentFunctionService.prepareManifestForPreview(manifest, _previewKey, rootUrl);
39
+ }
40
+ if (_componentSet !== undefined) {
41
+ await this.setHeadersFromComponentSet(manifest, _componentSet, response);
42
+ return this.componentFunctionService.prepareManifestForWebResponse(manifest, _componentSet, rootUrl);
43
+ }
44
+ return manifest.getModel();
45
+ }
46
+ async getDefaultFunctionDefinition(namespace, componentName, version, request, _previewKey, _componentSet) {
47
+ const response = request.res;
48
+ (0, dx_common_lib_1.assertIsDefined)(response);
49
+ this.assertValidQueryParametersForDefinition(_previewKey, _componentSet);
50
+ const rootUrl = this.componentRootUrlResolver(request);
51
+ const manifest = await this.manifestService.loadManifest(namespace, componentName, version);
52
+ const manifestModel = manifest.getModel();
53
+ const result = this.componentFunctionService.getFunctionDefinitionFromManifest(manifestModel.mainFunction, manifest);
54
+ if (!result) {
55
+ throw new dx_common_lib_1.ResourceNotFoundError(`${manifestModel.mainFunction} could not be found in ${componentName} ${version}`);
56
+ }
57
+ if (_previewKey !== undefined) {
58
+ this.setHeadersFromPreview(manifest, _previewKey, manifestModel.mainFunction, response);
59
+ return this.componentFunctionService.prepareComponentFunctionForPreview(result, manifest, _previewKey, rootUrl);
60
+ }
61
+ if (_componentSet !== undefined) {
62
+ await this.setHeadersFromComponentSet(manifest, _componentSet, response);
63
+ return this.componentFunctionService.prepareComponentFunctionForWebResponse(result, manifest, _componentSet, rootUrl);
64
+ }
65
+ return result;
66
+ }
67
+ async getGivenFunctionDefinition(namespace, componentName, version, functionName, request, _previewKey, _componentSet) {
68
+ const response = request.res;
69
+ (0, dx_common_lib_1.assertIsDefined)(response);
70
+ this.assertValidQueryParametersForDefinition(_previewKey, _componentSet);
71
+ const rootUrl = this.componentRootUrlResolver(request);
72
+ const manifest = await this.manifestService.loadManifest(namespace, componentName, version);
73
+ const result = this.componentFunctionService.getFunctionDefinitionFromManifest(functionName, manifest);
74
+ if (!result) {
75
+ throw new dx_common_lib_1.ResourceNotFoundError(`${functionName} could not be found in ${componentName} ${version}`);
76
+ }
77
+ if (_previewKey !== undefined) {
78
+ this.setHeadersFromPreview(manifest, _previewKey, functionName, response);
79
+ return this.componentFunctionService.prepareComponentFunctionForPreview(result, manifest, _previewKey, rootUrl);
80
+ }
81
+ if (_componentSet !== undefined) {
82
+ await this.setHeadersFromComponentSet(manifest, _componentSet, response);
83
+ return this.componentFunctionService.prepareComponentFunctionForWebResponse(result, manifest, _componentSet, rootUrl);
84
+ }
85
+ return result;
86
+ }
87
+ async setHeadersFromComponentSet(manifest, componentSet, response) {
88
+ const set = await this.componentSetService.getComponentSet(componentSet);
89
+ const componentName = manifest.getName();
90
+ const version = manifest.getVersion();
91
+ const isCompVersionInSet = await this.componentSetService.componentVersionInSet(manifest, set.webPath);
92
+ if (!isCompVersionInSet) {
93
+ throw new dx_common_lib_1.ResourceNotFoundError(`${componentName} ${version} not in set ${set.webPath}`);
94
+ }
95
+ this.setHeaders((set === null || set === void 0 ? void 0 : set.headers) || {}, response);
96
+ }
97
+ setHeadersFromPreview(manifest, _previewKey, functionName, response) {
98
+ const previewConfig = manifest.getFunctionPreviewConfiguration(_previewKey, manifest.getComponentFunctionByName(functionName));
99
+ this.setHeaders((previewConfig === null || previewConfig === void 0 ? void 0 : previewConfig.headers) || {}, response);
100
+ }
101
+ setHeaders(headers, response) {
102
+ (0, setHeadersOnExpressResponse_1.setHeadersOnExpressResponse)(headers, response);
103
+ let cacheControl = response.getHeader('cache-control');
104
+ if (typeof cacheControl !== 'string') {
105
+ cacheControl = undefined;
106
+ }
107
+ response.setHeader('cache-control', (0, dx_common_lib_1.parseAndSanitiseCacheControlHeader)(cacheControl));
108
+ }
109
+ assertValidQueryParametersForDefinition(_previewKey, _componentSet) {
110
+ if (_previewKey !== undefined && _componentSet !== undefined) {
111
+ throw new dx_common_lib_1.BadRequestError('You can not have both a _componentSet and _previewKey');
112
+ }
113
+ }
114
+ };
115
+ __decorate([
116
+ (0, tsoa_1.Get)('/:namespace/:componentName/:version/manifest.json'),
117
+ __param(0, (0, tsoa_1.Path)()),
118
+ __param(1, (0, tsoa_1.Path)()),
119
+ __param(2, (0, tsoa_1.Path)()),
120
+ __param(3, (0, tsoa_1.Request)()),
121
+ __param(4, (0, tsoa_1.Query)()),
122
+ __param(5, (0, tsoa_1.Query)()),
123
+ __metadata("design:type", Function),
124
+ __metadata("design:paramtypes", [String, String, String, Object, String, String]),
125
+ __metadata("design:returntype", Promise)
126
+ ], DefinitionController.prototype, "getComponentVersionManifest", null);
127
+ __decorate([
128
+ (0, tsoa_1.Get)('/:namespace/:componentName/:version'),
129
+ __param(0, (0, tsoa_1.Path)()),
130
+ __param(1, (0, tsoa_1.Path)()),
131
+ __param(2, (0, tsoa_1.Path)()),
132
+ __param(3, (0, tsoa_1.Request)()),
133
+ __param(4, (0, tsoa_1.Query)()),
134
+ __param(5, (0, tsoa_1.Query)()),
135
+ __metadata("design:type", Function),
136
+ __metadata("design:paramtypes", [String, String, String, Object, String, String]),
137
+ __metadata("design:returntype", Promise)
138
+ ], DefinitionController.prototype, "getDefaultFunctionDefinition", null);
139
+ __decorate([
140
+ (0, tsoa_1.Get)('/:namespace/:componentName/:version/:functionName'),
141
+ __param(0, (0, tsoa_1.Path)()),
142
+ __param(1, (0, tsoa_1.Path)()),
143
+ __param(2, (0, tsoa_1.Path)()),
144
+ __param(3, (0, tsoa_1.Path)()),
145
+ __param(4, (0, tsoa_1.Request)()),
146
+ __param(5, (0, tsoa_1.Query)()),
147
+ __param(6, (0, tsoa_1.Query)()),
148
+ __metadata("design:type", Function),
149
+ __metadata("design:paramtypes", [String, String, String, String, Object, String, String]),
150
+ __metadata("design:returntype", Promise)
151
+ ], DefinitionController.prototype, "getGivenFunctionDefinition", null);
152
+ DefinitionController = DefinitionController_1 = __decorate([
153
+ (0, inversify_binding_decorators_1.provide)(DefinitionController_1),
154
+ (0, tsoa_1.Route)('/d'),
155
+ __param(0, (0, inversify_1.inject)('ComponentSetService')),
156
+ __param(1, (0, inversify_1.inject)('ManifestService')),
157
+ __param(2, (0, inversify_1.inject)('ComponentFunctionService')),
158
+ __param(3, (0, inversify_1.inject)('ComponentRootUrlResolver')),
159
+ __metadata("design:paramtypes", [Object, Object, component_lib_1.ComponentFunctionService, Object])
160
+ ], DefinitionController);
161
+ exports.DefinitionController = DefinitionController;
162
+ //# sourceMappingURL=DefinitionController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefinitionController.js","sourceRoot":"","sources":["../../../src/webserver/controllers/DefinitionController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_helpers_1 = require("../../test-helpers");
4
+ const definition_route_tests_1 = require("./test/definition-route-tests");
5
+ describe('render-runtime - component definitions', () => {
6
+ let server;
7
+ beforeAll(() => {
8
+ server = new test_helpers_1.TestHelpers.TestServer();
9
+ server.start();
10
+ });
11
+ afterAll(() => {
12
+ server.stop();
13
+ });
14
+ (0, definition_route_tests_1.definitionRouteTests)(() => server.request);
15
+ });
16
+ //# sourceMappingURL=DefinitionController.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefinitionController.spec.js","sourceRoot":"","sources":["../../../src/webserver/controllers/DefinitionController.spec.ts"],"names":[],"mappings":";;AAAA,qDAAiD;AACjD,0EAAqE;AAErE,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,IAAI,MAA8B,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,GAAG,IAAI,0BAAW,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,IAAA,6CAAoB,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC"}
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var DevelopmentController_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.DevelopmentController = void 0;
17
+ const tsoa_1 = require("tsoa");
18
+ const inversify_binding_decorators_1 = require("inversify-binding-decorators");
19
+ const inversify_1 = require("inversify");
20
+ const dx_common_lib_1 = require("@squiz/dx-common-lib");
21
+ const setHeadersOnExpressResponse_1 = require("../../utils/setHeadersOnExpressResponse");
22
+ let DevelopmentController = DevelopmentController_1 = class DevelopmentController extends tsoa_1.Controller {
23
+ constructor(config, manifestService, componentRunnerService) {
24
+ super();
25
+ this.config = config;
26
+ this.manifestService = manifestService;
27
+ this.componentRunnerService = componentRunnerService;
28
+ }
29
+ async getComponents() {
30
+ if (!this.config.enableDevMode) {
31
+ throw new dx_common_lib_1.ResourceNotFoundError('Route does not exist.');
32
+ }
33
+ const components = await this.manifestService.listAllComponentManifests();
34
+ return components.map((component) => component.getModel());
35
+ }
36
+ async Manifest(namespace, componentName, version) {
37
+ if (!this.config.enableDevMode) {
38
+ throw new dx_common_lib_1.ResourceNotFoundError('Route does not exist.');
39
+ }
40
+ const manifest = await this.manifestService.loadManifest(namespace, componentName, version);
41
+ return manifest.getModel();
42
+ }
43
+ async getContentSchema(namespace, componentName, version) {
44
+ if (!this.config.enableDevMode) {
45
+ throw new dx_common_lib_1.ResourceNotFoundError('Route does not exist.');
46
+ }
47
+ const componentManifest = await this.manifestService.loadManifest(namespace, componentName, version);
48
+ const inputSchemas = componentManifest.getInputSchemas();
49
+ const schemaResult = [];
50
+ inputSchemas.forEach((inputSchema) => {
51
+ if (inputSchema.schema && Object.keys(inputSchema.schema).length) {
52
+ schemaResult.push(inputSchema);
53
+ }
54
+ });
55
+ return schemaResult;
56
+ }
57
+ async TemporaryPreview(req, namespace, componentName, version, functionName,
58
+ // With types on the below, we get error: @Query('headers') Can't support refAlias type
59
+ headers, envVars, data) {
60
+ if (!this.config.enableDevMode) {
61
+ throw new dx_common_lib_1.ResourceNotFoundError('Route does not exist.');
62
+ }
63
+ const res = req.res;
64
+ const componentSet = {
65
+ environment: envVars !== null && envVars !== void 0 ? envVars : {},
66
+ displayName: componentName,
67
+ webPath: 'mock-set',
68
+ };
69
+ const rootUrl = `http://${req.headers.host}`.replace(/\/+$/, '');
70
+ const componentManifest = await this.manifestService.loadManifest(namespace, componentName, version);
71
+ const componentFunction = componentManifest.getComponentFunctionByName(functionName);
72
+ const result = await this.componentRunnerService.executeComponentFunction({
73
+ dxpApiKey: undefined,
74
+ requestId: 'MOCK_ME',
75
+ args: [data],
76
+ functionEntryFilePath: await componentManifest.getComponentFunctionEntryFilePath(componentFunction),
77
+ environment: componentSet.environment,
78
+ componentFullName: componentName,
79
+ componentFunction: componentFunction,
80
+ componentRootUrl: rootUrl,
81
+ manifest: componentManifest.getModel(),
82
+ runtimeSet: componentSet,
83
+ manifestPath: await componentManifest.getManifestPath(),
84
+ previewKey: undefined,
85
+ queryParameters: undefined,
86
+ });
87
+ const responseHeaders = headers !== null && headers !== void 0 ? headers : {};
88
+ switch (componentFunction.output.responseType) {
89
+ case 'html':
90
+ responseHeaders['content-type'] = 'text/html';
91
+ break;
92
+ case 'json':
93
+ responseHeaders['content-type'] = 'application/json';
94
+ break;
95
+ }
96
+ (0, setHeadersOnExpressResponse_1.setHeadersOnExpressResponse)(responseHeaders !== null && responseHeaders !== void 0 ? responseHeaders : {}, res);
97
+ res.send(result);
98
+ }
99
+ };
100
+ __decorate([
101
+ (0, tsoa_1.Get)('/all'),
102
+ __metadata("design:type", Function),
103
+ __metadata("design:paramtypes", []),
104
+ __metadata("design:returntype", Promise)
105
+ ], DevelopmentController.prototype, "getComponents", null);
106
+ __decorate([
107
+ (0, tsoa_1.Get)('/manifest/:namespace/:componentName/:version'),
108
+ __param(0, (0, tsoa_1.Path)()),
109
+ __param(1, (0, tsoa_1.Path)()),
110
+ __param(2, (0, tsoa_1.Path)()),
111
+ __metadata("design:type", Function),
112
+ __metadata("design:paramtypes", [String, String, String]),
113
+ __metadata("design:returntype", Promise)
114
+ ], DevelopmentController.prototype, "Manifest", null);
115
+ __decorate([
116
+ (0, tsoa_1.Get)('/schemas/:namespace/:componentName/:version'),
117
+ __param(0, (0, tsoa_1.Path)()),
118
+ __param(1, (0, tsoa_1.Path)()),
119
+ __param(2, (0, tsoa_1.Path)()),
120
+ __metadata("design:type", Function),
121
+ __metadata("design:paramtypes", [String, String, String]),
122
+ __metadata("design:returntype", Promise)
123
+ ], DevelopmentController.prototype, "getContentSchema", null);
124
+ __decorate([
125
+ (0, tsoa_1.Get)('/temp-preview/:namespace/:componentName/:version/:functionName'),
126
+ (0, tsoa_1.Produces)('text/html'),
127
+ __param(0, (0, tsoa_1.Request)()),
128
+ __param(1, (0, tsoa_1.Path)()),
129
+ __param(2, (0, tsoa_1.Path)()),
130
+ __param(3, (0, tsoa_1.Path)()),
131
+ __param(4, (0, tsoa_1.Path)()),
132
+ __param(5, (0, tsoa_1.Query)()),
133
+ __param(6, (0, tsoa_1.Query)()),
134
+ __param(7, (0, tsoa_1.Query)()),
135
+ __metadata("design:type", Function),
136
+ __metadata("design:paramtypes", [Object, String, String, String, String, Object, Object, Object]),
137
+ __metadata("design:returntype", Promise)
138
+ ], DevelopmentController.prototype, "TemporaryPreview", null);
139
+ DevelopmentController = DevelopmentController_1 = __decorate([
140
+ (0, inversify_binding_decorators_1.provide)(DevelopmentController_1),
141
+ (0, tsoa_1.Route)('/dev'),
142
+ (0, tsoa_1.Hidden)(),
143
+ __param(0, (0, inversify_1.inject)('Config')),
144
+ __param(1, (0, inversify_1.inject)('ManifestService')),
145
+ __param(2, (0, inversify_1.inject)('ComponentRunnerService')),
146
+ __metadata("design:paramtypes", [Object, Object, Object])
147
+ ], DevelopmentController);
148
+ exports.DevelopmentController = DevelopmentController;
149
+ //# sourceMappingURL=DevelopmentController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevelopmentController.js","sourceRoot":"","sources":["../../../src/webserver/controllers/DevelopmentController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("../../test");
4
+ const development_route_tests_1 = require("./test/development-route-tests");
5
+ describe('DevelopmentController', () => {
6
+ describe('development mode enabled', () => {
7
+ let server;
8
+ beforeAll(() => {
9
+ server = new test_1.TestServer({}, { enableDevMode: true });
10
+ server.start();
11
+ });
12
+ afterAll(() => {
13
+ server.stop();
14
+ });
15
+ (0, development_route_tests_1.developmentRouteTests)(() => server.request, true);
16
+ });
17
+ describe('development mode disabled', () => {
18
+ let server;
19
+ beforeAll(() => {
20
+ server = new test_1.TestServer({}, { enableDevMode: false });
21
+ server.start();
22
+ });
23
+ afterAll(() => {
24
+ server.stop();
25
+ });
26
+ (0, development_route_tests_1.developmentRouteTests)(() => server.request, false);
27
+ });
28
+ });
29
+ //# sourceMappingURL=DevelopmentController.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevelopmentController.spec.js","sourceRoot":"","sources":["../../../src/webserver/controllers/DevelopmentController.spec.ts"],"names":[],"mappings":";;AAAA,qCAAwC;AACxC,4EAAuE;AAEvE,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,IAAI,MAAkB,CAAC;QACvB,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,GAAG,IAAI,iBAAU,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAA,+CAAqB,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACzC,IAAI,MAAkB,CAAC;QACvB,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,GAAG,IAAI,iBAAU,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,GAAG,EAAE;YACZ,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,IAAA,+CAAqB,EAAC,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_1 = require("../../test");
4
+ const preview_route_tests_1 = require("./test/preview-route-tests");
5
+ describe('PreviewController', () => {
6
+ let server;
7
+ beforeAll(() => {
8
+ server = new test_1.TestServer();
9
+ server.start();
10
+ });
11
+ afterAll(() => {
12
+ server.stop();
13
+ });
14
+ (0, preview_route_tests_1.previewRouteTests)(() => server.request, 'http://localhost:3000');
15
+ it('renders the component mainFunction with inline preview information', async () => {
16
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4?_previewKey=test-preview');
17
+ expect(output.statusCode).toEqual(200);
18
+ expect(output.text).toMatchInlineSnapshot(`"800 | this is nested content"`);
19
+ });
20
+ it('renders the component function not main with no preview info', async () => {
21
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4/other?_previewKey=test-preview');
22
+ expect(output.text).toMatchInlineSnapshot(`"<code>{}</code>"`);
23
+ expect(output.statusCode).toEqual(200);
24
+ });
25
+ it('renders a component function with a data file for input', async () => {
26
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4?_previewKey=another-preview');
27
+ expect(output.statusCode).toEqual(200);
28
+ expect(output.text).toMatchInlineSnapshot(`"12300 | this is also nested content"`);
29
+ });
30
+ it('renders a component function with a wrapper file', async () => {
31
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4/other?_previewKey=another-preview');
32
+ expect(output.statusCode).toEqual(200);
33
+ expect(output.text).toMatchInlineSnapshot(`
34
+ "<!DOCTYPE html>
35
+ <html lang="en">
36
+ <head>
37
+ <meta charset="UTF-8" />
38
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
39
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
40
+ <title>This is the preview</title>
41
+ </head>
42
+ <body>
43
+ <code>{"random":"test-random-input","something":{"nested":123}}</code>
44
+ </body>
45
+ </html>
46
+ "
47
+ `);
48
+ });
49
+ it('renders the preview with static files URLs resolved', async () => {
50
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.0.1?_previewKey=test-preview');
51
+ const expectedCssFileUrl = '/s/unit-test-components/test-preview-component/1.0.1/css-file.css?_previewKey=test-preview';
52
+ expect(output.statusCode).toEqual(200);
53
+ expect(output.text).toMatchInlineSnapshot(`
54
+ "<html>
55
+ <head>
56
+ <link rel="stylesheet" href="http://localhost:3000/s/unit-test-components/test-preview-component/1.0.1/css-file.css?_previewKey=test-preview">
57
+ </head>
58
+ <body>
59
+ <h1>hello</h1><p class="main">This has coloured background via CSS</p><p>Static URL - http://localhost:3000/s/unit-test-components/test-preview-component/1.0.1/js-file.js?_previewKey=test-preview</p> <script src="http://localhost:3000/s/unit-test-components/test-preview-component/1.0.1/js-file.js?_previewKey=test-preview"></script>
60
+ </body>
61
+ </html>
62
+ "
63
+ `);
64
+ const cssFile = await server.request.get(expectedCssFileUrl);
65
+ expect(cssFile.statusCode).toEqual(200);
66
+ expect(cssFile.text).toMatchInlineSnapshot(`
67
+ ".main,
68
+ p {
69
+ display: block;
70
+ background-color: rebeccapurple;
71
+ }
72
+ "
73
+ `);
74
+ });
75
+ it('the set response headers in the output', async () => {
76
+ const output = await server.request.get('/r/unit-test-components/test-preview-component/1.0.2?_previewKey=test-preview');
77
+ expect(output.statusCode).toEqual(200);
78
+ expect(output.header['some-header-1']).toEqual('val-1');
79
+ expect(output.header['some-header-2']).toEqual('val-2');
80
+ });
81
+ it("should throw a reasonable message when preview doesn't exist", async () => {
82
+ const response = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4/?_previewKey=doest-exist');
83
+ expect(response.statusCode).toEqual(404);
84
+ expect(response.text).toMatchInlineSnapshot(`"{"message":"Component has not defined preview with key \\"doest-exist\\", the defined preview keys for this component are \\"test-preview, another-preview\\""}"`);
85
+ });
86
+ it('should allow previews to be embedded into cross origin webpages', async () => {
87
+ const response = await server.request.get('/r/unit-test-components/test-preview-component/1.0.4/?_previewKey=test-preview');
88
+ expect(response.header['content-security-policy']).toContain("frame-ancestors * 'self'");
89
+ expect(response.headers).not.toHaveProperty('X-Frame-Options');
90
+ expect(response.statusCode).toEqual(200);
91
+ });
92
+ it('passes through json file data to component', async () => {
93
+ const response = await server.request.get('/r/unit-test-components/test-preview-component/1.2.4/main?_previewKey=another-preview');
94
+ expect(response.text).toMatchInlineSnapshot(`"12300 | this is also nested content"`);
95
+ expect(response.statusCode).toEqual(200);
96
+ });
97
+ it('passes through js file data to component if it meets the input schema', async () => {
98
+ const response = await server.request.get('/r/unit-test-components/test-preview-component/1.0.6/main?_previewKey=preview-js-data-good-data');
99
+ expect(response.text).toMatchInlineSnapshot(`"works | http://localhost:3000/s/unit-test-components/test-preview-component/1.0.6/sub/dir/static-library-file.js?_previewKey=preview-js-data-good-data | http://localhost:3000/r/unit-test-components/test-preview-component/1.0.6/some-function-name?_previewKey=preview-js-data-good-data&input=1234"`);
100
+ expect(response.statusCode).toEqual(200);
101
+ }, 6000000);
102
+ it('should pass down the preview key into info.ctx.getFunctionUrl and info.ctx.getStaticResourceUrl', async () => {
103
+ const response = await server.request.get('/r/unit-test-components/test-preview-component/1.0.5/?_previewKey=test-preview');
104
+ expect(response.statusCode).toEqual(200);
105
+ expect(response.text).toEqual('this is a result | 123 | http://localhost:3000/s/unit-test-components/test-preview-component/1.0.5/sub/dir/static-library-file.js?_previewKey=test-preview | http://localhost:3000/r/unit-test-components/test-preview-component/1.0.5/some-function-name?_previewKey=test-preview&input=1234');
106
+ });
107
+ // TODO unskip these in DEVX-808
108
+ it.skip("should throw and error if preview doesn't define the correct env vars", async () => {
109
+ const response = await server.request.get('/r/unit-test-components/test-environment-variables/1.0.3?_previewKey=missing-env-vars&something=123');
110
+ expect(response.statusCode).toEqual(400);
111
+ expect(response.text).toMatchInlineSnapshot(`"{\\"message\\":\\"Missing environment variables: \\\\\\"TEST_VARIABLE\\\\\\"\\"}"`);
112
+ });
113
+ it.skip('should render if the preview defines the correct env vars', async () => {
114
+ const response = await server.request.get('/r/unit-test-components/test-environment-variables/1.0.3?_previewKey=correct-env-vars&something=123');
115
+ expect(response.text).toMatchInlineSnapshot(`<div>component set {TEST_VARIABLE: "some-value"}`);
116
+ expect(response.statusCode).toEqual(200);
117
+ });
118
+ it.skip('should render when there are extra env vars, but the component should only receive the ones it requests', async () => {
119
+ const response = await server.request.get('/r/unit-test-components/test-environment-variables/1.0.3?_previewKey=correct-env-vars-with-extra&something=123');
120
+ expect(response.statusCode).toEqual(400);
121
+ expect(response.text).toMatchInlineSnapshot(`<div>component set {TEST_VARIABLE: "some-value"}`);
122
+ });
123
+ });
124
+ //# sourceMappingURL=PreviewController.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PreviewController.spec.js","sourceRoot":"","sources":["../../../src/webserver/controllers/PreviewController.spec.ts"],"names":[],"mappings":"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"}
@@ -14,8 +14,9 @@ export declare class RenderController extends Controller {
14
14
  protected contentItemService: ContentItemService | null;
15
15
  protected componentPreviewService: ComponentPreviewService;
16
16
  constructor(componentSetService: ComponentSetService, manifestService: ManifestService, componentFunctionService: ComponentFunctionService, componentRunnerService: ComponentRunnerService, renderInputService: RenderInputService, contentItemService: ContentItemService | null, componentPreviewService: ComponentPreviewService);
17
- getDefaultFunctionRendering(expressRequest: ExpressRequest, namespace: string, componentName: string, version: string, componentSet?: string, previewKey?: string, contentItemId?: string): Promise<void>;
18
- getGivenFunctionRendering(expressRequest: ExpressRequest, namespace: string, componentName: string, version: string, functionName: string, componentSet?: string, previewKey?: string, contentItemId?: string): Promise<void>;
17
+ getDefaultFunctionRendering(expressRequest: ExpressRequest, namespace: string, componentName: string, version: string, componentSet?: string, previewKey?: string, contentItemId?: string, previewBlockIndex?: string): Promise<void>;
18
+ getGivenFunctionRendering(expressRequest: ExpressRequest, namespace: string, componentName: string, version: string, functionName: string, componentSet?: string, previewKey?: string, contentItemId?: string, previewBlockIndex?: string): Promise<void>;
19
+ protected processPreviewHtml(index: string, html: string): string;
19
20
  protected handleResponse(input: ComponentExecutionInput, output: FunctionReturnTypes, response: ExpressResponse): void;
20
21
  protected doFunctionRender(renderInput: ComponentExecutionInput): Promise<FunctionReturnTypes>;
21
22
  private renderAndValidateOutput;