@itwin/express-server 3.0.0-extension.1 → 3.1.0-dev.6
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 +76 -1
- package/LICENSE.md +1 -1
- package/lib/cjs/ExpressServer.d.ts +7 -0
- package/lib/cjs/ExpressServer.d.ts.map +1 -1
- package/lib/cjs/ExpressServer.js +17 -1
- package/lib/cjs/ExpressServer.js.map +1 -1
- package/package.json +17 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,81 @@
|
|
|
1
1
|
# Change Log - @itwin/express-server
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
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-
|
|
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":";
|
|
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"}
|
package/lib/cjs/ExpressServer.js
CHANGED
|
@@ -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":";;;AAAA;;;+FAG+F;AAC/F,mCAAmC;
|
|
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.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.1.0-dev.6",
|
|
4
|
+
"description": "iTwin.js express utilities",
|
|
5
5
|
"main": "lib/cjs/ExpressServer.js",
|
|
6
6
|
"typings": "lib/cjs/ExpressServer",
|
|
7
7
|
"license": "MIT",
|
|
@@ -15,16 +15,19 @@
|
|
|
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.
|
|
26
|
-
"@itwin/
|
|
27
|
-
"@itwin/core-
|
|
27
|
+
"@itwin/build-tools": "3.1.0-dev.6",
|
|
28
|
+
"@itwin/core-common": "3.1.0-dev.6",
|
|
29
|
+
"@itwin/core-backend": "3.1.0-dev.6",
|
|
30
|
+
"@itwin/eslint-plugin": "3.1.0-dev.6",
|
|
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.6"
|
|
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
|
}
|