@itwin/core-backend 4.0.0-dev.52 → 4.0.0-dev.55
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/lib/cjs/AliCloudStorageService.d.ts +23 -23
- package/lib/cjs/AliCloudStorageService.js +71 -71
- package/lib/cjs/AliCloudStorageService.js.map +1 -1
- package/lib/cjs/BackendHubAccess.d.ts +224 -224
- package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
- package/lib/cjs/BackendHubAccess.js +41 -41
- package/lib/cjs/BackendLoggerCategory.d.ts +90 -91
- package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js +98 -99
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.d.ts +21 -21
- package/lib/cjs/BisCoreSchema.js +60 -60
- package/lib/cjs/BriefcaseManager.d.ts +170 -170
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +408 -408
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.d.ts +153 -153
- package/lib/cjs/Category.js +243 -243
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
- package/lib/cjs/ChangeSummaryManager.js +444 -444
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.d.ts +99 -99
- package/lib/cjs/ChangedElementsDb.js +165 -165
- package/lib/cjs/ChangedElementsManager.d.ts +39 -39
- package/lib/cjs/ChangedElementsManager.js +88 -88
- package/lib/cjs/ChannelControl.d.ts +69 -69
- package/lib/cjs/ChannelControl.d.ts.map +1 -1
- package/lib/cjs/ChannelControl.js +88 -88
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.d.ts +121 -121
- package/lib/cjs/CheckpointManager.d.ts.map +1 -1
- package/lib/cjs/CheckpointManager.js +351 -351
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts +79 -79
- package/lib/cjs/ClassRegistry.js +249 -244
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +355 -355
- package/lib/cjs/CloudSqlite.js +154 -154
- package/lib/cjs/CloudStorageBackend.d.ts +58 -58
- package/lib/cjs/CloudStorageBackend.js +170 -170
- package/lib/cjs/CodeService.d.ts +396 -396
- package/lib/cjs/CodeService.js +63 -63
- package/lib/cjs/CodeSpecs.d.ts +55 -55
- package/lib/cjs/CodeSpecs.js +124 -124
- package/lib/cjs/ConcurrentQuery.d.ts +13 -13
- package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
- package/lib/cjs/ConcurrentQuery.js +36 -36
- package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
- package/lib/cjs/CustomViewState3dCreator.js +82 -82
- package/lib/cjs/DevTools.d.ts +74 -73
- package/lib/cjs/DevTools.d.ts.map +1 -1
- package/lib/cjs/DevTools.js +156 -156
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.d.ts +106 -106
- package/lib/cjs/DisplayStyle.js +253 -253
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +194 -194
- package/lib/cjs/ECDb.js +353 -353
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
- package/lib/cjs/ECSchemaXmlContext.d.ts.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js +41 -41
- package/lib/cjs/ECSqlStatement.d.ts +473 -473
- package/lib/cjs/ECSqlStatement.js +791 -791
- package/lib/cjs/Element.d.ts +1113 -1113
- package/lib/cjs/Element.js +1424 -1424
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +176 -176
- package/lib/cjs/ElementAspect.js +203 -203
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.d.ts +9 -9
- package/lib/cjs/ElementGraphics.js +41 -41
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts +162 -162
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +409 -409
- package/lib/cjs/Entity.d.ts +106 -106
- package/lib/cjs/Entity.d.ts.map +1 -1
- package/lib/cjs/Entity.js +134 -134
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.d.ts +49 -49
- package/lib/cjs/EntityReferences.d.ts.map +1 -1
- package/lib/cjs/EntityReferences.js +95 -95
- package/lib/cjs/ExportGraphics.d.ts +317 -317
- package/lib/cjs/ExportGraphics.d.ts.map +1 -1
- package/lib/cjs/ExportGraphics.js +208 -208
- package/lib/cjs/ExternalSource.d.ts +96 -96
- package/lib/cjs/ExternalSource.js +131 -131
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.d.ts +19 -19
- package/lib/cjs/GeoCoordConfig.js +85 -85
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeometrySummary.d.ts +4 -4
- package/lib/cjs/GeometrySummary.js +333 -333
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/HubMock.d.ts +94 -94
- package/lib/cjs/HubMock.js +220 -220
- package/lib/cjs/HubMock.js.map +1 -1
- package/lib/cjs/IModelCloneContext.d.ts +8 -8
- package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelCloneContext.js +15 -15
- package/lib/cjs/IModelDb.d.ts +1216 -1216
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +2387 -2386
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
- package/lib/cjs/IModelElementCloneContext.js +159 -159
- package/lib/cjs/IModelHost.d.ts +369 -369
- package/lib/cjs/IModelHost.js +488 -488
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelJsFs.d.ts +62 -62
- package/lib/cjs/IModelJsFs.js +139 -139
- package/lib/cjs/IpcHost.d.ts +104 -104
- package/lib/cjs/IpcHost.js +276 -276
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.d.ts +311 -311
- package/lib/cjs/LineStyle.js +295 -295
- package/lib/cjs/LocalHub.d.ts +162 -162
- package/lib/cjs/LocalHub.d.ts.map +1 -1
- package/lib/cjs/LocalHub.js +579 -579
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
- package/lib/cjs/LocalhostIpcHost.js +79 -79
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/Material.d.ts +131 -131
- package/lib/cjs/Material.js +180 -180
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.d.ts +392 -392
- package/lib/cjs/Model.js +489 -489
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.d.ts +51 -51
- package/lib/cjs/NativeAppStorage.js +202 -202
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts +52 -52
- package/lib/cjs/NativeHost.js +160 -160
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.d.ts +156 -156
- package/lib/cjs/NavigationRelationship.js +225 -225
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.d.ts +51 -51
- package/lib/cjs/PromiseMemoizer.d.ts.map +1 -1
- package/lib/cjs/PromiseMemoizer.js +101 -101
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.d.ts +132 -132
- package/lib/cjs/PropertyStore.js +11 -11
- package/lib/cjs/Relationship.d.ts +416 -416
- package/lib/cjs/Relationship.js +494 -494
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.d.ts +5 -5
- package/lib/cjs/RpcBackend.js +32 -32
- package/lib/cjs/SQLiteDb.d.ts +219 -219
- package/lib/cjs/SQLiteDb.js +212 -212
- package/lib/cjs/Schema.d.ts +55 -55
- package/lib/cjs/Schema.js +83 -83
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/ServerBasedLocks.d.ts +57 -57
- package/lib/cjs/ServerBasedLocks.js +168 -168
- package/lib/cjs/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/SqliteStatement.d.ts +360 -360
- package/lib/cjs/SqliteStatement.d.ts.map +1 -1
- package/lib/cjs/SqliteStatement.js +586 -586
- package/lib/cjs/Texture.d.ts +58 -58
- package/lib/cjs/Texture.js +82 -82
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.d.ts +18 -18
- package/lib/cjs/TileStorage.js +87 -87
- package/lib/cjs/TxnManager.d.ts +202 -202
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +356 -356
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +435 -435
- package/lib/cjs/ViewDefinition.js +646 -646
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.d.ts +13 -13
- package/lib/cjs/ViewStateHydrator.js +103 -103
- package/lib/cjs/core-backend.d.ts +185 -185
- package/lib/cjs/core-backend.js +209 -205
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
- package/lib/cjs/domains/FunctionalElements.js +145 -145
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
- package/lib/cjs/domains/FunctionalSchema.js +39 -39
- package/lib/cjs/domains/GenericElements.d.ts +177 -177
- package/lib/cjs/domains/GenericElements.js +263 -263
- package/lib/cjs/domains/GenericSchema.d.ts +10 -10
- package/lib/cjs/domains/GenericSchema.js +28 -28
- package/lib/cjs/rpc/multipart.d.ts +11 -11
- package/lib/cjs/rpc/multipart.js +71 -71
- package/lib/cjs/rpc/tracing.d.ts +28 -28
- package/lib/cjs/rpc/tracing.js +73 -73
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.d.ts +9 -9
- package/lib/cjs/rpc/web/logging.js +43 -43
- package/lib/cjs/rpc/web/request.d.ts +6 -6
- package/lib/cjs/rpc/web/request.js +73 -73
- package/lib/cjs/rpc/web/response.d.ts +6 -6
- package/lib/cjs/rpc/web/response.js +105 -105
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +293 -293
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +202 -202
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +166 -166
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +42 -42
- package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
- package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
- package/lib/cjs/workspace/Settings.d.ts +186 -186
- package/lib/cjs/workspace/Settings.d.ts.map +1 -1
- package/lib/cjs/workspace/Settings.js +154 -154
- package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
- package/lib/cjs/workspace/SettingsSchemas.js +190 -190
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.d.ts +414 -414
- package/lib/cjs/workspace/Workspace.js +537 -537
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/package.json +12 -12
|
@@ -1,155 +1,155 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
/** @packageDocumentation
|
|
7
|
-
* @module Workspace
|
|
8
|
-
*/
|
|
9
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.BaseSettings = exports.SettingsPriority = void 0;
|
|
11
|
-
const fs = require("fs-extra");
|
|
12
|
-
const json5_1 = require("json5");
|
|
13
|
-
const path_1 = require("path");
|
|
14
|
-
const core_bentley_1 = require("@itwin/core-bentley");
|
|
15
|
-
const IModelJsFs_1 = require("../IModelJsFs");
|
|
16
|
-
/**
|
|
17
|
-
* Values for SettingsPriority determine the sort order for Settings. Higher values take precedence over lower values.
|
|
18
|
-
* @beta
|
|
19
|
-
*/
|
|
20
|
-
var SettingsPriority;
|
|
21
|
-
(function (SettingsPriority) {
|
|
22
|
-
/** values supplied default-settings files */
|
|
23
|
-
SettingsPriority[SettingsPriority["defaults"] = 100] = "defaults";
|
|
24
|
-
/** values supplied by applications at runtime */
|
|
25
|
-
SettingsPriority[SettingsPriority["application"] = 200] = "application";
|
|
26
|
-
/** values that apply to all iTwins for an organization. */
|
|
27
|
-
SettingsPriority[SettingsPriority["organization"] = 300] = "organization";
|
|
28
|
-
/** values that apply to all iModels in an iTwin. */
|
|
29
|
-
SettingsPriority[SettingsPriority["iTwin"] = 400] = "iTwin";
|
|
30
|
-
/** values that apply to a single iModel. */
|
|
31
|
-
SettingsPriority[SettingsPriority["iModel"] = 500] = "iModel";
|
|
32
|
-
})(SettingsPriority = exports.SettingsPriority || (exports.SettingsPriority = {}));
|
|
33
|
-
/** @internal */
|
|
34
|
-
function deepClone(obj) {
|
|
35
|
-
if (!obj || typeof obj !== "object")
|
|
36
|
-
return obj;
|
|
37
|
-
const result = Array.isArray(obj) ? [] : {};
|
|
38
|
-
Object.keys(obj).forEach((key) => {
|
|
39
|
-
const val = obj[key];
|
|
40
|
-
if (val && typeof val === "object") {
|
|
41
|
-
result[key] = deepClone(val);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
result[key] = val;
|
|
45
|
-
}
|
|
46
|
-
});
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
class SettingsDictionary {
|
|
50
|
-
constructor(name, priority, settings) {
|
|
51
|
-
this.name = name;
|
|
52
|
-
this.priority = priority;
|
|
53
|
-
this.settings = settings;
|
|
54
|
-
}
|
|
55
|
-
getSetting(settingName) {
|
|
56
|
-
return this.settings[settingName];
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Internal implementation of Settings interface.
|
|
61
|
-
* @internal
|
|
62
|
-
*/
|
|
63
|
-
class BaseSettings {
|
|
64
|
-
constructor() {
|
|
65
|
-
this._dictionaries = [];
|
|
66
|
-
this.onSettingsChanged = new core_bentley_1.BeEvent();
|
|
67
|
-
}
|
|
68
|
-
verifyPriority(_priority) { }
|
|
69
|
-
close() { }
|
|
70
|
-
addFile(fileName, priority) {
|
|
71
|
-
this.addJson(fileName, priority, fs.readFileSync(fileName, "utf-8"));
|
|
72
|
-
}
|
|
73
|
-
addDirectory(dirName, priority) {
|
|
74
|
-
for (const fileName of IModelJsFs_1.IModelJsFs.readdirSync(dirName)) {
|
|
75
|
-
const ext = (0, path_1.extname)(fileName);
|
|
76
|
-
if (ext === ".json5" || ext === ".json")
|
|
77
|
-
this.addFile((0, path_1.join)(dirName, fileName), priority);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
addJson(dictionaryName, priority, settingsJson) {
|
|
81
|
-
this.addDictionary(dictionaryName, priority, (0, json5_1.parse)(settingsJson));
|
|
82
|
-
}
|
|
83
|
-
addDictionary(dictionaryName, priority, settings) {
|
|
84
|
-
this.verifyPriority(priority);
|
|
85
|
-
this.dropDictionary(dictionaryName, false); // make sure we don't have the same dictionary twice
|
|
86
|
-
const file = new SettingsDictionary(dictionaryName, priority, settings);
|
|
87
|
-
const doAdd = () => {
|
|
88
|
-
for (let i = 0; i < this._dictionaries.length; ++i) {
|
|
89
|
-
if (this._dictionaries[i].priority <= file.priority) {
|
|
90
|
-
this._dictionaries.splice(i, 0, file);
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
this._dictionaries.push(file);
|
|
95
|
-
};
|
|
96
|
-
doAdd();
|
|
97
|
-
this.onSettingsChanged.raiseEvent();
|
|
98
|
-
}
|
|
99
|
-
dropDictionary(dictionaryName, raiseEvent = true) {
|
|
100
|
-
for (let i = 0; i < this._dictionaries.length; ++i) {
|
|
101
|
-
if (this._dictionaries[i].name === dictionaryName) {
|
|
102
|
-
this._dictionaries.splice(i, 1);
|
|
103
|
-
if (raiseEvent)
|
|
104
|
-
this.onSettingsChanged.raiseEvent();
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
resolveSetting(name, resolver, defaultValue) {
|
|
111
|
-
for (const dict of this._dictionaries) {
|
|
112
|
-
const val = dict.getSetting(name);
|
|
113
|
-
const resolved = val && resolver(val, dict.name, dict.priority);
|
|
114
|
-
if (undefined !== resolved)
|
|
115
|
-
return resolved;
|
|
116
|
-
}
|
|
117
|
-
return defaultValue;
|
|
118
|
-
}
|
|
119
|
-
getSetting(name, defaultValue) {
|
|
120
|
-
return this.resolveSetting(name, (val) => deepClone(val)) ?? defaultValue;
|
|
121
|
-
}
|
|
122
|
-
/** for debugging. Returns an array of all values for a setting, sorted by priority.
|
|
123
|
-
* @note values are not cloned. Do not modify objects or arrays.
|
|
124
|
-
*/
|
|
125
|
-
inspectSetting(name) {
|
|
126
|
-
const all = [];
|
|
127
|
-
this.resolveSetting(name, (value, dictionary, priority) => {
|
|
128
|
-
all.push({ value, dictionary, priority });
|
|
129
|
-
return undefined;
|
|
130
|
-
});
|
|
131
|
-
return all;
|
|
132
|
-
}
|
|
133
|
-
getString(name, defaultValue) {
|
|
134
|
-
const out = this.getSetting(name);
|
|
135
|
-
return typeof out === "string" ? out : defaultValue;
|
|
136
|
-
}
|
|
137
|
-
getBoolean(name, defaultValue) {
|
|
138
|
-
const out = this.getSetting(name);
|
|
139
|
-
return typeof out === "boolean" ? out : defaultValue;
|
|
140
|
-
}
|
|
141
|
-
getNumber(name, defaultValue) {
|
|
142
|
-
const out = this.getSetting(name);
|
|
143
|
-
return typeof out === "number" ? out : defaultValue;
|
|
144
|
-
}
|
|
145
|
-
getObject(name, defaultValue) {
|
|
146
|
-
const out = this.getSetting(name);
|
|
147
|
-
return typeof out === "object" ? out : defaultValue;
|
|
148
|
-
}
|
|
149
|
-
getArray(name, defaultValue) {
|
|
150
|
-
const out = this.getSetting(name);
|
|
151
|
-
return Array.isArray(out) ? out : defaultValue;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
exports.BaseSettings = BaseSettings;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Workspace
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.BaseSettings = exports.SettingsPriority = void 0;
|
|
11
|
+
const fs = require("fs-extra");
|
|
12
|
+
const json5_1 = require("json5");
|
|
13
|
+
const path_1 = require("path");
|
|
14
|
+
const core_bentley_1 = require("@itwin/core-bentley");
|
|
15
|
+
const IModelJsFs_1 = require("../IModelJsFs");
|
|
16
|
+
/**
|
|
17
|
+
* Values for SettingsPriority determine the sort order for Settings. Higher values take precedence over lower values.
|
|
18
|
+
* @beta
|
|
19
|
+
*/
|
|
20
|
+
var SettingsPriority;
|
|
21
|
+
(function (SettingsPriority) {
|
|
22
|
+
/** values supplied default-settings files */
|
|
23
|
+
SettingsPriority[SettingsPriority["defaults"] = 100] = "defaults";
|
|
24
|
+
/** values supplied by applications at runtime */
|
|
25
|
+
SettingsPriority[SettingsPriority["application"] = 200] = "application";
|
|
26
|
+
/** values that apply to all iTwins for an organization. */
|
|
27
|
+
SettingsPriority[SettingsPriority["organization"] = 300] = "organization";
|
|
28
|
+
/** values that apply to all iModels in an iTwin. */
|
|
29
|
+
SettingsPriority[SettingsPriority["iTwin"] = 400] = "iTwin";
|
|
30
|
+
/** values that apply to a single iModel. */
|
|
31
|
+
SettingsPriority[SettingsPriority["iModel"] = 500] = "iModel";
|
|
32
|
+
})(SettingsPriority = exports.SettingsPriority || (exports.SettingsPriority = {}));
|
|
33
|
+
/** @internal */
|
|
34
|
+
function deepClone(obj) {
|
|
35
|
+
if (!obj || typeof obj !== "object")
|
|
36
|
+
return obj;
|
|
37
|
+
const result = Array.isArray(obj) ? [] : {};
|
|
38
|
+
Object.keys(obj).forEach((key) => {
|
|
39
|
+
const val = obj[key];
|
|
40
|
+
if (val && typeof val === "object") {
|
|
41
|
+
result[key] = deepClone(val);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
result[key] = val;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
class SettingsDictionary {
|
|
50
|
+
constructor(name, priority, settings) {
|
|
51
|
+
this.name = name;
|
|
52
|
+
this.priority = priority;
|
|
53
|
+
this.settings = settings;
|
|
54
|
+
}
|
|
55
|
+
getSetting(settingName) {
|
|
56
|
+
return this.settings[settingName];
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Internal implementation of Settings interface.
|
|
61
|
+
* @internal
|
|
62
|
+
*/
|
|
63
|
+
class BaseSettings {
|
|
64
|
+
constructor() {
|
|
65
|
+
this._dictionaries = [];
|
|
66
|
+
this.onSettingsChanged = new core_bentley_1.BeEvent();
|
|
67
|
+
}
|
|
68
|
+
verifyPriority(_priority) { }
|
|
69
|
+
close() { }
|
|
70
|
+
addFile(fileName, priority) {
|
|
71
|
+
this.addJson(fileName, priority, fs.readFileSync(fileName, "utf-8"));
|
|
72
|
+
}
|
|
73
|
+
addDirectory(dirName, priority) {
|
|
74
|
+
for (const fileName of IModelJsFs_1.IModelJsFs.readdirSync(dirName)) {
|
|
75
|
+
const ext = (0, path_1.extname)(fileName);
|
|
76
|
+
if (ext === ".json5" || ext === ".json")
|
|
77
|
+
this.addFile((0, path_1.join)(dirName, fileName), priority);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
addJson(dictionaryName, priority, settingsJson) {
|
|
81
|
+
this.addDictionary(dictionaryName, priority, (0, json5_1.parse)(settingsJson));
|
|
82
|
+
}
|
|
83
|
+
addDictionary(dictionaryName, priority, settings) {
|
|
84
|
+
this.verifyPriority(priority);
|
|
85
|
+
this.dropDictionary(dictionaryName, false); // make sure we don't have the same dictionary twice
|
|
86
|
+
const file = new SettingsDictionary(dictionaryName, priority, settings);
|
|
87
|
+
const doAdd = () => {
|
|
88
|
+
for (let i = 0; i < this._dictionaries.length; ++i) {
|
|
89
|
+
if (this._dictionaries[i].priority <= file.priority) {
|
|
90
|
+
this._dictionaries.splice(i, 0, file);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
this._dictionaries.push(file);
|
|
95
|
+
};
|
|
96
|
+
doAdd();
|
|
97
|
+
this.onSettingsChanged.raiseEvent();
|
|
98
|
+
}
|
|
99
|
+
dropDictionary(dictionaryName, raiseEvent = true) {
|
|
100
|
+
for (let i = 0; i < this._dictionaries.length; ++i) {
|
|
101
|
+
if (this._dictionaries[i].name === dictionaryName) {
|
|
102
|
+
this._dictionaries.splice(i, 1);
|
|
103
|
+
if (raiseEvent)
|
|
104
|
+
this.onSettingsChanged.raiseEvent();
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
resolveSetting(name, resolver, defaultValue) {
|
|
111
|
+
for (const dict of this._dictionaries) {
|
|
112
|
+
const val = dict.getSetting(name);
|
|
113
|
+
const resolved = val && resolver(val, dict.name, dict.priority);
|
|
114
|
+
if (undefined !== resolved)
|
|
115
|
+
return resolved;
|
|
116
|
+
}
|
|
117
|
+
return defaultValue;
|
|
118
|
+
}
|
|
119
|
+
getSetting(name, defaultValue) {
|
|
120
|
+
return this.resolveSetting(name, (val) => deepClone(val)) ?? defaultValue;
|
|
121
|
+
}
|
|
122
|
+
/** for debugging. Returns an array of all values for a setting, sorted by priority.
|
|
123
|
+
* @note values are not cloned. Do not modify objects or arrays.
|
|
124
|
+
*/
|
|
125
|
+
inspectSetting(name) {
|
|
126
|
+
const all = [];
|
|
127
|
+
this.resolveSetting(name, (value, dictionary, priority) => {
|
|
128
|
+
all.push({ value, dictionary, priority });
|
|
129
|
+
return undefined;
|
|
130
|
+
});
|
|
131
|
+
return all;
|
|
132
|
+
}
|
|
133
|
+
getString(name, defaultValue) {
|
|
134
|
+
const out = this.getSetting(name);
|
|
135
|
+
return typeof out === "string" ? out : defaultValue;
|
|
136
|
+
}
|
|
137
|
+
getBoolean(name, defaultValue) {
|
|
138
|
+
const out = this.getSetting(name);
|
|
139
|
+
return typeof out === "boolean" ? out : defaultValue;
|
|
140
|
+
}
|
|
141
|
+
getNumber(name, defaultValue) {
|
|
142
|
+
const out = this.getSetting(name);
|
|
143
|
+
return typeof out === "number" ? out : defaultValue;
|
|
144
|
+
}
|
|
145
|
+
getObject(name, defaultValue) {
|
|
146
|
+
const out = this.getSetting(name);
|
|
147
|
+
return typeof out === "object" ? out : defaultValue;
|
|
148
|
+
}
|
|
149
|
+
getArray(name, defaultValue) {
|
|
150
|
+
const out = this.getSetting(name);
|
|
151
|
+
return Array.isArray(out) ? out : defaultValue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
exports.BaseSettings = BaseSettings;
|
|
155
155
|
//# sourceMappingURL=Settings.js.map
|
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module Workspace
|
|
3
|
-
*/
|
|
4
|
-
import { BeEvent, JSONSchema, JSONSchemaTypeName } from "@itwin/core-bentley";
|
|
5
|
-
import { LocalDirName, LocalFileName } from "@itwin/core-common";
|
|
6
|
-
/**
|
|
7
|
-
* The properties of a single Setting, used by the settings editor. This interface also includes the
|
|
8
|
-
* default value if it is not specified in any Settings file.
|
|
9
|
-
* This interface includes all members of [JSONSchema]($bentley) with the extensions added by VSCode.
|
|
10
|
-
* @note the `type` member is marked optional in JSONSchema but is required for Settings.
|
|
11
|
-
* @beta
|
|
12
|
-
*/
|
|
13
|
-
export interface SettingSchema extends Readonly<JSONSchema> {
|
|
14
|
-
readonly items?: SettingSchema;
|
|
15
|
-
readonly type: JSONSchemaTypeName;
|
|
16
|
-
readonly properties?: {
|
|
17
|
-
[name: string]: SettingSchema;
|
|
18
|
-
};
|
|
19
|
-
/** whether the setting replaces lower priority entries with the same name or combines with them. */
|
|
20
|
-
readonly cumulative?: true;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* The properties of a group of [[SettingSchema]]s for an application. Groups can be added and removed from [[SettingsSchemas]]
|
|
24
|
-
* and are identified by their (required) `groupName` member
|
|
25
|
-
* @beta
|
|
26
|
-
*/
|
|
27
|
-
export interface SettingSchemaGroup {
|
|
28
|
-
readonly groupName: string;
|
|
29
|
-
readonly properties: {
|
|
30
|
-
[name: string]: SettingSchema;
|
|
31
|
-
};
|
|
32
|
-
readonly order?: number;
|
|
33
|
-
readonly title?: string;
|
|
34
|
-
readonly description?: string;
|
|
35
|
-
readonly extensionId?: string;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* The registry of available [[SettingSchemaGroup]]s.
|
|
39
|
-
* The registry is used for editing Settings files and for finding default values for settings.
|
|
40
|
-
* @beta
|
|
41
|
-
*/
|
|
42
|
-
export declare class SettingsSchemas {
|
|
43
|
-
private constructor();
|
|
44
|
-
private static readonly _allGroups;
|
|
45
|
-
/** a map of all registered [[SettingSchema]]s */
|
|
46
|
-
static readonly allSchemas: Map<string, SettingSchema>;
|
|
47
|
-
/** event that signals that the values in [[allSchemas]] have changed in some way. */
|
|
48
|
-
static readonly onSchemaChanged: BeEvent<() => void>;
|
|
49
|
-
/** Clear the contents of the registry and remove all event listeners.
|
|
50
|
-
* @note This is really only necessary for tests of the Settings system.
|
|
51
|
-
* @internal
|
|
52
|
-
*/
|
|
53
|
-
static reset(): void;
|
|
54
|
-
/** @internal */
|
|
55
|
-
static validateArrayObject<T>(val: T, schemaName: string, msg: string): T;
|
|
56
|
-
/**
|
|
57
|
-
* Add one or more [[SettingSchemaGroup]]s. `SettingSchemaGroup`s must include a `groupName` member that is used
|
|
58
|
-
* to identify the group. If a group with the same name is already registered, the old values are first removed and then the new group is added.
|
|
59
|
-
*/
|
|
60
|
-
static addGroup(settingsGroup: SettingSchemaGroup | SettingSchemaGroup[]): void;
|
|
61
|
-
/** Add a [[SettingSchemaGroup]] from stringified json5. */
|
|
62
|
-
static addJson(settingSchema: string): void;
|
|
63
|
-
/** Add a [[SettingSchemaGroup]] from a json5 file. */
|
|
64
|
-
static addFile(fileName: LocalFileName): void;
|
|
65
|
-
/** Add all files with a either ".json" or ".json5" extension from a supplied directory. */
|
|
66
|
-
static addDirectory(dirName: LocalDirName): void;
|
|
67
|
-
/** Remove a previously added [[SettingSchemaGroup]] by groupName */
|
|
68
|
-
static removeGroup(groupName: string): void;
|
|
69
|
-
private static doAdd;
|
|
70
|
-
private static doRemove;
|
|
71
|
-
private static validateName;
|
|
72
|
-
private static validateProperty;
|
|
73
|
-
private static validateAndAdd;
|
|
74
|
-
private static getDefaultValue;
|
|
75
|
-
}
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Workspace
|
|
3
|
+
*/
|
|
4
|
+
import { BeEvent, JSONSchema, JSONSchemaTypeName } from "@itwin/core-bentley";
|
|
5
|
+
import { LocalDirName, LocalFileName } from "@itwin/core-common";
|
|
6
|
+
/**
|
|
7
|
+
* The properties of a single Setting, used by the settings editor. This interface also includes the
|
|
8
|
+
* default value if it is not specified in any Settings file.
|
|
9
|
+
* This interface includes all members of [JSONSchema]($bentley) with the extensions added by VSCode.
|
|
10
|
+
* @note the `type` member is marked optional in JSONSchema but is required for Settings.
|
|
11
|
+
* @beta
|
|
12
|
+
*/
|
|
13
|
+
export interface SettingSchema extends Readonly<JSONSchema> {
|
|
14
|
+
readonly items?: SettingSchema;
|
|
15
|
+
readonly type: JSONSchemaTypeName;
|
|
16
|
+
readonly properties?: {
|
|
17
|
+
[name: string]: SettingSchema;
|
|
18
|
+
};
|
|
19
|
+
/** whether the setting replaces lower priority entries with the same name or combines with them. */
|
|
20
|
+
readonly cumulative?: true;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The properties of a group of [[SettingSchema]]s for an application. Groups can be added and removed from [[SettingsSchemas]]
|
|
24
|
+
* and are identified by their (required) `groupName` member
|
|
25
|
+
* @beta
|
|
26
|
+
*/
|
|
27
|
+
export interface SettingSchemaGroup {
|
|
28
|
+
readonly groupName: string;
|
|
29
|
+
readonly properties: {
|
|
30
|
+
[name: string]: SettingSchema;
|
|
31
|
+
};
|
|
32
|
+
readonly order?: number;
|
|
33
|
+
readonly title?: string;
|
|
34
|
+
readonly description?: string;
|
|
35
|
+
readonly extensionId?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The registry of available [[SettingSchemaGroup]]s.
|
|
39
|
+
* The registry is used for editing Settings files and for finding default values for settings.
|
|
40
|
+
* @beta
|
|
41
|
+
*/
|
|
42
|
+
export declare class SettingsSchemas {
|
|
43
|
+
private constructor();
|
|
44
|
+
private static readonly _allGroups;
|
|
45
|
+
/** a map of all registered [[SettingSchema]]s */
|
|
46
|
+
static readonly allSchemas: Map<string, SettingSchema>;
|
|
47
|
+
/** event that signals that the values in [[allSchemas]] have changed in some way. */
|
|
48
|
+
static readonly onSchemaChanged: BeEvent<() => void>;
|
|
49
|
+
/** Clear the contents of the registry and remove all event listeners.
|
|
50
|
+
* @note This is really only necessary for tests of the Settings system.
|
|
51
|
+
* @internal
|
|
52
|
+
*/
|
|
53
|
+
static reset(): void;
|
|
54
|
+
/** @internal */
|
|
55
|
+
static validateArrayObject<T>(val: T, schemaName: string, msg: string): T;
|
|
56
|
+
/**
|
|
57
|
+
* Add one or more [[SettingSchemaGroup]]s. `SettingSchemaGroup`s must include a `groupName` member that is used
|
|
58
|
+
* to identify the group. If a group with the same name is already registered, the old values are first removed and then the new group is added.
|
|
59
|
+
*/
|
|
60
|
+
static addGroup(settingsGroup: SettingSchemaGroup | SettingSchemaGroup[]): void;
|
|
61
|
+
/** Add a [[SettingSchemaGroup]] from stringified json5. */
|
|
62
|
+
static addJson(settingSchema: string): void;
|
|
63
|
+
/** Add a [[SettingSchemaGroup]] from a json5 file. */
|
|
64
|
+
static addFile(fileName: LocalFileName): void;
|
|
65
|
+
/** Add all files with a either ".json" or ".json5" extension from a supplied directory. */
|
|
66
|
+
static addDirectory(dirName: LocalDirName): void;
|
|
67
|
+
/** Remove a previously added [[SettingSchemaGroup]] by groupName */
|
|
68
|
+
static removeGroup(groupName: string): void;
|
|
69
|
+
private static doAdd;
|
|
70
|
+
private static doRemove;
|
|
71
|
+
private static validateName;
|
|
72
|
+
private static validateProperty;
|
|
73
|
+
private static validateAndAdd;
|
|
74
|
+
private static getDefaultValue;
|
|
75
|
+
}
|
|
76
76
|
//# sourceMappingURL=SettingsSchemas.d.ts.map
|