@intuned/runtime 1.3.18-interface.7 → 1.3.18
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/.babelrc +27 -0
- package/.claude/settings.local.json +7 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +39 -0
- package/InterfaceTemplate/__utils.ts +63 -0
- package/InterfaceTemplate/index.playwright.ts +6 -0
- package/dist/commands/api/run.d.ts +6 -0
- package/dist/commands/api/run.js +119 -0
- package/dist/commands/auth-sessions/load.d.ts +2 -0
- package/dist/commands/auth-sessions/load.js +35 -0
- package/dist/commands/auth-sessions/run-check.d.ts +2 -0
- package/dist/commands/auth-sessions/run-check.js +74 -0
- package/dist/commands/auth-sessions/run-create.d.ts +2 -0
- package/dist/commands/auth-sessions/run-create.js +78 -0
- package/dist/commands/browser/save-state.d.ts +2 -0
- package/dist/commands/browser/save-state.js +17 -0
- package/dist/commands/browser/start-browser.d.ts +2 -0
- package/dist/commands/browser/start-browser.js +14 -0
- package/dist/commands/build.d.ts +1 -0
- package/dist/commands/build.js +83 -0
- package/dist/commands/common/browserUtils.d.ts +14 -0
- package/dist/commands/common/browserUtils.js +57 -0
- package/dist/commands/common/getFirstLineNumber.d.ts +9 -0
- package/dist/commands/common/getFirstLineNumber.js +101 -0
- package/dist/commands/common/getFirstLineNumber.test.js +227 -0
- package/dist/commands/common/projectExclusions.d.ts +2 -0
- package/dist/commands/common/projectExclusions.js +8 -0
- package/dist/commands/common/sendMessageToClient.d.ts +1 -0
- package/dist/commands/common/sendMessageToClient.js +10 -0
- package/dist/commands/common/tsNodeImport.d.ts +2 -0
- package/dist/commands/common/tsNodeImport.js +42 -0
- package/dist/commands/common/utils/fileUtils.d.ts +6 -0
- package/dist/commands/common/utils/fileUtils.js +32 -0
- package/dist/commands/common/utils/interfaceClient.d.ts +31 -0
- package/dist/commands/common/utils/interfaceClient.js +98 -0
- package/dist/commands/common/utils/settings.d.ts +2 -0
- package/dist/commands/common/utils/settings.js +31 -0
- package/dist/commands/common/utils/template.d.ts +2 -0
- package/dist/commands/common/utils/template.js +30 -0
- package/dist/commands/get-headless-user-agent.d.ts +1 -0
- package/dist/commands/get-headless-user-agent.js +18 -0
- package/dist/commands/interface/run.d.ts +1 -3
- package/dist/commands/interface/run.js +139 -2047
- package/dist/commands/intuned-cli/commands/attempt.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/attempt.command.js +8 -0
- package/dist/commands/intuned-cli/commands/attempt_api.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/attempt_api.command.js +30 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession.command.js +8 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession_check.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession_check.command.js +19 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession_create.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/attempt_authsession_create.command.js +24 -0
- package/dist/commands/intuned-cli/commands/authsession.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/authsession.command.js +8 -0
- package/dist/commands/intuned-cli/commands/authsession_record.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/authsession_record.command.js +32 -0
- package/dist/commands/intuned-cli/commands/authsession_scaffold.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/authsession_scaffold.command.js +16 -0
- package/dist/commands/intuned-cli/commands/build.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/build.command.js +12 -0
- package/dist/commands/intuned-cli/commands/command.d.ts +2 -0
- package/dist/commands/intuned-cli/commands/command.js +9 -0
- package/dist/commands/intuned-cli/commands/deploy.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/deploy.command.js +42 -0
- package/dist/commands/intuned-cli/commands/index.d.ts +18 -0
- package/dist/commands/intuned-cli/commands/index.js +203 -0
- package/dist/commands/intuned-cli/commands/provision.command.d.ts +13 -0
- package/dist/commands/intuned-cli/commands/provision.command.js +50 -0
- package/dist/commands/intuned-cli/commands/run.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/run.command.js +8 -0
- package/dist/commands/intuned-cli/commands/run_api.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/run_api.command.js +46 -0
- package/dist/commands/intuned-cli/commands/run_authsession.command.d.ts +35 -0
- package/dist/commands/intuned-cli/commands/run_authsession.command.js +17 -0
- package/dist/commands/intuned-cli/commands/run_authsession_create.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/run_authsession_create.command.js +35 -0
- package/dist/commands/intuned-cli/commands/run_authsession_update.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/run_authsession_update.command.js +35 -0
- package/dist/commands/intuned-cli/commands/run_authsession_validate.command.d.ts +1 -0
- package/dist/commands/intuned-cli/commands/run_authsession_validate.command.js +33 -0
- package/dist/commands/intuned-cli/commands/types.d.ts +39 -0
- package/dist/commands/intuned-cli/commands/types.js +33 -0
- package/dist/commands/intuned-cli/constants/index.d.ts +17 -0
- package/dist/commands/intuned-cli/constants/index.js +25 -0
- package/dist/commands/intuned-cli/controller/__test__/api.test.js +399 -0
- package/dist/commands/intuned-cli/controller/__test__/authSession.test.js +1061 -0
- package/dist/commands/intuned-cli/controller/api.d.ts +42 -0
- package/dist/commands/intuned-cli/controller/api.js +194 -0
- package/dist/commands/intuned-cli/controller/authSession.d.ts +209 -0
- package/dist/commands/intuned-cli/controller/authSession.js +425 -0
- package/dist/commands/intuned-cli/controller/build.d.ts +1 -0
- package/dist/commands/intuned-cli/controller/build.js +35 -0
- package/dist/commands/intuned-cli/controller/deploy.d.ts +5 -0
- package/dist/commands/intuned-cli/controller/deploy.js +317 -0
- package/dist/commands/intuned-cli/controller/index.d.ts +1 -0
- package/dist/commands/intuned-cli/controller/index.js +45 -0
- package/dist/commands/intuned-cli/controller/provision.d.ts +21 -0
- package/dist/commands/intuned-cli/controller/provision.js +299 -0
- package/dist/commands/intuned-cli/controller/scaffold.d.ts +1 -0
- package/dist/commands/intuned-cli/controller/scaffold.js +77 -0
- package/dist/commands/intuned-cli/helpers/__test__/browser.test.js +152 -0
- package/dist/commands/intuned-cli/helpers/__test__/tracing.test.js +41 -0
- package/dist/commands/intuned-cli/helpers/api.d.ts +3 -0
- package/dist/commands/intuned-cli/helpers/api.js +16 -0
- package/dist/commands/intuned-cli/helpers/auth.d.ts +46 -0
- package/dist/commands/intuned-cli/helpers/auth.js +147 -0
- package/dist/commands/intuned-cli/helpers/backend.d.ts +8 -0
- package/dist/commands/intuned-cli/helpers/backend.js +35 -0
- package/dist/commands/intuned-cli/helpers/browser.d.ts +14 -0
- package/dist/commands/intuned-cli/helpers/browser.js +93 -0
- package/dist/commands/intuned-cli/helpers/context.d.ts +3 -0
- package/dist/commands/intuned-cli/helpers/context.js +33 -0
- package/dist/commands/intuned-cli/helpers/errors.d.ts +16 -0
- package/dist/commands/intuned-cli/helpers/errors.js +44 -0
- package/dist/commands/intuned-cli/helpers/index.d.ts +12 -0
- package/dist/commands/intuned-cli/helpers/index.js +137 -0
- package/dist/commands/intuned-cli/helpers/intunedJson.d.ts +39 -0
- package/dist/commands/intuned-cli/helpers/intunedJson.js +20 -0
- package/dist/commands/intuned-cli/helpers/prompts.d.ts +3 -0
- package/dist/commands/intuned-cli/helpers/prompts.js +71 -0
- package/dist/commands/intuned-cli/helpers/proxy.d.ts +5 -0
- package/dist/commands/intuned-cli/helpers/proxy.js +23 -0
- package/dist/commands/intuned-cli/helpers/terminal.d.ts +5 -0
- package/dist/commands/intuned-cli/helpers/terminal.js +13 -0
- package/dist/commands/intuned-cli/helpers/timeout.d.ts +1 -0
- package/dist/commands/intuned-cli/helpers/timeout.js +23 -0
- package/dist/commands/intuned-cli/helpers/traces.d.ts +2 -0
- package/dist/commands/intuned-cli/helpers/traces.js +32 -0
- package/dist/commands/intuned-cli/helpers/validation.d.ts +2 -0
- package/dist/commands/intuned-cli/helpers/validation.js +14 -0
- package/dist/commands/intuned-cli/helpers/wrapper.d.ts +2 -0
- package/dist/commands/intuned-cli/helpers/wrapper.js +76 -0
- package/dist/commands/intuned-cli/index.d.ts +1 -0
- package/dist/commands/intuned-cli/index.js +16 -0
- package/dist/commands/intuned-cli/main.d.ts +1 -0
- package/dist/commands/intuned-cli/main.js +35 -0
- package/dist/commands/intuned-cli/types.d.ts +70 -0
- package/dist/commands/intuned-cli/types.js +22 -0
- package/dist/commands/ts-check.d.ts +2 -0
- package/dist/commands/ts-check.js +55 -0
- package/dist/common/Logger/Logger/index.d.ts +12 -0
- package/dist/common/Logger/Logger/index.js +60 -0
- package/dist/common/Logger/Logger/types.d.ts +8 -0
- package/dist/common/Logger/Logger/types.js +5 -0
- package/dist/common/Logger/index.d.ts +12 -0
- package/dist/common/Logger/index.js +60 -0
- package/dist/common/Logger/types.d.ts +8 -0
- package/dist/common/Logger/types.js +5 -0
- package/dist/common/asyncLocalStorage/index.d.ts +8 -9
- package/dist/common/asyncLocalStorage/index.js +9 -34
- package/dist/common/backendFunctions/getAuthSessionParameters.d.ts +1 -0
- package/dist/common/backendFunctions/getAuthSessionParameters.js +38 -0
- package/dist/common/binStartupScript.d.ts +1 -2
- package/dist/common/binStartupScript.js +10 -127
- package/dist/common/browserTabs.d.ts +72 -0
- package/dist/common/browserTabs.js +74 -0
- package/dist/common/cleanEnvironmentVariables.d.ts +1 -3
- package/dist/common/cleanEnvironmentVariables.js +7 -30
- package/dist/common/constants.d.ts +11 -13
- package/dist/common/constants.js +15 -58
- package/dist/common/contextStorageStateHelpers.d.ts +6 -8
- package/dist/common/contextStorageStateHelpers.js +22 -47
- package/dist/common/extension/extensionsHelpers.d.ts +11 -0
- package/dist/common/extension/extensionsHelpers.js +147 -0
- package/dist/common/extension/intunedExtensionServer.d.ts +24 -0
- package/dist/common/extension/intunedExtensionServer.js +178 -0
- package/dist/common/extension/types.d.ts +219 -0
- package/dist/common/extension/types.js +51 -0
- package/dist/common/formatZodError.d.ts +2 -0
- package/dist/{chunk-NDMVGENG.mjs → common/formatZodError.js} +9 -9
- package/dist/common/intunedJson.d.ts +229 -0
- package/dist/common/intunedJson.js +132 -0
- package/dist/common/jwtTokenManager.d.ts +4 -6
- package/dist/common/jwtTokenManager.js +40 -108
- package/dist/common/launchBrowser.d.ts +34 -0
- package/dist/common/launchBrowser.js +247 -0
- package/dist/common/playwrightContext.d.ts +29 -0
- package/dist/common/playwrightContext.js +148 -0
- package/dist/common/runApi/importUsingImportFunction.d.ts +7 -0
- package/dist/common/runApi/importUsingImportFunction.js +46 -0
- package/dist/common/runApi/index.d.ts +6 -9
- package/dist/common/runApi/index.js +73 -1782
- package/dist/common/settingsSchema.d.ts +6 -9
- package/dist/common/settingsSchema.js +18 -54
- package/dist/common/setupContextHook.d.ts +16 -0
- package/dist/common/setupContextHook.js +22 -0
- package/dist/common/telemetry.d.ts +3 -6
- package/dist/common/telemetry.js +8 -41
- package/dist/index.d.ts +4 -6
- package/dist/index.js +92 -784
- package/dist/runtime/RunError.d.ts +5 -0
- package/dist/runtime/RunError.js +19 -0
- package/dist/runtime/attemptStore.d.ts +2 -0
- package/dist/runtime/attemptStore.js +23 -0
- package/dist/runtime/captcha.d.ts +15 -0
- package/dist/runtime/captcha.js +191 -0
- package/dist/runtime/captcha.test.js +821 -0
- package/dist/runtime/downloadDirectory.d.ts +1 -0
- package/dist/runtime/downloadDirectory.js +19 -0
- package/dist/runtime/enums.d.js +5 -0
- package/dist/runtime/enums.d.ts +11 -0
- package/dist/runtime/enums.js +18 -0
- package/dist/runtime/executionHelpers.test.js +52 -0
- package/dist/runtime/export.d.js +5 -0
- package/dist/runtime/export.d.ts +284 -0
- package/dist/runtime/extendPayload.d.ts +2 -0
- package/dist/runtime/extendPayload.js +21 -0
- package/dist/runtime/extendTimeout.d.ts +1 -0
- package/dist/runtime/extendTimeout.js +23 -0
- package/dist/runtime/getAiGatewayConfig.d.ts +10 -0
- package/dist/runtime/getAiGatewayConfig.js +16 -0
- package/dist/runtime/getAuthSessionParameters.d.ts +1 -0
- package/dist/runtime/getAuthSessionParameters.js +20 -0
- package/dist/runtime/index.d.ts +10 -168
- package/dist/runtime/index.js +88 -779
- package/dist/runtime/persistentStore.d.ts +2 -0
- package/dist/runtime/persistentStore.js +37 -0
- package/dist/runtime/persistentStore.test.js +101 -0
- package/dist/runtime/runInfo.d.ts +2 -0
- package/dist/runtime/runInfo.js +21 -0
- package/dist/vendor/runtime-interface.d.ts +1 -0
- package/dist/vendor/runtime-interface.js +479 -0
- package/package.json +20 -68
- package/template.tsconfig.json +11 -0
- package/tsconfig.eslint.json +5 -0
- package/tsconfig.json +25 -0
- package/tsup.config.ts +12 -0
- package/typedoc.json +49 -0
- package/dist/chunk-6ZRJOUQS.mjs +0 -16
- package/dist/chunk-6ZRJOUQS.mjs.map +0 -1
- package/dist/chunk-7YL2JUTE.mjs +0 -146
- package/dist/chunk-7YL2JUTE.mjs.map +0 -1
- package/dist/chunk-B3T6RXPC.mjs +0 -794
- package/dist/chunk-B3T6RXPC.mjs.map +0 -1
- package/dist/chunk-FGV5T6SI.mjs +0 -27
- package/dist/chunk-FGV5T6SI.mjs.map +0 -1
- package/dist/chunk-G4PO5RIV.mjs +0 -85
- package/dist/chunk-G4PO5RIV.mjs.map +0 -1
- package/dist/chunk-LZOMFHX3.mjs +0 -38
- package/dist/chunk-LZOMFHX3.mjs.map +0 -1
- package/dist/chunk-NDMVGENG.mjs.map +0 -1
- package/dist/chunk-W4UX6G4X.mjs +0 -17
- package/dist/chunk-W4UX6G4X.mjs.map +0 -1
- package/dist/chunk-XC75QGFG.mjs +0 -1106
- package/dist/chunk-XC75QGFG.mjs.map +0 -1
- package/dist/chunk-XOAZ2MGA.mjs +0 -59
- package/dist/chunk-XOAZ2MGA.mjs.map +0 -1
- package/dist/commands/interface/run.d.mts +0 -3
- package/dist/commands/interface/run.js.map +0 -1
- package/dist/commands/interface/run.mjs +0 -255
- package/dist/commands/interface/run.mjs.map +0 -1
- package/dist/common/asyncLocalStorage/index.d.mts +0 -17
- package/dist/common/asyncLocalStorage/index.js.map +0 -1
- package/dist/common/asyncLocalStorage/index.mjs +0 -12
- package/dist/common/asyncLocalStorage/index.mjs.map +0 -1
- package/dist/common/binStartupScript.d.mts +0 -2
- package/dist/common/binStartupScript.js.map +0 -1
- package/dist/common/binStartupScript.mjs +0 -135
- package/dist/common/binStartupScript.mjs.map +0 -1
- package/dist/common/cleanEnvironmentVariables.d.mts +0 -3
- package/dist/common/cleanEnvironmentVariables.js.map +0 -1
- package/dist/common/cleanEnvironmentVariables.mjs +0 -8
- package/dist/common/cleanEnvironmentVariables.mjs.map +0 -1
- package/dist/common/constants.d.mts +0 -13
- package/dist/common/constants.js.map +0 -1
- package/dist/common/constants.mjs +0 -28
- package/dist/common/constants.mjs.map +0 -1
- package/dist/common/contextStorageStateHelpers.d.mts +0 -24
- package/dist/common/contextStorageStateHelpers.js.map +0 -1
- package/dist/common/contextStorageStateHelpers.mjs +0 -10
- package/dist/common/contextStorageStateHelpers.mjs.map +0 -1
- package/dist/common/jwtTokenManager.d.mts +0 -19
- package/dist/common/jwtTokenManager.js.map +0 -1
- package/dist/common/jwtTokenManager.mjs +0 -11
- package/dist/common/jwtTokenManager.mjs.map +0 -1
- package/dist/common/runApi/index.d.mts +0 -11
- package/dist/common/runApi/index.js.map +0 -1
- package/dist/common/runApi/index.mjs +0 -18
- package/dist/common/runApi/index.mjs.map +0 -1
- package/dist/common/settingsSchema.d.mts +0 -540
- package/dist/common/settingsSchema.js.map +0 -1
- package/dist/common/settingsSchema.mjs +0 -10
- package/dist/common/settingsSchema.mjs.map +0 -1
- package/dist/common/telemetry.d.mts +0 -6
- package/dist/common/telemetry.js.map +0 -1
- package/dist/common/telemetry.mjs +0 -31
- package/dist/common/telemetry.mjs.map +0 -1
- package/dist/export.d-BAUMB-lG.d.mts +0 -140
- package/dist/export.d-BAUMB-lG.d.ts +0 -140
- package/dist/index.d.mts +0 -6
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -47
- package/dist/index.mjs.map +0 -1
- package/dist/runtime/index.d.mts +0 -168
- package/dist/runtime/index.js.map +0 -1
- package/dist/runtime/index.mjs +0 -42
- package/dist/runtime/index.mjs.map +0 -1
- /package/dist/common/assets/{assets/browser_scripts.js → browser_scripts.js} +0 -0
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
require_dist,
|
|
3
|
-
runApi
|
|
4
|
-
} from "../../chunk-XC75QGFG.mjs";
|
|
5
|
-
import "../../chunk-B3T6RXPC.mjs";
|
|
6
|
-
import {
|
|
7
|
-
getExecutionContext,
|
|
8
|
-
runWithContext
|
|
9
|
-
} from "../../chunk-W4UX6G4X.mjs";
|
|
10
|
-
import {
|
|
11
|
-
formatZodError
|
|
12
|
-
} from "../../chunk-NDMVGENG.mjs";
|
|
13
|
-
import "../../chunk-6ZRJOUQS.mjs";
|
|
14
|
-
import "../../chunk-G4PO5RIV.mjs";
|
|
15
|
-
import {
|
|
16
|
-
backendFunctionsTokenManager,
|
|
17
|
-
callBackendFunctionWithToken
|
|
18
|
-
} from "../../chunk-7YL2JUTE.mjs";
|
|
19
|
-
import "../../chunk-FGV5T6SI.mjs";
|
|
20
|
-
import "../../chunk-XOAZ2MGA.mjs";
|
|
21
|
-
import {
|
|
22
|
-
__require,
|
|
23
|
-
__toESM
|
|
24
|
-
} from "../../chunk-LZOMFHX3.mjs";
|
|
25
|
-
|
|
26
|
-
// src/commands/interface/run.ts
|
|
27
|
-
import { program } from "commander";
|
|
28
|
-
import dotenv from "dotenv";
|
|
29
|
-
import { setTimeout } from "timers/promises";
|
|
30
|
-
import { err, ok } from "neverthrow";
|
|
31
|
-
|
|
32
|
-
// src/common/backendFunctions/getAuthSessionParameters.ts
|
|
33
|
-
import isNil from "lodash/isNil";
|
|
34
|
-
import { z } from "zod";
|
|
35
|
-
var authSessionParametersResponseSchema = z.object({
|
|
36
|
-
parameters: z.any().refine((v) => v !== void 0)
|
|
37
|
-
});
|
|
38
|
-
async function getAuthSessionParameters() {
|
|
39
|
-
const context = getExecutionContext();
|
|
40
|
-
if (!context) {
|
|
41
|
-
throw new Error(
|
|
42
|
-
"getAuthSessionParameters failed due to an internal error (context was not found)."
|
|
43
|
-
);
|
|
44
|
-
}
|
|
45
|
-
const authSessionId = context.authSessionId;
|
|
46
|
-
if (isNil(authSessionId)) {
|
|
47
|
-
throw new Error("AuthSessions are not enabled");
|
|
48
|
-
}
|
|
49
|
-
const response = await callBackendFunctionWithToken(
|
|
50
|
-
`auth-session/${authSessionId}/parameters`,
|
|
51
|
-
{
|
|
52
|
-
method: "GET"
|
|
53
|
-
}
|
|
54
|
-
);
|
|
55
|
-
const body = await response.text();
|
|
56
|
-
if (!response.ok) {
|
|
57
|
-
throw new Error(
|
|
58
|
-
`getAuthSessionParameters failed with status ${response.status}: ${body}`
|
|
59
|
-
);
|
|
60
|
-
}
|
|
61
|
-
let json;
|
|
62
|
-
try {
|
|
63
|
-
json = JSON.parse(body);
|
|
64
|
-
} catch (e) {
|
|
65
|
-
throw new Error(`Expected JSON response, but got ${body}`);
|
|
66
|
-
}
|
|
67
|
-
return authSessionParametersResponseSchema.parse(json).parameters;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// src/commands/interface/run.ts
|
|
71
|
-
var import_runtime_interface = __toESM(require_dist());
|
|
72
|
-
dotenv.config({
|
|
73
|
-
path: `.env`
|
|
74
|
-
});
|
|
75
|
-
function runAutomationCLI(importFunction) {
|
|
76
|
-
program.description("run user automation and communicate using unix socket").argument(
|
|
77
|
-
"<input>",
|
|
78
|
-
"In unix socket mode: path to the unix socket. In jsonl mode: path to the jsonl file. In tcp socket mode: host:port"
|
|
79
|
-
).option("--mode [mode]", "Communication mode: unix, jsonl, or tcp").action(
|
|
80
|
-
async (input, {
|
|
81
|
-
mode = "unix"
|
|
82
|
-
}) => {
|
|
83
|
-
let context;
|
|
84
|
-
const throttleTime = 60 * 1e3;
|
|
85
|
-
let timeoutTimestamp = Date.now();
|
|
86
|
-
const client = createClient(mode, input);
|
|
87
|
-
const abortController = new AbortController();
|
|
88
|
-
const interruptSignalHandler = async () => {
|
|
89
|
-
abortController.abort();
|
|
90
|
-
await setTimeout(6e4);
|
|
91
|
-
await client.close();
|
|
92
|
-
process.exit(1);
|
|
93
|
-
};
|
|
94
|
-
process.on("SIGINT", interruptSignalHandler);
|
|
95
|
-
process.on("SIGTERM", interruptSignalHandler);
|
|
96
|
-
const messagesGenerator = client.receiveJSON();
|
|
97
|
-
async function receiveMessages() {
|
|
98
|
-
const data = await messagesGenerator.next();
|
|
99
|
-
if (data.done) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
const inputParseResult = import_runtime_interface.runApiInputSchema.safeParse(data.value);
|
|
103
|
-
if (!inputParseResult.success) {
|
|
104
|
-
console.error(
|
|
105
|
-
"Validation error:",
|
|
106
|
-
formatZodError(inputParseResult.error)
|
|
107
|
-
);
|
|
108
|
-
return {
|
|
109
|
-
type: "error",
|
|
110
|
-
error: new import_runtime_interface.InternalInvalidInputError(
|
|
111
|
-
"Invalid input",
|
|
112
|
-
formatZodError(inputParseResult.error)
|
|
113
|
-
)
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
const input2 = inputParseResult.data;
|
|
117
|
-
return input2;
|
|
118
|
-
}
|
|
119
|
-
let resultPromise = null;
|
|
120
|
-
async function handleMessage(message) {
|
|
121
|
-
if (message.type === "abort") {
|
|
122
|
-
abortController.abort();
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (message.type === "tokenUpdate") {
|
|
126
|
-
backendFunctionsTokenManager.token = message.parameters.functionsToken;
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
if (message.type === "start") {
|
|
130
|
-
context = {
|
|
131
|
-
extendedPayloads: [],
|
|
132
|
-
runEnvironment: message.parameters.runOptions.environment === "standalone" ? "DEPLOYED" /* DEPLOYED */ : "IDE" /* IDE */,
|
|
133
|
-
timeoutInfo: {
|
|
134
|
-
extendTimeoutCallback: async () => {
|
|
135
|
-
if (Date.now() - timeoutTimestamp < throttleTime) return;
|
|
136
|
-
timeoutTimestamp = Date.now();
|
|
137
|
-
client.sendJSON({ type: "extend" });
|
|
138
|
-
}
|
|
139
|
-
},
|
|
140
|
-
getAuthSessionParameters,
|
|
141
|
-
...message.parameters.context ?? {},
|
|
142
|
-
proxy: getProxyUrlFromRunOptions(message.parameters.runOptions)
|
|
143
|
-
};
|
|
144
|
-
backendFunctionsTokenManager.token = message.parameters.functionsToken;
|
|
145
|
-
resultPromise = runWithContext(context, async () => {
|
|
146
|
-
return await runApi({
|
|
147
|
-
...message.parameters,
|
|
148
|
-
abortSignal: abortController.signal,
|
|
149
|
-
importFunction: importFunction ?? _defaultImport
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
let receiveMessagesPromise = receiveMessages();
|
|
156
|
-
while (true) {
|
|
157
|
-
const messageOrResult = await Promise.race([
|
|
158
|
-
receiveMessagesPromise.then((message) => ({
|
|
159
|
-
type: "message",
|
|
160
|
-
message
|
|
161
|
-
})),
|
|
162
|
-
...resultPromise ? [
|
|
163
|
-
resultPromise.then((result2) => ({
|
|
164
|
-
type: "result",
|
|
165
|
-
result: result2
|
|
166
|
-
}))
|
|
167
|
-
] : []
|
|
168
|
-
]);
|
|
169
|
-
if (messageOrResult.type === "message") {
|
|
170
|
-
const { message } = messageOrResult;
|
|
171
|
-
if (message === void 0) {
|
|
172
|
-
break;
|
|
173
|
-
}
|
|
174
|
-
if (message.type === "error") {
|
|
175
|
-
client.sendJSON({
|
|
176
|
-
type: "done",
|
|
177
|
-
result: message.error.json,
|
|
178
|
-
success: false
|
|
179
|
-
});
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
if (message.type === "ping") {
|
|
183
|
-
client.sendJSON({
|
|
184
|
-
type: "pong"
|
|
185
|
-
});
|
|
186
|
-
break;
|
|
187
|
-
}
|
|
188
|
-
await handleMessage(message);
|
|
189
|
-
receiveMessagesPromise = receiveMessages();
|
|
190
|
-
continue;
|
|
191
|
-
}
|
|
192
|
-
const { result } = messageOrResult;
|
|
193
|
-
const success = result.isOk();
|
|
194
|
-
const resultToSend = success ? result.value : result.error.json;
|
|
195
|
-
client.sendJSON({
|
|
196
|
-
type: "done",
|
|
197
|
-
result: resultToSend,
|
|
198
|
-
success
|
|
199
|
-
});
|
|
200
|
-
break;
|
|
201
|
-
}
|
|
202
|
-
if (!client.closed) {
|
|
203
|
-
await client.close();
|
|
204
|
-
}
|
|
205
|
-
process.exit(0);
|
|
206
|
-
}
|
|
207
|
-
);
|
|
208
|
-
program.parse(process.argv);
|
|
209
|
-
}
|
|
210
|
-
function getProxyUrlFromRunOptions(runOptions) {
|
|
211
|
-
if (runOptions?.environment !== "standalone") return void 0;
|
|
212
|
-
const proxy = runOptions.proxy;
|
|
213
|
-
if (!proxy) return void 0;
|
|
214
|
-
const url = new URL(proxy.server);
|
|
215
|
-
url.username = proxy.username;
|
|
216
|
-
url.password = proxy.password;
|
|
217
|
-
return url.toString();
|
|
218
|
-
}
|
|
219
|
-
var _defaultImport = async (path) => {
|
|
220
|
-
try {
|
|
221
|
-
const imported = await import(`${process.cwd()}/${path}`);
|
|
222
|
-
return ok(imported);
|
|
223
|
-
} catch (e) {
|
|
224
|
-
if ("code" in e && e.code === "MODULE_NOT_FOUND" || e.code === "ERR_MODULE_NOT_FOUND") {
|
|
225
|
-
return err({
|
|
226
|
-
type: "not_found"
|
|
227
|
-
});
|
|
228
|
-
}
|
|
229
|
-
return err({
|
|
230
|
-
type: "other",
|
|
231
|
-
error: e
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
function createClient(mode, input) {
|
|
236
|
-
if (mode === "jsonl") {
|
|
237
|
-
return new import_runtime_interface.JSONLFileClient(input);
|
|
238
|
-
}
|
|
239
|
-
if (mode === "tcp") {
|
|
240
|
-
const [host, portString] = input.split(":");
|
|
241
|
-
const port = Number(portString);
|
|
242
|
-
if (!host || isNaN(port)) {
|
|
243
|
-
throw new Error("Invalid tcp input, expected format host:port");
|
|
244
|
-
}
|
|
245
|
-
return new import_runtime_interface.TCPSocketClient(host, port);
|
|
246
|
-
}
|
|
247
|
-
return new import_runtime_interface.UnixSocketClient(input);
|
|
248
|
-
}
|
|
249
|
-
if (__require.main === module) {
|
|
250
|
-
runAutomationCLI();
|
|
251
|
-
}
|
|
252
|
-
export {
|
|
253
|
-
runAutomationCLI
|
|
254
|
-
};
|
|
255
|
-
//# sourceMappingURL=run.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/interface/run.ts","../../../src/common/backendFunctions/getAuthSessionParameters.ts"],"sourcesContent":["import { program } from \"commander\";\nimport dotenv from \"dotenv\";\nimport {\n runWithContext,\n InternalRunInfo,\n} from \"../../common/asyncLocalStorage\";\nimport { runApi } from \"../../common/runApi\";\nimport { RunEnvironment } from \"../../runtime/enums\";\nimport { setTimeout } from \"timers/promises\";\nimport { backendFunctionsTokenManager } from \"../../common/jwtTokenManager\";\nimport { formatZodError } from \"../../common/formatZodError\";\nimport { err, ok } from \"neverthrow\";\nimport { getAuthSessionParameters } from \"../../common/backendFunctions/getAuthSessionParameters\";\nimport {\n RunApiParameters,\n InternalInvalidInputError,\n RunApiInputMessage,\n runApiInputSchema,\n JSONLFileClient,\n TCPSocketClient,\n UnixSocketClient,\n ImportFunction,\n} from \"@intuned/runtime-interface\";\n\ndotenv.config({\n path: `.env`,\n});\n\nexport function runAutomationCLI<ResultType = any>(\n importFunction?: (path: string) => Promise<any>\n) {\n program\n .description(\"run user automation and communicate using unix socket\")\n .argument(\n \"<input>\",\n \"In unix socket mode: path to the unix socket. In jsonl mode: path to the jsonl file. In tcp socket mode: host:port\"\n )\n .option(\"--mode [mode]\", \"Communication mode: unix, jsonl, or tcp\")\n .action(\n async (\n input: string,\n {\n mode = \"unix\",\n }: {\n mode: \"unix\" | \"jsonl\" | \"tcp\";\n }\n ) => {\n let context: InternalRunInfo;\n const throttleTime = 60 * 1000; // 1 minute\n let timeoutTimestamp = Date.now();\n\n const client = createClient(mode, input);\n\n const abortController = new AbortController();\n\n const interruptSignalHandler = async () => {\n abortController.abort();\n // wait for the script to finish gracefully\n await setTimeout(60_000);\n await client.close();\n process.exit(1);\n };\n\n process.on(\"SIGINT\", interruptSignalHandler);\n process.on(\"SIGTERM\", interruptSignalHandler);\n\n const messagesGenerator = client.receiveJSON();\n\n async function receiveMessages() {\n const data = await messagesGenerator.next();\n if (data.done) {\n return;\n }\n const inputParseResult = runApiInputSchema.safeParse(data.value);\n if (!inputParseResult.success) {\n console.error(\n \"Validation error:\",\n formatZodError(inputParseResult.error)\n );\n return {\n type: \"error\" as const,\n error: new InternalInvalidInputError(\n \"Invalid input\",\n formatZodError(inputParseResult.error)\n ),\n };\n }\n const input = inputParseResult.data;\n return input;\n }\n\n let resultPromise: ReturnType<typeof runApi<ResultType>> | null =\n null as any;\n\n async function handleMessage(message: RunApiInputMessage) {\n if (message.type === \"abort\") {\n abortController.abort();\n return;\n }\n if (message.type === \"tokenUpdate\") {\n backendFunctionsTokenManager.token =\n message.parameters.functionsToken;\n return;\n }\n if (message.type === \"start\") {\n context = {\n extendedPayloads: [],\n runEnvironment:\n message.parameters.runOptions.environment === \"standalone\"\n ? RunEnvironment.DEPLOYED\n : RunEnvironment.IDE,\n timeoutInfo: {\n extendTimeoutCallback: async () => {\n if (Date.now() - timeoutTimestamp < throttleTime) return;\n timeoutTimestamp = Date.now();\n client.sendJSON({ type: \"extend\" });\n },\n },\n getAuthSessionParameters,\n\n ...(message.parameters.context ?? {}),\n proxy: getProxyUrlFromRunOptions(message.parameters.runOptions),\n };\n backendFunctionsTokenManager.token =\n message.parameters.functionsToken;\n resultPromise = runWithContext(context, async () => {\n return await runApi<ResultType>({\n ...message.parameters,\n abortSignal: abortController.signal,\n importFunction: importFunction ?? _defaultImport,\n });\n });\n return;\n }\n }\n\n let receiveMessagesPromise = receiveMessages();\n\n while (true as boolean) {\n const messageOrResult = await Promise.race([\n receiveMessagesPromise.then((message) => ({\n type: \"message\" as const,\n message,\n })),\n ...(resultPromise\n ? [\n resultPromise.then((result) => ({\n type: \"result\" as const,\n result,\n })),\n ]\n : []),\n ]);\n if (messageOrResult.type === \"message\") {\n const { message } = messageOrResult;\n if (message === undefined) {\n break;\n }\n if (message.type === \"error\") {\n client.sendJSON({\n type: \"done\",\n result: message.error.json,\n success: false,\n });\n break;\n }\n if (message.type === \"ping\") {\n client.sendJSON({\n type: \"pong\",\n });\n break;\n }\n await handleMessage(message);\n receiveMessagesPromise = receiveMessages();\n continue;\n }\n const { result } = messageOrResult;\n const success = result.isOk();\n const resultToSend = success ? result.value : result.error.json;\n client.sendJSON({\n type: \"done\",\n result: resultToSend,\n success,\n });\n break;\n }\n\n if (!client.closed) {\n await client.close();\n }\n\n process.exit(0);\n }\n );\n\n program.parse(process.argv);\n}\n\nfunction getProxyUrlFromRunOptions(runOptions: RunApiParameters[\"runOptions\"]) {\n if (runOptions?.environment !== \"standalone\") return undefined;\n const proxy = runOptions.proxy;\n if (!proxy) return undefined;\n const url = new URL(proxy.server);\n url.username = proxy.username;\n url.password = proxy.password;\n return url.toString();\n}\n\n// this is only for debugging purposes\nconst _defaultImport: ImportFunction = async (path) => {\n try {\n const imported = await import(`${process.cwd()}/${path}`);\n return ok(imported);\n } catch (e: any) {\n if (\n (\"code\" in e && e.code === \"MODULE_NOT_FOUND\") ||\n e.code === \"ERR_MODULE_NOT_FOUND\"\n ) {\n return err({\n type: \"not_found\",\n });\n }\n return err({\n type: \"other\",\n error: e,\n });\n }\n};\n\nfunction createClient(mode: \"unix\" | \"jsonl\" | \"tcp\", input: string) {\n if (mode === \"jsonl\") {\n return new JSONLFileClient(input);\n }\n if (mode === \"tcp\") {\n const [host, portString] = input.split(\":\");\n const port = Number(portString);\n if (!host || isNaN(port)) {\n throw new Error(\"Invalid tcp input, expected format host:port\");\n }\n return new TCPSocketClient(host, port);\n }\n return new UnixSocketClient(input);\n}\n\nif (require.main === module) {\n runAutomationCLI();\n}\n","import isNil from \"lodash/isNil\";\nimport { getExecutionContext } from \"../asyncLocalStorage\";\nimport { z } from \"zod\";\nimport { callBackendFunctionWithToken } from \"../jwtTokenManager\";\n\nconst authSessionParametersResponseSchema = z.object({\n parameters: z.any().refine((v) => v !== undefined),\n});\n\nexport async function getAuthSessionParameters() {\n const context = getExecutionContext();\n\n if (!context) {\n throw new Error(\n \"getAuthSessionParameters failed due to an internal error (context was not found).\"\n );\n }\n\n const authSessionId = context.authSessionId;\n\n if (isNil(authSessionId)) {\n throw new Error(\"AuthSessions are not enabled\");\n }\n\n const response = await callBackendFunctionWithToken(\n `auth-session/${authSessionId}/parameters`,\n {\n method: \"GET\",\n }\n );\n\n const body = await response.text();\n if (!response.ok) {\n throw new Error(\n `getAuthSessionParameters failed with status ${response.status}: ${body}`\n );\n }\n\n let json: unknown;\n try {\n json = JSON.parse(body);\n } catch (e) {\n throw new Error(`Expected JSON response, but got ${body}`);\n }\n\n return authSessionParametersResponseSchema.parse(json).parameters as any;\n}\n"],"mappings":"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","names":["input","result"]}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
2
|
-
import { R as RunInfo, P as Payload } from '../../export.d-BAUMB-lG.mjs';
|
|
3
|
-
|
|
4
|
-
declare const asyncLocalStorage: AsyncLocalStorage<InternalRunInfo>;
|
|
5
|
-
declare function runWithContext<R, TArgs extends any[]>(contextData: InternalRunInfo, callback: (...args: TArgs) => R, ...args: TArgs): R;
|
|
6
|
-
interface TimeoutInfo {
|
|
7
|
-
extendTimeoutCallback?: () => Promise<void>;
|
|
8
|
-
}
|
|
9
|
-
interface InternalRunInfo extends RunInfo {
|
|
10
|
-
extendedPayloads: Payload[];
|
|
11
|
-
timeoutInfo?: TimeoutInfo;
|
|
12
|
-
store?: Record<string, any>;
|
|
13
|
-
getAuthSessionParameters?: () => Promise<any>;
|
|
14
|
-
}
|
|
15
|
-
declare function getExecutionContext(): InternalRunInfo | undefined;
|
|
16
|
-
|
|
17
|
-
export { type InternalRunInfo, asyncLocalStorage, getExecutionContext, runWithContext };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/common/asyncLocalStorage/index.ts"],"sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Payload, RunInfo } from \"../../runtime/export\";\n\nexport const asyncLocalStorage = new AsyncLocalStorage<InternalRunInfo>();\n\nexport function runWithContext<R, TArgs extends any[]>(\n contextData: InternalRunInfo,\n callback: (...args: TArgs) => R,\n ...args: TArgs\n): R {\n return asyncLocalStorage.run(contextData, callback, ...args);\n}\n\ninterface TimeoutInfo {\n extendTimeoutCallback?: () => Promise<void>;\n}\n\nexport interface InternalRunInfo extends RunInfo {\n extendedPayloads: Payload[];\n timeoutInfo?: TimeoutInfo;\n store?: Record<string, any>;\n getAuthSessionParameters?: () => Promise<any>;\n}\n\nexport function getExecutionContext() {\n const contextData = asyncLocalStorage.getStore();\n\n return contextData;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAAkC;AAG3B,IAAM,oBAAoB,IAAI,0CAAmC;AAEjE,SAAS,eACd,aACA,aACG,MACA;AACH,SAAO,kBAAkB,IAAI,aAAa,UAAU,GAAG,IAAI;AAC7D;AAaO,SAAS,sBAAsB;AACpC,QAAM,cAAc,kBAAkB,SAAS;AAE/C,SAAO;AACT;","names":[]}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
asyncLocalStorage,
|
|
3
|
-
getExecutionContext,
|
|
4
|
-
runWithContext
|
|
5
|
-
} from "../../chunk-W4UX6G4X.mjs";
|
|
6
|
-
import "../../chunk-LZOMFHX3.mjs";
|
|
7
|
-
export {
|
|
8
|
-
asyncLocalStorage,
|
|
9
|
-
getExecutionContext,
|
|
10
|
-
runWithContext
|
|
11
|
-
};
|
|
12
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/binStartupScript.ts","../../src/common/intunedJson.ts"],"sourcesContent":["import dotenv from \"dotenv\";\nimport * as path from \"path\";\nimport { loadIntunedJsonSync } from \"./intunedJson\";\n\ndotenv.config({\n path: `.env`,\n});\n\n// Synchronously check if stealth mode is enabled\nfunction isStealthModeEnabled() {\n try {\n const settingsResult = loadIntunedJsonSync();\n if (settingsResult.isErr()) {\n console.error(`Warning: Failed to load Intuned settings: ${settingsResult.error}\nStealth mode will not be enabled.`);\n return false;\n }\n return settingsResult.value.stealthMode?.enabled === true;\n } catch (error) {\n console.error(\"Error reading Intuned.json:\", error.message);\n return false;\n }\n}\ntry {\n if (isStealthModeEnabled()) {\n // Append current directory's node_modules to NODE_PATH\n const currentNodeModules = path.resolve(process.cwd(), \"node_modules\");\n process.env.NODE_PATH = process.env.NODE_PATH\n ? `${process.env.NODE_PATH}:${currentNodeModules}`\n : currentNodeModules;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require(\"module\").Module._initPaths();\n if (process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH) {\n require(process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH);\n }\n }\n} catch (e) {\n console.error(\"Failed to apply stealth mode\");\n}\n","import path from \"path\";\nimport * as fs from \"fs-extra\";\nimport { z } from \"zod\";\nimport * as JSONC from \"jsonc-parser\";\nimport * as YAML from \"yaml\";\nimport * as TOML from \"smol-toml\";\nimport { type Err, type Ok, err, ok } from \"neverthrow\";\nimport { formatZodError } from \"./formatZodError\";\n\n// ! do not import playwright here. this file is used for enabling stealth mode so it cannot import playwright\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst playwright = undefined;\n\nexport const intunedJsonSchema = z\n .object({\n projectName: z.string().optional(),\n workspaceId: z.string().optional(),\n metadata: z\n .object({\n defaultJobInput: z.record(z.any()).optional().catch(undefined),\n defaultRunPlaygroundInput: z\n .record(z.any())\n .optional()\n .catch(undefined),\n testAuthSessionInput: z.record(z.any()).optional().catch(undefined),\n })\n .optional()\n .catch(undefined),\n stealthMode: z\n .object({\n enabled: z.boolean(),\n })\n .optional()\n .catch(undefined),\n })\n .passthrough()\n .and(\n z.union([\n z.object({\n authSessions: z.object({ enabled: z.literal(false) }),\n apiAccess: z.object({\n enabled: z.literal(false),\n }),\n }),\n z.object({\n authSessions: z.union([\n z.object({ enabled: z.literal(false) }),\n z.object({\n enabled: z.literal(true),\n type: z.enum([\"MANUAL\", \"API\"]),\n startUrl: z.string().optional(),\n finishUrl: z.string().optional(),\n }),\n ]),\n apiAccess: z.object({\n enabled: z.literal(true),\n }),\n }),\n ])\n );\n\nexport type IntunedJson = z.infer<typeof intunedJsonSchema>;\n\nexport const intunedSettingsFileNames = [\n \"Intuned.json\",\n \"Intuned.jsonc\",\n \"Intuned.yaml\",\n \"Intuned.yml\",\n \"Intuned.toml\",\n] as const;\n\n// ! make sure to update sync implementation below when changing this\nexport async function loadIntunedJson() {\n const settingsFileResult = await getIntunedSettingsFile();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n const settingsFile = settingsFileResult.value;\n const intunedJsonContent = await fs.readFile(settingsFile.path, \"utf-8\");\n let intunedJson: any;\n try {\n intunedJson = settingsFile.parse(intunedJsonContent);\n } catch (e) {\n return err(`Failed to parse ${settingsFile.name}: ${(e as Error).message}`);\n }\n const parseResult = intunedJsonSchema.safeParse(intunedJson);\n if (!parseResult.success) {\n return err(\n `${settingsFile.name} is not valid:\\n${formatZodError(\n parseResult.error\n )}\\nPlease fix the errors and try again.`\n );\n }\n return ok(parseResult.data);\n}\n\nconst intunedSettingsParsers: Record<\n typeof intunedSettingsFileNames[number],\n (content: string) => any\n> = {\n \"Intuned.json\": JSON.parse,\n \"Intuned.jsonc\": JSONC.parse,\n \"Intuned.yaml\": YAML.parse,\n \"Intuned.yml\": YAML.parse,\n \"Intuned.toml\": TOML.parse,\n};\n\nexport async function getIntunedSettingsFile(): Promise<\n | Ok<\n {\n name: typeof intunedSettingsFileNames[number];\n path: string;\n parse: (content: string) => any;\n },\n never\n >\n | Err<never, string>\n> {\n for (const fileName of intunedSettingsFileNames) {\n const filePath = path.join(process.cwd(), fileName);\n if (await fs.exists(filePath)) {\n return ok({\n name: fileName,\n path: filePath,\n parse: intunedSettingsParsers[fileName],\n });\n }\n }\n\n return err(\"No Intuned settings file found.\");\n}\n\nexport async function getIntunedSettingsFileName() {\n const settingsFileResult = await getIntunedSettingsFile();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n return ok(settingsFileResult.value.name);\n}\n\nexport function loadIntunedJsonSync() {\n const settingsFileResult = getIntunedSettingsFileSync();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n const settingsFile = settingsFileResult.value;\n const intunedJsonContent = fs.readFileSync(settingsFile.path, \"utf-8\");\n let intunedJson: any;\n try {\n intunedJson = settingsFile.parse(intunedJsonContent);\n } catch (e) {\n return err(`Failed to parse ${settingsFile.name}: ${(e as Error).message}`);\n }\n const parseResult = intunedJsonSchema.safeParse(intunedJson);\n if (!parseResult.success) {\n const formattedError = parseResult.error.errors\n .map((e) => `- ${e.path.join(\".\")}: ${e.message}`)\n .join(\"\\n\");\n return err(\n `${settingsFile.name} is not valid:\\n${formattedError}\\nPlease fix the errors and try again.`\n );\n }\n return ok(parseResult.data);\n}\n\nfunction getIntunedSettingsFileSync():\n | Ok<\n {\n name: typeof intunedSettingsFileNames[number];\n path: string;\n parse: (content: string) => any;\n },\n never\n >\n | Err<never, string> {\n for (const fileName of intunedSettingsFileNames) {\n const filePath = path.join(process.cwd(), fileName);\n if (fs.existsSync(filePath)) {\n return ok({\n name: fileName,\n path: filePath,\n parse: intunedSettingsParsers[fileName],\n });\n }\n }\n\n return err(\"No Intuned settings file found.\");\n}\n"],"mappings":"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","names":["path","path","dotenv"]}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import "../chunk-NDMVGENG.mjs";
|
|
2
|
-
import {
|
|
3
|
-
__require
|
|
4
|
-
} from "../chunk-LZOMFHX3.mjs";
|
|
5
|
-
|
|
6
|
-
// src/common/binStartupScript.ts
|
|
7
|
-
import dotenv from "dotenv";
|
|
8
|
-
import * as path2 from "path";
|
|
9
|
-
|
|
10
|
-
// src/common/intunedJson.ts
|
|
11
|
-
import path from "path";
|
|
12
|
-
import * as fs from "fs-extra";
|
|
13
|
-
import { z } from "zod";
|
|
14
|
-
import * as JSONC from "jsonc-parser";
|
|
15
|
-
import * as YAML from "yaml";
|
|
16
|
-
import * as TOML from "smol-toml";
|
|
17
|
-
import { err, ok } from "neverthrow";
|
|
18
|
-
var intunedJsonSchema = z.object({
|
|
19
|
-
projectName: z.string().optional(),
|
|
20
|
-
workspaceId: z.string().optional(),
|
|
21
|
-
metadata: z.object({
|
|
22
|
-
defaultJobInput: z.record(z.any()).optional().catch(void 0),
|
|
23
|
-
defaultRunPlaygroundInput: z.record(z.any()).optional().catch(void 0),
|
|
24
|
-
testAuthSessionInput: z.record(z.any()).optional().catch(void 0)
|
|
25
|
-
}).optional().catch(void 0),
|
|
26
|
-
stealthMode: z.object({
|
|
27
|
-
enabled: z.boolean()
|
|
28
|
-
}).optional().catch(void 0)
|
|
29
|
-
}).passthrough().and(
|
|
30
|
-
z.union([
|
|
31
|
-
z.object({
|
|
32
|
-
authSessions: z.object({ enabled: z.literal(false) }),
|
|
33
|
-
apiAccess: z.object({
|
|
34
|
-
enabled: z.literal(false)
|
|
35
|
-
})
|
|
36
|
-
}),
|
|
37
|
-
z.object({
|
|
38
|
-
authSessions: z.union([
|
|
39
|
-
z.object({ enabled: z.literal(false) }),
|
|
40
|
-
z.object({
|
|
41
|
-
enabled: z.literal(true),
|
|
42
|
-
type: z.enum(["MANUAL", "API"]),
|
|
43
|
-
startUrl: z.string().optional(),
|
|
44
|
-
finishUrl: z.string().optional()
|
|
45
|
-
})
|
|
46
|
-
]),
|
|
47
|
-
apiAccess: z.object({
|
|
48
|
-
enabled: z.literal(true)
|
|
49
|
-
})
|
|
50
|
-
})
|
|
51
|
-
])
|
|
52
|
-
);
|
|
53
|
-
var intunedSettingsFileNames = [
|
|
54
|
-
"Intuned.json",
|
|
55
|
-
"Intuned.jsonc",
|
|
56
|
-
"Intuned.yaml",
|
|
57
|
-
"Intuned.yml",
|
|
58
|
-
"Intuned.toml"
|
|
59
|
-
];
|
|
60
|
-
var intunedSettingsParsers = {
|
|
61
|
-
"Intuned.json": JSON.parse,
|
|
62
|
-
"Intuned.jsonc": JSONC.parse,
|
|
63
|
-
"Intuned.yaml": YAML.parse,
|
|
64
|
-
"Intuned.yml": YAML.parse,
|
|
65
|
-
"Intuned.toml": TOML.parse
|
|
66
|
-
};
|
|
67
|
-
function loadIntunedJsonSync() {
|
|
68
|
-
const settingsFileResult = getIntunedSettingsFileSync();
|
|
69
|
-
if (!settingsFileResult.isOk()) {
|
|
70
|
-
return settingsFileResult;
|
|
71
|
-
}
|
|
72
|
-
const settingsFile = settingsFileResult.value;
|
|
73
|
-
const intunedJsonContent = fs.readFileSync(settingsFile.path, "utf-8");
|
|
74
|
-
let intunedJson;
|
|
75
|
-
try {
|
|
76
|
-
intunedJson = settingsFile.parse(intunedJsonContent);
|
|
77
|
-
} catch (e) {
|
|
78
|
-
return err(`Failed to parse ${settingsFile.name}: ${e.message}`);
|
|
79
|
-
}
|
|
80
|
-
const parseResult = intunedJsonSchema.safeParse(intunedJson);
|
|
81
|
-
if (!parseResult.success) {
|
|
82
|
-
const formattedError = parseResult.error.errors.map((e) => `- ${e.path.join(".")}: ${e.message}`).join("\n");
|
|
83
|
-
return err(
|
|
84
|
-
`${settingsFile.name} is not valid:
|
|
85
|
-
${formattedError}
|
|
86
|
-
Please fix the errors and try again.`
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
return ok(parseResult.data);
|
|
90
|
-
}
|
|
91
|
-
function getIntunedSettingsFileSync() {
|
|
92
|
-
for (const fileName of intunedSettingsFileNames) {
|
|
93
|
-
const filePath = path.join(process.cwd(), fileName);
|
|
94
|
-
if (fs.existsSync(filePath)) {
|
|
95
|
-
return ok({
|
|
96
|
-
name: fileName,
|
|
97
|
-
path: filePath,
|
|
98
|
-
parse: intunedSettingsParsers[fileName]
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
return err("No Intuned settings file found.");
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
// src/common/binStartupScript.ts
|
|
106
|
-
dotenv.config({
|
|
107
|
-
path: `.env`
|
|
108
|
-
});
|
|
109
|
-
function isStealthModeEnabled() {
|
|
110
|
-
try {
|
|
111
|
-
const settingsResult = loadIntunedJsonSync();
|
|
112
|
-
if (settingsResult.isErr()) {
|
|
113
|
-
console.error(`Warning: Failed to load Intuned settings: ${settingsResult.error}
|
|
114
|
-
Stealth mode will not be enabled.`);
|
|
115
|
-
return false;
|
|
116
|
-
}
|
|
117
|
-
return settingsResult.value.stealthMode?.enabled === true;
|
|
118
|
-
} catch (error) {
|
|
119
|
-
console.error("Error reading Intuned.json:", error.message);
|
|
120
|
-
return false;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
try {
|
|
124
|
-
if (isStealthModeEnabled()) {
|
|
125
|
-
const currentNodeModules = path2.resolve(process.cwd(), "node_modules");
|
|
126
|
-
process.env.NODE_PATH = process.env.NODE_PATH ? `${process.env.NODE_PATH}:${currentNodeModules}` : currentNodeModules;
|
|
127
|
-
__require("module").Module._initPaths();
|
|
128
|
-
if (process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH) {
|
|
129
|
-
__require(process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH);
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
} catch (e) {
|
|
133
|
-
console.error("Failed to apply stealth mode");
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=binStartupScript.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/binStartupScript.ts","../../src/common/intunedJson.ts"],"sourcesContent":["import dotenv from \"dotenv\";\nimport * as path from \"path\";\nimport { loadIntunedJsonSync } from \"./intunedJson\";\n\ndotenv.config({\n path: `.env`,\n});\n\n// Synchronously check if stealth mode is enabled\nfunction isStealthModeEnabled() {\n try {\n const settingsResult = loadIntunedJsonSync();\n if (settingsResult.isErr()) {\n console.error(`Warning: Failed to load Intuned settings: ${settingsResult.error}\nStealth mode will not be enabled.`);\n return false;\n }\n return settingsResult.value.stealthMode?.enabled === true;\n } catch (error) {\n console.error(\"Error reading Intuned.json:\", error.message);\n return false;\n }\n}\ntry {\n if (isStealthModeEnabled()) {\n // Append current directory's node_modules to NODE_PATH\n const currentNodeModules = path.resolve(process.cwd(), \"node_modules\");\n process.env.NODE_PATH = process.env.NODE_PATH\n ? `${process.env.NODE_PATH}:${currentNodeModules}`\n : currentNodeModules;\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n require(\"module\").Module._initPaths();\n if (process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH) {\n require(process.env.PLAYWRIGHT_PATCH_SCRIPT_PATH);\n }\n }\n} catch (e) {\n console.error(\"Failed to apply stealth mode\");\n}\n","import path from \"path\";\nimport * as fs from \"fs-extra\";\nimport { z } from \"zod\";\nimport * as JSONC from \"jsonc-parser\";\nimport * as YAML from \"yaml\";\nimport * as TOML from \"smol-toml\";\nimport { type Err, type Ok, err, ok } from \"neverthrow\";\nimport { formatZodError } from \"./formatZodError\";\n\n// ! do not import playwright here. this file is used for enabling stealth mode so it cannot import playwright\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst playwright = undefined;\n\nexport const intunedJsonSchema = z\n .object({\n projectName: z.string().optional(),\n workspaceId: z.string().optional(),\n metadata: z\n .object({\n defaultJobInput: z.record(z.any()).optional().catch(undefined),\n defaultRunPlaygroundInput: z\n .record(z.any())\n .optional()\n .catch(undefined),\n testAuthSessionInput: z.record(z.any()).optional().catch(undefined),\n })\n .optional()\n .catch(undefined),\n stealthMode: z\n .object({\n enabled: z.boolean(),\n })\n .optional()\n .catch(undefined),\n })\n .passthrough()\n .and(\n z.union([\n z.object({\n authSessions: z.object({ enabled: z.literal(false) }),\n apiAccess: z.object({\n enabled: z.literal(false),\n }),\n }),\n z.object({\n authSessions: z.union([\n z.object({ enabled: z.literal(false) }),\n z.object({\n enabled: z.literal(true),\n type: z.enum([\"MANUAL\", \"API\"]),\n startUrl: z.string().optional(),\n finishUrl: z.string().optional(),\n }),\n ]),\n apiAccess: z.object({\n enabled: z.literal(true),\n }),\n }),\n ])\n );\n\nexport type IntunedJson = z.infer<typeof intunedJsonSchema>;\n\nexport const intunedSettingsFileNames = [\n \"Intuned.json\",\n \"Intuned.jsonc\",\n \"Intuned.yaml\",\n \"Intuned.yml\",\n \"Intuned.toml\",\n] as const;\n\n// ! make sure to update sync implementation below when changing this\nexport async function loadIntunedJson() {\n const settingsFileResult = await getIntunedSettingsFile();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n const settingsFile = settingsFileResult.value;\n const intunedJsonContent = await fs.readFile(settingsFile.path, \"utf-8\");\n let intunedJson: any;\n try {\n intunedJson = settingsFile.parse(intunedJsonContent);\n } catch (e) {\n return err(`Failed to parse ${settingsFile.name}: ${(e as Error).message}`);\n }\n const parseResult = intunedJsonSchema.safeParse(intunedJson);\n if (!parseResult.success) {\n return err(\n `${settingsFile.name} is not valid:\\n${formatZodError(\n parseResult.error\n )}\\nPlease fix the errors and try again.`\n );\n }\n return ok(parseResult.data);\n}\n\nconst intunedSettingsParsers: Record<\n typeof intunedSettingsFileNames[number],\n (content: string) => any\n> = {\n \"Intuned.json\": JSON.parse,\n \"Intuned.jsonc\": JSONC.parse,\n \"Intuned.yaml\": YAML.parse,\n \"Intuned.yml\": YAML.parse,\n \"Intuned.toml\": TOML.parse,\n};\n\nexport async function getIntunedSettingsFile(): Promise<\n | Ok<\n {\n name: typeof intunedSettingsFileNames[number];\n path: string;\n parse: (content: string) => any;\n },\n never\n >\n | Err<never, string>\n> {\n for (const fileName of intunedSettingsFileNames) {\n const filePath = path.join(process.cwd(), fileName);\n if (await fs.exists(filePath)) {\n return ok({\n name: fileName,\n path: filePath,\n parse: intunedSettingsParsers[fileName],\n });\n }\n }\n\n return err(\"No Intuned settings file found.\");\n}\n\nexport async function getIntunedSettingsFileName() {\n const settingsFileResult = await getIntunedSettingsFile();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n return ok(settingsFileResult.value.name);\n}\n\nexport function loadIntunedJsonSync() {\n const settingsFileResult = getIntunedSettingsFileSync();\n if (!settingsFileResult.isOk()) {\n return settingsFileResult;\n }\n const settingsFile = settingsFileResult.value;\n const intunedJsonContent = fs.readFileSync(settingsFile.path, \"utf-8\");\n let intunedJson: any;\n try {\n intunedJson = settingsFile.parse(intunedJsonContent);\n } catch (e) {\n return err(`Failed to parse ${settingsFile.name}: ${(e as Error).message}`);\n }\n const parseResult = intunedJsonSchema.safeParse(intunedJson);\n if (!parseResult.success) {\n const formattedError = parseResult.error.errors\n .map((e) => `- ${e.path.join(\".\")}: ${e.message}`)\n .join(\"\\n\");\n return err(\n `${settingsFile.name} is not valid:\\n${formattedError}\\nPlease fix the errors and try again.`\n );\n }\n return ok(parseResult.data);\n}\n\nfunction getIntunedSettingsFileSync():\n | Ok<\n {\n name: typeof intunedSettingsFileNames[number];\n path: string;\n parse: (content: string) => any;\n },\n never\n >\n | Err<never, string> {\n for (const fileName of intunedSettingsFileNames) {\n const filePath = path.join(process.cwd(), fileName);\n if (fs.existsSync(filePath)) {\n return ok({\n name: fileName,\n path: filePath,\n parse: intunedSettingsParsers[fileName],\n });\n }\n }\n\n return err(\"No Intuned settings file found.\");\n}\n"],"mappings":"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","names":["path"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/cleanEnvironmentVariables.ts"],"sourcesContent":["export function cleanEnvironmentVariables() {\n Object.keys(process.env)\n .filter((i) => {\n if (i.toLocaleLowerCase().startsWith(\"npm\")) {\n return true;\n }\n\n if (i.toLocaleLowerCase().startsWith(\"fly\") && i !== \"FLY_ALLOC_ID\") {\n return true;\n }\n })\n .forEach((i) => delete process.env[i]);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,SAAS,4BAA4B;AAC1C,SAAO,KAAK,QAAQ,GAAG,EACpB,OAAO,CAAC,MAAM;AACb,QAAI,EAAE,kBAAkB,EAAE,WAAW,KAAK,GAAG;AAC3C,aAAO;AAAA,IACT;AAEA,QAAI,EAAE,kBAAkB,EAAE,WAAW,KAAK,KAAK,MAAM,gBAAgB;AACnE,aAAO;AAAA,IACT;AAAA,EACF,CAAC,EACA,QAAQ,CAAC,MAAM,OAAO,QAAQ,IAAI,CAAC,CAAC;AACzC;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
declare const API_FOLDER_NAME = "api";
|
|
2
|
-
declare const AUTH_SESSIONS_FOLDER_NAME = "auth-sessions";
|
|
3
|
-
declare const AUTH_SESSIONS_INSTANCES_FOLDER_NAME = "auth-sessions-instances";
|
|
4
|
-
declare const WORKSPACE_ID_ENV_VAR_KEY = "INTUNED_WORKSPACE_ID";
|
|
5
|
-
declare const EXTENSION_PATH_ENV_VAR_KEY = "INTUNED_EXTENSION_PATH";
|
|
6
|
-
declare const PROJECT_ID_ENV_VAR_KEY = "INTUNED_PROJECT_ID";
|
|
7
|
-
declare const API_KEY_ENV_VAR_KEY = "INTUNED_API_KEY";
|
|
8
|
-
declare const AUTH_TOKEN_ENV_VAR_KEY = "INTUNED_AUTH_TOKEN";
|
|
9
|
-
declare const API_KEY_HEADER_NAME = "x-api-key";
|
|
10
|
-
declare const API_BASE_URL_ENV_VAR_KEY = "INTUNED_API_BASE_URL";
|
|
11
|
-
declare const CLI_ENV_VAR_KEY = "INTUNED_CLI";
|
|
12
|
-
|
|
13
|
-
export { API_BASE_URL_ENV_VAR_KEY, API_FOLDER_NAME, API_KEY_ENV_VAR_KEY, API_KEY_HEADER_NAME, AUTH_SESSIONS_FOLDER_NAME, AUTH_SESSIONS_INSTANCES_FOLDER_NAME, AUTH_TOKEN_ENV_VAR_KEY, CLI_ENV_VAR_KEY, EXTENSION_PATH_ENV_VAR_KEY, PROJECT_ID_ENV_VAR_KEY, WORKSPACE_ID_ENV_VAR_KEY };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/constants.ts"],"sourcesContent":["export const API_FOLDER_NAME = \"api\";\nexport const AUTH_SESSIONS_FOLDER_NAME = \"auth-sessions\";\nexport const AUTH_SESSIONS_INSTANCES_FOLDER_NAME = \"auth-sessions-instances\";\nexport const WORKSPACE_ID_ENV_VAR_KEY = \"INTUNED_WORKSPACE_ID\";\nexport const EXTENSION_PATH_ENV_VAR_KEY = \"INTUNED_EXTENSION_PATH\";\nexport const PROJECT_ID_ENV_VAR_KEY = \"INTUNED_PROJECT_ID\";\nexport const API_KEY_ENV_VAR_KEY = \"INTUNED_API_KEY\";\nexport const AUTH_TOKEN_ENV_VAR_KEY = \"INTUNED_AUTH_TOKEN\";\nexport const API_KEY_HEADER_NAME = \"x-api-key\";\nexport const API_BASE_URL_ENV_VAR_KEY = \"INTUNED_API_BASE_URL\";\nexport const CLI_ENV_VAR_KEY = \"INTUNED_CLI\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,kBAAkB;AACxB,IAAM,4BAA4B;AAClC,IAAM,sCAAsC;AAC5C,IAAM,2BAA2B;AACjC,IAAM,6BAA6B;AACnC,IAAM,yBAAyB;AAC/B,IAAM,sBAAsB;AAC5B,IAAM,yBAAyB;AAC/B,IAAM,sBAAsB;AAC5B,IAAM,2BAA2B;AACjC,IAAM,kBAAkB;","names":[]}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
API_BASE_URL_ENV_VAR_KEY,
|
|
3
|
-
API_FOLDER_NAME,
|
|
4
|
-
API_KEY_ENV_VAR_KEY,
|
|
5
|
-
API_KEY_HEADER_NAME,
|
|
6
|
-
AUTH_SESSIONS_FOLDER_NAME,
|
|
7
|
-
AUTH_SESSIONS_INSTANCES_FOLDER_NAME,
|
|
8
|
-
AUTH_TOKEN_ENV_VAR_KEY,
|
|
9
|
-
CLI_ENV_VAR_KEY,
|
|
10
|
-
EXTENSION_PATH_ENV_VAR_KEY,
|
|
11
|
-
PROJECT_ID_ENV_VAR_KEY,
|
|
12
|
-
WORKSPACE_ID_ENV_VAR_KEY
|
|
13
|
-
} from "../chunk-FGV5T6SI.mjs";
|
|
14
|
-
import "../chunk-LZOMFHX3.mjs";
|
|
15
|
-
export {
|
|
16
|
-
API_BASE_URL_ENV_VAR_KEY,
|
|
17
|
-
API_FOLDER_NAME,
|
|
18
|
-
API_KEY_ENV_VAR_KEY,
|
|
19
|
-
API_KEY_HEADER_NAME,
|
|
20
|
-
AUTH_SESSIONS_FOLDER_NAME,
|
|
21
|
-
AUTH_SESSIONS_INSTANCES_FOLDER_NAME,
|
|
22
|
-
AUTH_TOKEN_ENV_VAR_KEY,
|
|
23
|
-
CLI_ENV_VAR_KEY,
|
|
24
|
-
EXTENSION_PATH_ENV_VAR_KEY,
|
|
25
|
-
PROJECT_ID_ENV_VAR_KEY,
|
|
26
|
-
WORKSPACE_ID_ENV_VAR_KEY
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=constants.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import * as playwright from 'playwright';
|
|
2
|
-
import { RunApiStorageState } from '@intuned/runtime-interface';
|
|
3
|
-
|
|
4
|
-
interface StorageEntry {
|
|
5
|
-
name: string;
|
|
6
|
-
value: string;
|
|
7
|
-
}
|
|
8
|
-
interface LocalStorageState {
|
|
9
|
-
origin: string;
|
|
10
|
-
localStorage: StorageEntry[];
|
|
11
|
-
}
|
|
12
|
-
interface SessionStorageState {
|
|
13
|
-
origin: string;
|
|
14
|
-
sessionStorage: StorageEntry[];
|
|
15
|
-
}
|
|
16
|
-
interface StorageState {
|
|
17
|
-
cookies?: playwright.Cookie[] | null;
|
|
18
|
-
origins?: LocalStorageState[] | null;
|
|
19
|
-
sessionStorage?: SessionStorageState[] | null;
|
|
20
|
-
}
|
|
21
|
-
declare function setStorageState(context: playwright.BrowserContext, state: RunApiStorageState): Promise<void>;
|
|
22
|
-
declare function getStorageState(context: playwright.BrowserContext): Promise<RunApiStorageState>;
|
|
23
|
-
|
|
24
|
-
export { type StorageState, getStorageState, setStorageState };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/common/contextStorageStateHelpers.ts"],"sourcesContent":["import type * as playwright from \"playwright\";\nimport type { RunApiStorageState } from \"@intuned/runtime-interface\";\n\ninterface StorageEntry {\n name: string;\n value: string;\n}\n\ninterface LocalStorageState {\n origin: string;\n localStorage: StorageEntry[];\n}\n\ninterface SessionStorageState {\n origin: string;\n sessionStorage: StorageEntry[];\n}\n\nexport interface StorageState {\n cookies?: playwright.Cookie[] | null;\n origins?: LocalStorageState[] | null;\n sessionStorage?: SessionStorageState[] | null;\n}\n\nexport async function setStorageState(\n context: playwright.BrowserContext,\n state: RunApiStorageState\n): Promise<void> {\n if (\"cookies\" in state && state.cookies) {\n await context.addCookies(state.cookies);\n }\n const page = await context.newPage();\n if (\"origins\" in state && state.origins) {\n for (const originData of state.origins || []) {\n const origin = originData.origin;\n await page.route(`${origin}/*`, (route) =>\n route.fulfill({\n body: \"<html><head><title>Set Storage</title></head><body><h1>Set Storage</h1></body></html>\",\n contentType: \"text/html\",\n status: 200,\n })\n );\n\n try {\n await page.goto(origin);\n\n for (const item of originData.localStorage) {\n await page.evaluate(\n ([key, value]) => {\n window.localStorage.setItem(key, value);\n },\n [item.name, item.value]\n );\n }\n } finally {\n await page.unroute(`${origin}/*`);\n }\n }\n }\n\n if (\"sessionStorage\" in state && state.sessionStorage) {\n await context.addInitScript((storage) => {\n for (const { origin, sessionStorage } of storage) {\n if (window.location.origin === origin) {\n for (const item of sessionStorage) {\n const value = window.sessionStorage.getItem(item.name);\n if (!value) {\n window.sessionStorage.setItem(item.name, item.value);\n }\n }\n }\n }\n }, state.sessionStorage);\n }\n\n await page.close();\n}\n\nexport async function getStorageState(\n context: playwright.BrowserContext\n): Promise<RunApiStorageState> {\n const result: RunApiStorageState = {\n cookies: [],\n origins: [],\n };\n const storageState = await context.storageState();\n result.cookies = storageState.cookies as playwright.Cookie[];\n result.origins = storageState.origins as LocalStorageState[];\n\n const sessionDataList: SessionStorageState[] = [];\n const pages = await context.pages();\n\n for (const page of pages) {\n if (page.isClosed()) continue;\n\n try {\n const sessionData: SessionStorageState = await page.evaluate(() => {\n const items = { ...window.sessionStorage };\n return {\n origin: window.location.origin,\n sessionStorage: Object.entries(items).map(([name, value]) => ({\n name,\n value,\n })),\n };\n });\n\n sessionDataList.push(sessionData);\n } catch (error) {\n console.error(\"Error getting sessionStorage:\", error);\n }\n }\n\n result[\"sessionStorage\"] = sessionDataList;\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAwBA,eAAsB,gBACpB,SACA,OACe;AACf,MAAI,aAAa,SAAS,MAAM,SAAS;AACvC,UAAM,QAAQ,WAAW,MAAM,OAAO;AAAA,EACxC;AACA,QAAM,OAAO,MAAM,QAAQ,QAAQ;AACnC,MAAI,aAAa,SAAS,MAAM,SAAS;AACvC,eAAW,cAAc,MAAM,WAAW,CAAC,GAAG;AAC5C,YAAM,SAAS,WAAW;AAC1B,YAAM,KAAK;AAAA,QAAM,GAAG,MAAM;AAAA,QAAM,CAAC,UAC/B,MAAM,QAAQ;AAAA,UACZ,MAAM;AAAA,UACN,aAAa;AAAA,UACb,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AAEA,UAAI;AACF,cAAM,KAAK,KAAK,MAAM;AAEtB,mBAAW,QAAQ,WAAW,cAAc;AAC1C,gBAAM,KAAK;AAAA,YACT,CAAC,CAAC,KAAK,KAAK,MAAM;AAChB,qBAAO,aAAa,QAAQ,KAAK,KAAK;AAAA,YACxC;AAAA,YACA,CAAC,KAAK,MAAM,KAAK,KAAK;AAAA,UACxB;AAAA,QACF;AAAA,MACF,UAAE;AACA,cAAM,KAAK,QAAQ,GAAG,MAAM,IAAI;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,MAAI,oBAAoB,SAAS,MAAM,gBAAgB;AACrD,UAAM,QAAQ,cAAc,CAAC,YAAY;AACvC,iBAAW,EAAE,QAAQ,eAAe,KAAK,SAAS;AAChD,YAAI,OAAO,SAAS,WAAW,QAAQ;AACrC,qBAAW,QAAQ,gBAAgB;AACjC,kBAAM,QAAQ,OAAO,eAAe,QAAQ,KAAK,IAAI;AACrD,gBAAI,CAAC,OAAO;AACV,qBAAO,eAAe,QAAQ,KAAK,MAAM,KAAK,KAAK;AAAA,YACrD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,MAAM,cAAc;AAAA,EACzB;AAEA,QAAM,KAAK,MAAM;AACnB;AAEA,eAAsB,gBACpB,SAC6B;AAC7B,QAAM,SAA6B;AAAA,IACjC,SAAS,CAAC;AAAA,IACV,SAAS,CAAC;AAAA,EACZ;AACA,QAAM,eAAe,MAAM,QAAQ,aAAa;AAChD,SAAO,UAAU,aAAa;AAC9B,SAAO,UAAU,aAAa;AAE9B,QAAM,kBAAyC,CAAC;AAChD,QAAM,QAAQ,MAAM,QAAQ,MAAM;AAElC,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,SAAS,EAAG;AAErB,QAAI;AACF,YAAM,cAAmC,MAAM,KAAK,SAAS,MAAM;AACjE,cAAM,QAAQ,EAAE,GAAG,OAAO,eAAe;AACzC,eAAO;AAAA,UACL,QAAQ,OAAO,SAAS;AAAA,UACxB,gBAAgB,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,YAC5D;AAAA,YACA;AAAA,UACF,EAAE;AAAA,QACJ;AAAA,MACF,CAAC;AAED,sBAAgB,KAAK,WAAW;AAAA,IAClC,SAAS,OAAO;AACd,cAAQ,MAAM,iCAAiC,KAAK;AAAA,IACtD;AAAA,EACF;AAEA,SAAO,gBAAgB,IAAI;AAE3B,SAAO;AACT;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|