@squiz/render-runtime-lib 1.74.0 → 1.76.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 +19 -12
  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
@@ -1,47 +0,0 @@
1
- "use strict";
2
-
3
- // src/migrations/20230203084900_ensure_static_root_exists.js
4
- var assert = require("assert");
5
- var fsp = require("fs/promises");
6
- var path = require("path");
7
- exports.default = async function() {
8
- assert.ok(process.env.DATA_MOUNT_POINT, "DATA_MOUNT_POINT is undefined");
9
- for (const namespaceDir of await listDirectories(process.env.DATA_MOUNT_POINT)) {
10
- for (const componentNameDir of await listDirectories(namespaceDir)) {
11
- for (const versionDir of await listDirectories(componentNameDir)) {
12
- const manifestPath = path.resolve(versionDir, "manifest.json");
13
- const manifest = await tryReadManifest(manifestPath);
14
- if (!manifest)
15
- continue;
16
- if ("staticFiles" in manifest && "locationRoot" in manifest.staticFiles) {
17
- const staticFiles = path.resolve(path.join(versionDir, manifest.staticFiles.locationRoot));
18
- if (await pathExists(staticFiles) == false) {
19
- await fsp.mkdir(staticFiles, { recursive: true });
20
- }
21
- }
22
- }
23
- }
24
- }
25
- };
26
- async function listDirectories(filePath) {
27
- return (await fsp.readdir(filePath, { withFileTypes: true })).filter((dirent) => dirent.isDirectory()).map((dirent) => path.resolve(filePath, dirent.name));
28
- }
29
- async function tryReadManifest(manifestPath) {
30
- try {
31
- return JSON.parse(await fsp.readFile(manifestPath, { encoding: "utf-8" }));
32
- } catch (_e) {
33
- return null;
34
- }
35
- }
36
- async function pathExists(path2) {
37
- try {
38
- await fsp.stat(path2);
39
- return true;
40
- } catch (error) {
41
- if (error.code === "ENOENT") {
42
- return false;
43
- } else {
44
- throw error;
45
- }
46
- }
47
- }
@@ -1,88 +0,0 @@
1
- "use strict";
2
-
3
- // src/migrations/20230210143300_lowercase_all_uri_names.js
4
- var fsp = require("fs/promises");
5
- var { readdirSync } = require("fs");
6
- var path = require("path");
7
- exports.default = async function(db, _logger) {
8
- var _a, _b;
9
- await db.query(`ALTER TABLE component drop constraint IF EXISTS component_name_is_lower`);
10
- await db.query(`ALTER TABLE component_version drop constraint IF EXISTS component_version_component_name_is_lower`);
11
- await db.query(`ALTER TABLE component_set drop constraint IF EXISTS component_set_web_path_is_lower`);
12
- await db.query(`UPDATE component SET name = lower(name)`);
13
- await db.query(`ALTER TABLE component add constraint component_name_is_lower check (name = lower(name))`);
14
- await db.query(`UPDATE component_version SET component_name = lower(component_name)`);
15
- await db.query(
16
- `ALTER TABLE component_version add constraint component_version_component_name_is_lower check (component_name = lower(component_name))`
17
- );
18
- await db.query(`UPDATE component_set SET web_path = lower(web_path)`);
19
- await db.query(
20
- `ALTER TABLE component_set add constraint component_set_web_path_is_lower check (web_path = lower(web_path))`
21
- );
22
- for await (const { manifest, manifestPath } of getComponentManifests()) {
23
- const { namespace, name } = manifest;
24
- await fsp.writeFile(
25
- manifestPath,
26
- JSON.stringify(
27
- /** @type {import('@squiz/dx-json-schema-lib').MANIFEST_MODELS.v1.ComponentManifest} */
28
- {
29
- ...manifest,
30
- namespace: namespace.toLowerCase(),
31
- name: name.toLowerCase(),
32
- functions: (_a = manifest.functions) == null ? void 0 : _a.map((fn) => ({
33
- ...fn,
34
- name: fn.name.toLowerCase()
35
- })),
36
- mainFunction: (_b = manifest.mainFunction) == null ? void 0 : _b.toLowerCase()
37
- },
38
- null,
39
- 2
40
- )
41
- );
42
- const versionDirectory = path.dirname(manifestPath);
43
- const componentNameDirectory = path.dirname(versionDirectory);
44
- const namespaceDirectory = path.dirname(componentNameDirectory);
45
- const lowerName = path.basename(componentNameDirectory).toLowerCase();
46
- const lowerNamespace = path.basename(namespaceDirectory).toLowerCase();
47
- await fsp.rename(componentNameDirectory, path.resolve(namespaceDirectory, lowerName));
48
- await fsp.rename(namespaceDirectory, path.resolve(path.dirname(namespaceDirectory), lowerNamespace));
49
- }
50
- };
51
- async function* getComponentManifests() {
52
- var _a;
53
- for (const componentDirectory of listDirectories(process.env.DATA_MOUNT_POINT)) {
54
- const manifestPath = path.resolve(componentDirectory, "manifest.json");
55
- const manifest = await tryReadManifest(manifestPath);
56
- if ((_a = manifest == null ? void 0 : manifest.$schema) == null ? void 0 : _a.match(/v1\.json#?$/)) {
57
- yield { manifest, manifestPath };
58
- }
59
- }
60
- }
61
- function* listDirectories(filePath, nesting = 3) {
62
- let files;
63
- try {
64
- files = readdirSync(filePath, { withFileTypes: true });
65
- } catch (err) {
66
- if (err.code !== "ENOENT") {
67
- throw err;
68
- }
69
- return;
70
- }
71
- for (const file of files) {
72
- if (file.name === "manifest.json")
73
- yield filePath;
74
- else if (!file.isDirectory())
75
- continue;
76
- else if (nesting === 0)
77
- yield filePath;
78
- else
79
- yield* listDirectories(path.resolve(filePath, file.name), nesting - 1);
80
- }
81
- }
82
- async function tryReadManifest(manifestPath) {
83
- try {
84
- return JSON.parse(await fsp.readFile(manifestPath, { encoding: "utf-8" }));
85
- } catch (_e) {
86
- return null;
87
- }
88
- }
@@ -1,38 +0,0 @@
1
- -- Create new tables
2
- CREATE TABLE "component_set_component_version_excluded" (
3
- "component_set_web_path" VARCHAR(128) NOT NULL,
4
- "component_name" VARCHAR(128) NOT NULL,
5
- "component_version" VARCHAR(128) NOT NULL,
6
-
7
- CONSTRAINT "component_set_component_version_excluded_pkey" PRIMARY KEY ("component_set_web_path", "component_name", "component_version")
8
- );
9
-
10
- CREATE TABLE "component_set_component_version_editable" (
11
- "component_set_web_path" VARCHAR(128) NOT NULL,
12
- "component_name" VARCHAR(128) NOT NULL,
13
- "component_version" VARCHAR(128) NOT NULL,
14
-
15
- CONSTRAINT "component_set_component_version_editable_pkey" PRIMARY KEY ("component_set_web_path", "component_name", "component_version")
16
- );
17
-
18
- -- Add foreign keys
19
- ALTER TABLE "component_set_component_version_excluded" ADD CONSTRAINT "component_set_web_path_fkey" FOREIGN KEY ("component_set_web_path") REFERENCES "component_set"("web_path") ON DELETE CASCADE ON UPDATE CASCADE;
20
- ALTER TABLE "component_set_component_version_editable" ADD CONSTRAINT "component_set_web_path_fkey" FOREIGN KEY ("component_set_web_path") REFERENCES "component_set"("web_path") ON DELETE CASCADE ON UPDATE CASCADE;
21
-
22
-
23
- -- Add enum column to component_set_component_version table
24
- CREATE TYPE "component_set_component_version_status" AS ENUM('active', 'excluded');
25
- ALTER TABLE "component_set_component_version" ADD COLUMN "status" "component_set_component_version_status" NOT NULL DEFAULT 'active';
26
-
27
- -- Migrate the existing "is_visible" data to the new "status" column
28
- UPDATE "component_set_component_version"
29
- SET "status" = (CASE
30
- WHEN "is_visible" = 'true'
31
- THEN 'active'::component_set_component_version_status
32
- WHEN "is_visible" = 'false'
33
- THEN 'excluded'::component_set_component_version_status
34
- END
35
- );
36
-
37
- -- Delete now un-needed "is_visible" column
38
- ALTER TABLE "component_set_component_version" DROP COLUMN "is_visible";
@@ -1,24 +0,0 @@
1
- "use strict";
2
-
3
- // src/migrations/20230218121212_add_component_set_rules.js
4
- exports.default = async function(dbClient) {
5
- const result = await dbClient.query("select * from component_set_component_version where status='active'");
6
- const rows = result.rows ?? [];
7
- const componentSetVersions = {};
8
- for (const row of rows) {
9
- if (componentSetVersions[row.component_set_web_path] === void 0) {
10
- componentSetVersions[row.component_set_web_path] = {};
11
- }
12
- if (componentSetVersions[row.component_set_web_path][row.component_name] === void 0) {
13
- componentSetVersions[row.component_set_web_path][row.component_name] = [];
14
- }
15
- componentSetVersions[row.component_set_web_path][row.component_name].push(row.component_version);
16
- }
17
- for (const [componentSet, components] of Object.entries(componentSetVersions)) {
18
- for (const [componentName, componentVersions] of Object.entries(components)) {
19
- await dbClient.query(
20
- `insert into component_set_rule(component_name, component_set_web_path, version_pattern) values('${componentName}', '${componentSet}', '${componentVersions.join(" || ")}') ON CONFLICT (component_name, component_set_web_path) DO NOTHING`
21
- );
22
- }
23
- }
24
- };
@@ -1 +0,0 @@
1
- ALTER TABLE "component" ADD COLUMN "type" VARCHAR(128);
@@ -1 +0,0 @@
1
- ALTER TABLE "component_version" ADD COLUMN "type" VARCHAR(128);
@@ -1 +0,0 @@
1
- UPDATE "component" SET "type" = 'server' WHERE "type" = 'sandbox';