@itwin/core-backend 5.11.0-dev.9 → 5.12.0-dev.2

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/lib/cjs/BlobContainerService.d.ts +14 -1
  3. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  4. package/lib/cjs/BlobContainerService.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.d.ts +3 -1
  6. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  7. package/lib/cjs/BriefcaseManager.js +3 -3
  8. package/lib/cjs/BriefcaseManager.js.map +1 -1
  9. package/lib/cjs/CloudSqlite.d.ts +1 -1
  10. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  11. package/lib/cjs/CloudSqlite.js +4 -1
  12. package/lib/cjs/CloudSqlite.js.map +1 -1
  13. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  14. package/lib/cjs/DisplayStyle.js +4 -8
  15. package/lib/cjs/DisplayStyle.js.map +1 -1
  16. package/lib/cjs/EditTxn.d.ts +56 -1
  17. package/lib/cjs/EditTxn.d.ts.map +1 -1
  18. package/lib/cjs/EditTxn.js +138 -0
  19. package/lib/cjs/EditTxn.js.map +1 -1
  20. package/lib/cjs/GeoCoordConfig.d.ts +6 -0
  21. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
  22. package/lib/cjs/GeoCoordConfig.js +6 -0
  23. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  24. package/lib/cjs/IModelDb.d.ts +40 -0
  25. package/lib/cjs/IModelDb.d.ts.map +1 -1
  26. package/lib/cjs/IModelDb.js +18 -0
  27. package/lib/cjs/IModelDb.js.map +1 -1
  28. package/lib/cjs/IModelHost.d.ts +5 -3
  29. package/lib/cjs/IModelHost.d.ts.map +1 -1
  30. package/lib/cjs/IModelHost.js.map +1 -1
  31. package/lib/cjs/NativeHost.js +1 -1
  32. package/lib/cjs/NativeHost.js.map +1 -1
  33. package/lib/cjs/workspace/SettingsEditor.d.ts +4 -9
  34. package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
  35. package/lib/cjs/workspace/SettingsEditor.js +31 -15
  36. package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
  37. package/lib/esm/BlobContainerService.d.ts +14 -1
  38. package/lib/esm/BlobContainerService.d.ts.map +1 -1
  39. package/lib/esm/BlobContainerService.js.map +1 -1
  40. package/lib/esm/BriefcaseManager.d.ts +3 -1
  41. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  42. package/lib/esm/BriefcaseManager.js +3 -3
  43. package/lib/esm/BriefcaseManager.js.map +1 -1
  44. package/lib/esm/CloudSqlite.d.ts +1 -1
  45. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  46. package/lib/esm/CloudSqlite.js +4 -1
  47. package/lib/esm/CloudSqlite.js.map +1 -1
  48. package/lib/esm/DisplayStyle.d.ts.map +1 -1
  49. package/lib/esm/DisplayStyle.js +4 -8
  50. package/lib/esm/DisplayStyle.js.map +1 -1
  51. package/lib/esm/EditTxn.d.ts +56 -1
  52. package/lib/esm/EditTxn.d.ts.map +1 -1
  53. package/lib/esm/EditTxn.js +140 -2
  54. package/lib/esm/EditTxn.js.map +1 -1
  55. package/lib/esm/GeoCoordConfig.d.ts +6 -0
  56. package/lib/esm/GeoCoordConfig.d.ts.map +1 -1
  57. package/lib/esm/GeoCoordConfig.js +6 -0
  58. package/lib/esm/GeoCoordConfig.js.map +1 -1
  59. package/lib/esm/IModelDb.d.ts +40 -0
  60. package/lib/esm/IModelDb.d.ts.map +1 -1
  61. package/lib/esm/IModelDb.js +18 -0
  62. package/lib/esm/IModelDb.js.map +1 -1
  63. package/lib/esm/IModelHost.d.ts +5 -3
  64. package/lib/esm/IModelHost.d.ts.map +1 -1
  65. package/lib/esm/IModelHost.js.map +1 -1
  66. package/lib/esm/NativeHost.js +1 -1
  67. package/lib/esm/NativeHost.js.map +1 -1
  68. package/lib/esm/test/TestUtils.d.ts +17 -2
  69. package/lib/esm/test/TestUtils.d.ts.map +1 -1
  70. package/lib/esm/test/TestUtils.js +21 -2
  71. package/lib/esm/test/TestUtils.js.map +1 -1
  72. package/lib/esm/test/annotations/TextAnnotation.test.js +81 -16
  73. package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
  74. package/lib/esm/test/ecdb/ConcurrentQuery.test.js +4 -2
  75. package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
  76. package/lib/esm/test/ecdb/ECDb.test.js +1 -1
  77. package/lib/esm/test/ecdb/ECDb.test.js.map +1 -1
  78. package/lib/esm/test/ecdb/ECSqlStatement.test.js +8 -2
  79. package/lib/esm/test/ecdb/ECSqlStatement.test.js.map +1 -1
  80. package/lib/esm/test/hubaccess/CodeSwap.test.d.ts +2 -0
  81. package/lib/esm/test/hubaccess/CodeSwap.test.d.ts.map +1 -0
  82. package/lib/esm/test/hubaccess/CodeSwap.test.js +431 -0
  83. package/lib/esm/test/hubaccess/CodeSwap.test.js.map +1 -0
  84. package/lib/esm/test/imodel/IModel.test.js +10 -2
  85. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  86. package/lib/esm/test/standalone/ChangeElementParentModel.test.d.ts +2 -0
  87. package/lib/esm/test/standalone/ChangeElementParentModel.test.d.ts.map +1 -0
  88. package/lib/esm/test/standalone/ChangeElementParentModel.test.js +460 -0
  89. package/lib/esm/test/standalone/ChangeElementParentModel.test.js.map +1 -0
  90. package/lib/esm/test/standalone/ChangesetReader.test.js +3 -0
  91. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  92. package/lib/esm/test/standalone/CloudSqlite.test.d.ts +2 -0
  93. package/lib/esm/test/standalone/CloudSqlite.test.d.ts.map +1 -0
  94. package/lib/esm/test/standalone/CloudSqlite.test.js +43 -0
  95. package/lib/esm/test/standalone/CloudSqlite.test.js.map +1 -0
  96. package/lib/esm/test/standalone/IModelWrite.test.d.ts.map +1 -1
  97. package/lib/esm/test/standalone/IModelWrite.test.js +2 -33
  98. package/lib/esm/test/standalone/IModelWrite.test.js.map +1 -1
  99. package/lib/esm/test/standalone/ITwinWorkspace.test.js +118 -1
  100. package/lib/esm/test/standalone/ITwinWorkspace.test.js.map +1 -1
  101. package/lib/esm/test/standalone/Workspace.test.js +2 -2
  102. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  103. package/lib/esm/workspace/SettingsEditor.d.ts +4 -9
  104. package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
  105. package/lib/esm/workspace/SettingsEditor.js +31 -15
  106. package/lib/esm/workspace/SettingsEditor.js.map +1 -1
  107. package/package.json +16 -16
  108. package/lib/esm/test/misc/GeoServices.test.d.ts +0 -2
  109. package/lib/esm/test/misc/GeoServices.test.d.ts.map +0 -1
  110. package/lib/esm/test/misc/GeoServices.test.js +0 -918
  111. package/lib/esm/test/misc/GeoServices.test.js.map +0 -1
@@ -77,8 +77,10 @@ export var SettingsContainers;
77
77
  }
78
78
  SettingsContainers.getITwinContainerId = getITwinContainerId;
79
79
  /**
80
- * Look up the settings container for an iTwin and obtain a read-only access token.
81
- * @returns container props needed by [[IModelHost.getITwinWorkspace]].
80
+ * Look up settings containers for an iTwin and its account iTwin and obtain read-only access tokens.
81
+ * @returns Container props needed by [[IModelHost.getITwinWorkspace]]. The requested iTwin's settings
82
+ * container is returned at [[SettingsPriority.iTwin]]; the account iTwin container is returned at
83
+ * [[SettingsPriority.organization]].
82
84
  * @note Requires [[IModelHost.authorizationClient]] to be configured.
83
85
  * @note Requires [[BlobContainer.service]] to be configured.
84
86
  */
@@ -86,25 +88,39 @@ export var SettingsContainers;
86
88
  if (undefined === BlobContainer.service)
87
89
  ITwinSettingsError.throwError("blob-service-unavailable", { message: "BlobContainer.service is not available." });
88
90
  const userToken = await IModelHost.getAccessToken();
89
- const containers = await queryContainers({ iTwinId });
90
- if (!containers || containers.length === 0)
91
+ const containers = await queryContainers({ iTwinId, includeParentITwins: { filter: "accountOnly" } });
92
+ if (containers.length === 0)
91
93
  return undefined;
92
- if (containers.length > 1) {
93
- ITwinSettingsError.throwError("multiple-itwin-settings-containers", {
94
- message: `Multiple iTwin settings containers were found for '${iTwinId}', so a container cannot be automatically selected.`,
95
- iTwinId,
96
- });
97
- }
98
- const tokenProps = await BlobContainer.service.requestToken({ containerId: containers[0].containerId, accessLevel: "read", userToken });
99
- return [{
94
+ const seenITwins = new Set();
95
+ const results = [];
96
+ for (const container of containers) {
97
+ const ownerITwinId = container.iTwinId;
98
+ if (undefined === ownerITwinId) {
99
+ ITwinSettingsError.throwError("missing-container-itwinid", {
100
+ message: `Settings container '${container.containerId}' has no iTwinId. Please upgrade to a newer version of the BlobContainer service that populates iTwinId in query results.`,
101
+ iTwinId,
102
+ });
103
+ }
104
+ if (seenITwins.has(ownerITwinId)) {
105
+ ITwinSettingsError.throwError("multiple-itwin-settings-containers", {
106
+ message: `Multiple iTwin settings containers were found for '${ownerITwinId}', so a container cannot be automatically selected.`,
107
+ iTwinId: ownerITwinId,
108
+ });
109
+ }
110
+ seenITwins.add(ownerITwinId);
111
+ const priority = container.accountITwinId === ownerITwinId ? SettingsPriority.organization : SettingsPriority.iTwin;
112
+ const tokenProps = await BlobContainer.service.requestToken({ containerId: container.containerId, accessLevel: "read", userToken });
113
+ results.push({
100
114
  baseUri: tokenProps.baseUri,
101
- containerId: containers[0].containerId,
115
+ containerId: container.containerId,
102
116
  storageType: tokenProps.provider,
103
117
  accessToken: tokenProps.token,
104
- priority: SettingsPriority.iTwin,
118
+ priority,
105
119
  dbName: settingsWorkspaceDbName,
106
120
  includePrerelease: true,
107
- }];
121
+ });
122
+ }
123
+ return results;
108
124
  }
109
125
  SettingsContainers.getITwinSettingsSources = getITwinSettingsSources;
110
126
  })(SettingsContainers || (SettingsContainers = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsEditor.js","sourceRoot":"","sources":["../../../src/workspace/SettingsEditor.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/** @packageDocumentation\n * @module Workspace\n */\n\nimport { ITwinSettingsError } from \"@itwin/core-common\";\nimport { GuidString } from \"@itwin/core-bentley\";\nimport { WorkspaceContainerId, WorkspaceDbSettingsProps } from \"./Workspace\";\nimport { BlobContainer } from \"../BlobContainerService\";\nimport { IModelHost } from \"../IModelHost\";\nimport { constructSettingsEditorForITwin, getSettingsEditorForITwin } from \"../internal/workspace/SettingsEditorImpl\";\nimport { EditableWorkspaceContainer, WorkspaceEditor } from \"./WorkspaceEditor\";\nimport { SettingsPriority } from \"./Settings\";\nimport { settingsWorkspaceDbName } from \"./SettingsDb\";\n\n/** The default resource name used to store settings in a [[WorkspaceDb]].\n * This is the key under which all settings are stored in the SQLite `strings` table.\n * When loading settings at runtime via [[Workspace.loadSettingsDictionary]], the `resourceName` defaults\n * to this value, ensuring the read and write paths always agree on which key to use.\n * @internal\n */\nexport const settingsResourceName = \"settingsDictionary\";\n\n/** @internal */\nexport namespace SettingsEditor {\n /** The type of workspace container used to store settings. */\n export const containerType = \"settings\";\n\n /**\n * Create a new [[SettingsEditor]] for creating new versions of [[SettingsDb]]s.\n * @note The caller becomes the owner of the SettingsEditor and is responsible for calling [[SettingsEditor.close]] on it when finished.\n * @note It is illegal to have more than one SettingsEditor active in a single session.\n */\n export async function constructForITwin(iTwinId: GuidString): Promise<{ editor: WorkspaceEditor; container: EditableWorkspaceContainer }> {\n return constructSettingsEditorForITwin(iTwinId);\n }\n\n /**\n * Obtain a [[SettingsEditor]] for the existing settings container associated with an iTwin.\n * @returns The editor and container, or `undefined` if no settings container exists for the iTwin.\n * @note The caller becomes the owner of the SettingsEditor and is responsible for calling [[SettingsEditor.close]] on it when finished.\n * @note It is illegal to have more than one SettingsEditor active in a single session.\n */\n export async function getForITwin(iTwinId: GuidString): Promise<{ editor: WorkspaceEditor; container: EditableWorkspaceContainer } | undefined> {\n return getSettingsEditorForITwin(iTwinId);\n }\n}\n\n/**\n * Help locate and obtain access to known containers with type \"settings\".\n * @internal\n */\nexport namespace SettingsContainers {\n /** Arguments for [[SettingsContainers.queryContainers]]. */\n export interface QueryArgs {\n /** The iTwinId whose settings containers should be queried. */\n iTwinId: GuidString;\n /** Optional label filter. */\n label?: string;\n }\n\n /**\n * Query the [[BlobContainer]] service for all settings containers associated with a given iTwin.\n * Automatically filters by `containerType: \"settings\"`.\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n */\n async function queryContainers(args: QueryArgs): Promise<BlobContainer.MetadataResponse[]> {\n if (undefined === BlobContainer.service)\n ITwinSettingsError.throwError(\"blob-service-unavailable\", { message: \"BlobContainer.service is not available.\" });\n\n const userToken = await IModelHost.getAccessToken();\n return BlobContainer.service.queryContainersMetadata(userToken, { ...args, containerType: SettingsEditor.containerType });\n }\n\n /**\n * Query the [[BlobContainer]] service for the single settings container associated with a given iTwin.\n * @returns The containerId, or `undefined` if no container exists.\n * @throws if more than one settings container is found.\n */\n export async function getITwinContainerId(iTwinId: GuidString): Promise<WorkspaceContainerId | undefined> {\n const containers = await queryContainers({ iTwinId });\n if (containers.length > 1) {\n ITwinSettingsError.throwError(\"multiple-itwin-settings-containers\", {\n message: `Multiple iTwin settings containers were found for '${iTwinId}', so a container cannot be automatically selected.`,\n iTwinId,\n });\n }\n return containers[0]?.containerId;\n }\n\n /**\n * Look up the settings container for an iTwin and obtain a read-only access token.\n * @returns container props needed by [[IModelHost.getITwinWorkspace]].\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n * @note Requires [[BlobContainer.service]] to be configured.\n */\n export async function getITwinSettingsSources(iTwinId: GuidString): Promise<WorkspaceDbSettingsProps[] | undefined> {\n if (undefined === BlobContainer.service)\n ITwinSettingsError.throwError(\"blob-service-unavailable\", { message: \"BlobContainer.service is not available.\" });\n\n const userToken = await IModelHost.getAccessToken();\n const containers = await queryContainers({ iTwinId });\n if (!containers || containers.length === 0) return undefined;\n if (containers.length > 1) {\n ITwinSettingsError.throwError(\"multiple-itwin-settings-containers\", {\n message: `Multiple iTwin settings containers were found for '${iTwinId}', so a container cannot be automatically selected.`,\n iTwinId,\n });\n }\n\n const tokenProps = await BlobContainer.service.requestToken({ containerId: containers[0].containerId, accessLevel: \"read\", userToken });\n return [{\n baseUri: tokenProps.baseUri,\n containerId: containers[0].containerId,\n storageType: tokenProps.provider,\n accessToken: tokenProps.token,\n priority: SettingsPriority.iTwin,\n dbName: settingsWorkspaceDbName,\n includePrerelease: true,\n }];\n }\n}\n"]}
1
+ {"version":3,"file":"SettingsEditor.js","sourceRoot":"","sources":["../../../src/workspace/SettingsEditor.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAEtH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAEzD,gBAAgB;AAChB,MAAM,KAAW,cAAc,CAsB9B;AAtBD,WAAiB,cAAc;IAC7B,8DAA8D;IACjD,4BAAa,GAAG,UAAU,CAAC;IAExC;;;;OAIG;IACI,KAAK,UAAU,iBAAiB,CAAC,OAAmB;QACzD,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAFqB,gCAAiB,oBAEtC,CAAA;IAED;;;;;OAKG;IACI,KAAK,UAAU,WAAW,CAAC,OAAmB;QACnD,OAAO,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAFqB,0BAAW,cAEhC,CAAA;AACH,CAAC,EAtBgB,cAAc,KAAd,cAAc,QAsB9B;AAED;;;GAGG;AACH,MAAM,KAAW,kBAAkB,CA+ElC;AA/ED,WAAiB,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,UAAU,eAAe,CAAC,IAAuC;QACpE,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO;YACrC,kBAAkB,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAEpH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACpD,OAAO,aAAa,CAAC,OAAO,CAAC,uBAAuB,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;IAC5H,CAAC;IAED;;;;OAIG;IACI,KAAK,UAAU,mBAAmB,CAAC,OAAmB;QAC3D,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,kBAAkB,CAAC,UAAU,CAAC,oCAAoC,EAAE;gBAClE,OAAO,EAAE,sDAAsD,OAAO,qDAAqD;gBAC3H,OAAO;aACR,CAAC,CAAC;QACL,CAAC;QACD,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC;IACpC,CAAC;IATqB,sCAAmB,sBASxC,CAAA;IAED;;;;;;;OAOG;IACI,KAAK,UAAU,uBAAuB,CAAC,OAAmB;QAC/D,IAAI,SAAS,KAAK,aAAa,CAAC,OAAO;YACrC,kBAAkB,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAEpH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,cAAc,EAAE,CAAC;QACpD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;QACtG,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAE9C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC;YACvC,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBAC/B,kBAAkB,CAAC,UAAU,CAAC,2BAA2B,EAAE;oBACzD,OAAO,EAAE,uBAAuB,SAAS,CAAC,WAAW,2HAA2H;oBAChL,OAAO;iBACR,CAAC,CAAC;YACL,CAAC;YACD,IAAI,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,kBAAkB,CAAC,UAAU,CAAC,oCAAoC,EAAE;oBAClE,OAAO,EAAE,sDAAsD,YAAY,qDAAqD;oBAChI,OAAO,EAAE,YAAY;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAE7B,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC;YACpH,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YACpI,OAAO,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,WAAW,EAAE,UAAU,CAAC,QAAQ;gBAChC,WAAW,EAAE,UAAU,CAAC,KAAK;gBAC7B,QAAQ;gBACR,MAAM,EAAE,uBAAuB;gBAC/B,iBAAiB,EAAE,IAAI;aACxB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAxCqB,0CAAuB,0BAwC5C,CAAA;AACH,CAAC,EA/EgB,kBAAkB,KAAlB,kBAAkB,QA+ElC","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/** @packageDocumentation\n * @module Workspace\n */\n\nimport { ITwinSettingsError } from \"@itwin/core-common\";\nimport { GuidString } from \"@itwin/core-bentley\";\nimport { WorkspaceContainerId, WorkspaceDbSettingsProps } from \"./Workspace\";\nimport { BlobContainer } from \"../BlobContainerService\";\nimport { IModelHost } from \"../IModelHost\";\nimport { constructSettingsEditorForITwin, getSettingsEditorForITwin } from \"../internal/workspace/SettingsEditorImpl\";\nimport { EditableWorkspaceContainer, WorkspaceEditor } from \"./WorkspaceEditor\";\nimport { SettingsPriority } from \"./Settings\";\nimport { settingsWorkspaceDbName } from \"./SettingsDb\";\n\n/** The default resource name used to store settings in a [[WorkspaceDb]].\n * This is the key under which all settings are stored in the SQLite `strings` table.\n * When loading settings at runtime via [[Workspace.loadSettingsDictionary]], the `resourceName` defaults\n * to this value, ensuring the read and write paths always agree on which key to use.\n * @internal\n */\nexport const settingsResourceName = \"settingsDictionary\";\n\n/** @internal */\nexport namespace SettingsEditor {\n /** The type of workspace container used to store settings. */\n export const containerType = \"settings\";\n\n /**\n * Create a new [[SettingsEditor]] for creating new versions of [[SettingsDb]]s.\n * @note The caller becomes the owner of the SettingsEditor and is responsible for calling [[SettingsEditor.close]] on it when finished.\n * @note It is illegal to have more than one SettingsEditor active in a single session.\n */\n export async function constructForITwin(iTwinId: GuidString): Promise<{ editor: WorkspaceEditor; container: EditableWorkspaceContainer }> {\n return constructSettingsEditorForITwin(iTwinId);\n }\n\n /**\n * Obtain a [[SettingsEditor]] for the existing settings container associated with an iTwin.\n * @returns The editor and container, or `undefined` if no settings container exists for the iTwin.\n * @note The caller becomes the owner of the SettingsEditor and is responsible for calling [[SettingsEditor.close]] on it when finished.\n * @note It is illegal to have more than one SettingsEditor active in a single session.\n */\n export async function getForITwin(iTwinId: GuidString): Promise<{ editor: WorkspaceEditor; container: EditableWorkspaceContainer } | undefined> {\n return getSettingsEditorForITwin(iTwinId);\n }\n}\n\n/**\n * Help locate and obtain access to known containers with type \"settings\".\n * @internal\n */\nexport namespace SettingsContainers {\n /**\n * Query the [[BlobContainer]] service for all settings containers associated with a given iTwin.\n * Automatically filters by `containerType: \"settings\"`.\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n */\n async function queryContainers(args: BlobContainer.QueryContainerProps): Promise<BlobContainer.MetadataResponse[]> {\n if (undefined === BlobContainer.service)\n ITwinSettingsError.throwError(\"blob-service-unavailable\", { message: \"BlobContainer.service is not available.\" });\n\n const userToken = await IModelHost.getAccessToken();\n return BlobContainer.service.queryContainersMetadata(userToken, { ...args, containerType: SettingsEditor.containerType });\n }\n\n /**\n * Query the [[BlobContainer]] service for the single settings container associated with a given iTwin.\n * @returns The containerId, or `undefined` if no container exists.\n * @throws if more than one settings container is found.\n */\n export async function getITwinContainerId(iTwinId: GuidString): Promise<WorkspaceContainerId | undefined> {\n const containers = await queryContainers({ iTwinId });\n if (containers.length > 1) {\n ITwinSettingsError.throwError(\"multiple-itwin-settings-containers\", {\n message: `Multiple iTwin settings containers were found for '${iTwinId}', so a container cannot be automatically selected.`,\n iTwinId,\n });\n }\n return containers[0]?.containerId;\n }\n\n /**\n * Look up settings containers for an iTwin and its account iTwin and obtain read-only access tokens.\n * @returns Container props needed by [[IModelHost.getITwinWorkspace]]. The requested iTwin's settings\n * container is returned at [[SettingsPriority.iTwin]]; the account iTwin container is returned at\n * [[SettingsPriority.organization]].\n * @note Requires [[IModelHost.authorizationClient]] to be configured.\n * @note Requires [[BlobContainer.service]] to be configured.\n */\n export async function getITwinSettingsSources(iTwinId: GuidString): Promise<WorkspaceDbSettingsProps[] | undefined> {\n if (undefined === BlobContainer.service)\n ITwinSettingsError.throwError(\"blob-service-unavailable\", { message: \"BlobContainer.service is not available.\" });\n\n const userToken = await IModelHost.getAccessToken();\n const containers = await queryContainers({ iTwinId, includeParentITwins: { filter: \"accountOnly\" } });\n if (containers.length === 0) return undefined;\n\n const seenITwins = new Set<string>();\n const results: WorkspaceDbSettingsProps[] = [];\n for (const container of containers) {\n const ownerITwinId = container.iTwinId;\n if (undefined === ownerITwinId) {\n ITwinSettingsError.throwError(\"missing-container-itwinid\", {\n message: `Settings container '${container.containerId}' has no iTwinId. Please upgrade to a newer version of the BlobContainer service that populates iTwinId in query results.`,\n iTwinId,\n });\n }\n if (seenITwins.has(ownerITwinId)) {\n ITwinSettingsError.throwError(\"multiple-itwin-settings-containers\", {\n message: `Multiple iTwin settings containers were found for '${ownerITwinId}', so a container cannot be automatically selected.`,\n iTwinId: ownerITwinId,\n });\n }\n seenITwins.add(ownerITwinId);\n\n const priority = container.accountITwinId === ownerITwinId ? SettingsPriority.organization : SettingsPriority.iTwin;\n const tokenProps = await BlobContainer.service.requestToken({ containerId: container.containerId, accessLevel: \"read\", userToken });\n results.push({\n baseUri: tokenProps.baseUri,\n containerId: container.containerId,\n storageType: tokenProps.provider,\n accessToken: tokenProps.token,\n priority,\n dbName: settingsWorkspaceDbName,\n includePrerelease: true,\n });\n }\n\n return results;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-backend",
3
- "version": "5.11.0-dev.9",
3
+ "version": "5.12.0-dev.2",
4
4
  "description": "iTwin.js backend components",
5
5
  "main": "lib/cjs/core-backend.js",
6
6
  "module": "lib/esm/core-backend.js",
@@ -27,10 +27,10 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@opentelemetry/api": "^1.0.4",
30
- "@itwin/core-bentley": "5.11.0-dev.9",
31
- "@itwin/ecschema-metadata": "5.11.0-dev.9",
32
- "@itwin/core-common": "5.11.0-dev.9",
33
- "@itwin/core-geometry": "5.11.0-dev.9"
30
+ "@itwin/core-bentley": "5.12.0-dev.2",
31
+ "@itwin/core-common": "5.12.0-dev.2",
32
+ "@itwin/ecschema-metadata": "5.12.0-dev.2",
33
+ "@itwin/core-geometry": "5.12.0-dev.2"
34
34
  },
35
35
  "peerDependenciesMeta": {
36
36
  "@opentelemetry/api": {
@@ -77,27 +77,27 @@
77
77
  "marked": "^14.1.3",
78
78
  "sql-formatter": "^15.4.6",
79
79
  "webpack": "^5.97.1",
80
- "@itwin/build-tools": "5.11.0-dev.9",
81
- "@itwin/core-common": "5.11.0-dev.9",
82
- "@itwin/ecschema-metadata": "5.11.0-dev.9",
83
- "@itwin/ecschema-locaters": "5.11.0-dev.9",
84
- "@itwin/core-bentley": "5.11.0-dev.9",
85
- "internal-tools": "3.0.0-dev.69",
86
- "@itwin/core-geometry": "5.11.0-dev.9",
87
- "@itwin/ecsql-common": "5.11.0-dev.9"
80
+ "@itwin/core-bentley": "5.12.0-dev.2",
81
+ "@itwin/build-tools": "5.12.0-dev.2",
82
+ "@itwin/ecschema-metadata": "5.12.0-dev.2",
83
+ "@itwin/core-common": "5.12.0-dev.2",
84
+ "@itwin/ecschema-locaters": "5.12.0-dev.2",
85
+ "@itwin/core-geometry": "5.12.0-dev.2",
86
+ "@itwin/ecsql-common": "5.12.0-dev.2",
87
+ "internal-tools": "3.0.0-dev.69"
88
88
  },
89
89
  "dependencies": {
90
- "@bentley/imodeljs-native": "5.11.4",
90
+ "@bentley/imodeljs-native": "5.12.0",
91
91
  "@itwin/object-storage-azure": "^3.0.4",
92
92
  "@azure/storage-blob": "^12.28.0",
93
- "form-data": "^4.0.4",
93
+ "form-data": "^4.0.6",
94
94
  "fs-extra": "^8.1.0",
95
95
  "json5": "^2.2.3",
96
96
  "linebreak": "^1.1.0",
97
97
  "multiparty": "^4.3.0",
98
98
  "semver": "^7.5.2",
99
99
  "touch": "^3.1.0",
100
- "ws": "^7.5.10"
100
+ "ws": "^7.5.11"
101
101
  },
102
102
  "nyc": {
103
103
  "extends": "./node_modules/@itwin/build-tools/.nycrc"
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=GeoServices.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"GeoServices.test.d.ts","sourceRoot":"","sources":["../../../../src/test/misc/GeoServices.test.ts"],"names":[],"mappings":""}