@itwin/core-backend 5.0.0-dev.99 → 5.1.0-dev.1
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 +6 -1
- package/lib/cjs/CatalogDb.d.ts +103 -0
- package/lib/cjs/CatalogDb.d.ts.map +1 -0
- package/lib/cjs/CatalogDb.js +271 -0
- package/lib/cjs/CatalogDb.js.map +1 -0
- package/lib/cjs/CheckpointManager.d.ts +12 -10
- package/lib/cjs/CheckpointManager.d.ts.map +1 -1
- package/lib/cjs/CheckpointManager.js +17 -41
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +104 -20
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js +157 -46
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.d.ts +1 -1
- package/lib/cjs/ECSchemaXmlContext.js +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/Entity.d.ts +8 -4
- package/lib/cjs/Entity.d.ts.map +1 -1
- package/lib/cjs/Entity.js +3 -3
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +6 -1
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +14 -7
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +1 -1
- package/lib/cjs/IModelHost.js +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts.map +1 -1
- package/lib/cjs/NativeHost.js +4 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/SQLiteDb.d.ts.map +1 -1
- package/lib/cjs/SQLiteDb.js +5 -4
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/ViewStore.d.ts.map +1 -1
- package/lib/cjs/ViewStore.js +27 -27
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -1
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -1
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +4 -4
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
- package/lib/cjs/internal/HubMock.d.ts.map +1 -0
- package/lib/cjs/{HubMock.js → internal/HubMock.js} +22 -11
- package/lib/cjs/internal/HubMock.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +1 -2
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +2 -3
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +2 -16
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +35 -104
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +6 -13
- package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -7
- package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
- package/lib/esm/CatalogDb.d.ts +103 -0
- package/lib/esm/CatalogDb.d.ts.map +1 -0
- package/lib/esm/CatalogDb.js +267 -0
- package/lib/esm/CatalogDb.js.map +1 -0
- package/lib/esm/CheckpointManager.d.ts +12 -10
- package/lib/esm/CheckpointManager.d.ts.map +1 -1
- package/lib/esm/CheckpointManager.js +18 -42
- package/lib/esm/CheckpointManager.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +104 -20
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js +157 -46
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/ECSchemaXmlContext.d.ts +1 -1
- package/lib/esm/ECSchemaXmlContext.js +1 -1
- package/lib/esm/ECSchemaXmlContext.js.map +1 -1
- package/lib/esm/Entity.d.ts +8 -4
- package/lib/esm/Entity.d.ts.map +1 -1
- package/lib/esm/Entity.js +3 -3
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +6 -1
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +14 -7
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +1 -1
- package/lib/esm/IModelHost.js +1 -1
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/NativeHost.d.ts.map +1 -1
- package/lib/esm/NativeHost.js +4 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/SQLiteDb.d.ts.map +1 -1
- package/lib/esm/SQLiteDb.js +5 -4
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/ViewStore.d.ts.map +1 -1
- package/lib/esm/ViewStore.js +28 -28
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -1
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -1
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +5 -5
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/{HubMock.d.ts → internal/HubMock.d.ts} +4 -5
- package/lib/esm/internal/HubMock.d.ts.map +1 -0
- package/lib/esm/{HubMock.js → internal/HubMock.js} +22 -11
- package/lib/esm/internal/HubMock.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +1 -2
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +1 -2
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts +2 -16
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +36 -100
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/test/IModelTestUtils.d.ts +6 -2
- package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
- package/lib/esm/test/IModelTestUtils.js +27 -6
- package/lib/esm/test/IModelTestUtils.js.map +1 -1
- package/lib/esm/test/TestChangeSetUtility.js +1 -1
- package/lib/esm/test/TestChangeSetUtility.js.map +1 -1
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js +4 -4
- package/lib/esm/test/ecdb/ECSchemaXmlContext.test.js.map +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js +1 -1
- package/lib/esm/test/font/IModelDbFonts.test.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/CheckpointManager.test.js +4 -3
- package/lib/esm/test/hubaccess/CheckpointManager.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +1 -1
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js +1 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/ExportGraphics.test.js +5 -40
- package/lib/esm/test/standalone/ExportGraphics.test.js.map +1 -1
- package/lib/esm/test/standalone/HubMock.test.js +1 -1
- package/lib/esm/test/standalone/HubMock.test.js.map +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js +1 -1
- package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js +1 -1
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js +1 -1
- package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
- package/lib/esm/test/standalone/SnapshotDb.test.js +5 -4
- package/lib/esm/test/standalone/SnapshotDb.test.js.map +1 -1
- package/lib/esm/test/standalone/Workspace.test.js +4 -3
- package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
- package/lib/esm/workspace/Workspace.d.ts +6 -13
- package/lib/esm/workspace/Workspace.d.ts.map +1 -1
- package/lib/esm/workspace/Workspace.js.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.d.ts +2 -7
- package/lib/esm/workspace/WorkspaceEditor.d.ts.map +1 -1
- package/lib/esm/workspace/WorkspaceEditor.js.map +1 -1
- package/package.json +12 -12
- package/lib/cjs/HubMock.d.ts.map +0 -1
- package/lib/cjs/HubMock.js.map +0 -1
- package/lib/esm/HubMock.d.ts.map +0 -1
- package/lib/esm/HubMock.js.map +0 -1
- package/lib/esm/test/CloudSqliteMock.d.ts +0 -37
- package/lib/esm/test/CloudSqliteMock.d.ts.map +0 -1
- package/lib/esm/test/CloudSqliteMock.js +0 -117
- package/lib/esm/test/CloudSqliteMock.js.map +0 -1
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import * as sinon from "sinon";
|
|
6
|
-
import { CloudSqlite } from "../CloudSqlite";
|
|
7
|
-
import { HubMock } from "../HubMock";
|
|
8
|
-
import * as path from "path";
|
|
9
|
-
import { BriefcaseManager } from "../BriefcaseManager";
|
|
10
|
-
import { V2CheckpointManager } from "../CheckpointManager";
|
|
11
|
-
import { IModelHost } from "../IModelHost";
|
|
12
|
-
import { _hubAccess } from "../internal/Symbols";
|
|
13
|
-
import { IModelError } from "@itwin/core-common";
|
|
14
|
-
import { IModelStatus } from "@itwin/core-bentley";
|
|
15
|
-
export class CloudContainerMock {
|
|
16
|
-
isConnected = false;
|
|
17
|
-
createArgs;
|
|
18
|
-
containerId = "MockContainerId";
|
|
19
|
-
_cloudCache;
|
|
20
|
-
constructor(createArgs) {
|
|
21
|
-
this.createArgs = createArgs;
|
|
22
|
-
}
|
|
23
|
-
connect(cache) {
|
|
24
|
-
this._cloudCache = cache;
|
|
25
|
-
this.downloadCheckpoint(path.join(cache.rootDir, this.createArgs.checkpoint.iModelId, this.createArgs.dbName));
|
|
26
|
-
this.isConnected = true;
|
|
27
|
-
}
|
|
28
|
-
disconnect(_args) {
|
|
29
|
-
this.isConnected = false;
|
|
30
|
-
this._cloudCache = undefined;
|
|
31
|
-
}
|
|
32
|
-
downloadCheckpoint(fileName) {
|
|
33
|
-
const checkpoint = this.createArgs.checkpoint;
|
|
34
|
-
HubMock.findLocalHub(checkpoint.iModelId).downloadCheckpoint({ changeset: checkpoint.changeset, targetFile: fileName });
|
|
35
|
-
}
|
|
36
|
-
checkForChanges() { }
|
|
37
|
-
queryDatabase() {
|
|
38
|
-
return undefined;
|
|
39
|
-
}
|
|
40
|
-
attach() {
|
|
41
|
-
const dbName = path.join(BriefcaseManager.getBriefcaseBasePath(this.createArgs.checkpoint.iModelId), this.createArgs.dbName);
|
|
42
|
-
this.downloadCheckpoint(dbName);
|
|
43
|
-
return { dbName, container: undefined };
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Mocks the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]].
|
|
48
|
-
* @internal
|
|
49
|
-
*/
|
|
50
|
-
export class CloudSqliteMock {
|
|
51
|
-
static _stubs = [];
|
|
52
|
-
/**
|
|
53
|
-
* Begin mocking the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]]. This uses [[HubMock]] to
|
|
54
|
-
* copy a local file to the target file. Call [[shutdown]] to stop the mocking.
|
|
55
|
-
*/
|
|
56
|
-
static startup() {
|
|
57
|
-
if (this._stubs.length > 0) {
|
|
58
|
-
throw new Error("CloudSqliteMock.startup called twice without calling shutdown");
|
|
59
|
-
}
|
|
60
|
-
const origCreateCloudContainer = CloudSqlite.createCloudContainer;
|
|
61
|
-
const origTransferDb = CloudSqlite.transferDb;
|
|
62
|
-
this._stubs.push(sinon.stub(CloudSqlite, "createCloudContainer").callsFake((args) => {
|
|
63
|
-
if (args.isMock) {
|
|
64
|
-
return new CloudContainerMock(args);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
return origCreateCloudContainer(args);
|
|
68
|
-
}
|
|
69
|
-
}));
|
|
70
|
-
this._stubs.push(sinon.stub(CloudSqlite, "transferDb").callsFake(async (direction, container, props) => {
|
|
71
|
-
if (container instanceof CloudContainerMock) {
|
|
72
|
-
if (direction === "download") {
|
|
73
|
-
container.downloadCheckpoint(props.localFileName);
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
throw new Error("Mock transferDb only supports download");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
else {
|
|
80
|
-
return origTransferDb(direction, container, props);
|
|
81
|
-
}
|
|
82
|
-
}));
|
|
83
|
-
this._stubs.push(sinon.stub(V2CheckpointManager, "attach").callsFake(async (checkpoint) => {
|
|
84
|
-
console.log("CloudSqliteMock attach called"); // eslint-disable-line no-console
|
|
85
|
-
let v2props;
|
|
86
|
-
try {
|
|
87
|
-
v2props = await IModelHost[_hubAccess].queryV2Checkpoint(checkpoint);
|
|
88
|
-
if (!v2props)
|
|
89
|
-
throw new Error("no checkpoint");
|
|
90
|
-
}
|
|
91
|
-
catch (err) {
|
|
92
|
-
throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);
|
|
93
|
-
}
|
|
94
|
-
const container = V2CheckpointManager.getContainer(v2props, checkpoint);
|
|
95
|
-
if (container instanceof CloudContainerMock) {
|
|
96
|
-
return container.attach();
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
throw new Error("Mock attach only supports CloudContainerMock");
|
|
100
|
-
}
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Stop the CloudSqliteMock that was started in [[startup]].
|
|
105
|
-
* Note: This throws an exception if [[startup]] was not called first.
|
|
106
|
-
*/
|
|
107
|
-
static shutdown() {
|
|
108
|
-
if (this._stubs.length > 0) {
|
|
109
|
-
this._stubs.forEach((stub) => stub.restore());
|
|
110
|
-
this._stubs = [];
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
throw new Error("CloudSqliteMock.shutdown called before startup");
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
//# sourceMappingURL=CloudSqliteMock.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CloudSqliteMock.js","sourceRoot":"","sources":["../../../src/test/CloudSqliteMock.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\nimport * as sinon from \"sinon\";\nimport { CloudSqlite } from \"../CloudSqlite\";\nimport { HubMock } from \"../HubMock\";\nimport * as path from \"path\";\nimport { BriefcaseManager } from \"../BriefcaseManager\";\nimport { CheckpointProps, V2CheckpointManager } from \"../CheckpointManager\";\nimport { V2CheckpointAccessProps } from \"../BackendHubAccess\";\nimport { IModelHost } from \"../IModelHost\";\nimport { _hubAccess } from \"../internal/Symbols\";\nimport { IModelError } from \"@itwin/core-common\";\nimport { IModelStatus } from \"@itwin/core-bentley\";\n\nexport class CloudContainerMock {\n public isConnected = false;\n public createArgs: any;\n public containerId = \"MockContainerId\";\n private _cloudCache?: CloudSqlite.CloudCache;\n\n constructor(createArgs: any) {\n this.createArgs = createArgs;\n }\n public connect(cache: CloudSqlite.CloudCache) {\n this._cloudCache = cache;\n this.downloadCheckpoint(path.join(cache.rootDir, this.createArgs.checkpoint.iModelId, this.createArgs.dbName));\n this.isConnected = true;\n }\n public disconnect(_args?: { detach?: boolean }) {\n this.isConnected = false;\n this._cloudCache = undefined;\n }\n public downloadCheckpoint(fileName: string) {\n const checkpoint = this.createArgs.checkpoint;\n HubMock.findLocalHub(checkpoint.iModelId).downloadCheckpoint({ changeset: checkpoint.changeset, targetFile: fileName });\n }\n public checkForChanges() {}\n public queryDatabase() {\n return undefined;\n }\n public attach(): { dbName: string, container: CloudSqlite.CloudContainer | undefined } {\n const dbName = path.join(BriefcaseManager.getBriefcaseBasePath(this.createArgs.checkpoint.iModelId), this.createArgs.dbName);\n this.downloadCheckpoint(dbName);\n return { dbName, container: undefined };\n }\n}\n\n/**\n * Mocks the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]].\n * @internal\n */\nexport class CloudSqliteMock {\n private static _stubs: sinon.SinonStub[] = [];\n\n /**\n * Begin mocking the CloudSqlite access needed for [[V2CheckpointManager.downloadCheckpoint]]. This uses [[HubMock]] to\n * copy a local file to the target file. Call [[shutdown]] to stop the mocking.\n */\n public static startup() {\n if (this._stubs.length > 0) {\n throw new Error(\"CloudSqliteMock.startup called twice without calling shutdown\");\n }\n const origCreateCloudContainer = CloudSqlite.createCloudContainer;\n const origTransferDb = CloudSqlite.transferDb;\n this._stubs.push(sinon.stub(CloudSqlite, \"createCloudContainer\").callsFake((args) => {\n if ((args as any).isMock) {\n return new CloudContainerMock(args) as any as CloudSqlite.CloudContainer;\n } else {\n return origCreateCloudContainer(args);\n }\n }));\n this._stubs.push(sinon.stub(CloudSqlite, \"transferDb\").callsFake(async (direction, container: any, props) => {\n if (container instanceof CloudContainerMock) {\n if (direction === \"download\") {\n container.downloadCheckpoint(props.localFileName);\n } else {\n throw new Error(\"Mock transferDb only supports download\");\n }\n } else {\n return origTransferDb(direction, container, props);\n }\n }));\n this._stubs.push(sinon.stub(V2CheckpointManager, \"attach\").callsFake(async (checkpoint: CheckpointProps): Promise<{ dbName: string, container: CloudSqlite.CloudContainer | undefined }> => {\n console.log(\"CloudSqliteMock attach called\"); // eslint-disable-line no-console\n let v2props: V2CheckpointAccessProps | undefined;\n try {\n v2props = await IModelHost[_hubAccess].queryV2Checkpoint(checkpoint);\n if (!v2props)\n throw new Error(\"no checkpoint\");\n } catch (err: any) {\n throw new IModelError(IModelStatus.NotFound, `V2 checkpoint not found: err: ${err.message}`);\n }\n\n const container = V2CheckpointManager.getContainer(v2props, checkpoint);\n if (container instanceof CloudContainerMock) {\n return container.attach();\n } else {\n throw new Error(\"Mock attach only supports CloudContainerMock\");\n }\n }));\n }\n\n /**\n * Stop the CloudSqliteMock that was started in [[startup]].\n * Note: This throws an exception if [[startup]] was not called first.\n */\n public static shutdown() {\n if (this._stubs.length > 0) {\n this._stubs.forEach((stub) => stub.restore());\n this._stubs = [];\n } else {\n throw new Error(\"CloudSqliteMock.shutdown called before startup\");\n }\n }\n}\n"]}
|