@intuned/runtime-dev 1.3.8-fix.0 → 1.3.9-dev1
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/bin/common.js +23 -0
- package/bin/intuned +2 -0
- package/bin/intuned-api-run +2 -0
- package/dist/commands/common/utils/settings.js +3 -0
- package/dist/common/settingsSchema.d.ts +13 -0
- package/dist/common/settingsSchema.js +6 -0
- package/package/dist/commands/api/run.d.ts +6 -0
- package/package/dist/commands/api/run.js +123 -0
- package/package/dist/commands/auth-sessions/load.d.ts +2 -0
- package/package/dist/commands/auth-sessions/load.js +35 -0
- package/package/dist/commands/auth-sessions/run-check.d.ts +2 -0
- package/package/dist/commands/auth-sessions/run-check.js +74 -0
- package/package/dist/commands/auth-sessions/run-create.d.ts +2 -0
- package/package/dist/commands/auth-sessions/run-create.js +78 -0
- package/package/dist/commands/browser/save-state.d.ts +2 -0
- package/package/dist/commands/browser/save-state.js +17 -0
- package/package/dist/commands/browser/start-browser.d.ts +2 -0
- package/package/dist/commands/browser/start-browser.js +14 -0
- package/package/dist/commands/build.d.ts +1 -0
- package/package/dist/commands/build.js +84 -0
- package/package/dist/commands/common/browserUtils.d.ts +14 -0
- package/package/dist/commands/common/browserUtils.js +58 -0
- package/package/dist/commands/common/getFirstLineNumber.d.ts +9 -0
- package/package/dist/commands/common/getFirstLineNumber.js +101 -0
- package/package/dist/commands/common/getFirstLineNumber.test.js +228 -0
- package/package/dist/commands/common/projectExclusions.d.ts +2 -0
- package/package/dist/commands/common/projectExclusions.js +8 -0
- package/package/dist/commands/common/sendMessageToClient.d.ts +1 -0
- package/package/dist/commands/common/sendMessageToClient.js +10 -0
- package/package/dist/commands/common/tsNodeImport.d.ts +2 -0
- package/package/dist/commands/common/tsNodeImport.js +34 -0
- package/package/dist/commands/common/utils/fileUtils.d.ts +6 -0
- package/package/dist/commands/common/utils/fileUtils.js +33 -0
- package/package/dist/commands/common/utils/settings.d.ts +2 -0
- package/package/dist/commands/common/utils/settings.js +31 -0
- package/package/dist/commands/common/utils/template.d.ts +2 -0
- package/package/dist/commands/common/utils/template.js +31 -0
- package/package/dist/commands/common/utils/unixSocket.d.ts +9 -0
- package/package/dist/commands/common/utils/unixSocket.js +44 -0
- package/package/dist/commands/interface/run.d.ts +1 -0
- package/package/dist/commands/interface/run.js +216 -0
- package/package/dist/commands/intuned-cli/commands/attempt.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/attempt.command.js +8 -0
- package/package/dist/commands/intuned-cli/commands/attempt_api.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/attempt_api.command.js +30 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession.command.js +8 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession_check.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession_check.command.js +19 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession_create.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/attempt_authsession_create.command.js +24 -0
- package/package/dist/commands/intuned-cli/commands/authsession.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/authsession.command.js +8 -0
- package/package/dist/commands/intuned-cli/commands/authsession_record.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/authsession_record.command.js +31 -0
- package/package/dist/commands/intuned-cli/commands/build.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/build.command.js +12 -0
- package/package/dist/commands/intuned-cli/commands/command.d.ts +2 -0
- package/package/dist/commands/intuned-cli/commands/command.js +9 -0
- package/package/dist/commands/intuned-cli/commands/deploy.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/deploy.command.js +38 -0
- package/package/dist/commands/intuned-cli/commands/index.d.ts +18 -0
- package/package/dist/commands/intuned-cli/commands/index.js +203 -0
- package/package/dist/commands/intuned-cli/commands/init.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/init.command.js +13 -0
- package/package/dist/commands/intuned-cli/commands/run.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/run.command.js +8 -0
- package/package/dist/commands/intuned-cli/commands/run_api.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/run_api.command.js +46 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession.command.d.ts +28 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession.command.js +17 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_create.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_create.command.js +35 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_update.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_update.command.js +35 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_validate.command.d.ts +1 -0
- package/package/dist/commands/intuned-cli/commands/run_authsession_validate.command.js +33 -0
- package/package/dist/commands/intuned-cli/commands/save.command.d.ts +13 -0
- package/package/dist/commands/intuned-cli/commands/save.command.js +42 -0
- package/package/dist/commands/intuned-cli/commands/types.d.ts +31 -0
- package/package/dist/commands/intuned-cli/commands/types.js +29 -0
- package/package/dist/commands/intuned-cli/constants/index.d.ts +17 -0
- package/package/dist/commands/intuned-cli/constants/index.js +25 -0
- package/package/dist/commands/intuned-cli/controller/__test__/api.test.js +397 -0
- package/package/dist/commands/intuned-cli/controller/__test__/authSession.test.js +1059 -0
- package/package/dist/commands/intuned-cli/controller/api.d.ts +42 -0
- package/package/dist/commands/intuned-cli/controller/api.js +189 -0
- package/package/dist/commands/intuned-cli/controller/authSession.d.ts +209 -0
- package/package/dist/commands/intuned-cli/controller/authSession.js +420 -0
- package/package/dist/commands/intuned-cli/controller/build.d.ts +1 -0
- package/package/dist/commands/intuned-cli/controller/build.js +36 -0
- package/package/dist/commands/intuned-cli/controller/deploy.d.ts +4 -0
- package/package/dist/commands/intuned-cli/controller/deploy.js +139 -0
- package/package/dist/commands/intuned-cli/controller/index.d.ts +1 -0
- package/package/dist/commands/intuned-cli/controller/index.js +46 -0
- package/package/dist/commands/intuned-cli/controller/save.d.ts +14 -0
- package/package/dist/commands/intuned-cli/controller/save.js +345 -0
- package/package/dist/commands/intuned-cli/helpers/__test__/browser.test.js +103 -0
- package/package/dist/commands/intuned-cli/helpers/__test__/tracing.test.js +40 -0
- package/package/dist/commands/intuned-cli/helpers/api.d.ts +3 -0
- package/package/dist/commands/intuned-cli/helpers/api.js +19 -0
- package/package/dist/commands/intuned-cli/helpers/auth.d.ts +46 -0
- package/package/dist/commands/intuned-cli/helpers/auth.js +144 -0
- package/package/dist/commands/intuned-cli/helpers/backend.d.ts +8 -0
- package/package/dist/commands/intuned-cli/helpers/backend.js +27 -0
- package/package/dist/commands/intuned-cli/helpers/browser.d.ts +14 -0
- package/package/dist/commands/intuned-cli/helpers/browser.js +57 -0
- package/package/dist/commands/intuned-cli/helpers/context.d.ts +3 -0
- package/package/dist/commands/intuned-cli/helpers/context.js +33 -0
- package/package/dist/commands/intuned-cli/helpers/errors.d.ts +13 -0
- package/package/dist/commands/intuned-cli/helpers/errors.js +37 -0
- package/package/dist/commands/intuned-cli/helpers/index.d.ts +12 -0
- package/package/dist/commands/intuned-cli/helpers/index.js +137 -0
- package/package/dist/commands/intuned-cli/helpers/intunedJson.d.ts +69 -0
- package/package/dist/commands/intuned-cli/helpers/intunedJson.js +71 -0
- package/package/dist/commands/intuned-cli/helpers/proxy.d.ts +5 -0
- package/package/dist/commands/intuned-cli/helpers/proxy.js +23 -0
- package/package/dist/commands/intuned-cli/helpers/terminal.d.ts +5 -0
- package/package/dist/commands/intuned-cli/helpers/terminal.js +13 -0
- package/package/dist/commands/intuned-cli/helpers/timeout.d.ts +1 -0
- package/package/dist/commands/intuned-cli/helpers/timeout.js +23 -0
- package/package/dist/commands/intuned-cli/helpers/traces.d.ts +2 -0
- package/package/dist/commands/intuned-cli/helpers/traces.js +32 -0
- package/package/dist/commands/intuned-cli/helpers/validation.d.ts +2 -0
- package/package/dist/commands/intuned-cli/helpers/validation.js +14 -0
- package/package/dist/commands/intuned-cli/helpers/wrapper.d.ts +2 -0
- package/package/dist/commands/intuned-cli/helpers/wrapper.js +60 -0
- package/package/dist/commands/intuned-cli/index.d.ts +1 -0
- package/package/dist/commands/intuned-cli/index.js +16 -0
- package/package/dist/commands/intuned-cli/main.d.ts +1 -0
- package/package/dist/commands/intuned-cli/main.js +22 -0
- package/package/dist/commands/intuned-cli/types.d.ts +41 -0
- package/package/dist/commands/intuned-cli/types.js +12 -0
- package/package/dist/commands/ts-check.d.ts +2 -0
- package/package/dist/commands/ts-check.js +56 -0
- package/package/dist/common/Logger/Logger/index.d.ts +12 -0
- package/package/dist/common/Logger/Logger/index.js +60 -0
- package/package/dist/common/Logger/Logger/types.d.ts +8 -0
- package/package/dist/common/Logger/Logger/types.js +5 -0
- package/package/dist/common/Logger/index.d.ts +12 -0
- package/package/dist/common/Logger/index.js +60 -0
- package/package/dist/common/Logger/types.d.ts +8 -0
- package/package/dist/common/Logger/types.js +5 -0
- package/package/dist/common/assets/browser_scripts.js +2580 -0
- package/package/dist/common/asyncLocalStorage/index.d.ts +16 -0
- package/package/dist/common/asyncLocalStorage/index.js +17 -0
- package/package/dist/common/backendFunctions/getAuthSessionParameters.d.ts +1 -0
- package/package/dist/common/backendFunctions/getAuthSessionParameters.js +38 -0
- package/package/dist/common/cleanEnvironmentVariables.d.ts +1 -0
- package/package/dist/common/cleanEnvironmentVariables.js +16 -0
- package/package/dist/common/constants.d.ts +10 -0
- package/package/dist/common/constants.js +16 -0
- package/package/dist/common/contextStorageStateHelpers.d.ts +21 -0
- package/package/dist/common/contextStorageStateHelpers.js +81 -0
- package/package/dist/common/extensionsHelpers.d.ts +8 -0
- package/package/dist/common/extensionsHelpers.js +80 -0
- package/package/dist/common/formatZodError.d.ts +2 -0
- package/package/dist/common/formatZodError.js +18 -0
- package/package/dist/common/jwtTokenManager.d.ts +17 -0
- package/package/dist/common/jwtTokenManager.js +109 -0
- package/package/dist/common/launchBrowser.d.ts +25 -0
- package/package/dist/common/launchBrowser.js +172 -0
- package/package/dist/common/playwrightContext.d.ts +31 -0
- package/package/dist/common/playwrightContext.js +144 -0
- package/package/dist/common/runApi/errors.d.ts +72 -0
- package/package/dist/common/runApi/errors.js +169 -0
- package/package/dist/common/runApi/importUsingImportFunction.d.ts +9 -0
- package/package/dist/common/runApi/importUsingImportFunction.js +46 -0
- package/package/dist/common/runApi/index.d.ts +11 -0
- package/package/dist/common/runApi/index.js +199 -0
- package/package/dist/common/runApi/types.d.ts +830 -0
- package/package/dist/common/runApi/types.js +73 -0
- package/package/dist/common/settingsSchema.d.ts +518 -0
- package/package/dist/common/settingsSchema.js +57 -0
- package/package/dist/common/setupContextHook.d.ts +17 -0
- package/package/dist/common/setupContextHook.js +22 -0
- package/package/dist/common/telemetry.d.ts +3 -0
- package/package/dist/common/telemetry.js +32 -0
- package/package/dist/index.d.ts +4 -0
- package/package/dist/index.js +69 -0
- package/package/dist/runtime/RunError.d.ts +5 -0
- package/package/dist/runtime/RunError.js +19 -0
- package/package/dist/runtime/attemptStore.d.ts +2 -0
- package/package/dist/runtime/attemptStore.js +23 -0
- package/package/dist/runtime/downloadDirectory.d.ts +1 -0
- package/package/dist/runtime/downloadDirectory.js +19 -0
- package/package/dist/runtime/enums.d.js +5 -0
- package/package/dist/runtime/enums.d.ts +11 -0
- package/package/dist/runtime/enums.js +18 -0
- package/package/dist/runtime/executionHelpers.test.js +52 -0
- package/package/dist/runtime/export.d.js +5 -0
- package/package/dist/runtime/export.d.ts +228 -0
- package/package/dist/runtime/extendPayload.d.ts +2 -0
- package/package/dist/runtime/extendPayload.js +21 -0
- package/package/dist/runtime/extendTimeout.d.ts +1 -0
- package/package/dist/runtime/extendTimeout.js +23 -0
- package/package/dist/runtime/getAuthSessionParameters.d.ts +1 -0
- package/package/dist/runtime/getAuthSessionParameters.js +20 -0
- package/package/dist/runtime/index.d.ts +7 -0
- package/package/dist/runtime/index.js +54 -0
- package/package/dist/runtime/runInfo.d.ts +2 -0
- package/package/dist/runtime/runInfo.js +21 -0
- package/package.json +1 -1
- package/WebTemplate.zip +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = getFirstLineNumber;
|
|
7
|
+
exports.findFirstExecutableLine = findFirstExecutableLine;
|
|
8
|
+
var _tsMorph = require("ts-morph");
|
|
9
|
+
var _sourceMap = require("source-map");
|
|
10
|
+
function compileTypeScript(apiFilePath) {
|
|
11
|
+
const compilerOptions = {
|
|
12
|
+
lib: ["dom", "es2020"],
|
|
13
|
+
sourceMap: true,
|
|
14
|
+
inlineSourceMap: true,
|
|
15
|
+
inlineSources: true,
|
|
16
|
+
declaration: false,
|
|
17
|
+
noEmit: false,
|
|
18
|
+
module: _tsMorph.ModuleKind.CommonJS,
|
|
19
|
+
target: _tsMorph.ScriptTarget.ES2020
|
|
20
|
+
};
|
|
21
|
+
const project = new _tsMorph.Project({
|
|
22
|
+
compilerOptions
|
|
23
|
+
});
|
|
24
|
+
const sourceFile = project.addSourceFileAtPath(apiFilePath);
|
|
25
|
+
const outputJS = project.emitToMemory({
|
|
26
|
+
targetSourceFile: sourceFile
|
|
27
|
+
});
|
|
28
|
+
const outputJSText = outputJS.getFiles()[0].text;
|
|
29
|
+
return {
|
|
30
|
+
sourceFile,
|
|
31
|
+
outputJSText
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function findFirstExecutableLine(sourceFile) {
|
|
35
|
+
let functionBody;
|
|
36
|
+
const defaultExportSymbol = sourceFile.getDefaultExportSymbol();
|
|
37
|
+
const defaultExportDeclaration = defaultExportSymbol?.getDeclarations()?.[0];
|
|
38
|
+
if (defaultExportDeclaration) {
|
|
39
|
+
if (defaultExportDeclaration.getKind() === _tsMorph.ts.SyntaxKind.FunctionDeclaration) {
|
|
40
|
+
functionBody = defaultExportDeclaration.getBody();
|
|
41
|
+
} else {
|
|
42
|
+
const exportAssignments = sourceFile.getExportAssignments();
|
|
43
|
+
for (const exportAssignment of exportAssignments) {
|
|
44
|
+
const expression = exportAssignment.getExpression();
|
|
45
|
+
if (!expression) continue;
|
|
46
|
+
if (expression.getKind() === _tsMorph.ts.SyntaxKind.Identifier || expression.getKind() === _tsMorph.ts.SyntaxKind.FunctionExpression || expression.getKind() === _tsMorph.ts.SyntaxKind.ArrowFunction) {
|
|
47
|
+
const identifier = expression.getText();
|
|
48
|
+
const possiblyExportedFunction = sourceFile.getFunction(identifier) || sourceFile.getVariableStatement(identifier)?.getDescendants().find(node => node.getKind() === _tsMorph.ts.SyntaxKind.FunctionExpression || node.getKind() === _tsMorph.ts.SyntaxKind.ArrowFunction);
|
|
49
|
+
if (possiblyExportedFunction) {
|
|
50
|
+
functionBody = possiblyExportedFunction.getBody();
|
|
51
|
+
break;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (_tsMorph.Node.hasBody(expression) && (expression.getKind() === _tsMorph.ts.SyntaxKind.FunctionExpression || expression.getKind() === _tsMorph.ts.SyntaxKind.ArrowFunction)) {
|
|
55
|
+
functionBody = expression.getBody();
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (!functionBody || !_tsMorph.Node.isStatemented(functionBody)) {
|
|
62
|
+
return -1;
|
|
63
|
+
}
|
|
64
|
+
if (functionBody.getStatements().length === 0) {
|
|
65
|
+
return -1;
|
|
66
|
+
}
|
|
67
|
+
const position = functionBody.getStatements()[0].getStart();
|
|
68
|
+
return sourceFile.getLineAndColumnAtPos(position);
|
|
69
|
+
}
|
|
70
|
+
async function getSourceMap(jsCode) {
|
|
71
|
+
const sourceMapBase64 = jsCode.substring(jsCode.lastIndexOf("//# sourceMappingURL=data:application/json;base64,") + "//# sourceMappingURL=data:application/json;base64,".length);
|
|
72
|
+
const sourceMapText = Buffer.from(sourceMapBase64, "base64").toString("utf-8");
|
|
73
|
+
const sourceMap = JSON.parse(sourceMapText);
|
|
74
|
+
return new _sourceMap.SourceMapConsumer(sourceMap);
|
|
75
|
+
}
|
|
76
|
+
async function mapFirstLineNumberBySourceMap(sourceFileName, jsCode, line, column) {
|
|
77
|
+
const sourceMap = await getSourceMap(jsCode);
|
|
78
|
+
const generatedLineNumber = sourceMap.generatedPositionFor({
|
|
79
|
+
source: sourceFileName,
|
|
80
|
+
line,
|
|
81
|
+
column
|
|
82
|
+
}).line;
|
|
83
|
+
if (!generatedLineNumber) return -1;
|
|
84
|
+
return generatedLineNumber;
|
|
85
|
+
}
|
|
86
|
+
async function getFirstLineNumber(apiFilePath) {
|
|
87
|
+
const sourceFileName = apiFilePath.split("/").pop() ?? apiFilePath;
|
|
88
|
+
const {
|
|
89
|
+
sourceFile,
|
|
90
|
+
outputJSText
|
|
91
|
+
} = compileTypeScript(apiFilePath);
|
|
92
|
+
const result = findFirstExecutableLine(sourceFile);
|
|
93
|
+
if (result === -1) return {
|
|
94
|
+
sourceFileName,
|
|
95
|
+
lineNumber: -1
|
|
96
|
+
};
|
|
97
|
+
return {
|
|
98
|
+
sourceFileName,
|
|
99
|
+
lineNumber: await mapFirstLineNumberBySourceMap(sourceFileName, outputJSText, result.line, result.column)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _vitest = require("vitest");
|
|
4
|
+
var _getFirstLineNumber = _interopRequireDefault(require("./getFirstLineNumber"));
|
|
5
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
6
|
+
var path = _interopRequireWildcard(require("path"));
|
|
7
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
8
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
(0, _vitest.describe)("getFirstLineNumber", () => {
|
|
11
|
+
const testFilesDir = path.join(__dirname, "testFiles");
|
|
12
|
+
const createTestFile = (fileName, content) => {
|
|
13
|
+
const filePath = path.join(testFilesDir, fileName);
|
|
14
|
+
fs.writeFileSync(filePath, content);
|
|
15
|
+
return filePath;
|
|
16
|
+
};
|
|
17
|
+
(0, _vitest.beforeAll)(() => {
|
|
18
|
+
if (!fs.existsSync(testFilesDir)) {
|
|
19
|
+
fs.mkdirSync(testFilesDir);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
(0, _vitest.afterAll)(() => {
|
|
23
|
+
fs.readdirSync(testFilesDir).forEach(file => fs.unlinkSync(path.join(testFilesDir, file)));
|
|
24
|
+
fs.rmdirSync(testFilesDir);
|
|
25
|
+
});
|
|
26
|
+
(0, _vitest.it)("correctly identifies first line in a default exported named function", async () => {
|
|
27
|
+
const filePath = createTestFile("defaultFunction.ts", `import {
|
|
28
|
+
EnhancedPlaywrightPage,
|
|
29
|
+
EnhancedPlaywrightBrowserContext,
|
|
30
|
+
ExecutionHelpers,
|
|
31
|
+
} from "@intuned/runner";
|
|
32
|
+
interface Params {
|
|
33
|
+
name: string;
|
|
34
|
+
[key: string]: string | number | undefined;
|
|
35
|
+
}
|
|
36
|
+
export default async function runApi(
|
|
37
|
+
params: Params,
|
|
38
|
+
page: EnhancedPlaywrightPage,
|
|
39
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
40
|
+
executionHelpers: ExecutionHelpers
|
|
41
|
+
) {
|
|
42
|
+
await page.goto("https://www.wikipedia.org/");
|
|
43
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
44
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
45
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
46
|
+
return { done: "true", name: "custom name from api1" };
|
|
47
|
+
}
|
|
48
|
+
`);
|
|
49
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
50
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
51
|
+
});
|
|
52
|
+
(0, _vitest.it)("correctly identifies first line in a default exported anonymous function", async () => {
|
|
53
|
+
const filePath = createTestFile("defaultFunction.ts", `import {
|
|
54
|
+
EnhancedPlaywrightPage,
|
|
55
|
+
EnhancedPlaywrightBrowserContext,
|
|
56
|
+
ExecutionHelpers,
|
|
57
|
+
} from "@intuned/runner";
|
|
58
|
+
interface Params {
|
|
59
|
+
name: string;
|
|
60
|
+
[key: string]: string | number | undefined;
|
|
61
|
+
}
|
|
62
|
+
export default async function(
|
|
63
|
+
params: Params,
|
|
64
|
+
page: EnhancedPlaywrightPage,
|
|
65
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
66
|
+
executionHelpers: ExecutionHelpers
|
|
67
|
+
) {
|
|
68
|
+
await page.goto("https://www.wikipedia.org/");
|
|
69
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
70
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
71
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
72
|
+
return { done: "true", name: "custom name from api1" };
|
|
73
|
+
}
|
|
74
|
+
`);
|
|
75
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
76
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
77
|
+
});
|
|
78
|
+
(0, _vitest.it)("correctly identifies first line in a default exported function identifier", async () => {
|
|
79
|
+
const filePath = createTestFile("defaultFunction.ts", `import {
|
|
80
|
+
EnhancedPlaywrightPage,
|
|
81
|
+
EnhancedPlaywrightBrowserContext,
|
|
82
|
+
ExecutionHelpers,
|
|
83
|
+
} from "@intuned/runner";
|
|
84
|
+
interface Params {
|
|
85
|
+
name: string;
|
|
86
|
+
[key: string]: string | number | undefined;
|
|
87
|
+
}
|
|
88
|
+
async function runApi(
|
|
89
|
+
params: Params,
|
|
90
|
+
page: EnhancedPlaywrightPage,
|
|
91
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
92
|
+
executionHelpers: ExecutionHelpers
|
|
93
|
+
) {
|
|
94
|
+
await page.goto("https://www.wikipedia.org/");
|
|
95
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
96
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
97
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
98
|
+
return { done: "true", name: "custom name from api1" };
|
|
99
|
+
}
|
|
100
|
+
export default runApi;
|
|
101
|
+
`);
|
|
102
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
103
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
104
|
+
});
|
|
105
|
+
(0, _vitest.it)("correctly identifies first line in a file with multiple exports including a default function", async () => {
|
|
106
|
+
const filePath = createTestFile("multipleExports.ts", `import {
|
|
107
|
+
EnhancedPlaywrightPage,
|
|
108
|
+
EnhancedPlaywrightBrowserContext,
|
|
109
|
+
ExecutionHelpers,
|
|
110
|
+
} from "@intuned/runner";
|
|
111
|
+
interface Params {
|
|
112
|
+
name: string;
|
|
113
|
+
[key: string]: string | number | undefined;
|
|
114
|
+
}
|
|
115
|
+
export const foo = () => {};
|
|
116
|
+
async function runApi(
|
|
117
|
+
params: Params,
|
|
118
|
+
page: EnhancedPlaywrightPage,
|
|
119
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
120
|
+
executionHelpers: ExecutionHelpers
|
|
121
|
+
) {
|
|
122
|
+
await page.goto("https://www.wikipedia.org/");
|
|
123
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
124
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
125
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
126
|
+
return { done: "true", name: "custom name from api1" };
|
|
127
|
+
}
|
|
128
|
+
export default runApi;`);
|
|
129
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
130
|
+
(0, _vitest.expect)(result.lineNumber).toBe(7);
|
|
131
|
+
});
|
|
132
|
+
(0, _vitest.it)("correctly identifies first line in a default exported arrow function identifier", async () => {
|
|
133
|
+
const filePath = createTestFile("multipleExports.ts", `import {
|
|
134
|
+
EnhancedPlaywrightPage,
|
|
135
|
+
EnhancedPlaywrightBrowserContext,
|
|
136
|
+
ExecutionHelpers,
|
|
137
|
+
} from "@intuned/runner";
|
|
138
|
+
interface Params {
|
|
139
|
+
name: string;
|
|
140
|
+
[key: string]: string | number | undefined;
|
|
141
|
+
}
|
|
142
|
+
const runApi = async (
|
|
143
|
+
params: Params,
|
|
144
|
+
page: EnhancedPlaywrightPage,
|
|
145
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
146
|
+
executionHelpers: ExecutionHelpers
|
|
147
|
+
) => {
|
|
148
|
+
await page.goto("https://www.wikipedia.org/");
|
|
149
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
150
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
151
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
152
|
+
return { done: "true", name: "custom name from api1" };
|
|
153
|
+
}
|
|
154
|
+
export default runApi;`);
|
|
155
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
156
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
157
|
+
});
|
|
158
|
+
(0, _vitest.it)("correctly identifies first line in a default exported anonymous arrow function", async () => {
|
|
159
|
+
const filePath = createTestFile("multipleExports.ts", `import {
|
|
160
|
+
EnhancedPlaywrightPage,
|
|
161
|
+
EnhancedPlaywrightBrowserContext,
|
|
162
|
+
ExecutionHelpers,
|
|
163
|
+
} from "@intuned/runner";
|
|
164
|
+
interface Params {
|
|
165
|
+
name: string;
|
|
166
|
+
[key: string]: string | number | undefined;
|
|
167
|
+
}
|
|
168
|
+
export default async (
|
|
169
|
+
params: Params,
|
|
170
|
+
page: EnhancedPlaywrightPage,
|
|
171
|
+
context: EnhancedPlaywrightBrowserContext,
|
|
172
|
+
executionHelpers: ExecutionHelpers
|
|
173
|
+
) => {
|
|
174
|
+
await page.goto("https://www.wikipedia.org/");
|
|
175
|
+
await page.getByLabel("Search Wikipedia").click();
|
|
176
|
+
await page.getByLabel("Search Wikipedia").type(params.name);
|
|
177
|
+
await page.getByLabel("Search Wikipedia").press("Enter");
|
|
178
|
+
return { done: "true", name: "custom name from api1" };
|
|
179
|
+
};`);
|
|
180
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
181
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
182
|
+
});
|
|
183
|
+
(0, _vitest.it)("identifies first executable line in a default exported arrow function", async () => {
|
|
184
|
+
const filePath = createTestFile("defaultArrowFunction.ts", `export default () => {
|
|
185
|
+
console.log("Hello, Arrow World!");
|
|
186
|
+
};`);
|
|
187
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
188
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
189
|
+
});
|
|
190
|
+
(0, _vitest.it)("identifies first executable line within nested functions of a default export", async () => {
|
|
191
|
+
const filePath = createTestFile("nestedFunctions.ts", `const x = 4;
|
|
192
|
+
export default function() {
|
|
193
|
+
const nested = (x) => console.log("Nested function call");
|
|
194
|
+
nested(x);
|
|
195
|
+
}`);
|
|
196
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
197
|
+
(0, _vitest.expect)(result.lineNumber).toBe(5);
|
|
198
|
+
});
|
|
199
|
+
(0, _vitest.it)("handles async default exported function correctly", async () => {
|
|
200
|
+
const filePath = createTestFile("asyncDefaultFunction.ts", `export default async function() {
|
|
201
|
+
await Promise.resolve(console.log("Async Hello, World!"));
|
|
202
|
+
}`);
|
|
203
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
204
|
+
(0, _vitest.expect)(result.lineNumber).toBe(4);
|
|
205
|
+
});
|
|
206
|
+
(0, _vitest.it)("returns -1 for a default exported class", async () => {
|
|
207
|
+
const filePath = createTestFile("defaultClass.ts", `export default class MyClass {
|
|
208
|
+
constructor() {}
|
|
209
|
+
}`);
|
|
210
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
211
|
+
(0, _vitest.expect)(result.lineNumber).toBe(-1);
|
|
212
|
+
});
|
|
213
|
+
(0, _vitest.it)("returns -1 for a default exported variable", async () => {
|
|
214
|
+
const filePath = createTestFile("defaultVariable.ts", `export default 42;`);
|
|
215
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
216
|
+
(0, _vitest.expect)(result.lineNumber).toBe(-1);
|
|
217
|
+
});
|
|
218
|
+
(0, _vitest.it)("returns -1 when there is no default export", async () => {
|
|
219
|
+
const filePath = createTestFile("noDefaultExport.ts", `export const foo = () => console.log("bar");`);
|
|
220
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
221
|
+
(0, _vitest.expect)(result.lineNumber).toBe(-1);
|
|
222
|
+
});
|
|
223
|
+
(0, _vitest.it)("returns -1 for an empty file", async () => {
|
|
224
|
+
const filePath = createTestFile("emptyFile.ts", ``);
|
|
225
|
+
const result = await (0, _getFirstLineNumber.default)(filePath);
|
|
226
|
+
(0, _vitest.expect)(result.lineNumber).toBe(-1);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const exclusions = ["node_modules/**", ".git/**", "dist/**", "build/**", "coverage/**", ".next/**", ".cache/**", "out/**", "tmp/**", ".DS_Store", "npm-debug.log*", "yarn-debug.log*", "yarn-error.log*", ".env", ".env.*", "**/*.map", "**/*.tsbuildinfo", "tsconfig.json", "output/**", "auth-sessions-instances/**", "README.md", "traces/**"];
|
|
8
|
+
var _default = exports.default = exclusions;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const sendBreakPointOnToClient: (sourceFileName: string, lineNumber: number) => void;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.sendBreakPointOnToClient = void 0;
|
|
7
|
+
const sendBreakPointOnToClient = (sourceFileName, lineNumber) => {
|
|
8
|
+
console.log(`breakpoint on ${sourceFileName}:${lineNumber}`);
|
|
9
|
+
};
|
|
10
|
+
exports.sendBreakPointOnToClient = sendBreakPointOnToClient;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.tsNodeImport = void 0;
|
|
7
|
+
var _neverthrow = require("neverthrow");
|
|
8
|
+
var _fileUtils = require("./utils/fileUtils");
|
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
const tsNodeImport = async apiName => {
|
|
12
|
+
require("ts-node").register({
|
|
13
|
+
transpileOnly: true,
|
|
14
|
+
compilerOptions: {
|
|
15
|
+
lib: ["dom", "es2020"]
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
const path = (0, _fileUtils.getFullPathInProject)(...apiName.split("/"));
|
|
19
|
+
try {
|
|
20
|
+
const imported = await (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))(path);
|
|
21
|
+
return (0, _neverthrow.ok)(imported);
|
|
22
|
+
} catch (e) {
|
|
23
|
+
if ("code" in e && e.code.includes("MODULE_NOT_FOUND")) {
|
|
24
|
+
return (0, _neverthrow.err)({
|
|
25
|
+
type: "not_found"
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return (0, _neverthrow.err)({
|
|
29
|
+
type: "other",
|
|
30
|
+
error: e
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
exports.tsNodeImport = tsNodeImport;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getFullPathInProject = getFullPathInProject;
|
|
7
|
+
exports.listProjectFilesAndFolders = listProjectFilesAndFolders;
|
|
8
|
+
var path = _interopRequireWildcard(require("path"));
|
|
9
|
+
var fs = _interopRequireWildcard(require("fs-extra"));
|
|
10
|
+
var _dotenv = _interopRequireDefault(require("dotenv"));
|
|
11
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
_dotenv.default.config();
|
|
15
|
+
function getFullPathInProject(...paths) {
|
|
16
|
+
return path.resolve(process.cwd(), process.env.ROOT || "./", ...paths);
|
|
17
|
+
}
|
|
18
|
+
async function listProjectFilesAndFolders() {
|
|
19
|
+
const projectPath = path.resolve(process.cwd(), process.env.ROOT || "./");
|
|
20
|
+
try {
|
|
21
|
+
const files = await fs.readdir(projectPath, {
|
|
22
|
+
withFileTypes: true
|
|
23
|
+
});
|
|
24
|
+
return files.map(file => ({
|
|
25
|
+
type: file.isDirectory() ? "Folder" : "File",
|
|
26
|
+
fullPath: path.join(projectPath, file.name),
|
|
27
|
+
name: file.name
|
|
28
|
+
}));
|
|
29
|
+
} catch (err) {
|
|
30
|
+
console.error("Error reading the directory:", err);
|
|
31
|
+
throw err;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getSettings = getSettings;
|
|
7
|
+
var _fileUtils = require("./fileUtils");
|
|
8
|
+
var _settingsSchema = require("../../../common/settingsSchema");
|
|
9
|
+
var _promises = require("fs/promises");
|
|
10
|
+
async function getSettings() {
|
|
11
|
+
const settingsFilePath = (0, _fileUtils.getFullPathInProject)("Intuned.json");
|
|
12
|
+
const settings = await (0, _promises.readFile)(settingsFilePath, {
|
|
13
|
+
encoding: "utf-8"
|
|
14
|
+
});
|
|
15
|
+
if (settings) {
|
|
16
|
+
const parsed = _settingsSchema.settingsSchema.safeParse(JSON.parse(settings));
|
|
17
|
+
if (parsed.success) {
|
|
18
|
+
return parsed.data;
|
|
19
|
+
} else {
|
|
20
|
+
throw new Error(parsed.error.message);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return {
|
|
24
|
+
authSessions: {
|
|
25
|
+
enabled: false
|
|
26
|
+
},
|
|
27
|
+
stealthMode: {
|
|
28
|
+
enabled: false
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.moveTemplateFiles = void 0;
|
|
7
|
+
var fs = _interopRequireWildcard(require("fs-extra"));
|
|
8
|
+
var path = _interopRequireWildcard(require("path"));
|
|
9
|
+
var _fileUtils = require("./fileUtils");
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
const moveTemplateFiles = async templateName => {
|
|
13
|
+
await fs.remove("./intuned");
|
|
14
|
+
await fs.ensureDir("./intuned");
|
|
15
|
+
const currentFileLocation = path.resolve(__dirname, "..", "..", "..", "..", templateName);
|
|
16
|
+
await fs.copy(`${currentFileLocation}`, `./intuned/${templateName}`, {
|
|
17
|
+
filter: (src, _) => {
|
|
18
|
+
if (src.includes(".d.ts")) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const filesAndFolders = await (0, _fileUtils.listProjectFilesAndFolders)();
|
|
25
|
+
const pathsIgnoreList = [(0, _fileUtils.getFullPathInProject)("intuned"), (0, _fileUtils.getFullPathInProject)("node_modules"), (0, _fileUtils.getFullPathInProject)("package.json"), (0, _fileUtils.getFullPathInProject)("yarn.lock"), (0, _fileUtils.getFullPathInProject)(".env")];
|
|
26
|
+
const filesToCopy = filesAndFolders.filter(file => !pathsIgnoreList.includes(file.fullPath));
|
|
27
|
+
for (const file of filesToCopy) {
|
|
28
|
+
await fs.copy(file.fullPath, `./intuned/${templateName}/${file.name}`);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
exports.moveTemplateFiles = moveTemplateFiles;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import * as net from "net";
|
|
3
|
+
export declare class JSONUnixSocket {
|
|
4
|
+
private readonly socket;
|
|
5
|
+
static readonly LENGTH_HEADER_LENGTH = 4;
|
|
6
|
+
constructor(socket: net.Socket);
|
|
7
|
+
sendJSON(data: any): void;
|
|
8
|
+
receiveJSON(): AsyncGenerator<any, void, unknown>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.JSONUnixSocket = void 0;
|
|
7
|
+
class JSONUnixSocket {
|
|
8
|
+
static LENGTH_HEADER_LENGTH = 4;
|
|
9
|
+
constructor(socket) {
|
|
10
|
+
this.socket = socket;
|
|
11
|
+
}
|
|
12
|
+
sendJSON(data) {
|
|
13
|
+
const dataToSend = JSON.stringify(data);
|
|
14
|
+
const length = Buffer.byteLength(dataToSend);
|
|
15
|
+
const buffer = Buffer.alloc(JSONUnixSocket.LENGTH_HEADER_LENGTH + length);
|
|
16
|
+
buffer.writeUInt32BE(length, 0);
|
|
17
|
+
buffer.write(dataToSend, JSONUnixSocket.LENGTH_HEADER_LENGTH);
|
|
18
|
+
this.socket.write(buffer);
|
|
19
|
+
}
|
|
20
|
+
async *receiveJSON() {
|
|
21
|
+
let buffer = Buffer.alloc(0);
|
|
22
|
+
const endPromise = new Promise((resolve, reject) => {
|
|
23
|
+
this.socket.once("end", () => {
|
|
24
|
+
resolve();
|
|
25
|
+
});
|
|
26
|
+
this.socket.once("error", reject);
|
|
27
|
+
});
|
|
28
|
+
while (true) {
|
|
29
|
+
const chunk = await Promise.race([new Promise(resolve => this.socket.once("data", data => resolve(data))), endPromise]);
|
|
30
|
+
if (!(chunk instanceof Buffer)) {
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
34
|
+
const length = buffer.readUInt32BE(0);
|
|
35
|
+
if (buffer.length < length + JSONUnixSocket.LENGTH_HEADER_LENGTH) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
const data = buffer.subarray(JSONUnixSocket.LENGTH_HEADER_LENGTH, length + JSONUnixSocket.LENGTH_HEADER_LENGTH);
|
|
39
|
+
buffer = buffer.subarray(length + JSONUnixSocket.LENGTH_HEADER_LENGTH);
|
|
40
|
+
yield JSON.parse(data.toString());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.JSONUnixSocket = JSONUnixSocket;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runAutomationCLI<ResultType = any>(importFunction?: (path: string) => Promise<any>): void;
|