@itwin/express-server 3.0.0-extension.0 → 3.1.0-dev.5

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
@@ -1,6 +1,81 @@
1
1
  # Change Log - @itwin/express-server
2
2
 
3
- This log was last generated on Tue, 21 Sep 2021 21:06:40 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 12 Jan 2022 14:52:38 GMT and should not be manually modified.
4
+
5
+ ## 2.19.28
6
+ Wed, 12 Jan 2022 14:52:38 GMT
7
+
8
+ _Version update only_
9
+
10
+ ## 2.19.27
11
+ Wed, 05 Jan 2022 20:07:20 GMT
12
+
13
+ _Version update only_
14
+
15
+ ## 2.19.26
16
+ Wed, 08 Dec 2021 20:54:52 GMT
17
+
18
+ _Version update only_
19
+
20
+ ## 2.19.25
21
+ Fri, 03 Dec 2021 20:05:49 GMT
22
+
23
+ _Version update only_
24
+
25
+ ## 2.19.24
26
+ Mon, 29 Nov 2021 18:44:31 GMT
27
+
28
+ _Version update only_
29
+
30
+ ## 2.19.23
31
+ Mon, 22 Nov 2021 20:41:39 GMT
32
+
33
+ _Version update only_
34
+
35
+ ## 2.19.22
36
+ Wed, 17 Nov 2021 01:23:26 GMT
37
+
38
+ _Version update only_
39
+
40
+ ## 2.19.21
41
+ Wed, 10 Nov 2021 10:58:24 GMT
42
+
43
+ _Version update only_
44
+
45
+ ## 2.19.20
46
+ Fri, 29 Oct 2021 16:14:22 GMT
47
+
48
+ _Version update only_
49
+
50
+ ## 2.19.19
51
+ Mon, 25 Oct 2021 16:16:25 GMT
52
+
53
+ _Version update only_
54
+
55
+ ## 2.19.18
56
+ Thu, 21 Oct 2021 20:59:44 GMT
57
+
58
+ _Version update only_
59
+
60
+ ## 2.19.17
61
+ Thu, 14 Oct 2021 21:19:43 GMT
62
+
63
+ _Version update only_
64
+
65
+ ## 2.19.16
66
+ Mon, 11 Oct 2021 17:37:46 GMT
67
+
68
+ _Version update only_
69
+
70
+ ## 2.19.15
71
+ Fri, 08 Oct 2021 16:44:23 GMT
72
+
73
+ _Version update only_
74
+
75
+ ## 2.19.14
76
+ Fri, 01 Oct 2021 13:07:03 GMT
77
+
78
+ _Version update only_
4
79
 
5
80
  ## 2.19.13
6
81
  Tue, 21 Sep 2021 21:06:40 GMT
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MIT License
2
2
 
3
- Copyright © 2017-2021 Bentley Systems, Incorporated. All rights reserved.
3
+ Copyright © 2017-2022 Bentley Systems, Incorporated. All rights reserved.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
@@ -33,4 +33,11 @@ export declare class IModelJsExpressServer {
33
33
  */
34
34
  initialize(port: number | string): Promise<HttpServer>;
35
35
  }
36
+ /**
37
+ * @alpha
38
+ */
39
+ export declare class WebEditServer extends IModelJsExpressServer {
40
+ protected _configureRoutes(): void;
41
+ constructor(protocol: WebAppRpcProtocol, config?: IModelJsExpressServerConfig);
42
+ }
36
43
  //# sourceMappingURL=ExpressServer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressServer.d.ts","sourceRoot":"","sources":["../../src/ExpressServer.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAgC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,6CAA6C;IAC7C,gBAAuB,QAAQ,EAAE,2BAA2B,CAE1D;IAEF,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAA8B;IAC7C,SAAS,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,WAAW,CAAa;IAE1D,aAAa;IACb,IAAW,gBAAgB,IAAI,gBAAgB,CAAyC;gBAE5E,QAAQ,EAAE,iBAAiB,EAAE,MAAM,8BAAiC;IAKhF,SAAS,CAAC,oBAAoB;IAK9B,SAAS,CAAC,iBAAiB;IAU3B,SAAS,CAAC,gBAAgB;IAS1B;;;OAGG;IACU,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAUpE"}
1
+ {"version":3,"file":"ExpressServer.d.ts","sourceRoot":"","sources":["../../src/ExpressServer.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAgC,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAGvG;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,qBAAa,qBAAqB;IAChC,6CAA6C;IAC7C,gBAAuB,QAAQ,EAAE,2BAA2B,CAE1D;IAEF,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,OAAO,CAA8B;IAC7C,SAAS,CAAC,IAAI,EAAE,OAAO,SAAS,EAAE,WAAW,CAAa;IAE1D,aAAa;IACb,IAAW,gBAAgB,IAAI,gBAAgB,CAAyC;gBAE5E,QAAQ,EAAE,iBAAiB,EAAE,MAAM,8BAAiC;IAKhF,SAAS,CAAC,oBAAoB;IAK9B,SAAS,CAAC,iBAAiB;IAU3B,SAAS,CAAC,gBAAgB;IAS1B;;;OAGG;IACU,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAUpE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,qBAAqB;cACnC,gBAAgB;gBAKvB,QAAQ,EAAE,iBAAiB,EAAE,MAAM,8BAAiC;CAIjF"}
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IModelJsExpressServer = void 0;
3
+ exports.WebEditServer = exports.IModelJsExpressServer = void 0;
4
4
  /*---------------------------------------------------------------------------------------------
5
5
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
6
6
  * See LICENSE.md in the project root for license terms and full copyright notice.
7
7
  *--------------------------------------------------------------------------------------------*/
8
8
  const express = require("express");
9
+ const enableWs = require("express-ws");
9
10
  const core_common_1 = require("@itwin/core-common");
11
+ const core_backend_1 = require("@itwin/core-backend");
10
12
  /**
11
13
  * An express web server with some reasonable defaults for web applications built with @bentley/webpack-tools.
12
14
  * @note This server is not designed to be a hardened, secure endpoint on the public internet.
@@ -62,4 +64,18 @@ exports.IModelJsExpressServer = IModelJsExpressServer;
62
64
  IModelJsExpressServer.defaults = {
63
65
  uploadLimit: "5mb",
64
66
  };
67
+ /**
68
+ * @alpha
69
+ */
70
+ class WebEditServer extends IModelJsExpressServer {
71
+ _configureRoutes() {
72
+ this._app.ws("/ipc", (ws, _req) => core_backend_1.LocalhostIpcHost.connect(ws));
73
+ super._configureRoutes();
74
+ }
75
+ constructor(protocol, config = IModelJsExpressServer.defaults) {
76
+ super(protocol, config);
77
+ enableWs(this._app);
78
+ }
79
+ }
80
+ exports.WebEditServer = WebEditServer;
65
81
  //# sourceMappingURL=ExpressServer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressServer.js","sourceRoot":"","sources":["../../src/ExpressServer.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as express from \"express\";\r\nimport { Server as HttpServer } from \"http\";\r\nimport { BentleyCloudRpcConfiguration, RpcConfiguration, WebAppRpcProtocol } from \"@itwin/core-common\";\r\n\r\n/**\r\n * Options for configuring IModelJsExpressServer.\r\n * @public\r\n */\r\nexport interface IModelJsExpressServerConfig {\r\n uploadLimit: string;\r\n}\r\n\r\n/**\r\n * An express web server with some reasonable defaults for web applications built with @bentley/webpack-tools.\r\n * @note This server is not designed to be a hardened, secure endpoint on the public internet.\r\n * It is intended to participate in a private HTTP exchange with a public-facing routing and provisioning infrastructure\r\n * that should be supplied by the application's deployment environment.\r\n * @public\r\n */\r\nexport class IModelJsExpressServer {\r\n /** The default configuration for servers. */\r\n public static readonly defaults: IModelJsExpressServerConfig = {\r\n uploadLimit: \"5mb\",\r\n };\r\n\r\n private _protocol: WebAppRpcProtocol;\r\n private _config: IModelJsExpressServerConfig;\r\n protected _app: import(\"express\").Application = express();\r\n\r\n /** @alpha */\r\n public get rpcConfiguration(): RpcConfiguration { return this._protocol.configuration; }\r\n\r\n constructor(protocol: WebAppRpcProtocol, config = IModelJsExpressServer.defaults) {\r\n this._protocol = protocol;\r\n this._config = config;\r\n }\r\n\r\n protected _configureMiddleware() {\r\n this._app.use(express.text({ limit: this._config.uploadLimit }));\r\n this._app.use(express.raw({ limit: this._config.uploadLimit }));\r\n }\r\n\r\n protected _configureHeaders() {\r\n // enable CORS for all apis\r\n this._app.all(\"/**\", (_req, res, next) => {\r\n res.header(\"Access-Control-Allow-Origin\", BentleyCloudRpcConfiguration.accessControl.allowOrigin);\r\n res.header(\"Access-Control-Allow-Methods\", BentleyCloudRpcConfiguration.accessControl.allowMethods);\r\n res.header(\"Access-Control-Allow-Headers\", BentleyCloudRpcConfiguration.accessControl.allowHeaders);\r\n next();\r\n });\r\n }\r\n\r\n protected _configureRoutes() {\r\n this._app.get(\"/v3/swagger.json\", (req, res) => this._protocol.handleOpenApiDescriptionRequest(req, res));\r\n this._app.post(\"*\", async (req, res) => this._protocol.handleOperationPostRequest(req, res));\r\n this._app.get(/\\/imodel\\//, async (req, res) => this._protocol.handleOperationGetRequest(req, res));\r\n this._app.get(\"/ping\", async (_req, res) => res.status(200).send(\"Success\"));\r\n // for all HTTP requests, identify the server.\r\n this._app.use(\"*\", (_req, resp) => { resp.send(\"<h1>IModelJs RPC Server</h1>\"); });\r\n }\r\n\r\n /**\r\n * Configure the express application with necessary headers, routes, and middleware, then starts listening on the given port.\r\n * @param port The port to listen on\r\n */\r\n public async initialize(port: number | string): Promise<HttpServer> {\r\n this._configureMiddleware();\r\n this._configureHeaders();\r\n this._configureRoutes();\r\n\r\n this._app.set(\"port\", port);\r\n return new Promise<HttpServer>((resolve) => {\r\n const server: HttpServer = this._app.listen(this._app.get(\"port\"), () => resolve(server));\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ExpressServer.js","sourceRoot":"","sources":["../../src/ExpressServer.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,mCAAmC;AACnC,uCAAuC;AAEvC,oDAAuG;AACvG,sDAAuD;AAUvD;;;;;;GAMG;AACH,MAAa,qBAAqB;IAahC,YAAY,QAA2B,EAAE,MAAM,GAAG,qBAAqB,CAAC,QAAQ;QALtE,SAAI,GAAkC,OAAO,EAAE,CAAC;QAMxD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IACxB,CAAC;IAND,aAAa;IACb,IAAW,gBAAgB,KAAuB,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAO9E,oBAAoB;QAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC;IAES,iBAAiB;QACzB,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACvC,GAAG,CAAC,MAAM,CAAC,6BAA6B,EAAE,0CAA4B,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAClG,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,0CAA4B,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACpG,GAAG,CAAC,MAAM,CAAC,8BAA8B,EAAE,0CAA4B,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACpG,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;IACL,CAAC;IAES,gBAAgB;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,+BAA+B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7F,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACpG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC7E,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,UAAU,CAAC,IAAqB;QAC3C,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,MAAM,GAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACL,CAAC;;AAvDH,sDAwDC;AAvDC,6CAA6C;AACtB,8BAAQ,GAAgC;IAC7D,WAAW,EAAE,KAAK;CACnB,CAAC;AAsDJ;;GAEG;AACH,MAAa,aAAc,SAAQ,qBAAqB;IACnC,gBAAgB;QAChC,IAAI,CAAC,IAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,EAAO,EAAE,IAAS,EAAE,EAAE,CAAC,+BAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC3B,CAAC;IAED,YAAY,QAA2B,EAAE,MAAM,GAAG,qBAAqB,CAAC,QAAQ;QAC9E,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;CACF;AAVD,sCAUC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport * as express from \"express\";\r\nimport * as enableWs from \"express-ws\";\r\nimport { Server as HttpServer } from \"http\";\r\nimport { BentleyCloudRpcConfiguration, RpcConfiguration, WebAppRpcProtocol } from \"@itwin/core-common\";\r\nimport { LocalhostIpcHost } from \"@itwin/core-backend\";\r\n\r\n/**\r\n * Options for configuring IModelJsExpressServer.\r\n * @public\r\n */\r\nexport interface IModelJsExpressServerConfig {\r\n uploadLimit: string;\r\n}\r\n\r\n/**\r\n * An express web server with some reasonable defaults for web applications built with @bentley/webpack-tools.\r\n * @note This server is not designed to be a hardened, secure endpoint on the public internet.\r\n * It is intended to participate in a private HTTP exchange with a public-facing routing and provisioning infrastructure\r\n * that should be supplied by the application's deployment environment.\r\n * @public\r\n */\r\nexport class IModelJsExpressServer {\r\n /** The default configuration for servers. */\r\n public static readonly defaults: IModelJsExpressServerConfig = {\r\n uploadLimit: \"5mb\",\r\n };\r\n\r\n private _protocol: WebAppRpcProtocol;\r\n private _config: IModelJsExpressServerConfig;\r\n protected _app: import(\"express\").Application = express();\r\n\r\n /** @alpha */\r\n public get rpcConfiguration(): RpcConfiguration { return this._protocol.configuration; }\r\n\r\n constructor(protocol: WebAppRpcProtocol, config = IModelJsExpressServer.defaults) {\r\n this._protocol = protocol;\r\n this._config = config;\r\n }\r\n\r\n protected _configureMiddleware() {\r\n this._app.use(express.text({ limit: this._config.uploadLimit }));\r\n this._app.use(express.raw({ limit: this._config.uploadLimit }));\r\n }\r\n\r\n protected _configureHeaders() {\r\n // enable CORS for all apis\r\n this._app.all(\"/**\", (_req, res, next) => {\r\n res.header(\"Access-Control-Allow-Origin\", BentleyCloudRpcConfiguration.accessControl.allowOrigin);\r\n res.header(\"Access-Control-Allow-Methods\", BentleyCloudRpcConfiguration.accessControl.allowMethods);\r\n res.header(\"Access-Control-Allow-Headers\", BentleyCloudRpcConfiguration.accessControl.allowHeaders);\r\n next();\r\n });\r\n }\r\n\r\n protected _configureRoutes() {\r\n this._app.get(\"/v3/swagger.json\", (req, res) => this._protocol.handleOpenApiDescriptionRequest(req, res));\r\n this._app.post(\"*\", async (req, res) => this._protocol.handleOperationPostRequest(req, res));\r\n this._app.get(/\\/imodel\\//, async (req, res) => this._protocol.handleOperationGetRequest(req, res));\r\n this._app.get(\"/ping\", async (_req, res) => res.status(200).send(\"Success\"));\r\n // for all HTTP requests, identify the server.\r\n this._app.use(\"*\", (_req, resp) => { resp.send(\"<h1>IModelJs RPC Server</h1>\"); });\r\n }\r\n\r\n /**\r\n * Configure the express application with necessary headers, routes, and middleware, then starts listening on the given port.\r\n * @param port The port to listen on\r\n */\r\n public async initialize(port: number | string): Promise<HttpServer> {\r\n this._configureMiddleware();\r\n this._configureHeaders();\r\n this._configureRoutes();\r\n\r\n this._app.set(\"port\", port);\r\n return new Promise<HttpServer>((resolve) => {\r\n const server: HttpServer = this._app.listen(this._app.get(\"port\"), () => resolve(server));\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * @alpha\r\n */\r\nexport class WebEditServer extends IModelJsExpressServer {\r\n protected override _configureRoutes() {\r\n (this._app as any).ws(\"/ipc\", (ws: any, _req: any) => LocalhostIpcHost.connect(ws));\r\n super._configureRoutes();\r\n }\r\n\r\n constructor(protocol: WebAppRpcProtocol, config = IModelJsExpressServer.defaults) {\r\n super(protocol, config);\r\n enableWs(this._app);\r\n }\r\n}\r\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@itwin/express-server",
3
- "version": "3.0.0-extension.0",
4
- "description": "iModel.js express utilities",
3
+ "version": "3.1.0-dev.5",
4
+ "description": "iTwin.js express utilities",
5
5
  "main": "lib/cjs/ExpressServer.js",
6
6
  "typings": "lib/cjs/ExpressServer",
7
7
  "license": "MIT",
@@ -10,21 +10,24 @@
10
10
  },
11
11
  "repository": {
12
12
  "type": "git",
13
- "url": "https://github.com/imodeljs/imodeljs/tree/master/core/express-server"
13
+ "url": "https://github.com/iTwin/itwinjs-core/tree/master/core/express-server"
14
14
  },
15
15
  "keywords": [
16
16
  "Bentley",
17
17
  "BIM",
18
- "iModel"
18
+ "iModel",
19
+ "iTwin",
20
+ "iTwin.js"
19
21
  ],
20
22
  "author": {
21
23
  "name": "Bentley Systems, Inc.",
22
24
  "url": "http://www.bentley.com"
23
25
  },
24
26
  "devDependencies": {
25
- "@itwin/build-tools": "3.0.0-extension.0",
26
- "@itwin/eslint-plugin": "3.0.0-extension.0",
27
- "@itwin/core-common": "3.0.0-extension.0",
27
+ "@itwin/build-tools": "3.1.0-dev.5",
28
+ "@itwin/core-common": "3.1.0-dev.5",
29
+ "@itwin/core-backend": "3.1.0-dev.5",
30
+ "@itwin/eslint-plugin": "3.1.0-dev.5",
28
31
  "@types/body-parser": "^1.17.0",
29
32
  "@types/chai": "^4.1.4",
30
33
  "@types/express": "^4.16.1",
@@ -32,18 +35,22 @@
32
35
  "@types/node": "14.14.31",
33
36
  "@types/sinon": "^9.0.0",
34
37
  "@types/supertest": "^2.0.4",
38
+ "@types/express-ws": "^3.0.1",
35
39
  "chai": "^4.1.2",
36
40
  "eslint": "^7.11.0",
37
41
  "mocha": "^8.3.2",
38
42
  "nyc": "^15.1.0",
39
43
  "rimraf": "^3.0.2",
40
44
  "sinon": "^9.0.2",
41
- "source-map-support": "^0.5.6",
42
45
  "supertest": "^3.0.0",
43
46
  "typescript": "~4.4.0"
44
47
  },
48
+ "peerDependencies": {
49
+ "@itwin/core-backend": "3.1.0-dev.5"
50
+ },
45
51
  "dependencies": {
46
- "express": "^4.16.3"
52
+ "express": "^4.16.3",
53
+ "express-ws": "^5.0.2"
47
54
  },
48
55
  "eslintConfig": {
49
56
  "plugins": [
@@ -64,5 +71,6 @@
64
71
  "lint": "eslint -f visualstudio \"./src/**/*.ts\" 1>&2",
65
72
  "test": "mocha",
66
73
  "cover": "nyc npm -s test"
67
- }
74
+ },
75
+ "readme": "# @itwin/express-server\r\n\r\nCopyright © Bentley Systems, Incorporated. All rights reserved. See LICENSE.md for license terms and full copyright notice.\r\n\r\n## Description\r\n\r\nThe __@itwin/express-server__ package contains the express webserver utilities to write an iTwin.js backend service.\r\n\r\n## Documentation\r\n\r\nSee the [iTwin.js](https://www.itwinjs.org) documentation for more information.\r\n"
68
76
  }