@ui5/server 3.0.0-beta.2 → 3.0.0-beta.4

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,7 +2,16 @@
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.0.0-beta.2...HEAD).
5
+ A list of unreleased changes can be found [here](https://github.com/SAP/ui5-server/compare/v3.0.0-beta.4...HEAD).
6
+
7
+ <a name="v3.0.0-beta.4"></a>
8
+ ## [v3.0.0-beta.4] - 2022-12-01
9
+ ### Dependency Updates
10
+ - Bump connect-openui5 from 0.10.2 to 0.10.3 [`90871f8`](https://github.com/SAP/ui5-server/commit/90871f89815501860616ffbdf8927824412ec909)
11
+
12
+
13
+ <a name="v3.0.0-beta.3"></a>
14
+ ## [v3.0.0-beta.3] - 2022-11-30
6
15
 
7
16
  <a name="v3.0.0-beta.2"></a>
8
17
  ## [v3.0.0-beta.2] - 2022-11-29
@@ -299,6 +308,8 @@ Only Node.js v10 or higher is supported.
299
308
  <a name="v0.0.1"></a>
300
309
  ## v0.0.1 - 2018-06-06
301
310
 
311
+ [v3.0.0-beta.4]: https://github.com/SAP/ui5-server/compare/v3.0.0-beta.3...v3.0.0-beta.4
312
+ [v3.0.0-beta.3]: https://github.com/SAP/ui5-server/compare/v3.0.0-beta.2...v3.0.0-beta.3
302
313
  [v3.0.0-beta.2]: https://github.com/SAP/ui5-server/compare/v3.0.0-beta.1...v3.0.0-beta.2
303
314
  [v3.0.0-beta.1]: https://github.com/SAP/ui5-server/compare/v3.0.0-alpha.4...v3.0.0-beta.1
304
315
  [v3.0.0-alpha.4]: https://github.com/SAP/ui5-server/compare/v3.0.0-alpha.3...v3.0.0-alpha.4
@@ -61,7 +61,7 @@ class MiddlewareManager {
61
61
  * Adds the given middleware configuration
62
62
  *
63
63
  * @private
64
- * @param {string} configuredMiddlewareName The name of the middleware
64
+ * @param {string} middlewareName The name of the middleware
65
65
  * @param {object} [options] The Options of the middleware
66
66
  * @param {object} [options.customMiddleware] The custom middleware
67
67
  * @param {Function} [options.wrapperCallback] Callback called when middleware is called
@@ -69,15 +69,19 @@ class MiddlewareManager {
69
69
  * @param {string} [options.beforeMiddleware] The name of the middleware called before the added middleware
70
70
  * @param {string} [options.afterMiddleware] The name of the middleware called after the added middleware
71
71
  */
72
- async addMiddleware(configuredMiddlewareName, {
72
+ async addMiddleware(middlewareName, {
73
73
  customMiddleware, wrapperCallback, mountPath = "/",
74
74
  beforeMiddleware, afterMiddleware
75
75
  } = {}) {
76
+ if (this.middleware[middlewareName]) {
77
+ throw new Error(`A middleware with the name ${middlewareName} has already been added`);
78
+ }
79
+
76
80
  let middlewareCallback;
77
81
  if (customMiddleware) {
78
82
  middlewareCallback = customMiddleware;
79
83
  } else {
80
- const middlewareInfo = await middlewareRepository.getMiddleware(configuredMiddlewareName);
84
+ const middlewareInfo = await middlewareRepository.getMiddleware(middlewareName);
81
85
  if (wrapperCallback) {
82
86
  middlewareCallback = wrapperCallback(middlewareInfo);
83
87
  } else {
@@ -85,16 +89,6 @@ class MiddlewareManager {
85
89
  }
86
90
  }
87
91
 
88
- let middlewareName = configuredMiddlewareName;
89
- if (this.middleware[middlewareName]) {
90
- // Middleware is already known
91
- // => add a suffix to allow for multiple configurations of the same middleware
92
- let suffixCounter = 0;
93
- while (this.middleware[middlewareName]) {
94
- suffixCounter++; // Start at 1
95
- middlewareName = `${configuredMiddlewareName}--${suffixCounter}`;
96
- }
97
- }
98
92
  if (this.middlewareExecutionOrder.includes(middlewareName)) {
99
93
  throw new Error(`Middleware ${middlewareName} already added to execution order. This should not happen.`);
100
94
  }
@@ -275,7 +269,19 @@ class MiddlewareManager {
275
269
  `Custom middleware definition ${middlewareDef.name} of project ${project.getName()} ` +
276
270
  `defines neither a "beforeMiddleware" nor an "afterMiddleware" parameter. One must be defined.`);
277
271
  }
278
- await this.addMiddleware(middlewareDef.name, {
272
+
273
+ let middlewareName = middlewareDef.name;
274
+ if (this.middleware[middlewareName]) {
275
+ // Middleware is already known
276
+ // => add a suffix to allow for multiple configurations of the same middleware
277
+ let suffixCounter = 0;
278
+ while (this.middleware[middlewareName]) {
279
+ suffixCounter++; // Start at 1
280
+ middlewareName = `${middlewareDef.name}--${suffixCounter}`;
281
+ }
282
+ }
283
+
284
+ await this.addMiddleware(middlewareName, {
279
285
  customMiddleware: async ({resources, middlewareUtil}) => {
280
286
  const customMiddleware = this.graph.getExtension(middlewareDef.name);
281
287
 
@@ -288,7 +294,7 @@ class MiddlewareManager {
288
294
 
289
295
  const specVersion = customMiddleware.getSpecVersion();
290
296
  if (specVersion.gte("3.0")) {
291
- params.options.middlewareName = middlewareDef.name;
297
+ params.options.middlewareName = middlewareName;
292
298
  params.log = logger.getGroupLogger(`server:custom-middleware:${middlewareDef.name}`);
293
299
  }
294
300
  const middlewareUtilInterface = middlewareUtil.getInterface(specVersion);
@@ -1,6 +1,7 @@
1
1
  import parseurl from "parseurl";
2
2
  import mime from "mime-types";
3
3
  import {
4
+ createReaderCollection,
4
5
  createReaderCollectionPrioritized,
5
6
  createResource,
6
7
  createFilterReader,
@@ -156,6 +157,8 @@ class MiddlewareUtil {
156
157
  * @typedef {object} @ui5/project/build/helpers/MiddlewareUtill~resourceFactory
157
158
  * @property {Function} createResource Creates a [Resource]{@link @ui5/fs/Resource}.
158
159
  * Accepts the same parameters as the [Resource]{@link @ui5/fs/Resource} constructor.
160
+ * @property {Function} createReaderCollection Creates a reader collection:
161
+ * [ReaderCollection]{@link @ui5/fs/ReaderCollection}
159
162
  * @property {Function} createReaderCollectionPrioritized Creates a prioritized reader collection:
160
163
  * [ReaderCollectionPrioritized]{@link @ui5/fs/ReaderCollectionPrioritized}
161
164
  * @property {Function} createFilterReader
@@ -178,6 +181,7 @@ class MiddlewareUtil {
178
181
  */
179
182
  resourceFactory = {
180
183
  createResource,
184
+ createReaderCollection,
181
185
  createReaderCollectionPrioritized,
182
186
  createFilterReader,
183
187
  createLinkReader,
@@ -223,7 +227,7 @@ class MiddlewareUtil {
223
227
  [
224
228
  // Once new functions get added, extract this array into a variable
225
229
  // and enhance based on spec version once new functions get added
226
- "createResource", "createReaderCollectionPrioritized",
230
+ "createResource", "createReaderCollection", "createReaderCollectionPrioritized",
227
231
  "createFilterReader", "createLinkReader", "createFlatReader",
228
232
  ].forEach((factoryFunction) => {
229
233
  baseInterface.resourceFactory[factoryFunction] = this.resourceFactory[factoryFunction];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/server",
3
- "version": "3.0.0-beta.2",
3
+ "version": "3.0.0-beta.4",
4
4
  "description": "UI5 Tooling - Server",
5
5
  "author": {
6
6
  "name": "SAP SE",
@@ -115,12 +115,12 @@
115
115
  "url": "git@github.com:SAP/ui5-server.git"
116
116
  },
117
117
  "dependencies": {
118
- "@ui5/builder": "^3.0.0-beta.2",
119
- "@ui5/fs": "^3.0.0-beta.3",
118
+ "@ui5/builder": "^3.0.0-beta.4",
119
+ "@ui5/fs": "^3.0.0-beta.4",
120
120
  "@ui5/logger": "^3.0.1-beta.1",
121
121
  "body-parser": "^1.20.1",
122
122
  "compression": "^1.7.4",
123
- "connect-openui5": "^0.10.2",
123
+ "connect-openui5": "^0.10.3",
124
124
  "cors": "^2.8.5",
125
125
  "devcert-sanscache": "^0.4.8",
126
126
  "escape-html": "^1.0.3",
@@ -139,7 +139,7 @@
139
139
  },
140
140
  "devDependencies": {
141
141
  "@istanbuljs/esm-loader-hook": "^0.2.0",
142
- "@ui5/project": "^3.0.0-beta.3",
142
+ "@ui5/project": "^3.0.0-beta.4",
143
143
  "ava": "^5.1.0",
144
144
  "chokidar-cli": "^3.0.0",
145
145
  "cross-env": "^7.0.3",