@mablhq/mabl-cli 1.22.1 → 1.23.5
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/browserLauncher/playwrightBrowserLauncher/playwrightDom.js +24 -10
- package/commands/tests/testsUtil.js +25 -64
- package/commands/tests/tests_cmds/run.js +6 -6
- package/commands/tests/tests_cmds/trainerUtil.js +12 -0
- package/execution/index.js +1 -1
- package/execution/index.js.LICENSE.txt +0 -27
- package/mablApi/index.js +1 -1
- package/mablscript/steps/SyntheticStep.js +2 -2
- package/mablscriptFind/index.js +1 -1
- package/package.json +1 -1
- package/resources/mablFind.js +1 -1
- package/commands/tests/executionUtil.js +0 -36
- package/commands/tests/tests_cmds/run-alpha.js +0 -129
- package/commands/tests/tests_cmds/run-legacy.js +0 -109
- package/commands/tests/tests_cmds/trainer.js +0 -5
- package/commands/tests/tests_cmds/trainer_cmds/install.js +0 -14
- package/commands/tests/tests_cmds/trainer_cmds/trainerUtil.js +0 -169
- package/commands/tests/tests_cmds/trainer_cmds/update.js +0 -27
- package/commands/tests/tests_cmds/trainer_cmds/version.js +0 -22
|
@@ -131,8 +131,10 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
131
131
|
async boundingBox() {
|
|
132
132
|
return (0, utils_1.mapIfNotNull)(await this.element.boundingBox(), (boundingBox) => boundingBox);
|
|
133
133
|
}
|
|
134
|
-
async
|
|
135
|
-
|
|
134
|
+
async maybeOverwriteScrollIntoViewDuringAction(action, options) {
|
|
135
|
+
if (options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView) {
|
|
136
|
+
await this.overwriteScrollIntoViewFunction();
|
|
137
|
+
}
|
|
136
138
|
try {
|
|
137
139
|
return await action();
|
|
138
140
|
}
|
|
@@ -140,11 +142,13 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
140
142
|
throw e;
|
|
141
143
|
}
|
|
142
144
|
finally {
|
|
143
|
-
|
|
145
|
+
if (options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView) {
|
|
146
|
+
await this.resetScrollIntoViewFunction();
|
|
147
|
+
}
|
|
144
148
|
}
|
|
145
149
|
}
|
|
146
150
|
click(options) {
|
|
147
|
-
return this.
|
|
151
|
+
return this.maybeOverwriteScrollIntoViewDuringAction(async () => {
|
|
148
152
|
var _a, _b, _c;
|
|
149
153
|
const trial = (_a = options === null || options === void 0 ? void 0 : options.trial) !== null && _a !== void 0 ? _a : false;
|
|
150
154
|
try {
|
|
@@ -162,10 +166,12 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
162
166
|
}
|
|
163
167
|
throw error;
|
|
164
168
|
}
|
|
169
|
+
}, {
|
|
170
|
+
minimizeScrollIntoView: options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView,
|
|
165
171
|
});
|
|
166
172
|
}
|
|
167
173
|
async doubleClick(options) {
|
|
168
|
-
return this.
|
|
174
|
+
return this.maybeOverwriteScrollIntoViewDuringAction(async () => {
|
|
169
175
|
var _a, _b;
|
|
170
176
|
try {
|
|
171
177
|
const trial = (_a = options === null || options === void 0 ? void 0 : options.trial) !== null && _a !== void 0 ? _a : false;
|
|
@@ -180,6 +186,8 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
180
186
|
(0, logUtils_1.logInternal)(`Action timed out due to navigation timeout. ${error.toString()}`);
|
|
181
187
|
}
|
|
182
188
|
}
|
|
189
|
+
}, {
|
|
190
|
+
minimizeScrollIntoView: options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView,
|
|
183
191
|
});
|
|
184
192
|
}
|
|
185
193
|
async clickablePoint() {
|
|
@@ -206,11 +214,13 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
206
214
|
scrollIntoViewIfNeeded() {
|
|
207
215
|
return this.element.scrollIntoViewIfNeeded();
|
|
208
216
|
}
|
|
209
|
-
async select(value) {
|
|
210
|
-
return this.
|
|
217
|
+
async select(value, options) {
|
|
218
|
+
return this.maybeOverwriteScrollIntoViewDuringAction(async () => this.element.selectOption(value), {
|
|
219
|
+
minimizeScrollIntoView: options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView,
|
|
220
|
+
});
|
|
211
221
|
}
|
|
212
222
|
async type(text, options) {
|
|
213
|
-
return this.
|
|
223
|
+
return this.maybeOverwriteScrollIntoViewDuringAction(async () => {
|
|
214
224
|
var _a;
|
|
215
225
|
const selectText = (_a = options === null || options === void 0 ? void 0 : options.selectText) !== null && _a !== void 0 ? _a : true;
|
|
216
226
|
if (selectText) {
|
|
@@ -220,10 +230,14 @@ class PlaywrightElementHandle extends PlaywrightJsHandle {
|
|
|
220
230
|
delay: options === null || options === void 0 ? void 0 : options.delay,
|
|
221
231
|
timeout: 0,
|
|
222
232
|
});
|
|
233
|
+
}, {
|
|
234
|
+
minimizeScrollIntoView: options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView,
|
|
223
235
|
});
|
|
224
236
|
}
|
|
225
|
-
press(key) {
|
|
226
|
-
return this.
|
|
237
|
+
press(key, options) {
|
|
238
|
+
return this.maybeOverwriteScrollIntoViewDuringAction(async () => this.element.press(key), {
|
|
239
|
+
minimizeScrollIntoView: options === null || options === void 0 ? void 0 : options.minimizeScrollIntoView,
|
|
240
|
+
});
|
|
227
241
|
}
|
|
228
242
|
getRemoteObjectId() {
|
|
229
243
|
var _a, _b, _c;
|
|
@@ -26,9 +26,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.toBasicHttpAuthenticationCredentials = exports.generateChromiumPreferencesFile = exports.logTestInfoIfPresent = exports.milliSecondsToSeconds = exports.calculateTotalTimeSeconds = exports.extractTestRunConfig = exports.pullDownTestRunConfig = exports.validateRunCommandWithLabels = exports.validateRunEditCommand = exports.downloadUploadFile = exports.sleep = exports.editTheTest = exports.runTheTest = exports.prepareTrainerForSplitPlayback = exports.createTrainingSession = exports.cleanUpInitialPages = exports.getExtensionBackgroundPageWithCliTool = exports.
|
|
29
|
+
exports.toBasicHttpAuthenticationCredentials = exports.generateChromiumPreferencesFile = exports.logTestInfoIfPresent = exports.milliSecondsToSeconds = exports.calculateTotalTimeSeconds = exports.extractTestRunConfig = exports.pullDownTestRunConfig = exports.validateRunCommandWithLabels = exports.validateRunEditCommand = exports.downloadUploadFile = exports.sleep = exports.editTheTest = exports.runTheTest = exports.prepareTrainerForSplitPlayback = exports.createTrainingSession = exports.cleanUpInitialPages = exports.getExtensionBackgroundPageWithCliTool = exports.createBrowserForExecutionEngine = exports.addExecutionEngineLaunchArgs = exports.createBrowser = exports.prepareChromePreferencesDirectory = exports.findChrome = exports.searchForChrome = exports.getFinalUrl = exports.getTempChromePrefDirectory = void 0;
|
|
30
30
|
const os = __importStar(require("os"));
|
|
31
|
-
const trainerUtil_1 = require("./tests_cmds/trainer_cmds/trainerUtil");
|
|
32
31
|
const fs = __importStar(require("fs-extra"));
|
|
33
32
|
const path = __importStar(require("path"));
|
|
34
33
|
const constants_1 = require("../constants");
|
|
@@ -47,6 +46,7 @@ const resourceUtil_1 = require("../../util/resourceUtil");
|
|
|
47
46
|
const mobileEmulationUtil_1 = require("./mobileEmulationUtil");
|
|
48
47
|
const browserLauncher_1 = require("../../browserLauncher/browserLauncher");
|
|
49
48
|
const stream_1 = require("stream");
|
|
49
|
+
const trainerUtil_1 = require("./tests_cmds/trainerUtil");
|
|
50
50
|
const chalk = require('chalk');
|
|
51
51
|
const chromeFinder = require('chrome-launcher/dist/chrome-finder');
|
|
52
52
|
const launchUtils = require('chrome-launcher/dist/utils');
|
|
@@ -105,38 +105,6 @@ async function findChrome() {
|
|
|
105
105
|
return chromePath;
|
|
106
106
|
}
|
|
107
107
|
exports.findChrome = findChrome;
|
|
108
|
-
async function createBrowserWithAuthedExtension(accessToken, browserWidth, browserHeight, tempBrowserPreferencesDirectory, options) {
|
|
109
|
-
const { credentials, disableIsolation, ignoreCertificateErrors, runnerType, loggerFunc, } = options;
|
|
110
|
-
const pathToExtension = await (0, trainerUtil_1.getMablTrainerExtensionPath)();
|
|
111
|
-
const chromePath = await findChrome();
|
|
112
|
-
if (!chromePath.length) {
|
|
113
|
-
messaging_1.mablEventEmitter.log(chalk.yellow('Could not find a local install of Chrome to use, please ensure you have it installed and try again'));
|
|
114
|
-
throw new Error('Chrome not found error');
|
|
115
|
-
}
|
|
116
|
-
messaging_1.mablEventEmitter.log(`Using Chrome at the following path: ${chromePath}`);
|
|
117
|
-
const launchArgs = [
|
|
118
|
-
`--disable-extensions-except=${pathToExtension}`,
|
|
119
|
-
`--load-extension=${pathToExtension}`,
|
|
120
|
-
`--window-size=${browserWidth},${browserHeight}`,
|
|
121
|
-
];
|
|
122
|
-
if (ignoreCertificateErrors) {
|
|
123
|
-
launchArgs.push('--ignore-certificate-errors');
|
|
124
|
-
}
|
|
125
|
-
if (disableIsolation) {
|
|
126
|
-
launchArgs.push('--disable-features=IsolateOrigins,site-per-process');
|
|
127
|
-
}
|
|
128
|
-
const maybeBrowser = await launchBrowserInstance(chromePath, launchArgs, tempBrowserPreferencesDirectory, false, credentials, {
|
|
129
|
-
runnerType,
|
|
130
|
-
loggerFunc,
|
|
131
|
-
});
|
|
132
|
-
if (!maybeBrowser) {
|
|
133
|
-
throw new Error('Unable to start Chrome session');
|
|
134
|
-
}
|
|
135
|
-
await setUpAuthTokenForExtension(maybeBrowser, accessToken);
|
|
136
|
-
maybeBrowser.on(browserLauncher_1.BrowserEvent.BrowserDestroyed, () => removeTempBrowserPreferencesDirectory(tempBrowserPreferencesDirectory));
|
|
137
|
-
return maybeBrowser;
|
|
138
|
-
}
|
|
139
|
-
exports.createBrowserWithAuthedExtension = createBrowserWithAuthedExtension;
|
|
140
108
|
async function launchBrowserInstance(chromePath, launchArgs, userDataDir, headless, credentials, options) {
|
|
141
109
|
var _a;
|
|
142
110
|
const { bypassContentSecurityPolicy, defaultDeviceDescriptor, disableFocusEmulation, extraHttpHeaders, ignoreDefaultArgs, runnerType, loggerFunc, userAgent, } = options || {};
|
|
@@ -312,15 +280,6 @@ async function createBrowserForExecutionEngine(browserWidth, browserHeight, head
|
|
|
312
280
|
return maybeBrowser;
|
|
313
281
|
}
|
|
314
282
|
exports.createBrowserForExecutionEngine = createBrowserForExecutionEngine;
|
|
315
|
-
async function setUpAuthTokenForExtension(browser, accessToken) {
|
|
316
|
-
const backgroundPage = await browser.getExtensionBackgroundPage((0, trainerUtil_1.getTrainerId)());
|
|
317
|
-
await backgroundPage.evaluate((token) => {
|
|
318
|
-
localStorage.setItem('authResult', JSON.stringify({ idToken: token }));
|
|
319
|
-
localStorage.setItem('trainerWorld', 'mablCLI');
|
|
320
|
-
}, accessToken);
|
|
321
|
-
return;
|
|
322
|
-
}
|
|
323
|
-
exports.setUpAuthTokenForExtension = setUpAuthTokenForExtension;
|
|
324
283
|
async function getExtensionBackgroundPageWithCliTool(browser) {
|
|
325
284
|
const backgroundPage = await browser.getExtensionBackgroundPage((0, trainerUtil_1.getTrainerId)());
|
|
326
285
|
if (backgroundPage) {
|
|
@@ -634,28 +593,29 @@ function validateRunCommandWithLabels(testId, suppliedLabelsInclude, suppliedLab
|
|
|
634
593
|
}
|
|
635
594
|
exports.validateRunCommandWithLabels = validateRunCommandWithLabels;
|
|
636
595
|
async function pullDownTestRunConfig(testRunId, apiClient) {
|
|
637
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
596
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
638
597
|
const journeyRun = await apiClient.getTestRun(testRunId);
|
|
639
598
|
const planRun = await apiClient.getPlanRun(journeyRun.parent_execution);
|
|
640
599
|
return {
|
|
641
|
-
|
|
600
|
+
basicAuthCredentialsId: ((_a = planRun === null || planRun === void 0 ? void 0 : planRun.run_policy) === null || _a === void 0 ? void 0 : _a.http_auth_credentials_required)
|
|
601
|
+
? (_b = planRun === null || planRun === void 0 ? void 0 : planRun.run_policy) === null || _b === void 0 ? void 0 : _b.http_auth_credentials_id
|
|
602
|
+
: undefined,
|
|
642
603
|
branchName: (_c = journeyRun.journey_parameters) === null || _c === void 0 ? void 0 : _c.source_control_tag,
|
|
643
604
|
credentialsId: (_d = planRun.run_policy) === null || _d === void 0 ? void 0 : _d.credentials_id,
|
|
605
|
+
dataTableVariables: (_e = journeyRun.journey_parameters) === null || _e === void 0 ? void 0 : _e.user_variables,
|
|
606
|
+
deviceEmulation: (_f = journeyRun.journey_parameters) === null || _f === void 0 ? void 0 : _f.device_emulation,
|
|
607
|
+
environmentId: (_h = (_g = journeyRun.journey_parameters) === null || _g === void 0 ? void 0 : _g.deployment) === null || _h === void 0 ? void 0 : _h.environment_id,
|
|
644
608
|
filterHttpRequests: false,
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
dataTableVariables: (_k = journeyRun.journey_parameters) === null || _k === void 0 ? void 0 : _k.user_variables,
|
|
651
|
-
deviceEmulation: (_l = journeyRun.journey_parameters) === null || _l === void 0 ? void 0 : _l.device_emulation,
|
|
652
|
-
importedVariables: (_m = journeyRun.journey_parameters) === null || _m === void 0 ? void 0 : _m.imported_variables,
|
|
653
|
-
pageLoadWait: (_o = journeyRun.journey_parameters) === null || _o === void 0 ? void 0 : _o.page_load_wait,
|
|
609
|
+
journeyUserDefinedVariables: (_k = (_j = journeyRun.journey) === null || _j === void 0 ? void 0 : _j.variables) === null || _k === void 0 ? void 0 : _k.inputs,
|
|
610
|
+
importedVariables: (_l = journeyRun.journey_parameters) === null || _l === void 0 ? void 0 : _l.imported_variables,
|
|
611
|
+
pageLoadWait: (_m = journeyRun.journey_parameters) === null || _m === void 0 ? void 0 : _m.page_load_wait,
|
|
612
|
+
testId: (_o = journeyRun.journey) === null || _o === void 0 ? void 0 : _o.invariant_id,
|
|
613
|
+
url: (_q = (_p = journeyRun.journey_parameters) === null || _p === void 0 ? void 0 : _p.deployment) === null || _q === void 0 ? void 0 : _q.uri,
|
|
654
614
|
};
|
|
655
615
|
}
|
|
656
616
|
exports.pullDownTestRunConfig = pullDownTestRunConfig;
|
|
657
617
|
async function extractTestRunConfig(executionMessage, apiClient) {
|
|
658
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
618
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
659
619
|
const journeyRun = (_a = executionMessage.journey_run) !== null && _a !== void 0 ? _a : (await apiClient.getTestRun(executionMessage.journey_run_id));
|
|
660
620
|
const planRun = executionMessage.plan_run;
|
|
661
621
|
const maybeRunnerType = ((_b = planRun === null || planRun === void 0 ? void 0 : planRun.run_policy) === null || _b === void 0 ? void 0 : _b.nodejs_runtime_variant)
|
|
@@ -663,17 +623,18 @@ async function extractTestRunConfig(executionMessage, apiClient) {
|
|
|
663
623
|
(_c = planRun === null || planRun === void 0 ? void 0 : planRun.run_policy) === null || _c === void 0 ? void 0 : _c.nodejs_runtime_variant
|
|
664
624
|
: undefined;
|
|
665
625
|
return {
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
626
|
+
branchName: (_d = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _d === void 0 ? void 0 : _d.source_control_tag,
|
|
627
|
+
credentialsId: (_e = planRun === null || planRun === void 0 ? void 0 : planRun.run_policy) === null || _e === void 0 ? void 0 : _e.credentials_id,
|
|
628
|
+
dataTableVariables: (_f = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _f === void 0 ? void 0 : _f.user_variables,
|
|
629
|
+
deviceEmulation: (_g = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _g === void 0 ? void 0 : _g.device_emulation,
|
|
630
|
+
environmentId: (_j = (_h = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _h === void 0 ? void 0 : _h.deployment) === null || _j === void 0 ? void 0 : _j.environment_id,
|
|
669
631
|
filterHttpRequests: true,
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
deviceEmulation: (_m = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _m === void 0 ? void 0 : _m.device_emulation,
|
|
674
|
-
importedVariables: (_o = journeyRun.journey_parameters) === null || _o === void 0 ? void 0 : _o.imported_variables,
|
|
675
|
-
pageLoadWait: (_p = journeyRun.journey_parameters) === null || _p === void 0 ? void 0 : _p.page_load_wait,
|
|
632
|
+
importedVariables: (_k = journeyRun.journey_parameters) === null || _k === void 0 ? void 0 : _k.imported_variables,
|
|
633
|
+
journeyUserDefinedVariables: (_m = (_l = journeyRun.journey) === null || _l === void 0 ? void 0 : _l.variables) === null || _m === void 0 ? void 0 : _m.inputs,
|
|
634
|
+
pageLoadWait: (_o = journeyRun.journey_parameters) === null || _o === void 0 ? void 0 : _o.page_load_wait,
|
|
676
635
|
runnerType: maybeRunnerType,
|
|
636
|
+
testId: (_p = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey) === null || _p === void 0 ? void 0 : _p.invariant_id,
|
|
637
|
+
url: (_r = (_q = journeyRun === null || journeyRun === void 0 ? void 0 : journeyRun.journey_parameters) === null || _q === void 0 ? void 0 : _q.deployment) === null || _r === void 0 ? void 0 : _r.uri,
|
|
677
638
|
};
|
|
678
639
|
}
|
|
679
640
|
exports.extractTestRunConfig = extractTestRunConfig;
|
|
@@ -186,27 +186,27 @@ async function run(parsed) {
|
|
|
186
186
|
});
|
|
187
187
|
const testRunnerConfig = {
|
|
188
188
|
_cliCreated: true,
|
|
189
|
-
branchName: parsed['mabl-branch'],
|
|
190
189
|
basicAuthCredentialsId: parsed[constants_1.CommandArgBasicAuthCredentials],
|
|
190
|
+
branchName: parsed['mabl-branch'],
|
|
191
191
|
credentialsId: parsed['credentials-id'],
|
|
192
192
|
disableIsolation: parsed[constants_1.CommandArgBrowserDisableIsolation],
|
|
193
|
+
enableExtensions: parsed[constants_1.CommandArgBrowserEnableExtensions],
|
|
193
194
|
enableLink: parsed[constants_1.CommandArgEnableLink],
|
|
194
195
|
environmentId: parsed[constants_1.CommandArgEnvironmentId],
|
|
196
|
+
extraHttpHeaders,
|
|
195
197
|
filterHttpRequests: false,
|
|
198
|
+
fromPlanId: parsed['from-plan-id'],
|
|
196
199
|
headless: parsed.headless,
|
|
197
200
|
height: parsed.height,
|
|
198
201
|
highlights: parsed.highlights,
|
|
199
202
|
ignoreCertificateErrors: parsed[constants_1.CommandArgBrowserIgnoreCertificateErrors],
|
|
200
203
|
interactionSpeed: parsed[constants_1.CommandArgTestInteractionSpeed],
|
|
201
|
-
enableExtensions: parsed[constants_1.CommandArgBrowserEnableExtensions],
|
|
202
|
-
extraHttpHeaders,
|
|
203
204
|
keepBrowserOpen: parsed['keep-browser-open'],
|
|
204
205
|
labelsExclude: parsed['exclude-labels'],
|
|
205
206
|
labelsInclude: parsed.labels,
|
|
206
|
-
fromPlanId: parsed['from-plan-id'],
|
|
207
|
-
testId: parsed.id,
|
|
208
|
-
testFile: parsed[constants_1.CommandArgTestFile],
|
|
209
207
|
runId: parsed['run-id'],
|
|
208
|
+
testFile: parsed[constants_1.CommandArgTestFile],
|
|
209
|
+
testId: parsed.id,
|
|
210
210
|
url: parsed.url,
|
|
211
211
|
userAgent: parsed[constants_1.CommandArgUserAgent],
|
|
212
212
|
width: parsed.width,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTrainerId = exports.LOCAL_TRAINER_ID = void 0;
|
|
4
|
+
const env_1 = require("../../../env/env");
|
|
5
|
+
exports.LOCAL_TRAINER_ID = 'jmeffipchlcmnkllcolcbmneknjckcpp';
|
|
6
|
+
function getTrainerId() {
|
|
7
|
+
if (env_1.LOCAL_TRAINER_PATH) {
|
|
8
|
+
return env_1.EXTENSION_ID;
|
|
9
|
+
}
|
|
10
|
+
return exports.LOCAL_TRAINER_ID;
|
|
11
|
+
}
|
|
12
|
+
exports.getTrainerId = getTrainerId;
|