@itwin/rpcinterface-full-stack-tests 5.0.0-dev.66 → 5.0.0-dev.68

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":"BackendInit.js","sourceRoot":"","sources":["../../src/backend/BackendInit.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,8DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAC7B,yDAAgE;AAChE,yBAAyB;AAEzB,sDAAsD;AACtD,SAAS,OAAO,CAAC,OAAe;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACzB,OAAO;IAET,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,4DAA4D;IAC9F,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,4DAA4D;IAC3G,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,IAAA,qCAAsB,GAAE,CAAC;AAC3B,CAAC,CAAC,EAAE,CAAC","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*--------------------------------------------------------------------------------------------*/\nimport \"@itwin/oidc-signin-tool/lib/cjs/certa/certaBackend\";\n// Sets up certa to allow a method on the frontend to get an access token\nimport * as path from \"path\";\nimport { exposeBackendCallbacks } from \"../common/SideChannels\";\nimport * as fs from \"fs\";\n\n/** Loads the provided `.env` file into process.env */\nfunction loadEnv(envFile: string) {\n if (!fs.existsSync(envFile))\n return;\n\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-require-imports\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-require-imports\n const envResult = dotenv.config({ path: envFile });\n if (envResult.error) {\n throw envResult.error;\n }\n\n dotenvExpand(envResult);\n}\n\nmodule.exports = (async () => {\n loadEnv(path.join(__dirname, \"..\", \"..\", \".env\"));\n\n exposeBackendCallbacks();\n})();\n"]}
1
+ {"version":3,"file":"BackendInit.js","sourceRoot":"","sources":["../../src/backend/BackendInit.ts"],"names":[],"mappings":";;AAAA;;;+FAG+F;AAC/F,8DAA4D;AAC5D,yEAAyE;AACzE,6BAA6B;AAC7B,yDAAgE;AAChE,yBAAyB;AAEzB,sDAAsD;AACtD,SAAS,OAAO,CAAC,OAAe;IAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QACzB,OAAO;IAET,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,4DAA4D;IAC9F,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,4DAA4D;IAC3G,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,SAAS,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,YAAY,CAAC,SAAS,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAElD,IAAA,qCAAsB,GAAE,CAAC;AAC3B,CAAC,CAAC,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\nimport \"@itwin/oidc-signin-tool/lib/cjs/certa/certaBackend\";\r\n// Sets up certa to allow a method on the frontend to get an access token\r\nimport * as path from \"path\";\r\nimport { exposeBackendCallbacks } from \"../common/SideChannels\";\r\nimport * as fs from \"fs\";\r\n\r\n/** Loads the provided `.env` file into process.env */\r\nfunction loadEnv(envFile: string) {\r\n if (!fs.existsSync(envFile))\r\n return;\r\n\r\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n const envResult = dotenv.config({ path: envFile });\r\n if (envResult.error) {\r\n throw envResult.error;\r\n }\r\n\r\n dotenvExpand(envResult);\r\n}\r\n\r\nmodule.exports = (async () => {\r\n loadEnv(path.join(__dirname, \"..\", \"..\", \".env\"));\r\n\r\n exposeBackendCallbacks();\r\n})();\r\n"]}
@@ -144,18 +144,18 @@ class Settings {
144
144
  }
145
145
  }
146
146
  toString() {
147
- return `Configurations:
148
- backend location: ${this.Backend.location},
149
- backend name: ${this.Backend.name},
150
- backend version: ${this.Backend.version},
151
- oidc client id: ${this.oidcClientId},
152
- oidc scopes: ${this.oidcScopes},
153
- applicationId: ${this.gprid},
154
- log level: ${this.logLevel},
155
- testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
156
- testing PresentationRpcTest: ${this.runPresentationRpcTests},
157
- testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
158
- testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
147
+ return `Configurations:
148
+ backend location: ${this.Backend.location},
149
+ backend name: ${this.Backend.name},
150
+ backend version: ${this.Backend.version},
151
+ oidc client id: ${this.oidcClientId},
152
+ oidc scopes: ${this.oidcScopes},
153
+ applicationId: ${this.gprid},
154
+ log level: ${this.logLevel},
155
+ testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
156
+ testing PresentationRpcTest: ${this.runPresentationRpcTests},
157
+ testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
158
+ testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
159
159
  testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;
160
160
  }
161
161
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/common/Settings.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*--------------------------------------------------------------------------------------------*/\nimport { ServiceAuthorizationClientConfiguration } from \"@itwin/service-authorization\";\nimport { LogLevel } from \"@itwin/core-bentley\";\nimport { DevToolsRpcInterface, IModelReadRpcInterface, IModelTileRpcInterface } from \"@itwin/core-common\";\nimport { TestUserCredentials } from \"@itwin/oidc-signin-tool\";\nimport { PresentationRpcInterface } from \"@itwin/presentation-common\";\n\nexport interface Backend {\n version: string;\n location: string;\n name: string;\n path: string;\n}\n\n/**\n * Holds the information required to u identify an iModel\n */\nexport interface IModelData {\n useName: boolean; // Defines whether or not to use the name of the iModel\n id?: string; // The iModel Id - This is not required\n name?: string; // The name is not required to actually get the iModel, only the id.\n useITwinName: boolean;\n iTwinId?: string;\n iTwinName?: string;\n changeSetId?: string;\n}\n\nexport function getRpcInterfaces(settings: Settings) {\n const rpcInterfaces = [];\n if (settings.runDevToolsRpcTests)\n rpcInterfaces.push(DevToolsRpcInterface);\n if (settings.runPresentationRpcTests)\n rpcInterfaces.push(PresentationRpcInterface);\n if (settings.runiModelReadRpcTests)\n rpcInterfaces.push(IModelReadRpcInterface);\n if (settings.runiModelTileRpcTests)\n rpcInterfaces.push(IModelTileRpcInterface);\n\n return rpcInterfaces;\n}\n\nfunction checkEnabled(envVariable: string | undefined): boolean {\n if (undefined === envVariable)\n return false;\n\n const regex = /true/i;\n return regex.test(envVariable);\n}\n\nexport class Settings {\n private _backend: Backend = {} as Backend;\n public env: number = 0;\n public oidcClientId!: string;\n public oidcScopes!: string;\n public oidcRedirect!: string;\n public oidcAuthority?: string;\n public gprid?: string;\n public logLevel?: number;\n public users: TestUserCredentials[] = [];\n public clientConfiguration?: ServiceAuthorizationClientConfiguration;\n\n public iModels: IModelData[] = [];\n public get iModel(): IModelData { return this.iModels[0]; }\n public get writeIModel(): IModelData { return this.iModels[1]; }\n public get user(): TestUserCredentials { return this.users[0]; }\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public get Backend(): Backend { return this._backend; }\n\n public get runiModelTileRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELTILE_ENABLE); }\n public get runPresentationRpcTests(): boolean { return checkEnabled(process.env.RPC_PRESENTATION_ENABLE); }\n public get runiModelReadRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELREAD_ENABLE); }\n public get runiModelWriteRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELWRITE_ENABLE); }\n public get runDevToolsRpcTests(): boolean { return checkEnabled(process.env.RPC_DEVTOOLS_ENABLE); }\n\n constructor(env: NodeJS.ProcessEnv) {\n const isFrontend = (typeof (process) === \"undefined\");\n if (!isFrontend && undefined === env.TF_BUILD) {\n const path = require(\"path\"); // eslint-disable-line @typescript-eslint/no-require-imports\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-require-imports\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-require-imports\n // First check in process.cwd() for the config\n let result = dotenv.config();\n if (result.error) {\n const potential = path.resolve(process.cwd(), \"..\", \"..\", \"..\", \"imodeljs-config\", \".env\");\n result = dotenv.config({ path: potential });\n if (result.error)\n throw result.error;\n }\n\n dotenvExpand(result);\n }\n\n if (isFrontend)\n globalThis.process = { browser: true, env } as any;\n\n // Loads the config out of the environment.\n this.load();\n }\n\n /** Loads the necessary variables from `process.env`.\n */\n private load() {\n // Parse OIDC\n if (undefined === process.env.OIDC_CLIENT_ID)\n throw new Error(\"Missing the 'OIDC_CLIENT_ID' setting.\");\n this.oidcClientId = process.env.OIDC_CLIENT_ID!;\n\n if (undefined === process.env.OIDC_SCOPES)\n throw new Error(\"Missing the 'OIDC_SCOPES' setting\");\n this.oidcScopes = process.env.OIDC_SCOPES;\n\n if (process.env.OIDC_AUTHORITY)\n this.oidcAuthority = process.env.OIDC_AUTHORITY;\n\n this.oidcRedirect = (undefined === process.env.OIDC_REDIRECT) ? \"http://localhost:5000\" : process.env.OIDC_REDIRECT;\n\n // Parse GPRId\n if (undefined !== process.env.GPRID)\n this.gprid = process.env.GPRID;\n\n // Parse the iModel variables\n if (!process.env.IMODEL_PROJECTID && !process.env.IMODEL_PROJECTNAME)\n throw new Error(\"Missing the 'IMODEL_PROJECTID' or 'IMODEL_PROJECTNAME' setting.\");\n\n if (!process.env.IMODEL_IMODELID && !process.env.IMODEL_IMODELNAME)\n throw new Error(\"Missing the 'IMODEL_IMODELID' or 'IMODEL_IMODELNAME' setting.\");\n\n // Note: This is kind of messy but we don't sign-in to resolve the Names into IDs until the TestContext.\n this.iModels.push({\n useName: !process.env.IMODEL_IMODELID,\n id: process.env.IMODEL_IMODELID,\n name: process.env.IMODEL_IMODELNAME,\n useITwinName: !process.env.IMODEL_PROJECTID,\n iTwinId: process.env.IMODEL_PROJECTID,\n iTwinName: process.env.IMODEL_PROJECTNAME,\n\n // Neither of the next 2 are needed but since they'll be undefined anyway, just always set it.\n changeSetId: process.env.IMODEL_CHANGESETID,\n });\n\n // If write rpc interface is defined expect a separate iModel to be used.\n if (this.runiModelWriteRpcTests) {\n if (!process.env.IMODEL_WRITE_PROJECTID && !process.env.IMODEL_WRITE_PROJECTNAME)\n throw new Error(\"Missing the 'IMODEL_WRITE_PROJECTID' or 'IMODEL_WRITE_PROJECTNAME' setting.\");\n\n if (!process.env.IMODEL_WRITE_IMODELID && !process.env.IMODEL_WRITE_IMODELNAME)\n throw new Error(\"Missing the 'IMODEL_WRITE_IMODELID' or 'IMODEL_WRITE_IMODELNAME' setting.\");\n\n this.iModels.push({\n useName: !process.env.IMODEL_WRITE_IMODELID,\n id: process.env.IMODEL_WRITE_IMODELID,\n name: process.env.IMODEL_WRITE_IMODELNAME,\n useITwinName: !process.env.IMODEL_WRITE_PROJECTID,\n iTwinId: process.env.IMODEL_WRITE_PROJECTID,\n iTwinName: process.env.IMODEL_WRITE_PROJECTNAME,\n });\n }\n\n // Parse logging level\n if (undefined !== process.env.LOG_LEVEL) {\n const level = parseInt(process.env.LOG_LEVEL, 10);\n if (!isNaN(level) && undefined !== LogLevel[level])\n this.logLevel = level;\n }\n\n // Get backend data\n if (undefined === process.env.BACKEND_LOCATION)\n throw new Error(\"Missing the 'BACKEND_LOCATION' setting.\");\n this._backend.location = process.env.BACKEND_LOCATION;\n\n if (undefined === process.env.BACKEND_VERSION)\n throw new Error(\"Missing the 'BACKEND_VERSION' setting.\");\n this._backend.version = process.env.BACKEND_VERSION;\n\n if (undefined === process.env.BACKEND_NAME)\n throw new Error(\"Missing the 'BACKEND_NAME' setting.\");\n this._backend.name = process.env.BACKEND_NAME;\n\n // Get users\n this.users.push({\n email: process.env.USER_WITH_ACCESS_USERNAME || \"\",\n password: process.env.USER_WITH_ACCESS_PASSWORD || \"\",\n });\n\n if (undefined !== process.env.CLIENT_WITH_ACCESS_ID && undefined !== process.env.CLIENT_WITH_ACCESS_SECRET && undefined !== process.env.CLIENT_WITH_ACCESS_SCOPES) {\n this.clientConfiguration = {\n clientId: process.env.CLIENT_WITH_ACCESS_ID,\n clientSecret: process.env.CLIENT_WITH_ACCESS_SECRET,\n scope: process.env.CLIENT_WITH_ACCESS_SCOPES,\n authority: this.oidcAuthority,\n };\n }\n }\n\n public toString(): string {\n return `Configurations:\n backend location: ${this.Backend.location},\n backend name: ${this.Backend.name},\n backend version: ${this.Backend.version},\n oidc client id: ${this.oidcClientId},\n oidc scopes: ${this.oidcScopes},\n applicationId: ${this.gprid},\n log level: ${this.logLevel},\n testing iModelTileRpcTests: ${this.runiModelTileRpcTests},\n testing PresentationRpcTest: ${this.runPresentationRpcTests},\n testing iModelReadRpcTests: ${this.runiModelReadRpcTests},\n testing DevToolsRpcTests: ${this.runDevToolsRpcTests},\n testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;\n }\n}\n"]}
1
+ {"version":3,"file":"Settings.js","sourceRoot":"","sources":["../../src/common/Settings.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\nimport { ServiceAuthorizationClientConfiguration } from \"@itwin/service-authorization\";\r\nimport { LogLevel } from \"@itwin/core-bentley\";\r\nimport { DevToolsRpcInterface, IModelReadRpcInterface, IModelTileRpcInterface } from \"@itwin/core-common\";\r\nimport { TestUserCredentials } from \"@itwin/oidc-signin-tool\";\r\nimport { PresentationRpcInterface } from \"@itwin/presentation-common\";\r\n\r\nexport interface Backend {\r\n version: string;\r\n location: string;\r\n name: string;\r\n path: string;\r\n}\r\n\r\n/**\r\n * Holds the information required to u identify an iModel\r\n */\r\nexport interface IModelData {\r\n useName: boolean; // Defines whether or not to use the name of the iModel\r\n id?: string; // The iModel Id - This is not required\r\n name?: string; // The name is not required to actually get the iModel, only the id.\r\n useITwinName: boolean;\r\n iTwinId?: string;\r\n iTwinName?: string;\r\n changeSetId?: string;\r\n}\r\n\r\nexport function getRpcInterfaces(settings: Settings) {\r\n const rpcInterfaces = [];\r\n if (settings.runDevToolsRpcTests)\r\n rpcInterfaces.push(DevToolsRpcInterface);\r\n if (settings.runPresentationRpcTests)\r\n rpcInterfaces.push(PresentationRpcInterface);\r\n if (settings.runiModelReadRpcTests)\r\n rpcInterfaces.push(IModelReadRpcInterface);\r\n if (settings.runiModelTileRpcTests)\r\n rpcInterfaces.push(IModelTileRpcInterface);\r\n\r\n return rpcInterfaces;\r\n}\r\n\r\nfunction checkEnabled(envVariable: string | undefined): boolean {\r\n if (undefined === envVariable)\r\n return false;\r\n\r\n const regex = /true/i;\r\n return regex.test(envVariable);\r\n}\r\n\r\nexport class Settings {\r\n private _backend: Backend = {} as Backend;\r\n public env: number = 0;\r\n public oidcClientId!: string;\r\n public oidcScopes!: string;\r\n public oidcRedirect!: string;\r\n public oidcAuthority?: string;\r\n public gprid?: string;\r\n public logLevel?: number;\r\n public users: TestUserCredentials[] = [];\r\n public clientConfiguration?: ServiceAuthorizationClientConfiguration;\r\n\r\n public iModels: IModelData[] = [];\r\n public get iModel(): IModelData { return this.iModels[0]; }\r\n public get writeIModel(): IModelData { return this.iModels[1]; }\r\n public get user(): TestUserCredentials { return this.users[0]; }\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public get Backend(): Backend { return this._backend; }\r\n\r\n public get runiModelTileRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELTILE_ENABLE); }\r\n public get runPresentationRpcTests(): boolean { return checkEnabled(process.env.RPC_PRESENTATION_ENABLE); }\r\n public get runiModelReadRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELREAD_ENABLE); }\r\n public get runiModelWriteRpcTests(): boolean { return checkEnabled(process.env.RPC_IMODELWRITE_ENABLE); }\r\n public get runDevToolsRpcTests(): boolean { return checkEnabled(process.env.RPC_DEVTOOLS_ENABLE); }\r\n\r\n constructor(env: NodeJS.ProcessEnv) {\r\n const isFrontend = (typeof (process) === \"undefined\");\r\n if (!isFrontend && undefined === env.TF_BUILD) {\r\n const path = require(\"path\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-require-imports\r\n // First check in process.cwd() for the config\r\n let result = dotenv.config();\r\n if (result.error) {\r\n const potential = path.resolve(process.cwd(), \"..\", \"..\", \"..\", \"imodeljs-config\", \".env\");\r\n result = dotenv.config({ path: potential });\r\n if (result.error)\r\n throw result.error;\r\n }\r\n\r\n dotenvExpand(result);\r\n }\r\n\r\n if (isFrontend)\r\n globalThis.process = { browser: true, env } as any;\r\n\r\n // Loads the config out of the environment.\r\n this.load();\r\n }\r\n\r\n /** Loads the necessary variables from `process.env`.\r\n */\r\n private load() {\r\n // Parse OIDC\r\n if (undefined === process.env.OIDC_CLIENT_ID)\r\n throw new Error(\"Missing the 'OIDC_CLIENT_ID' setting.\");\r\n this.oidcClientId = process.env.OIDC_CLIENT_ID!;\r\n\r\n if (undefined === process.env.OIDC_SCOPES)\r\n throw new Error(\"Missing the 'OIDC_SCOPES' setting\");\r\n this.oidcScopes = process.env.OIDC_SCOPES;\r\n\r\n if (process.env.OIDC_AUTHORITY)\r\n this.oidcAuthority = process.env.OIDC_AUTHORITY;\r\n\r\n this.oidcRedirect = (undefined === process.env.OIDC_REDIRECT) ? \"http://localhost:5000\" : process.env.OIDC_REDIRECT;\r\n\r\n // Parse GPRId\r\n if (undefined !== process.env.GPRID)\r\n this.gprid = process.env.GPRID;\r\n\r\n // Parse the iModel variables\r\n if (!process.env.IMODEL_PROJECTID && !process.env.IMODEL_PROJECTNAME)\r\n throw new Error(\"Missing the 'IMODEL_PROJECTID' or 'IMODEL_PROJECTNAME' setting.\");\r\n\r\n if (!process.env.IMODEL_IMODELID && !process.env.IMODEL_IMODELNAME)\r\n throw new Error(\"Missing the 'IMODEL_IMODELID' or 'IMODEL_IMODELNAME' setting.\");\r\n\r\n // Note: This is kind of messy but we don't sign-in to resolve the Names into IDs until the TestContext.\r\n this.iModels.push({\r\n useName: !process.env.IMODEL_IMODELID,\r\n id: process.env.IMODEL_IMODELID,\r\n name: process.env.IMODEL_IMODELNAME,\r\n useITwinName: !process.env.IMODEL_PROJECTID,\r\n iTwinId: process.env.IMODEL_PROJECTID,\r\n iTwinName: process.env.IMODEL_PROJECTNAME,\r\n\r\n // Neither of the next 2 are needed but since they'll be undefined anyway, just always set it.\r\n changeSetId: process.env.IMODEL_CHANGESETID,\r\n });\r\n\r\n // If write rpc interface is defined expect a separate iModel to be used.\r\n if (this.runiModelWriteRpcTests) {\r\n if (!process.env.IMODEL_WRITE_PROJECTID && !process.env.IMODEL_WRITE_PROJECTNAME)\r\n throw new Error(\"Missing the 'IMODEL_WRITE_PROJECTID' or 'IMODEL_WRITE_PROJECTNAME' setting.\");\r\n\r\n if (!process.env.IMODEL_WRITE_IMODELID && !process.env.IMODEL_WRITE_IMODELNAME)\r\n throw new Error(\"Missing the 'IMODEL_WRITE_IMODELID' or 'IMODEL_WRITE_IMODELNAME' setting.\");\r\n\r\n this.iModels.push({\r\n useName: !process.env.IMODEL_WRITE_IMODELID,\r\n id: process.env.IMODEL_WRITE_IMODELID,\r\n name: process.env.IMODEL_WRITE_IMODELNAME,\r\n useITwinName: !process.env.IMODEL_WRITE_PROJECTID,\r\n iTwinId: process.env.IMODEL_WRITE_PROJECTID,\r\n iTwinName: process.env.IMODEL_WRITE_PROJECTNAME,\r\n });\r\n }\r\n\r\n // Parse logging level\r\n if (undefined !== process.env.LOG_LEVEL) {\r\n const level = parseInt(process.env.LOG_LEVEL, 10);\r\n if (!isNaN(level) && undefined !== LogLevel[level])\r\n this.logLevel = level;\r\n }\r\n\r\n // Get backend data\r\n if (undefined === process.env.BACKEND_LOCATION)\r\n throw new Error(\"Missing the 'BACKEND_LOCATION' setting.\");\r\n this._backend.location = process.env.BACKEND_LOCATION;\r\n\r\n if (undefined === process.env.BACKEND_VERSION)\r\n throw new Error(\"Missing the 'BACKEND_VERSION' setting.\");\r\n this._backend.version = process.env.BACKEND_VERSION;\r\n\r\n if (undefined === process.env.BACKEND_NAME)\r\n throw new Error(\"Missing the 'BACKEND_NAME' setting.\");\r\n this._backend.name = process.env.BACKEND_NAME;\r\n\r\n // Get users\r\n this.users.push({\r\n email: process.env.USER_WITH_ACCESS_USERNAME || \"\",\r\n password: process.env.USER_WITH_ACCESS_PASSWORD || \"\",\r\n });\r\n\r\n if (undefined !== process.env.CLIENT_WITH_ACCESS_ID && undefined !== process.env.CLIENT_WITH_ACCESS_SECRET && undefined !== process.env.CLIENT_WITH_ACCESS_SCOPES) {\r\n this.clientConfiguration = {\r\n clientId: process.env.CLIENT_WITH_ACCESS_ID,\r\n clientSecret: process.env.CLIENT_WITH_ACCESS_SECRET,\r\n scope: process.env.CLIENT_WITH_ACCESS_SCOPES,\r\n authority: this.oidcAuthority,\r\n };\r\n }\r\n }\r\n\r\n public toString(): string {\r\n return `Configurations:\r\n backend location: ${this.Backend.location},\r\n backend name: ${this.Backend.name},\r\n backend version: ${this.Backend.version},\r\n oidc client id: ${this.oidcClientId},\r\n oidc scopes: ${this.oidcScopes},\r\n applicationId: ${this.gprid},\r\n log level: ${this.logLevel},\r\n testing iModelTileRpcTests: ${this.runiModelTileRpcTests},\r\n testing PresentationRpcTest: ${this.runPresentationRpcTests},\r\n testing iModelReadRpcTests: ${this.runiModelReadRpcTests},\r\n testing DevToolsRpcTests: ${this.runDevToolsRpcTests},\r\n testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SideChannels.js","sourceRoot":"","sources":["../../src/common/SideChannels.ts"],"names":[],"mappings":";;AAWA,wDAUC;AAED,4DAEC;AACD,0EAGC;AAvBD,wEAAuG;AAEvG,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAEhE,SAAgB,sBAAsB;IACpC,IAAA,uCAAuB,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,uCAAuB,EAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QACnE,0EAA0E;QAC1E,mDAAmD;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sCAAsB,EAAC,kBAAkB,CAAC,CAAC,CAAC;AACtE,CAAC;AACM,KAAK,UAAU,+BAA+B;IACnD,2GAA2G;IAC3G,OAAO,EAAE,CAAC;AACZ,CAAC","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// import { ServiceAuthorizationClient, ServiceAuthorizationClientConfiguration } from \"@itwin/service-authorization\";\nimport { AccessToken } from \"@itwin/core-bentley\";\nimport { executeBackendCallback, registerBackendCallback } from \"@itwin/certa/lib/utils/CallbackUtils\";\n\nconst getEnvCallbackName = \"getEnv\";\nconst getClientAccessTokenCallbackName = \"getClientAccessToken\";\n\nexport function exposeBackendCallbacks() {\n registerBackendCallback(getEnvCallbackName, () => {\n return JSON.stringify(process.env);\n });\n\n registerBackendCallback(getClientAccessTokenCallbackName, async () => {\n // const authClient = new ServiceAuthorizationClient(clientConfiguration);\n // const token = await authClient.getAccessToken();\n return \"\";\n });\n}\n\nexport async function getProcessEnvFromBackend(): Promise<NodeJS.ProcessEnv> {\n return JSON.parse(await executeBackendCallback(getEnvCallbackName));\n}\nexport async function getClientAccessTokenFromBackend(): Promise<AccessToken> {\n // const tokenString = await executeBackendCallback(getClientAccessTokenCallbackName, clientConfiguration);\n return \"\";\n}\n"]}
1
+ {"version":3,"file":"SideChannels.js","sourceRoot":"","sources":["../../src/common/SideChannels.ts"],"names":[],"mappings":";;AAWA,wDAUC;AAED,4DAEC;AACD,0EAGC;AAvBD,wEAAuG;AAEvG,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AACpC,MAAM,gCAAgC,GAAG,sBAAsB,CAAC;AAEhE,SAAgB,sBAAsB;IACpC,IAAA,uCAAuB,EAAC,kBAAkB,EAAE,GAAG,EAAE;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,IAAA,uCAAuB,EAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QACnE,0EAA0E;QAC1E,mDAAmD;QACnD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sCAAsB,EAAC,kBAAkB,CAAC,CAAC,CAAC;AACtE,CAAC;AACM,KAAK,UAAU,+BAA+B;IACnD,2GAA2G;IAC3G,OAAO,EAAE,CAAC;AACZ,CAAC","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// import { ServiceAuthorizationClient, ServiceAuthorizationClientConfiguration } from \"@itwin/service-authorization\";\r\nimport { AccessToken } from \"@itwin/core-bentley\";\r\nimport { executeBackendCallback, registerBackendCallback } from \"@itwin/certa/lib/utils/CallbackUtils\";\r\n\r\nconst getEnvCallbackName = \"getEnv\";\r\nconst getClientAccessTokenCallbackName = \"getClientAccessToken\";\r\n\r\nexport function exposeBackendCallbacks() {\r\n registerBackendCallback(getEnvCallbackName, () => {\r\n return JSON.stringify(process.env);\r\n });\r\n\r\n registerBackendCallback(getClientAccessTokenCallbackName, async () => {\r\n // const authClient = new ServiceAuthorizationClient(clientConfiguration);\r\n // const token = await authClient.getAccessToken();\r\n return \"\";\r\n });\r\n}\r\n\r\nexport async function getProcessEnvFromBackend(): Promise<NodeJS.ProcessEnv> {\r\n return JSON.parse(await executeBackendCallback(getEnvCallbackName));\r\n}\r\nexport async function getClientAccessTokenFromBackend(): Promise<AccessToken> {\r\n // const tokenString = await executeBackendCallback(getClientAccessTokenCallbackName, clientConfiguration);\r\n return \"\";\r\n}\r\n"]}
@@ -34927,6 +34927,9 @@ var GeoServiceStatus;
34927
34927
  GeoServiceStatus[GeoServiceStatus["NoDatumConverter"] = 147459] = "NoDatumConverter";
34928
34928
  GeoServiceStatus[GeoServiceStatus["VerticalDatumConvertError"] = 147460] = "VerticalDatumConvertError";
34929
34929
  GeoServiceStatus[GeoServiceStatus["CSMapError"] = 147461] = "CSMapError";
34930
+ /**
34931
+ * @deprecated in 5.0. This status is never returned.
34932
+ */
34930
34933
  GeoServiceStatus[GeoServiceStatus["Pending"] = 147462] = "Pending";
34931
34934
  })(GeoServiceStatus || (GeoServiceStatus = {}));
34932
34935
  /** Error status from various reality data operations
@@ -35238,7 +35241,7 @@ class BentleyError extends Error {
35238
35241
  case GeoServiceStatus.NoDatumConverter: return "No datum converter";
35239
35242
  case GeoServiceStatus.VerticalDatumConvertError: return "Vertical datum convert error";
35240
35243
  case GeoServiceStatus.CSMapError: return "CSMap error";
35241
- case GeoServiceStatus.Pending: return "Pending";
35244
+ case GeoServiceStatus.Pending: return "Pending"; // eslint-disable-line @typescript-eslint/no-deprecated
35242
35245
  case RealityDataStatus.InvalidData: return "Invalid or unknown data";
35243
35246
  case _BeSQLite__WEBPACK_IMPORTED_MODULE_0__.DbResult.BE_SQLITE_OK:
35244
35247
  case _BeSQLite__WEBPACK_IMPORTED_MODULE_0__.DbResult.BE_SQLITE_ROW:
@@ -39614,7 +39617,7 @@ function lookupHttpStatusCategory(statusCode) {
39614
39617
  case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.NoDatumConverter: return new OperationFailed();
39615
39618
  case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.VerticalDatumConvertError: return new OperationFailed();
39616
39619
  case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.CSMapError: return new InternalError();
39617
- case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.Pending: return new Pending();
39620
+ case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.Pending: return new Pending(); // eslint-disable-line @typescript-eslint/no-deprecated
39618
39621
  case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.RealityDataStatus.Success: return new Success();
39619
39622
  case _BentleyError__WEBPACK_IMPORTED_MODULE_0__.RealityDataStatus.InvalidData: return new InvalidData();
39620
39623
  default: return new UnknownError();
@@ -48632,6 +48635,7 @@ var GeoCoordStatus;
48632
48635
  /** This temporary status is used to mark coordinates for which the conversion has not yet been processed by the backend
48633
48636
  * as opposed to other coordinate conversions that may have been resolved otherwise (typically a cache).
48634
48637
  * At the completion of the conversion promise no coordinates should have this status.
48638
+ * @deprecated in 5.0. Pending is no longer returned as a status for coordinate conversions.
48635
48639
  */
48636
48640
  GeoCoordStatus[GeoCoordStatus["Pending"] = -41556] = "Pending";
48637
48641
  })(GeoCoordStatus || (GeoCoordStatus = {}));
@@ -48647,7 +48651,7 @@ function mapToGeoServiceStatus(s) {
48647
48651
  case GeoCoordStatus.NoDatumConverter: return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.NoDatumConverter;
48648
48652
  case GeoCoordStatus.VerticalDatumConvertError: return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.VerticalDatumConvertError;
48649
48653
  case GeoCoordStatus.CSMapError: return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.CSMapError;
48650
- case GeoCoordStatus.Pending: return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.Pending;
48654
+ case GeoCoordStatus.Pending: return _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.GeoServiceStatus.Pending; // eslint-disable-line @typescript-eslint/no-deprecated
48651
48655
  default:
48652
48656
  throw new Error("GeoCoordStatus -> GeoServiceStatus - Missing enum conversion");
48653
48657
  }
@@ -50713,6 +50717,7 @@ __webpack_require__.r(__webpack_exports__);
50713
50717
  /* harmony export */ ImageBufferFormat: () => (/* binding */ ImageBufferFormat),
50714
50718
  /* harmony export */ ImageSource: () => (/* binding */ ImageSource),
50715
50719
  /* harmony export */ ImageSourceFormat: () => (/* binding */ ImageSourceFormat),
50720
+ /* harmony export */ isBinaryImageSource: () => (/* binding */ isBinaryImageSource),
50716
50721
  /* harmony export */ isPowerOfTwo: () => (/* binding */ isPowerOfTwo),
50717
50722
  /* harmony export */ isValidImageSourceFormat: () => (/* binding */ isValidImageSourceFormat),
50718
50723
  /* harmony export */ nextHighestPowerOfTwo: () => (/* binding */ nextHighestPowerOfTwo)
@@ -50846,6 +50851,12 @@ class ImageSource {
50846
50851
  this.format = format;
50847
50852
  }
50848
50853
  }
50854
+ /** Returns true if `source` is a [[BinaryImageSource]].
50855
+ * @public
50856
+ */
50857
+ function isBinaryImageSource(source) {
50858
+ return source.format !== ImageSourceFormat.Svg && source.data instanceof Uint8Array;
50859
+ }
50849
50860
 
50850
50861
 
50851
50862
  /***/ }),
@@ -60091,6 +60102,7 @@ __webpack_require__.r(__webpack_exports__);
60091
60102
  /* harmony export */ iTwinChannel: () => (/* reexport safe */ _ipc_IpcSocket__WEBPACK_IMPORTED_MODULE_71__.iTwinChannel),
60092
60103
  /* harmony export */ initializeRpcRequest: () => (/* reexport safe */ _rpc_core_RpcRequest__WEBPACK_IMPORTED_MODULE_129__.initializeRpcRequest),
60093
60104
  /* harmony export */ ipcAppChannels: () => (/* reexport safe */ _IpcAppProps__WEBPACK_IMPORTED_MODULE_75__.ipcAppChannels),
60105
+ /* harmony export */ isBinaryImageSource: () => (/* reexport safe */ _Image__WEBPACK_IMPORTED_MODULE_66__.isBinaryImageSource),
60094
60106
  /* harmony export */ isKnownTileFormat: () => (/* reexport safe */ _tile_TileIO__WEBPACK_IMPORTED_MODULE_154__.isKnownTileFormat),
60095
60107
  /* harmony export */ isPlacement2dProps: () => (/* reexport safe */ _ElementProps__WEBPACK_IMPORTED_MODULE_29__.isPlacement2dProps),
60096
60108
  /* harmony export */ isPlacement3dProps: () => (/* reexport safe */ _ElementProps__WEBPACK_IMPORTED_MODULE_29__.isPlacement3dProps),
@@ -88398,11 +88410,18 @@ class AccuDraw {
88398
88410
  inVec.crossProduct(yVec, normalVec);
88399
88411
  return true;
88400
88412
  }
88413
+ _acosWithLimitCheck(value) {
88414
+ if (value >= 1.0)
88415
+ return 0.0;
88416
+ if (value <= -1.0)
88417
+ return Math.PI;
88418
+ return Math.acos(value);
88419
+ }
88401
88420
  handleDegeneratePolarCase() {
88402
88421
  if (!(this.locked & LockedStates.DIST_BM))
88403
88422
  this._distance = 0.0;
88404
88423
  if (this.locked & LockedStates.VEC_BM) {
88405
- this._angle = Math.acos(this.vector.dotProduct(this.axes.x));
88424
+ this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));
88406
88425
  }
88407
88426
  else if (this.locked & LockedStates.Y_BM) {
88408
88427
  this.vector.setFrom(this.axes.y);
@@ -88416,7 +88435,7 @@ class AccuDraw {
88416
88435
  }
88417
88436
  else {
88418
88437
  // use last good vector
88419
- this._angle = Math.acos(this.vector.dotProduct(this.axes.x));
88438
+ this._angle = this._acosWithLimitCheck(this.vector.dotProduct(this.axes.x));
88420
88439
  }
88421
88440
  this.origin.plusScaled(this.vector, this._distance, this.point);
88422
88441
  }
@@ -92879,6 +92898,10 @@ class BriefcaseConnection extends _IModelConnection__WEBPACK_IMPORTED_MODULE_5__
92879
92898
  async saveChanges(description) {
92880
92899
  await _IpcApp__WEBPACK_IMPORTED_MODULE_6__.IpcApp.appFunctionIpc.saveChanges(this.key, description);
92881
92900
  }
92901
+ /** Abandon pending changes to this briefcase. */
92902
+ async abandonChanges() {
92903
+ await _IpcApp__WEBPACK_IMPORTED_MODULE_6__.IpcApp.appFunctionIpc.abandonChanges(this.key);
92904
+ }
92882
92905
  /** Pull (and potentially merge if there are local changes) up to a specified changeset from iModelHub into this briefcase
92883
92906
  * @param toIndex The changeset index to pull changes to. If `undefined`, pull all changes.
92884
92907
  * @param options Options for pulling changes.
@@ -237318,7 +237341,7 @@ class Matrix3d {
237318
237341
  let upVector = vectorA.unitCrossProduct(vectorB);
237319
237342
  // the usual case (both vectors and also their cross product is non-zero)
237320
237343
  if (upVector) {
237321
- return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians));
237344
+ return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * vectorA.planarAngleTo(vectorB, upVector).radians), result);
237322
237345
  }
237323
237346
  // if either vector is zero
237324
237347
  if (_Geometry__WEBPACK_IMPORTED_MODULE_0__.Geometry.isSmallMetricDistance(vectorA.magnitude())
@@ -237329,7 +237352,7 @@ class Matrix3d {
237329
237352
  return Matrix3d.createIdentity(result);
237330
237353
  // opposing vectors (cross product = 0, dot product < 0)
237331
237354
  upVector = Matrix3d.createPerpendicularVectorFavorPlaneContainingZ(vectorA, upVector);
237332
- return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * Math.PI));
237355
+ return Matrix3d.createRotationAroundVector(upVector, _Angle__WEBPACK_IMPORTED_MODULE_2__.Angle.createRadians(fraction * Math.PI), result);
237333
237356
  }
237334
237357
  /** Returns a matrix that rotates from vectorA to vectorB. */
237335
237358
  static createRotationVectorToVector(vectorA, vectorB, result) {
@@ -280783,9 +280806,8 @@ __webpack_require__.r(__webpack_exports__);
280783
280806
 
280784
280807
 
280785
280808
 
280786
- // cspell:word bagof
280787
280809
  /**
280788
- * `ImodelJson` namespace has classes for serializing and deserialization json objects
280810
+ * `IModelJson` namespace has classes for serializing and deserialization json objects
280789
280811
  * @public
280790
280812
  */
280791
280813
  var IModelJson;
@@ -280995,7 +281017,7 @@ var IModelJson;
280995
281017
  return _curve_CoordinateXYZ__WEBPACK_IMPORTED_MODULE_11__.CoordinateXYZ.create(point);
280996
281018
  return undefined;
280997
281019
  }
280998
- /** Parse TransitionSpiral content (right side) to TransitionSpiral3d. */
281020
+ /** Parse `transitionSpiral` content (right side) to TransitionSpiral3d. */
280999
281021
  static parseTransitionSpiral(data) {
281000
281022
  const axes = Reader.parseOrientation(data, true);
281001
281023
  const origin = Reader.parsePoint3dProperty(data, "origin");
@@ -281050,13 +281072,13 @@ var IModelJson;
281050
281072
  }
281051
281073
  return newCurve;
281052
281074
  }
281053
- /** Parse `bcurve` content to an InterpolationCurve3d object. */
281075
+ /** Parse `interpolationCurve` content to an InterpolationCurve3d object. */
281054
281076
  static parseInterpolationCurve(data) {
281055
281077
  if (data === undefined)
281056
281078
  return undefined;
281057
281079
  return _bspline_InterpolationCurve3d__WEBPACK_IMPORTED_MODULE_18__.InterpolationCurve3d.create(data);
281058
281080
  }
281059
- /** Parse `bcurve` content to an Akima curve object. */
281081
+ /** Parse `akimaCurve` content to an Akima curve object. */
281060
281082
  static parseAkimaCurve3d(data) {
281061
281083
  if (data === undefined)
281062
281084
  return undefined;
@@ -313023,18 +313045,18 @@ class Settings {
313023
313045
  }
313024
313046
  }
313025
313047
  toString() {
313026
- return `Configurations:
313027
- backend location: ${this.Backend.location},
313028
- backend name: ${this.Backend.name},
313029
- backend version: ${this.Backend.version},
313030
- oidc client id: ${this.oidcClientId},
313031
- oidc scopes: ${this.oidcScopes},
313032
- applicationId: ${this.gprid},
313033
- log level: ${this.logLevel},
313034
- testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
313035
- testing PresentationRpcTest: ${this.runPresentationRpcTests},
313036
- testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
313037
- testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
313048
+ return `Configurations:
313049
+ backend location: ${this.Backend.location},
313050
+ backend name: ${this.Backend.name},
313051
+ backend version: ${this.Backend.version},
313052
+ oidc client id: ${this.oidcClientId},
313053
+ oidc scopes: ${this.oidcScopes},
313054
+ applicationId: ${this.gprid},
313055
+ log level: ${this.logLevel},
313056
+ testing iModelTileRpcTests: ${this.runiModelTileRpcTests},
313057
+ testing PresentationRpcTest: ${this.runPresentationRpcTests},
313058
+ testing iModelReadRpcTests: ${this.runiModelReadRpcTests},
313059
+ testing DevToolsRpcTests: ${this.runDevToolsRpcTests},
313038
313060
  testing iModelWriteRpcTests: ${this.runiModelWriteRpcTests}`;
313039
313061
  }
313040
313062
  }
@@ -313248,7 +313270,7 @@ class TestContext {
313248
313270
  this.initializeRpcInterfaces({ title: this.settings.Backend.name, version: this.settings.Backend.version });
313249
313271
  const iModelClient = new imodels_client_management_1.IModelsClient({ api: { baseUrl: `https://${process.env.IMJS_URL_PREFIX ?? ""}api.bentley.com/imodels` } });
313250
313272
  await core_frontend_1.NoRenderApp.startup({
313251
- applicationVersion: "5.0.0-dev.66",
313273
+ applicationVersion: "5.0.0-dev.68",
313252
313274
  applicationId: this.settings.gprid,
313253
313275
  authorizationClient: new frontend_1.TestFrontendAuthorizationClient(this.serviceAuthToken),
313254
313276
  hubAccess: new imodels_access_frontend_1.FrontendIModelsAccess(iModelClient),
@@ -313339,6 +313361,7 @@ __webpack_require__.r(__webpack_exports__);
313339
313361
  /* harmony export */ combineDiagnosticsSeverities: () => (/* reexport safe */ _presentation_common_Diagnostics__WEBPACK_IMPORTED_MODULE_1__.combineDiagnosticsSeverities),
313340
313362
  /* harmony export */ combineFieldNames: () => (/* reexport safe */ _presentation_common_content_ContentTraverser__WEBPACK_IMPORTED_MODULE_30__.combineFieldNames),
313341
313363
  /* harmony export */ compareDiagnosticsSeverities: () => (/* reexport safe */ _presentation_common_Diagnostics__WEBPACK_IMPORTED_MODULE_1__.compareDiagnosticsSeverities),
313364
+ /* harmony export */ createCancellableTimeoutPromise: () => (/* reexport safe */ _presentation_common_Utils__WEBPACK_IMPORTED_MODULE_11__.createCancellableTimeoutPromise),
313342
313365
  /* harmony export */ createFieldHierarchies: () => (/* reexport safe */ _presentation_common_content_ContentTraverser__WEBPACK_IMPORTED_MODULE_30__.createFieldHierarchies),
313343
313366
  /* harmony export */ deepReplaceNullsToUndefined: () => (/* reexport safe */ _presentation_common_Utils__WEBPACK_IMPORTED_MODULE_11__.deepReplaceNullsToUndefined),
313344
313367
  /* harmony export */ getFieldByDescriptor: () => (/* reexport safe */ _presentation_common_content_Fields__WEBPACK_IMPORTED_MODULE_24__.getFieldByDescriptor),
@@ -314197,6 +314220,8 @@ var PresentationStatus;
314197
314220
  /**
314198
314221
  * Timeout for the request was reached which prevented it from being fulfilled. Frontend may
314199
314222
  * repeat the request.
314223
+ *
314224
+ * @deprecated in 5.x. Presentation RPC now relies on `RpcPendingResponse` to handle timeouts.
314200
314225
  */
314201
314226
  PresentationStatus[PresentationStatus["BackendTimeout"] = 65543] = "BackendTimeout";
314202
314227
  })(PresentationStatus || (PresentationStatus = {}));
@@ -315207,6 +315232,12 @@ __webpack_require__.r(__webpack_exports__);
315207
315232
  /** @packageDocumentation
315208
315233
  * @module RPC
315209
315234
  */
315235
+ var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
315236
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
315237
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
315238
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
315239
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
315240
+ };
315210
315241
 
315211
315242
 
315212
315243
 
@@ -315214,11 +315245,11 @@ __webpack_require__.r(__webpack_exports__);
315214
315245
  * Interface used for communication between Presentation backend and frontend.
315215
315246
  * @public
315216
315247
  */
315217
- class PresentationRpcInterface extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.RpcInterface {
315248
+ let PresentationRpcInterface = class PresentationRpcInterface extends _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.RpcInterface {
315218
315249
  /** The immutable name of the interface. */
315219
315250
  static interfaceName = "PresentationRpcInterface";
315220
315251
  /** The semantic version of the interface. */
315221
- static interfaceVersion = "4.1.0";
315252
+ static interfaceVersion = "5.0.0";
315222
315253
  /*===========================================================================================
315223
315254
  NOTE: Any add/remove/change to the methods below requires an update of the interface version.
315224
315255
  NOTE: Please consult the README in core/common/src/rpc for the semantic versioning rules.
@@ -315306,7 +315337,11 @@ class PresentationRpcInterface extends _itwin_core_common__WEBPACK_IMPORTED_MODU
315306
315337
  async computeSelection(_token, _options) {
315307
315338
  return this.forward(arguments);
315308
315339
  }
315309
- }
315340
+ };
315341
+ PresentationRpcInterface = __decorate([
315342
+ _itwin_core_common__WEBPACK_IMPORTED_MODULE_0__.RpcOperation.setDefaultPolicy({ retryInterval: () => 0 })
315343
+ ], PresentationRpcInterface);
315344
+
315310
315345
  /** @internal */
315311
315346
  var PresentationIpcEvents;
315312
315347
  (function (PresentationIpcEvents) {
@@ -315399,6 +315434,7 @@ __webpack_require__.r(__webpack_exports__);
315399
315434
  /* harmony import */ var _CommonLoggerCategory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./CommonLoggerCategory */ "../../presentation/common/lib/esm/presentation-common/CommonLoggerCategory.js");
315400
315435
  /* harmony import */ var _Error__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Error */ "../../presentation/common/lib/esm/presentation-common/Error.js");
315401
315436
  /* harmony import */ var _PresentationRpcInterface__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PresentationRpcInterface */ "../../presentation/common/lib/esm/presentation-common/PresentationRpcInterface.js");
315437
+ /* harmony import */ var _Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Utils */ "../../presentation/common/lib/esm/presentation-common/Utils.js");
315402
315438
  /*---------------------------------------------------------------------------------------------
315403
315439
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
315404
315440
  * See LICENSE.md in the project root for license terms and full copyright notice.
@@ -315411,6 +315447,7 @@ __webpack_require__.r(__webpack_exports__);
315411
315447
 
315412
315448
 
315413
315449
 
315450
+
315414
315451
  /**
315415
315452
  * Default timeout for how long we're going to wait for RPC request to be fulfilled before throwing
315416
315453
  * a timeout error.
@@ -315437,34 +315474,37 @@ class RpcRequestsHandler {
315437
315474
  return _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RpcManager.getClientForInterface(_PresentationRpcInterface__WEBPACK_IMPORTED_MODULE_4__.PresentationRpcInterface);
315438
315475
  }
315439
315476
  async requestWithTimeout(func, diagnosticsHandler) {
315440
- const start = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeTimePoint.now();
315441
- const timeout = _itwin_core_bentley__WEBPACK_IMPORTED_MODULE_0__.BeDuration.fromMilliseconds(this.timeout);
315442
- let diagnostics;
315443
- while (start.plus(timeout).isInFuture) {
315444
- try {
315445
- const response = await func();
315446
- diagnostics = response.diagnostics;
315447
- switch (response.statusCode) {
315448
- case _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationStatus.Success:
315449
- return response.result;
315450
- case _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationStatus.BackendTimeout:
315451
- break;
315452
- default:
315453
- throw new _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationError(response.statusCode, response.errorMessage);
315477
+ const rpcResponsePromise = func();
315478
+ const rpcRequest = _itwin_core_common__WEBPACK_IMPORTED_MODULE_1__.RpcRequest.current(this.rpcClient);
315479
+ const timeout = (0,_Utils__WEBPACK_IMPORTED_MODULE_5__.createCancellableTimeoutPromise)(this.timeout);
315480
+ return Promise.race([
315481
+ (async () => {
315482
+ let diagnostics;
315483
+ try {
315484
+ const response = await rpcResponsePromise;
315485
+ diagnostics = response.diagnostics;
315486
+ switch (response.statusCode) {
315487
+ case _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationStatus.Success:
315488
+ return response.result;
315489
+ default:
315490
+ throw new _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationError(response.statusCode, response.errorMessage);
315491
+ }
315454
315492
  }
315455
- }
315456
- finally {
315457
- diagnosticsHandler && diagnostics && diagnosticsHandler(diagnostics);
315458
- }
315459
- }
315460
- throw new _Error__WEBPACK_IMPORTED_MODULE_3__.PresentationError(_Error__WEBPACK_IMPORTED_MODULE_3__.PresentationStatus.BackendTimeout);
315493
+ finally {
315494
+ diagnosticsHandler && diagnostics && diagnosticsHandler(diagnostics);
315495
+ }
315496
+ })(),
315497
+ timeout.promise.then(() => {
315498
+ throw new Error(`Processing the request took longer than the configured limit of ${this.timeout} ms`);
315499
+ }),
315500
+ ]).finally(() => {
315501
+ rpcRequest?.cancel();
315502
+ timeout.cancel();
315503
+ });
315461
315504
  }
315462
315505
  /**
315463
- * Send the request to backend.
315464
- *
315465
- * If the backend responds with [[PresentationStatus.BackendTimeout]], the request is repeated until we hit `timeout` or get
315466
- * a response. If the response is other than [[PresentationStatus.BackendTimeout]] or [[PresentationStatus.Success]], a [[PresentationError]]
315467
- * is thrown with the details from the response.
315506
+ * Send the request to backend. We'll wait for the response for `this.timeout` ms, and if we don't get the response by
315507
+ * then, we'll throw an error.
315468
315508
  */
315469
315509
  async request(func, options, ...additionalOptions) {
315470
315510
  const { imodel, diagnostics, ...optionsNoIModel } = options;
@@ -315945,6 +315985,7 @@ const UPDATE_FULL = "FULL";
315945
315985
  __webpack_require__.r(__webpack_exports__);
315946
315986
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
315947
315987
  /* harmony export */ DEFAULT_KEYS_BATCH_SIZE: () => (/* binding */ DEFAULT_KEYS_BATCH_SIZE),
315988
+ /* harmony export */ createCancellableTimeoutPromise: () => (/* binding */ createCancellableTimeoutPromise),
315948
315989
  /* harmony export */ deepReplaceNullsToUndefined: () => (/* binding */ deepReplaceNullsToUndefined),
315949
315990
  /* harmony export */ getInstancesCount: () => (/* binding */ getInstancesCount),
315950
315991
  /* harmony export */ omitUndefined: () => (/* binding */ omitUndefined)
@@ -316027,6 +316068,22 @@ function deepReplaceNullsToUndefined(obj) {
316027
316068
  }
316028
316069
  return obj;
316029
316070
  }
316071
+ /** @internal */
316072
+ function createCancellableTimeoutPromise(timeoutMs) {
316073
+ let timeout;
316074
+ let rejectPromise;
316075
+ const promise = new Promise((resolve, reject) => {
316076
+ rejectPromise = reject;
316077
+ timeout = setTimeout(resolve, timeoutMs);
316078
+ });
316079
+ return {
316080
+ promise,
316081
+ cancel: () => {
316082
+ clearTimeout(timeout);
316083
+ rejectPromise();
316084
+ },
316085
+ };
316086
+ }
316030
316087
 
316031
316088
 
316032
316089
  /***/ }),
@@ -339301,7 +339358,7 @@ function __rewriteRelativeImportExtension(path, preserveJsx) {
339301
339358
  /***/ ((module) => {
339302
339359
 
339303
339360
  "use strict";
339304
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.66","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","test:debug":"vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.5","@vitest/coverage-v8":"^3.0.5","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.5","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.2.5","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
339361
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@itwin/core-frontend","version":"5.0.0-dev.68","description":"iTwin.js frontend components","main":"lib/cjs/core-frontend.js","module":"lib/esm/core-frontend.js","typings":"lib/cjs/core-frontend","license":"MIT","scripts":{"build":"npm run -s copy:public && npm run -s build:cjs && npm run -s build:esm && npm run -s webpackWorkers && npm run -s copy:workers","build:cjs":"npm run -s copy:js:cjs && tsc 1>&2 --outDir lib/cjs","build:esm":"npm run -s copy:js:esm && tsc 1>&2 --module ES2022 --outDir lib/esm","clean":"rimraf lib .rush/temp/package-deps*.json","copy:public":"cpx \\"./src/public/**/*\\" ./lib/public","copy:js:cjs":"cpx \\"./src/**/*.js\\" ./lib/cjs","copy:js:esm":"cpx \\"./src/**/*.js\\" ./lib/esm","copy:workers":"cpx \\"./lib/workers/webpack/parse-imdl-worker.js\\" ./lib/public/scripts","docs":"betools docs --json=../../generated-docs/core/core-frontend/file.json --tsIndexFile=./core-frontend.ts --onlyJson --excludes=webgl/**/*,**/map/*.d.ts,**/tile/*.d.ts,**/*-css.ts","extract-api":"betools extract-api --entry=core-frontend && npm run extract-extension-api","extract-extension-api":"eslint --no-inline-config -c extraction.eslint.config.js \\"./src/**/*.ts\\" 1>&2","lint":"eslint \\"./src/**/*.ts\\" 1>&2","lint-fix":"eslint --fix -f visualstudio \\"./src/**/*.ts\\" 1>&2","pseudolocalize":"betools pseudolocalize --englishDir ./src/public/locales/en --out ./public/locales/en-PSEUDO","test":"npm run webpackTestWorker && vitest --run","cover":"npm run webpackTestWorker && vitest --run","test:debug":"vitest --run","webpackTests":"webpack --config ./src/test/utils/webpack.config.js 1>&2 && npm run -s webpackTestWorker","webpackTestWorker":"webpack --config ./src/test/worker/webpack.config.js 1>&2 && cpx \\"./lib/test/test-worker.js\\" ./lib/test","webpackWorkers":"webpack --config ./src/workers/ImdlParser/webpack.config.js 1>&2"},"repository":{"type":"git","url":"https://github.com/iTwin/itwinjs-core.git","directory":"core/frontend"},"keywords":["Bentley","BIM","iModel","digital-twin","iTwin"],"author":{"name":"Bentley Systems, Inc.","url":"http://www.bentley.com"},"peerDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*"},"//devDependencies":["NOTE: All peerDependencies should also be listed as devDependencies since peerDependencies are not considered by npm install","NOTE: All tools used by scripts in this package must be listed as devDependencies"],"devDependencies":{"@itwin/appui-abstract":"workspace:*","@itwin/build-tools":"workspace:*","@itwin/core-bentley":"workspace:*","@itwin/core-common":"workspace:*","@itwin/core-geometry":"workspace:*","@itwin/core-orbitgt":"workspace:*","@itwin/core-quantity":"workspace:*","@itwin/eslint-plugin":"5.0.0-dev.1","@types/chai-as-promised":"^7","@vitest/browser":"^3.0.6","@vitest/coverage-v8":"^3.0.6","cpx2":"^3.0.0","eslint":"^9.13.0","glob":"^10.3.12","playwright":"~1.47.1","rimraf":"^3.0.2","source-map-loader":"^4.0.0","typescript":"~5.6.2","typemoq":"^2.1.0","vitest":"^3.0.6","vite-multiple-assets":"^1.3.1","vite-plugin-static-copy":"1.0.6","webpack":"^5.97.1"},"//dependencies":["NOTE: these dependencies should be only for things that DO NOT APPEAR IN THE API","NOTE: core-frontend should remain UI technology agnostic, so no react/angular dependencies are allowed"],"dependencies":{"@itwin/cloud-agnostic-core":"^2.2.4","@itwin/object-storage-core":"^2.2.5","@itwin/core-i18n":"workspace:*","@itwin/webgl-compatibility":"workspace:*","@loaders.gl/core":"^3.1.6","@loaders.gl/draco":"^3.1.6","fuse.js":"^3.3.0","wms-capabilities":"0.4.0"}}');
339305
339362
 
339306
339363
  /***/ }),
339307
339364