@ui5/server 3.1.1 → 3.1.3

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.
package/CHANGELOG.md CHANGED
@@ -2,10 +2,22 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
4
4
 
5
- A list of unreleased changes can be found [here](https://github.com/SAP/ui5-server/compare/v3.1.1...HEAD).
5
+ A list of unreleased changes can be found [here](https://github.com/SAP/ui5-server/compare/v3.1.3...HEAD).
6
+
7
+ <a name="v3.1.3"></a>
8
+ ## [v3.1.3] - 2023-05-23
9
+ ### Bug Fixes
10
+ - **middleware/testRunner:** Update resources from OpenUI5 [`f0c7291`](https://github.com/SAP/ui5-server/commit/f0c7291d2dc1d753e04184fdf2127c278810f0c4)
11
+
12
+
13
+ <a name="v3.1.2"></a>
14
+ ## [v3.1.2] - 2023-04-12
15
+ ### Bug Fixes
16
+ - Fix JSDoc names of typedefs in MiddlewareUtil. [`dbd6fe1`](https://github.com/SAP/ui5-server/commit/dbd6fe19c229471ba2b8621b97b8f5a9bca56a78)
17
+
6
18
 
7
19
  <a name="v3.1.1"></a>
8
- ## [v3.1.1] - 2023-03-14
20
+ ## [v3.1.1] - 2023-03-16
9
21
  ### Bug Fixes
10
22
  - Allow serving of propertyfiles of non component project types [`1bc6ec7`](https://github.com/SAP/ui5-server/commit/1bc6ec72a15ae7df558c4938b2670d0e78af710b)
11
23
 
@@ -308,6 +320,8 @@ Only Node.js v10 or higher is supported.
308
320
 
309
321
  <a name="v0.0.1"></a>
310
322
  ## v0.0.1 - 2018-06-06
323
+ [v3.1.3]: https://github.com/SAP/ui5-server/compare/v3.1.2...v3.1.3
324
+ [v3.1.2]: https://github.com/SAP/ui5-server/compare/v3.1.1...v3.1.2
311
325
  [v3.1.1]: https://github.com/SAP/ui5-server/compare/v3.1.0...v3.1.1
312
326
  [v3.1.0]: https://github.com/SAP/ui5-server/compare/v3.0.1...v3.1.0
313
327
  [v3.0.1]: https://github.com/SAP/ui5-server/compare/v3.0.0...v3.0.1
@@ -101,7 +101,7 @@ class MiddlewareUtil {
101
101
  * For details on individual functions, see [Project]{@link @ui5/project/specifications/Project}
102
102
  *
103
103
  * @public
104
- * @typedef {object} @ui5/project/build/helpers/MiddlewareUtill~ProjectInterface
104
+ * @typedef {object} @ui5/server/middleware/MiddlewareUtil~ProjectInterface
105
105
  * @property {Function} getType Get the project type
106
106
  * @property {Function} getName Get the project name
107
107
  * @property {Function} getVersion Get the project version
@@ -127,7 +127,7 @@ class MiddlewareUtil {
127
127
  * @param {string|@ui5/fs/Resource} [projectNameOrResource]
128
128
  * Name of the project to retrieve or a Resource instance to retrieve the associated project for.
129
129
  * Defaults to the name of the current root project
130
- * @returns {@ui5/project/build/helpers/MiddlewareUtill~ProjectInterface|undefined}
130
+ * @returns {@ui5/server/middleware/MiddlewareUtil~ProjectInterface|undefined}
131
131
  * Specification Version-dependent interface to the Project instance or <code>undefined</code>
132
132
  * if the project name is unknown or the provided resource is not associated with any project.
133
133
  * @public
@@ -170,7 +170,7 @@ class MiddlewareUtil {
170
170
  * For details on individual functions, see [@ui5/fs/resourceFactory]{@link @ui5/fs/resourceFactory}
171
171
  *
172
172
  * @public
173
- * @typedef {object} @ui5/project/build/helpers/MiddlewareUtill~resourceFactory
173
+ * @typedef {object} @ui5/server/middleware/MiddlewareUtil~resourceFactory
174
174
  * @property {Function} createResource Creates a [Resource]{@link @ui5/fs/Resource}.
175
175
  * Accepts the same parameters as the [Resource]{@link @ui5/fs/Resource} constructor.
176
176
  * @property {Function} createReaderCollection Creates a reader collection:
@@ -192,7 +192,7 @@ class MiddlewareUtil {
192
192
  * This attribute is only available to custom server middleware extensions defining
193
193
  * <b>Specification Version 3.0 and above</b>.
194
194
  *
195
- * @type {@ui5/project/build/helpers/MiddlewareUtill~resourceFactory}
195
+ * @type {@ui5/server/middleware/MiddlewareUtil~resourceFactory}
196
196
  * @public
197
197
  */
198
198
  resourceFactory = {
@@ -108,13 +108,9 @@
108
108
  window.sap.ui.qunit.TestRunner = {
109
109
 
110
110
  checkTestPage: function(sTestPage, bSequential) {
111
- var t0 = Date.now();
112
111
  var oPromise =
113
112
  this._checkTestPage(sTestPage, bSequential)
114
113
  .then(function(aTestPages) {
115
- var t1 = Date.now();
116
- window.console.log("[DEBUG] checkTestPage(\"" + sTestPage + "\") found " + aTestPages.length + " pages in " + (t1 - t0) + "msec.");
117
- window.console.log("[DEBUG] checkTestPage(\"" + sTestPage + "\") currently running IFrames: " + window.frames.length);
118
114
  return aTestPages;
119
115
  });
120
116
  oPromise.done = oPromise.then; // compat for Deferred
@@ -139,8 +135,8 @@
139
135
  // check for an existing test page and check for test suite or page
140
136
  oXHRQueue.ajax(sTestPage).then(function(sData) {
141
137
  if (/(?:window\.suite\s*=|function\s*suite\s*\(\s*\)\s*{)/.test(sData)
142
- || (/data-sap-ui-testsuite/.test(sData) && !/sap\/ui\/test\/starter\/runTest/.test(sData)) ) {
143
- // window.console.log("[DEBUG] _checkTestPage checking testsuite page: " + sTestPage);
138
+ || (/data-sap-ui-testsuite/.test(sData) && !/sap\/ui\/test\/starter\/runTest/.test(sData))
139
+ || /sap\/ui\/test\/starter\/createSuite/.test(sData) ) {
144
140
  var $frame = jQuery("<iframe>");
145
141
  var that = this;
146
142
 
@@ -194,11 +190,7 @@
194
190
  findTestPages: function(oIFrame, bSequential) {
195
191
 
196
192
  return Promise.resolve(oIFrame.contentWindow.suite()).then(function(oSuite) {
197
- window.console.log("[DEBUG] findTestPages oIFrame source: " + oIFrame.src);
198
193
  var aPages = oSuite && oSuite.getTestPages() || [];
199
- for (var i = 0; i < aPages.length; i++) {
200
- window.console.log("[DEBUG] findTestPages oIFrame source " + oIFrame.src + ": " + aPages[i]);
201
- }
202
194
  return new Promise(function(resolve, reject) {
203
195
 
204
196
  try {
@@ -303,12 +295,12 @@
303
295
  },
304
296
 
305
297
  printTestResultAndRemoveFrame : function (oInst, $frame, $framediv, oContext) {
306
- var oCoverage = $frame[0].contentWindow._$blanket;
298
+ var oBlanketCoverage = $frame[0].contentWindow._$blanket;
307
299
 
308
300
  // in case of coverage either merge it or set it on the _$blanket object
309
- if (oCoverage) {
301
+ if (oBlanketCoverage) {
310
302
  window._$blanket = window._$blanket || {};
311
- jQuery.each(oCoverage, function(sModule, aCoverageInfo) {
303
+ jQuery.each(oBlanketCoverage, function(sModule, aCoverageInfo) {
312
304
  if (!window._$blanket[sModule]) {
313
305
  window._$blanket[sModule] = aCoverageInfo;
314
306
  } else {
@@ -387,11 +379,8 @@
387
379
 
388
380
  if ($qunitBanner.hasClass("qunit-fail") || $qunitBanner.hasClass("qunit-pass")) {
389
381
 
390
- //IE workaround for the lack of document.baseURI property
391
- var baseURI = doc.location.href;
392
-
393
382
  if (sTestName == " ") {
394
- sTestName = "QUnit page for " + baseURI.substring(baseURI.indexOf("test-resources") + 15, baseURI.length);
383
+ sTestName = "QUnit page for " + doc.baseURI.substring(doc.baseURI.indexOf("test-resources") + 15, doc.baseURI.length);
395
384
  }
396
385
  oContext = oInst.fnGetTestResults(sTestName, $results);
397
386
  this.printTestResultAndRemoveFrame(oInst, $frame, $framediv, oContext);
@@ -473,7 +462,47 @@
473
462
  },
474
463
 
475
464
  getCoverage: function() {
476
- return window._$blanket;
465
+ return window._$blanket || window.top.__coverage__;
466
+ },
467
+
468
+ reportCoverage: function (reportToEl) {
469
+ var oCoverage = this.getCoverage();
470
+
471
+ if (!oCoverage) {
472
+ return;
473
+ }
474
+
475
+ if ( window.blanket && !window.top.__coverage__ ) {
476
+ window.blanket.report({});
477
+ } else {
478
+ jQuery.ajax("/.ui5/coverage/report", {
479
+ method: "POST",
480
+ data: JSON.stringify(window.top.__coverage__),
481
+ headers: {
482
+ "Content-Type": "application/json"
483
+ }
484
+ })
485
+ .then(function (oData) {
486
+ var aReports = oData.availableReports;
487
+ var oHTMLReport = aReports.filter(function (oCurReport) {
488
+ // HTML is the only one that make sense and
489
+ // provides understandable information
490
+ return oCurReport.report === "html";
491
+ })[0];
492
+
493
+ if (!oHTMLReport) { // Do not render reports if HTML or lcov are not provided
494
+ return;
495
+ }
496
+
497
+ var oFrameEl = document.createElement("iframe");
498
+ oFrameEl.src = "/.ui5/coverage/report/" + oHTMLReport.destination;
499
+ oFrameEl.style.border = "none";
500
+ oFrameEl.style.width = "100%";
501
+ oFrameEl.style.height = "100vh";
502
+ oFrameEl.sandbox = "allow-scripts";
503
+ reportToEl.appendChild(oFrameEl);
504
+ });
505
+ }
477
506
  },
478
507
 
479
508
  getTestPageUrl: function(sFallbackUrl) {
@@ -1,7 +1,7 @@
1
1
  <!DOCTYPE HTML>
2
2
  <html>
3
3
  <head>
4
-
4
+ <meta charset="utf-8">
5
5
  <title>SAPUI5 QUnit TestRunner</title>
6
6
 
7
7
  <script src="../../../../resources/sap/ui/thirdparty/es6-promise.js"></script>
@@ -147,9 +147,10 @@
147
147
  sap.ui.qunit.TestRunner.runTests(aTests, nStep).then(function(oResult) {
148
148
  $this.val("Run");
149
149
  jQuery("#stop").toggle();
150
- if (sap.ui.qunit.TestRunner.hasCoverage() && window.blanket) {
151
- window.blanket.report({});
152
- jQuery("div.test-coverage").toggle();
150
+ if (sap.ui.qunit.TestRunner.hasCoverage()) {
151
+ var $testCoverage = jQuery("div.test-coverage");
152
+ $testCoverage.toggle();
153
+ sap.ui.qunit.TestRunner.reportCoverage( $testCoverage[0] );
153
154
  }
154
155
  }).then(function() {
155
156
  $this.val("Run");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/server",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "UI5 Tooling - Server",
5
5
  "author": {
6
6
  "name": "SAP SE",
@@ -114,8 +114,8 @@
114
114
  "url": "git@github.com:SAP/ui5-server.git"
115
115
  },
116
116
  "dependencies": {
117
- "@ui5/builder": "^3.0.1",
118
- "@ui5/fs": "^3.0.2",
117
+ "@ui5/builder": "^3.0.5",
118
+ "@ui5/fs": "^3.0.4",
119
119
  "@ui5/logger": "^3.0.0",
120
120
  "body-parser": "^1.20.2",
121
121
  "compression": "^1.7.4",
@@ -125,7 +125,7 @@
125
125
  "etag": "^1.8.1",
126
126
  "express": "^4.18.2",
127
127
  "fresh": "^0.5.2",
128
- "graceful-fs": "^4.2.10",
128
+ "graceful-fs": "^4.2.11",
129
129
  "mime-types": "^2.1.35",
130
130
  "parseurl": "^1.3.3",
131
131
  "portscanner": "^2.2.0",
@@ -136,22 +136,22 @@
136
136
  },
137
137
  "devDependencies": {
138
138
  "@istanbuljs/esm-loader-hook": "^0.2.0",
139
- "@ui5/project": "^3.0.4",
140
- "ava": "^5.2.0",
139
+ "@ui5/project": "^3.3.1",
140
+ "ava": "^5.3.0",
141
141
  "chokidar-cli": "^3.0.0",
142
142
  "cross-env": "^7.0.3",
143
143
  "depcheck": "^1.4.3",
144
144
  "docdash": "^2.0.1",
145
- "eslint": "^8.36.0",
145
+ "eslint": "^8.42.0",
146
146
  "eslint-config-google": "^0.14.0",
147
147
  "eslint-plugin-ava": "^14.0.0",
148
- "eslint-plugin-jsdoc": "^40.0.1",
149
- "esmock": "^2.1.0",
148
+ "eslint-plugin-jsdoc": "^46.2.2",
149
+ "esmock": "^2.3.1",
150
150
  "jsdoc": "^4.0.2",
151
151
  "nyc": "^15.1.0",
152
- "open-cli": "^7.1.0",
153
- "rimraf": "^4.4.0",
154
- "sinon": "^15.0.1",
152
+ "open-cli": "^7.2.0",
153
+ "rimraf": "^5.0.1",
154
+ "sinon": "^15.1.0",
155
155
  "supertest": "^6.3.3",
156
156
  "tap-xunit": "^2.4.1"
157
157
  }