@itwin/core-frontend 3.3.0-dev.58 → 3.3.0-dev.61
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,eAAe,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB,CAAC;CACH;AAwDD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAuB;WAE5B,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,SAAQ,GAAG,GAAG;WAOzC,OAAO,CAAC,IAAI,EAAE,mBAAmB;CActD"}
|
|
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
10
10
|
exports.LocalhostIpcApp = void 0;
|
|
11
11
|
const core_common_1 = require("@itwin/core-common");
|
|
12
12
|
const IpcApp_1 = require("./IpcApp");
|
|
13
|
+
const IModelApp_1 = require("./IModelApp");
|
|
13
14
|
class LocalTransport extends core_common_1.IpcWebSocketTransport {
|
|
14
15
|
constructor(opts) {
|
|
15
16
|
var _a, _b, _c, _d;
|
|
@@ -49,6 +50,11 @@ class LocalTransport extends core_common_1.IpcWebSocketTransport {
|
|
|
49
50
|
parts.forEach((part) => this._client.send(part));
|
|
50
51
|
}
|
|
51
52
|
}
|
|
53
|
+
class LocalSession extends core_common_1.IpcSession {
|
|
54
|
+
async handleRpc(info) {
|
|
55
|
+
return IpcApp_1.IpcApp.callIpcChannel("RPC", "request", info);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
52
58
|
/**
|
|
53
59
|
* To be used only by test applications that want to test web-based editing using localhost.
|
|
54
60
|
* @internal
|
|
@@ -67,6 +73,10 @@ class LocalhostIpcApp {
|
|
|
67
73
|
this._initialized = true;
|
|
68
74
|
}
|
|
69
75
|
await IpcApp_1.IpcApp.startup(this._ipc, opts);
|
|
76
|
+
if (!core_common_1.IpcSession.active) {
|
|
77
|
+
core_common_1.IpcSession.start(new LocalSession());
|
|
78
|
+
IModelApp_1.IModelApp.onBeforeShutdown.addListener(() => core_common_1.IpcSession.stop());
|
|
79
|
+
}
|
|
70
80
|
}
|
|
71
81
|
}
|
|
72
82
|
exports.LocalhostIpcApp = LocalhostIpcApp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,
|
|
1
|
+
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.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\n/** @packageDocumentation\r\n * @module IModelApp\r\n */\r\n\r\nimport { InterceptedRpcRequest, IpcSession, IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from \"@itwin/core-common\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\n\r\n/** @internal */\r\nexport interface LocalHostIpcAppOpts {\r\n iModelApp?: IModelAppOptions;\r\n\r\n localhostIpcApp?: {\r\n socketPort?: number;\r\n socketUrl?: URL;\r\n };\r\n}\r\n\r\nclass LocalTransport extends IpcWebSocketTransport {\r\n private _client: WebSocket;\r\n private _next: number;\r\n private _pending?: IpcWebSocketMessage[] = [];\r\n\r\n public constructor(opts: LocalHostIpcAppOpts) {\r\n super();\r\n\r\n let url: URL;\r\n if (opts?.localhostIpcApp?.socketUrl) {\r\n url = opts?.localhostIpcApp?.socketUrl;\r\n } else {\r\n const port = opts?.localhostIpcApp?.socketPort ?? 3002;\r\n url = new URL(`ws://localhost:${port}/`);\r\n }\r\n\r\n this._client = new WebSocket(url);\r\n this._next = -1;\r\n\r\n this._client.addEventListener(\"open\", () => {\r\n const pending = this._pending!;\r\n this._pending = undefined;\r\n pending.forEach((m) => this.send(m));\r\n });\r\n\r\n this._client.addEventListener(\"message\", async (event) => {\r\n const message = await this.notifyIncoming(event.data, this._client);\r\n if (IpcWebSocketMessage.skip(message)) {\r\n return;\r\n }\r\n\r\n for (const listener of IpcWebSocket.receivers)\r\n listener({} as Event, message);\r\n });\r\n }\r\n\r\n public send(message: IpcWebSocketMessage): void {\r\n if (this._pending) {\r\n this._pending.push(message);\r\n return;\r\n }\r\n\r\n message.sequence = ++this._next;\r\n const parts = this.serialize(message);\r\n parts.forEach((part) => this._client.send(part));\r\n }\r\n}\r\n\r\nclass LocalSession extends IpcSession {\r\n public override async handleRpc(info: InterceptedRpcRequest) {\r\n return IpcApp.callIpcChannel(\"RPC\", \"request\", info);\r\n }\r\n}\r\n\r\n/**\r\n * To be used only by test applications that want to test web-based editing using localhost.\r\n * @internal\r\n */\r\nexport class LocalhostIpcApp {\r\n private static _initialized = false;\r\n private static _ipc: IpcWebSocketFrontend;\r\n\r\n public static buildUrlForSocket(base: URL, path = \"ipc\"): URL {\r\n const url = new URL(base);\r\n url.protocol = \"ws\";\r\n url.pathname = [...url.pathname.split(\"/\"), path].filter((v) => v).join(\"/\");\r\n return url;\r\n }\r\n\r\n public static async startup(opts: LocalHostIpcAppOpts) {\r\n if (!this._initialized) {\r\n IpcWebSocket.transport = new LocalTransport(opts);\r\n this._ipc = new IpcWebSocketFrontend();\r\n this._initialized = true;\r\n }\r\n\r\n await IpcApp.startup(this._ipc, opts);\r\n\r\n if (!IpcSession.active) {\r\n IpcSession.start(new LocalSession());\r\n IModelApp.onBeforeShutdown.addListener(() => IpcSession.stop());\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,
|
|
1
|
+
{"version":3,"file":"LocalhostIpcApp.d.ts","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAa,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE1D,gBAAgB;AAChB,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,eAAe,CAAC,EAAE;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,GAAG,CAAC;KACjB,CAAC;CACH;AAwDD;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAuB;WAE5B,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,SAAQ,GAAG,GAAG;WAOzC,OAAO,CAAC,IAAI,EAAE,mBAAmB;CActD"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module IModelApp
|
|
7
7
|
*/
|
|
8
|
-
import { IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from "@itwin/core-common";
|
|
8
|
+
import { IpcSession, IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from "@itwin/core-common";
|
|
9
9
|
import { IpcApp } from "./IpcApp";
|
|
10
|
+
import { IModelApp } from "./IModelApp";
|
|
10
11
|
class LocalTransport extends IpcWebSocketTransport {
|
|
11
12
|
constructor(opts) {
|
|
12
13
|
var _a, _b, _c, _d;
|
|
@@ -46,6 +47,11 @@ class LocalTransport extends IpcWebSocketTransport {
|
|
|
46
47
|
parts.forEach((part) => this._client.send(part));
|
|
47
48
|
}
|
|
48
49
|
}
|
|
50
|
+
class LocalSession extends IpcSession {
|
|
51
|
+
async handleRpc(info) {
|
|
52
|
+
return IpcApp.callIpcChannel("RPC", "request", info);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
49
55
|
/**
|
|
50
56
|
* To be used only by test applications that want to test web-based editing using localhost.
|
|
51
57
|
* @internal
|
|
@@ -64,6 +70,10 @@ export class LocalhostIpcApp {
|
|
|
64
70
|
this._initialized = true;
|
|
65
71
|
}
|
|
66
72
|
await IpcApp.startup(this._ipc, opts);
|
|
73
|
+
if (!IpcSession.active) {
|
|
74
|
+
IpcSession.start(new LocalSession());
|
|
75
|
+
IModelApp.onBeforeShutdown.addListener(() => IpcSession.stop());
|
|
76
|
+
}
|
|
67
77
|
}
|
|
68
78
|
}
|
|
69
79
|
LocalhostIpcApp._initialized = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalhostIpcApp.js","sourceRoot":"","sources":["../../src/LocalhostIpcApp.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\n/** @packageDocumentation\r\n * @module IModelApp\r\n */\r\n\r\nimport { InterceptedRpcRequest, IpcSession, IpcWebSocket, IpcWebSocketFrontend, IpcWebSocketMessage, IpcWebSocketTransport } from \"@itwin/core-common\";\r\nimport { IpcApp } from \"./IpcApp\";\r\nimport { IModelApp, IModelAppOptions } from \"./IModelApp\";\r\n\r\n/** @internal */\r\nexport interface LocalHostIpcAppOpts {\r\n iModelApp?: IModelAppOptions;\r\n\r\n localhostIpcApp?: {\r\n socketPort?: number;\r\n socketUrl?: URL;\r\n };\r\n}\r\n\r\nclass LocalTransport extends IpcWebSocketTransport {\r\n private _client: WebSocket;\r\n private _next: number;\r\n private _pending?: IpcWebSocketMessage[] = [];\r\n\r\n public constructor(opts: LocalHostIpcAppOpts) {\r\n super();\r\n\r\n let url: URL;\r\n if (opts?.localhostIpcApp?.socketUrl) {\r\n url = opts?.localhostIpcApp?.socketUrl;\r\n } else {\r\n const port = opts?.localhostIpcApp?.socketPort ?? 3002;\r\n url = new URL(`ws://localhost:${port}/`);\r\n }\r\n\r\n this._client = new WebSocket(url);\r\n this._next = -1;\r\n\r\n this._client.addEventListener(\"open\", () => {\r\n const pending = this._pending!;\r\n this._pending = undefined;\r\n pending.forEach((m) => this.send(m));\r\n });\r\n\r\n this._client.addEventListener(\"message\", async (event) => {\r\n const message = await this.notifyIncoming(event.data, this._client);\r\n if (IpcWebSocketMessage.skip(message)) {\r\n return;\r\n }\r\n\r\n for (const listener of IpcWebSocket.receivers)\r\n listener({} as Event, message);\r\n });\r\n }\r\n\r\n public send(message: IpcWebSocketMessage): void {\r\n if (this._pending) {\r\n this._pending.push(message);\r\n return;\r\n }\r\n\r\n message.sequence = ++this._next;\r\n const parts = this.serialize(message);\r\n parts.forEach((part) => this._client.send(part));\r\n }\r\n}\r\n\r\nclass LocalSession extends IpcSession {\r\n public override async handleRpc(info: InterceptedRpcRequest) {\r\n return IpcApp.callIpcChannel(\"RPC\", \"request\", info);\r\n }\r\n}\r\n\r\n/**\r\n * To be used only by test applications that want to test web-based editing using localhost.\r\n * @internal\r\n */\r\nexport class LocalhostIpcApp {\r\n private static _initialized = false;\r\n private static _ipc: IpcWebSocketFrontend;\r\n\r\n public static buildUrlForSocket(base: URL, path = \"ipc\"): URL {\r\n const url = new URL(base);\r\n url.protocol = \"ws\";\r\n url.pathname = [...url.pathname.split(\"/\"), path].filter((v) => v).join(\"/\");\r\n return url;\r\n }\r\n\r\n public static async startup(opts: LocalHostIpcAppOpts) {\r\n if (!this._initialized) {\r\n IpcWebSocket.transport = new LocalTransport(opts);\r\n this._ipc = new IpcWebSocketFrontend();\r\n this._initialized = true;\r\n }\r\n\r\n await IpcApp.startup(this._ipc, opts);\r\n\r\n if (!IpcSession.active) {\r\n IpcSession.start(new LocalSession());\r\n IModelApp.onBeforeShutdown.addListener(() => IpcSession.stop());\r\n }\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-frontend",
|
|
3
|
-
"version": "3.3.0-dev.
|
|
3
|
+
"version": "3.3.0-dev.61",
|
|
4
4
|
"description": "iTwin.js frontend components",
|
|
5
5
|
"main": "lib/cjs/core-frontend.js",
|
|
6
6
|
"module": "lib/esm/core-frontend.js",
|
|
@@ -22,29 +22,29 @@
|
|
|
22
22
|
"url": "http://www.bentley.com"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
|
-
"@itwin/appui-abstract": "^3.3.0-dev.
|
|
26
|
-
"@itwin/core-bentley": "^3.3.0-dev.
|
|
27
|
-
"@itwin/core-common": "^3.3.0-dev.
|
|
28
|
-
"@itwin/core-geometry": "^3.3.0-dev.
|
|
29
|
-
"@itwin/core-orbitgt": "^3.3.0-dev.
|
|
30
|
-
"@itwin/core-quantity": "^3.3.0-dev.
|
|
31
|
-
"@itwin/webgl-compatibility": "^3.3.0-dev.
|
|
25
|
+
"@itwin/appui-abstract": "^3.3.0-dev.61",
|
|
26
|
+
"@itwin/core-bentley": "^3.3.0-dev.61",
|
|
27
|
+
"@itwin/core-common": "^3.3.0-dev.61",
|
|
28
|
+
"@itwin/core-geometry": "^3.3.0-dev.61",
|
|
29
|
+
"@itwin/core-orbitgt": "^3.3.0-dev.61",
|
|
30
|
+
"@itwin/core-quantity": "^3.3.0-dev.61",
|
|
31
|
+
"@itwin/webgl-compatibility": "^3.3.0-dev.61"
|
|
32
32
|
},
|
|
33
33
|
"//devDependencies": [
|
|
34
34
|
"NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install",
|
|
35
35
|
"NOTE: All tools used by scripts in this package must be listed as devDependencies"
|
|
36
36
|
],
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@itwin/appui-abstract": "3.3.0-dev.
|
|
39
|
-
"@itwin/build-tools": "3.3.0-dev.
|
|
40
|
-
"@itwin/core-bentley": "3.3.0-dev.
|
|
41
|
-
"@itwin/core-common": "3.3.0-dev.
|
|
42
|
-
"@itwin/core-geometry": "3.3.0-dev.
|
|
43
|
-
"@itwin/core-orbitgt": "3.3.0-dev.
|
|
44
|
-
"@itwin/core-quantity": "3.3.0-dev.
|
|
45
|
-
"@itwin/certa": "3.3.0-dev.
|
|
46
|
-
"@itwin/eslint-plugin": "3.3.0-dev.
|
|
47
|
-
"@itwin/webgl-compatibility": "3.3.0-dev.
|
|
38
|
+
"@itwin/appui-abstract": "3.3.0-dev.61",
|
|
39
|
+
"@itwin/build-tools": "3.3.0-dev.61",
|
|
40
|
+
"@itwin/core-bentley": "3.3.0-dev.61",
|
|
41
|
+
"@itwin/core-common": "3.3.0-dev.61",
|
|
42
|
+
"@itwin/core-geometry": "3.3.0-dev.61",
|
|
43
|
+
"@itwin/core-orbitgt": "3.3.0-dev.61",
|
|
44
|
+
"@itwin/core-quantity": "3.3.0-dev.61",
|
|
45
|
+
"@itwin/certa": "3.3.0-dev.61",
|
|
46
|
+
"@itwin/eslint-plugin": "3.3.0-dev.61",
|
|
47
|
+
"@itwin/webgl-compatibility": "3.3.0-dev.61",
|
|
48
48
|
"@types/chai": "4.3.1",
|
|
49
49
|
"@types/chai-as-promised": "^7",
|
|
50
50
|
"@types/deep-assign": "^0.1.0",
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"
|
|
74
74
|
],
|
|
75
75
|
"dependencies": {
|
|
76
|
-
"@itwin/core-i18n": "3.3.0-dev.
|
|
77
|
-
"@itwin/core-telemetry": "3.3.0-dev.
|
|
76
|
+
"@itwin/core-i18n": "3.3.0-dev.61",
|
|
77
|
+
"@itwin/core-telemetry": "3.3.0-dev.61",
|
|
78
78
|
"@loaders.gl/core": "^3.1.6",
|
|
79
79
|
"@loaders.gl/draco": "^3.1.6",
|
|
80
80
|
"deep-assign": "^2.0.0",
|