@itwin/ecschema-rpcinterface-tests 3.0.0-dev.84 → 3.0.0-dev.88

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/LICENSE.md CHANGED
@@ -1,9 +1,9 @@
1
- # MIT License
2
-
3
- Copyright © 2017-2021 Bentley Systems, Incorporated. All rights reserved.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
-
7
- The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
-
9
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ # MIT License
2
+
3
+ Copyright © 2017-2021 Bentley Systems, Incorporated. All rights reserved.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
8
+
9
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,63 +1,63 @@
1
- # iTwin.js Schema RPC Interface Integration Tests
2
-
3
- Copyright © Bentley Systems, Incorporated. All rights reserved.
4
-
5
- This package contains the Schema RPC Interface integration tests and configuration setup to run them against a deployed backend.
6
-
7
- ## Prerequisites
8
-
9
- Refer to the iTwin.js [prerequisites](https://github.com/imodeljs/imodeljs#prerequisites)
10
-
11
- ## Running the tests
12
-
13
- Before running the tests, the environment needs to be setup. The easiest way is to configure a [.env] file in the working directory, the [template.env](./template.env) file has information about how to set one up and all the variables that need to be configured.
14
-
15
- All test related settings are contained in the `process.env` variable and parsed by [Settings.ts](./common/Settings.ts). If something required is missing or not configured properly, the tests will fail to setup.
16
-
17
- ### Setting up the required context
18
-
19
- The tests require an Project and iModel to be setup in order to run properly.
20
-
21
- The iModel doesn't require anything special and can be a seed iModel.
22
-
23
- ### Specifying users to be used for testing
24
-
25
- The tests require a single user to be specified. The user's access rules required are:
26
-
27
- 1. User1 - full access to the Project and an iModel (requires iModelHub Read iModel Project Role)
28
- - i.e., "user_with_access_username" in the `.env` file.
29
-
30
- ### Specifying the backend
31
-
32
- If the specified address for the backend is "localhost", you must have built a backend and start it.
33
-
34
- If you do not specify the address to be "localhost" for the backend, you must specify a valid URL to a hosted backend.
35
-
36
- ### Configuring OIDC
37
-
38
- By default the tests will retrieve valid OIDC tokens on behalf of each user specified in `environment` in order to make API calls. However,
39
- if you wish to use JWTs instead, you may set the `oidc_client_id` environment variable which will use OIDC authentication instead of SAML.
40
-
41
- In order to run the integration tests they need to have a valid OIDC client id which can be obtains by performing the following steps:
42
-
43
- 1. Go to "[Register your application](https://developer.bentley.com/register/)" and sign in
44
- 1. Select "SPA" application
45
- 1. Specify a client name (can be anything you want)
46
- 1. Add `http://localhost:5000` as a redirect url
47
- 1. Hit 'Next' to finish
48
-
49
- ### Actually running the tests
50
-
51
- Once all the required environment variables are setup, to run the integration tests:
52
-
53
- 1. Install dependencies: `npm install`
54
- 2. Clean output: `npm run clean`
55
- 3. Build source: `npm run build`
56
- 4. Run tests: `npm test:integration`
57
-
58
- ## Development instructions
59
-
60
- The base 'after all' and 'before all' hooks are implemented in TestSetup.test.ts. Any cleanup and setup steps should be added here.
61
-
62
- The `TestContext` class follows the singleton pattern and will automatically be setup when its static instance is invoked via its `TestContext.instance()`.
63
- The setup uses a .env file and `process.env` to populate the `TestContext`.
1
+ # iTwin.js Schema RPC Interface Integration Tests
2
+
3
+ Copyright © Bentley Systems, Incorporated. All rights reserved.
4
+
5
+ This package contains the Schema RPC Interface integration tests and configuration setup to run them against a deployed backend.
6
+
7
+ ## Prerequisites
8
+
9
+ Refer to the iTwin.js [prerequisites](https://github.com/imodeljs/imodeljs#prerequisites)
10
+
11
+ ## Running the tests
12
+
13
+ Before running the tests, the environment needs to be setup. The easiest way is to configure a [.env] file in the working directory, the [template.env](./template.env) file has information about how to set one up and all the variables that need to be configured.
14
+
15
+ All test related settings are contained in the `process.env` variable and parsed by [Settings.ts](./common/Settings.ts). If something required is missing or not configured properly, the tests will fail to setup.
16
+
17
+ ### Setting up the required context
18
+
19
+ The tests require an Project and iModel to be setup in order to run properly.
20
+
21
+ The iModel doesn't require anything special and can be a seed iModel.
22
+
23
+ ### Specifying users to be used for testing
24
+
25
+ The tests require a single user to be specified. The user's access rules required are:
26
+
27
+ 1. User1 - full access to the Project and an iModel (requires iModelHub Read iModel Project Role)
28
+ - i.e., "user_with_access_username" in the `.env` file.
29
+
30
+ ### Specifying the backend
31
+
32
+ If the specified address for the backend is "localhost", you must have built a backend and start it.
33
+
34
+ If you do not specify the address to be "localhost" for the backend, you must specify a valid URL to a hosted backend.
35
+
36
+ ### Configuring OIDC
37
+
38
+ By default the tests will retrieve valid OIDC tokens on behalf of each user specified in `environment` in order to make API calls. However,
39
+ if you wish to use JWTs instead, you may set the `oidc_client_id` environment variable which will use OIDC authentication instead of SAML.
40
+
41
+ In order to run the integration tests they need to have a valid OIDC client id which can be obtains by performing the following steps:
42
+
43
+ 1. Go to "[Register your application](https://developer.bentley.com/register/)" and sign in
44
+ 1. Select "SPA" application
45
+ 1. Specify a client name (can be anything you want)
46
+ 1. Add `http://localhost:5000` as a redirect url
47
+ 1. Hit 'Next' to finish
48
+
49
+ ### Actually running the tests
50
+
51
+ Once all the required environment variables are setup, to run the integration tests:
52
+
53
+ 1. Install dependencies: `npm install`
54
+ 2. Clean output: `npm run clean`
55
+ 3. Build source: `npm run build`
56
+ 4. Run tests: `npm test:integration`
57
+
58
+ ## Development instructions
59
+
60
+ The base 'after all' and 'before all' hooks are implemented in TestSetup.test.ts. Any cleanup and setup steps should be added here.
61
+
62
+ The `TestContext` class follows the singleton pattern and will automatically be setup when its static instance is invoked via its `TestContext.instance()`.
63
+ The setup uses a .env file and `process.env` to populate the `TestContext`.
package/certa.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- // Comments are allowed here!
3
- "testBundle": "./lib/dist/bundled-tests.js",
4
- "backendInitModule": "./lib/backend/BackendInit.js",
5
- "ports": {
6
- "debugging": 5858,
7
- "frontend": 3010,
8
- "frontendDebugging": 9223
9
- },
10
- "chromeOptions": {
11
- "args": [
12
- "--disable-web-security",
13
- "--no-sandbox"
14
- ]
15
- },
16
- "mochaOptions": {
17
- "timeout": 90000,
18
- "reporter": "node_modules/@itwin/build-tools/mocha-reporter",
19
- "reporterOptions": {
20
- "mochaFile": "ecschema-rpcinterface-tests-result/ecschema-rpcinterface-tests-result.xml"
21
- }
22
- }
1
+ {
2
+ // Comments are allowed here!
3
+ "testBundle": "./lib/dist/bundled-tests.js",
4
+ "backendInitModule": "./lib/backend/BackendInit.js",
5
+ "ports": {
6
+ "debugging": 5858,
7
+ "frontend": 3010,
8
+ "frontendDebugging": 9223
9
+ },
10
+ "chromeOptions": {
11
+ "args": [
12
+ "--disable-web-security",
13
+ "--no-sandbox"
14
+ ]
15
+ },
16
+ "mochaOptions": {
17
+ "timeout": 90000,
18
+ "reporter": "node_modules/@itwin/build-tools/mocha-reporter",
19
+ "reporterOptions": {
20
+ "mochaFile": "ecschema-rpcinterface-tests-result/ecschema-rpcinterface-tests-result.xml"
21
+ }
22
+ }
23
23
  }
@@ -99,10 +99,10 @@ class Settings {
99
99
  // this.users.push([process.env.USER_WITHOUT_ACCESS_USERNAME || "", process.env.USER_WITHOUT_ACCESS_PASSWORD || ""]);
100
100
  }
101
101
  toString() {
102
- return `Configurations:
103
- oidc client id: ${this.oidcClientId},
104
- oidc scopes: ${this.oidcScopes},
105
- applicationId: ${this.gprid},
102
+ return `Configurations:
103
+ oidc client id: ${this.oidcClientId},
104
+ oidc scopes: ${this.oidcScopes},
105
+ applicationId: ${this.gprid},
106
106
  log level: ${this.logLevel}`;
107
107
  }
108
108
  }
@@ -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 { LogLevel } from \"@itwin/core-bentley\";\nimport { IModelReadRpcInterface } from \"@itwin/core-common\";\nimport { TestUserCredentials } from \"@itwin/oidc-signin-tool\";\nimport { ECSchemaRpcInterface } from \"@itwin/ecschema-rpcinterface-common\";\n\nexport interface Backend {\n version: string;\n location: string;\n name: string;\n path: string;\n}\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() {\n const rpcInterfaces = [];\n rpcInterfaces.push(IModelReadRpcInterface);\n rpcInterfaces.push(ECSchemaRpcInterface);\n\n return rpcInterfaces;\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 imsUrl!: string;\n public discovery!: string;\n public gprid?: string;\n public logLevel?: number;\n public users: TestUserCredentials[] = [];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n public get Backend(): Backend { return this._backend; }\n public get user(): TestUserCredentials { return this.users[0]; }\n\n public iModel: IModelData = {} as IModelData;\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-var-requires\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-var-requires\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-var-requires\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\n // Parse environment\n if (undefined !== process.env.ENVIRONMENT)\n this.env = parseInt(process.env.ENVIRONMENT, 10);\n\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 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 this.iModel = {\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 changeSetId: process.env.IMODEL_CHANGESETID,\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 // this.users.push([process.env.USER_WITHOUT_ACCESS_USERNAME || \"\", process.env.USER_WITHOUT_ACCESS_PASSWORD || \"\"]);\n }\n\n public toString(): string {\n return `Configurations:\n oidc client id: ${this.oidcClientId},\n oidc scopes: ${this.oidcScopes},\n applicationId: ${this.gprid},\n log level: ${this.logLevel}`;\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 { LogLevel } from \"@itwin/core-bentley\";\r\nimport { IModelReadRpcInterface } from \"@itwin/core-common\";\r\nimport { TestUserCredentials } from \"@itwin/oidc-signin-tool\";\r\nimport { ECSchemaRpcInterface } from \"@itwin/ecschema-rpcinterface-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\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() {\r\n const rpcInterfaces = [];\r\n rpcInterfaces.push(IModelReadRpcInterface);\r\n rpcInterfaces.push(ECSchemaRpcInterface);\r\n\r\n return rpcInterfaces;\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 imsUrl!: string;\r\n public discovery!: string;\r\n public gprid?: string;\r\n public logLevel?: number;\r\n public users: TestUserCredentials[] = [];\r\n\r\n // eslint-disable-next-line @typescript-eslint/naming-convention\r\n public get Backend(): Backend { return this._backend; }\r\n public get user(): TestUserCredentials { return this.users[0]; }\r\n\r\n public iModel: IModelData = {} as IModelData;\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-var-requires\r\n const dotenv = require(\"dotenv\"); // eslint-disable-line @typescript-eslint/no-var-requires\r\n const dotenvExpand = require(\"dotenv-expand\"); // eslint-disable-line @typescript-eslint/no-var-requires\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\r\n // Parse environment\r\n if (undefined !== process.env.ENVIRONMENT)\r\n this.env = parseInt(process.env.ENVIRONMENT, 10);\r\n\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 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 this.iModel = {\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 changeSetId: process.env.IMODEL_CHANGESETID,\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 // this.users.push([process.env.USER_WITHOUT_ACCESS_USERNAME || \"\", process.env.USER_WITHOUT_ACCESS_PASSWORD || \"\"]);\r\n }\r\n\r\n public toString(): string {\r\n return `Configurations:\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 }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SideChannels.js","sourceRoot":"","sources":["../../src/common/SideChannels.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,wEAAuG;AAEvG,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,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;AACL,CAAC;AAJD,wDAIC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sCAAsB,EAAC,kBAAkB,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,4DAEC","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 { executeBackendCallback, registerBackendCallback } from \"@itwin/certa/lib/utils/CallbackUtils\";\n\nconst getEnvCallbackName = \"getEnv\";\n\nexport function exposeBackendCallbacks() {\n registerBackendCallback(getEnvCallbackName, () => {\n return JSON.stringify(process.env);\n });\n}\n\nexport async function getProcessEnvFromBackend(): Promise<NodeJS.ProcessEnv> {\n return JSON.parse(await executeBackendCallback(getEnvCallbackName));\n}\n"]}
1
+ {"version":3,"file":"SideChannels.js","sourceRoot":"","sources":["../../src/common/SideChannels.ts"],"names":[],"mappings":";;;AAAA;;;+FAG+F;AAC/F,wEAAuG;AAEvG,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC,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;AACL,CAAC;AAJD,wDAIC;AAEM,KAAK,UAAU,wBAAwB;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,IAAA,sCAAsB,EAAC,kBAAkB,CAAC,CAAC,CAAC;AACtE,CAAC;AAFD,4DAEC","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 { executeBackendCallback, registerBackendCallback } from \"@itwin/certa/lib/utils/CallbackUtils\";\r\n\r\nconst getEnvCallbackName = \"getEnv\";\r\n\r\nexport function exposeBackendCallbacks() {\r\n registerBackendCallback(getEnvCallbackName, () => {\r\n return JSON.stringify(process.env);\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\n"]}