From 06c5b4f36b81bd40ce3121d2f4efc988549fa1ae Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Tue, 2 Jul 2019 19:38:37 +0200 Subject: [PATCH 1/4] [POC] Proxy Configuration Extension --- lib/projectPreprocessor.js | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/projectPreprocessor.js b/lib/projectPreprocessor.js index 4db7bf4c0..b21dc893f 100644 --- a/lib/projectPreprocessor.js +++ b/lib/projectPreprocessor.js @@ -147,7 +147,7 @@ class ProjectPreprocessor { if (project.kind === "extension") { // Not a project but an extension - // => remove it as from any known projects that depend on it + // => remove it from any known projects that depend on it const parents = this.processedProjects[project.id].parents; for (let i = parents.length - 1; i >= 0; i--) { parents[i].dependencies.splice(parents[i].dependencies.indexOf(project), 1); @@ -277,7 +277,7 @@ class ProjectPreprocessor { } if (project.specVersion !== "0.1" && project.specVersion !== "1.0" && - project.specVersion !== "1.1" && project.specVersion !== "2.0") { + project.specVersion !== "1.1" && project.specVersion !== "2.0" && project.specVersion !== "1.1a") { throw new Error( `Unsupported specification version ${project.specVersion} defined for project ` + `${project.id}. Your UI5 CLI installation might be outdated. ` + @@ -352,7 +352,8 @@ class ProjectPreprocessor { } else if (extension.specVersion !== "0.1" && extension.specVersion !== "1.0" && extension.specVersion !== "1.1" && - extension.specVersion !== "2.0") { + extension.specVersion !== "2.0" && + extension.specVersion !== "1.1a") { throw new Error( `Unsupported specification version ${extension.specVersion} defined for extension ` + `${extension.metadata.name}. Your UI5 CLI installation might be outdated. ` + @@ -376,6 +377,13 @@ class ProjectPreprocessor { case "server-middleware": this.handleServerMiddleware(extension); break; + case "proxy-configuration": + if (extension.specVersion !== "1.1a") { + throw new Error(`Extensions of type "proxy-configuration" + must use specification version "1.1a"`); + } + this.handleProxyConfiguration(extension); + break; default: throw new Error(`Unknown extension type '${extension.type}' for ${extension.id}`); } @@ -637,6 +645,17 @@ class ProjectPreprocessor { this.normalizeConfig(project); } + + handleProxyConfiguration(extension) { + if (!extension.metadata && !extension.metadata.name) { + throw new Error(`Proxy configuration extension ${extension.id} is missing 'metadata.name' configuration`); + } + if (!extension.proxy || !extension.proxy.configuration) { + throw new Error(`Proxy configuration extension ${extension.id} is missing 'proxy' configuration`); + } + const {proxyConfiguration} = require("@ui5/server"); + proxyConfiguration.addConfiguration(extension.metadata.name, extension.proxy.configuration); + } } /** From a191b2dd834516a476a6913fd44f236c348b9ba4 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Thu, 8 Aug 2019 22:29:57 +0200 Subject: [PATCH 2/4] package.json: Reference PoC feature branch as dependency --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index efbb7ae9f..df93cddba 100644 --- a/package.json +++ b/package.json @@ -100,7 +100,7 @@ "dependencies": { "@ui5/builder": "^2.0.0", "@ui5/logger": "^2.0.0", - "@ui5/server": "^2.0.0", + "@ui5/server": "SAP/ui5-server#feature-proxy", "ajv": "^6.12.0", "ajv-errors": "^1.0.1", "chalk": "^3.0.0", From d3ccd1a9d4e6cb122ad9202cfbd8bf1b5e4093b5 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Fri, 9 Aug 2019 15:42:25 +0200 Subject: [PATCH 3/4] package.json dependendy: Reference UI5 Builder feature branch --- package-lock.json | 136 +++++++++++++++++++++++++++++----------------- package.json | 2 +- 2 files changed, 88 insertions(+), 50 deletions(-) diff --git a/package-lock.json b/package-lock.json index 17b4c5d89..2a9b210fe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -665,14 +665,12 @@ "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==" }, "@types/glob": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, "requires": { "@types/events": "*", "@types/minimatch": "*", @@ -682,8 +680,7 @@ "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/minimist": { "version": "1.2.0", @@ -694,8 +691,7 @@ "@types/node": { "version": "13.11.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-13.11.1.tgz", - "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==", - "dev": true + "integrity": "sha512-eWQGP3qtxwL8FGneRrC5DwrJLGN4/dH1clNTuLfN81HCrxVtxRjygDTUoZJ5ASlDEeo0ppYFQjQIlXhtXpOn6g==" }, "@types/normalize-package-data": { "version": "2.4.0", @@ -703,50 +699,79 @@ "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==" }, "@ui5/builder": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ui5/builder/-/builder-2.0.0.tgz", - "integrity": "sha512-P0WwayMF0nO8l1jTQolbtMzt5TV66e3xPsDeyn0QTCyc+lDBixFFl4sbRfL31wf4B4062nRG/iXTv4P06rMGHA==", + "version": "github:SAP/ui5-builder#1821a1475e0dfcf0488a5351699840a27ad870df", + "from": "github:SAP/ui5-builder#feature-proxy", "requires": { - "@ui5/fs": "^2.0.0", - "@ui5/logger": "^2.0.0", + "@ui5/fs": "^1.1.2", + "@ui5/logger": "^1.0.2", "cheerio": "^0.22.0", "escape-unicode": "^0.2.0", - "escodegen": "^1.14.1", + "escodegen": "^1.12.0", "escope": "^3.6.0", "esprima": "^4.0.1", - "estraverse": "^5.0.0", - "globby": "^11.0.0", + "estraverse": "^4.3.0", + "globby": "^10.0.1", "graceful-fs": "^4.2.3", "jsdoc": "~3.6.3", - "less-openui5": "^0.8.6", - "make-dir": "^3.0.2", + "less-openui5": "^0.8.1", + "make-dir": "^3.0.0", "pretty-data": "^0.40.0", "pretty-hrtime": "^1.0.3", "replacestream": "^4.0.3", - "rimraf": "^3.0.2", - "semver": "^7.1.3", + "rimraf": "^3.0.0", + "semver": "^6.3.0", "slash": "^3.0.0", - "terser": "^4.6.7", - "xml2js": "^0.4.23", + "terser": "^4.4.2", + "xml2js": "^0.4.22", "yazl": "^2.5.1" + }, + "dependencies": { + "@ui5/logger": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@ui5/logger/-/logger-1.0.2.tgz", + "integrity": "sha512-k49q5D7EBk4vGzpM81KDNyGL4YaB12v8qYNqR7/5f4xoAksotf7h3VeAjCmJFSttEOnC9LNb9GYTzJAWJoCv7w==", + "requires": { + "npmlog": "^4.1.2" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } } }, "@ui5/fs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ui5/fs/-/fs-2.0.0.tgz", - "integrity": "sha512-oc3eoLUBSXCgABXNV7Bt2onwKldG5TDUaEGczcb0aPqiUDtu5+PiI6UdwQ+2DMGnz465KvGtKE94AxURwlmveA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ui5/fs/-/fs-1.1.2.tgz", + "integrity": "sha512-WKoHz5IA10jr2rl2BrmJG7RtEnkpLqkQX84phBT+7onX9I+Yv72MspHZCQbHpGoaJxt6G3TavggchZ7FKroGEw==", "requires": { - "@ui5/logger": "^2.0.0", + "@ui5/logger": "^1.0.1", "clone": "^2.1.0", - "globby": "^11.0.0", - "graceful-fs": "^4.2.3", - "make-dir": "^3.0.2", + "globby": "^10.0.0", + "graceful-fs": "^4.2.0", + "make-dir": "^3.0.0", "micromatch": "^4.0.2", "minimatch": "^3.0.3", "mock-require": "^3.0.3", "pretty-hrtime": "^1.0.3", - "random-int": "^2.0.1", + "random-int": "^2.0.0", "slash": "^3.0.0" + }, + "dependencies": { + "@ui5/logger": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@ui5/logger/-/logger-1.0.2.tgz", + "integrity": "sha512-k49q5D7EBk4vGzpM81KDNyGL4YaB12v8qYNqR7/5f4xoAksotf7h3VeAjCmJFSttEOnC9LNb9GYTzJAWJoCv7w==", + "requires": { + "npmlog": "^4.1.2" + } + } } }, "@ui5/logger": { @@ -758,30 +783,40 @@ } }, "@ui5/server": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@ui5/server/-/server-2.0.0.tgz", - "integrity": "sha512-SnF4dJ7M0i56FaB3ZLny7FsQ7kh7EfeNo+OP3iIqmBYGzgbw9DlX7M6wEJwEcwm7Z0hpDMeMHSm85d3G9eQ1hg==", + "version": "github:SAP/ui5-server#8bc814bb32a8adeaa77ad725a0b96e5cbaec31b4", + "from": "github:SAP/ui5-server#feature-proxy", "requires": { - "@ui5/builder": "^2.0.0", - "@ui5/fs": "^2.0.0", - "@ui5/logger": "^2.0.0", + "@ui5/builder": "github:SAP/ui5-builder#feature-proxy", + "@ui5/fs": "^1.1.2", + "@ui5/logger": "^1.0.2", "compression": "^1.7.4", "connect-openui5": "^0.9.0", "cors": "^2.8.5", - "devcert-sanscache": "0.4.6", + "devcert-sanscache": "^0.4.5", "escape-html": "^1.0.3", "etag": "^1.8.1", "express": "^4.17.1", "fresh": "^0.5.2", - "graceful-fs": "^4.2.3", - "make-dir": "^3.0.2", - "mime-types": "^2.1.26", + "http-proxy": "^1.17.0", + "https-proxy-agent": "^2.2.1", + "make-dir": "^3.0.0", + "mime-types": "^2.1.25", "parseurl": "^1.3.3", "portscanner": "^2.1.1", "replacestream": "^4.0.3", "spdy": "^4.0.1", "treeify": "^1.0.1", "yesno": "^0.3.1" + }, + "dependencies": { + "@ui5/logger": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@ui5/logger/-/logger-1.0.2.tgz", + "integrity": "sha512-k49q5D7EBk4vGzpM81KDNyGL4YaB12v8qYNqR7/5f4xoAksotf7h3VeAjCmJFSttEOnC9LNb9GYTzJAWJoCv7w==", + "requires": { + "npmlog": "^4.1.2" + } + } } }, "JSONStream": { @@ -2640,9 +2675,9 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" }, "devcert-sanscache": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/devcert-sanscache/-/devcert-sanscache-0.4.6.tgz", - "integrity": "sha512-Itp0Y58HtMqZ1v8YHYmtXpSFN5l4NaBcy7vBQUFxy2hs/HpNVTrNEynF9E2N9SK0uqa0vn7LFL8Rwinm500Uag==", + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/devcert-sanscache/-/devcert-sanscache-0.4.8.tgz", + "integrity": "sha512-AcuD5yTpKdY5VnZdADR2wIZMOaEqNQnIEIxuvSzu7iAWLh/I/g3Bhm6FebUby1tfd6RGtPwN5/Gp0nNT67ZSRQ==", "requires": { "command-exists": "^1.2.2", "get-port": "^3.0.0", @@ -3362,7 +3397,8 @@ "estraverse": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", - "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==" + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==", + "dev": true }, "esutils": { "version": "2.0.3", @@ -3919,15 +3955,17 @@ "dev": true }, "globby": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.0.tgz", - "integrity": "sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "requires": { + "@types/glob": "^7.1.1", "array-union": "^2.1.0", "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", "slash": "^3.0.0" } }, diff --git a/package.json b/package.json index df93cddba..ebf54d9d6 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "url": "git@github.com:SAP/ui5-project.git" }, "dependencies": { - "@ui5/builder": "^2.0.0", + "@ui5/builder": "SAP/ui5-builder#feature-proxy", "@ui5/logger": "^2.0.0", "@ui5/server": "SAP/ui5-server#feature-proxy", "ajv": "^6.12.0", From e3bb383109bd589f1179bd6784986437bc28c0e2 Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Tue, 14 Apr 2020 13:41:49 +0200 Subject: [PATCH 4/4] Rename spec version 1.1a to 2.2a --- lib/projectPreprocessor.js | 8 ++++---- lib/validation/schema/ui5.json | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/projectPreprocessor.js b/lib/projectPreprocessor.js index b21dc893f..14b895b3a 100644 --- a/lib/projectPreprocessor.js +++ b/lib/projectPreprocessor.js @@ -277,7 +277,7 @@ class ProjectPreprocessor { } if (project.specVersion !== "0.1" && project.specVersion !== "1.0" && - project.specVersion !== "1.1" && project.specVersion !== "2.0" && project.specVersion !== "1.1a") { + project.specVersion !== "1.1" && project.specVersion !== "2.0" && project.specVersion !== "2.2a") { throw new Error( `Unsupported specification version ${project.specVersion} defined for project ` + `${project.id}. Your UI5 CLI installation might be outdated. ` + @@ -353,7 +353,7 @@ class ProjectPreprocessor { extension.specVersion !== "1.0" && extension.specVersion !== "1.1" && extension.specVersion !== "2.0" && - extension.specVersion !== "1.1a") { + extension.specVersion !== "2.2a") { throw new Error( `Unsupported specification version ${extension.specVersion} defined for extension ` + `${extension.metadata.name}. Your UI5 CLI installation might be outdated. ` + @@ -378,9 +378,9 @@ class ProjectPreprocessor { this.handleServerMiddleware(extension); break; case "proxy-configuration": - if (extension.specVersion !== "1.1a") { + if (extension.specVersion !== "2.2a") { throw new Error(`Extensions of type "proxy-configuration" - must use specification version "1.1a"`); + must use specification version "2.2a"`); } this.handleProxyConfiguration(extension); break; diff --git a/lib/validation/schema/ui5.json b/lib/validation/schema/ui5.json index 3e9d58b05..1a130c01c 100644 --- a/lib/validation/schema/ui5.json +++ b/lib/validation/schema/ui5.json @@ -11,7 +11,7 @@ "specVersion": { "enum": [ "2.0", - "1.1", "1.0", "0.1" + "2.2a", "1.1", "1.0", "0.1" ], "errorMessage": "Unsupported \"specVersion\"\nYour UI5 CLI installation might be outdated.\nSupported specification versions: \"2.0\", \"1.1\", \"1.0\", \"0.1\"\nFor details see: https://sap.github.io/ui5-tooling/pages/Configuration/#specification-versions" } @@ -28,7 +28,7 @@ "else": { "if": { "properties": { - "specVersion": { "enum": ["1.1", "1.0", "0.1"] } + "specVersion": { "enum": ["2.2a", "1.1", "1.0", "0.1"] } } }, "then": {