@intuned/runtime 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +21 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +39 -0
- package/CHANGELOG.md +7 -0
- package/InterfaceTemplate/index.playwright.ts +5 -0
- package/InterfaceTemplate/utils.ts +39 -0
- package/bin/intuned-api-run +2 -0
- package/bin/intuned-auth-session-check +2 -0
- package/bin/intuned-auth-session-create +2 -0
- package/bin/intuned-auth-session-load +2 -0
- package/bin/intuned-auth-session-refresh +2 -0
- package/bin/intuned-browser-save-state +2 -0
- package/bin/intuned-browser-start +2 -0
- package/bin/intuned-build +2 -0
- package/bin/intuned-ts-check +2 -0
- package/dist/commands/api/run.d.ts +6 -0
- package/dist/commands/api/run.js +115 -0
- package/dist/commands/auth-sessions/load.d.ts +2 -0
- package/dist/commands/auth-sessions/load.js +32 -0
- package/dist/commands/auth-sessions/run-check.d.ts +2 -0
- package/dist/commands/auth-sessions/run-check.js +62 -0
- package/dist/commands/auth-sessions/run-create.d.ts +2 -0
- package/dist/commands/auth-sessions/run-create.js +101 -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 +84 -0
- package/dist/commands/common/browserUtils.d.ts +14 -0
- package/dist/commands/common/browserUtils.js +58 -0
- package/dist/commands/common/getFirstLineNumber.d.ts +9 -0
- package/dist/commands/common/getFirstLineNumber.js +103 -0
- package/dist/commands/common/getFirstLineNumber.test.js +228 -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 +1 -0
- package/dist/commands/common/tsNodeImport.js +20 -0
- package/dist/commands/common/utils/fileUtils.d.ts +6 -0
- package/dist/commands/common/utils/fileUtils.js +33 -0
- package/dist/commands/common/utils/settings.d.ts +2 -0
- package/dist/commands/common/utils/settings.js +28 -0
- package/dist/commands/common/utils/template.d.ts +2 -0
- package/dist/commands/common/utils/template.js +31 -0
- package/dist/commands/common/utils/unixSocket.d.ts +9 -0
- package/dist/commands/common/utils/unixSocket.js +44 -0
- package/dist/commands/interface/run.d.ts +1 -0
- package/dist/commands/interface/run.js +214 -0
- package/dist/commands/ts-check.d.ts +2 -0
- package/dist/commands/ts-check.js +56 -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/assets/browser_scripts.js +2214 -0
- package/dist/common/asyncLocalStorage/index.d.ts +16 -0
- package/dist/common/asyncLocalStorage/index.js +17 -0
- package/dist/common/cleanEnvironmentVariables.d.ts +1 -0
- package/dist/common/cleanEnvironmentVariables.js +16 -0
- package/dist/common/constants.d.ts +1 -0
- package/dist/common/constants.js +7 -0
- package/dist/common/contextStorageStateHelpers.d.ts +21 -0
- package/dist/common/contextStorageStateHelpers.js +81 -0
- package/dist/common/formatZodError.d.ts +2 -0
- package/dist/common/formatZodError.js +18 -0
- package/dist/common/getPlaywrightConstructs.d.ts +30 -0
- package/dist/common/getPlaywrightConstructs.js +196 -0
- package/dist/common/jwtTokenManager.d.ts +16 -0
- package/dist/common/jwtTokenManager.js +81 -0
- package/dist/common/runApi/errors.d.ts +65 -0
- package/dist/common/runApi/errors.js +156 -0
- package/dist/common/runApi/index.d.ts +12 -0
- package/dist/common/runApi/index.js +265 -0
- package/dist/common/runApi/types.d.ts +702 -0
- package/dist/common/runApi/types.js +74 -0
- package/dist/common/settingsSchema.d.ts +19 -0
- package/dist/common/settingsSchema.js +17 -0
- package/dist/common/telemetry.d.ts +3 -0
- package/dist/common/telemetry.js +32 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +69 -0
- package/dist/runtime/RunError.d.ts +5 -0
- package/dist/runtime/RunError.js +19 -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 +53 -0
- package/dist/runtime/export.d.js +5 -0
- package/dist/runtime/export.d.ts +202 -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 +30 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.js +53 -0
- package/dist/runtime/requestMoreInfo.d.ts +18 -0
- package/dist/runtime/requestMoreInfo.js +25 -0
- package/dist/runtime/runInfo.d.ts +2 -0
- package/dist/runtime/runInfo.js +21 -0
- package/package.json +136 -0
- package/template.tsconfig.json +14 -0
- package/tsconfig.eslint.json +5 -0
- package/tsconfig.json +24 -0
- package/typedoc.json +49 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.runAutomationCLI = runAutomationCLI;
|
|
7
|
+
var _commander = require("commander");
|
|
8
|
+
var _dotenv = _interopRequireDefault(require("dotenv"));
|
|
9
|
+
var _asyncLocalStorage = require("../../common/asyncLocalStorage");
|
|
10
|
+
var net = _interopRequireWildcard(require("net"));
|
|
11
|
+
var _zod = _interopRequireDefault(require("zod"));
|
|
12
|
+
var _runApi = require("../../common/runApi");
|
|
13
|
+
var _enums = require("../../runtime/enums");
|
|
14
|
+
var _unixSocket = require("../common/utils/unixSocket");
|
|
15
|
+
var _promises = require("timers/promises");
|
|
16
|
+
var _jwtTokenManager = require("../../common/jwtTokenManager");
|
|
17
|
+
var _formatZodError = require("../../common/formatZodError");
|
|
18
|
+
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); }
|
|
19
|
+
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; }
|
|
20
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
|
+
const startRunApiSchema = _zod.default.object({
|
|
22
|
+
type: _zod.default.literal("start"),
|
|
23
|
+
parameters: _runApi.runApiParametersSchema.extend({
|
|
24
|
+
retrieveSession: _zod.default.boolean(),
|
|
25
|
+
functionsToken: _zod.default.string().optional(),
|
|
26
|
+
context: _zod.default.object({
|
|
27
|
+
jobId: _zod.default.string().optional(),
|
|
28
|
+
jobRunId: _zod.default.string().optional(),
|
|
29
|
+
runId: _zod.default.string().optional(),
|
|
30
|
+
queueId: _zod.default.string().optional()
|
|
31
|
+
}).optional()
|
|
32
|
+
})
|
|
33
|
+
});
|
|
34
|
+
const nextRunApiSchema = _zod.default.object({
|
|
35
|
+
type: _zod.default.literal("next"),
|
|
36
|
+
parameters: _zod.default.object({
|
|
37
|
+
value: _zod.default.string()
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
const abortRunApiSchema = _zod.default.object({
|
|
41
|
+
type: _zod.default.literal("abort"),
|
|
42
|
+
parameters: _zod.default.object({}).optional()
|
|
43
|
+
});
|
|
44
|
+
const tokenUpdateSchema = _zod.default.object({
|
|
45
|
+
type: _zod.default.literal("tokenUpdate"),
|
|
46
|
+
parameters: _zod.default.object({
|
|
47
|
+
functionsToken: _zod.default.string()
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
const inputSchema = _zod.default.union([startRunApiSchema, nextRunApiSchema, abortRunApiSchema, tokenUpdateSchema]);
|
|
51
|
+
_dotenv.default.config({
|
|
52
|
+
path: `.env`
|
|
53
|
+
});
|
|
54
|
+
function runAutomationCLI(importFunction) {
|
|
55
|
+
_commander.program.description("run user automation and communicate using unix socket").argument("<socket-path>", "path to unix socket").action(async socketPath => {
|
|
56
|
+
let context;
|
|
57
|
+
const throttleTime = 60 * 1000;
|
|
58
|
+
let timeoutTimestamp = Date.now();
|
|
59
|
+
const client = net.createConnection(socketPath);
|
|
60
|
+
let generator = null;
|
|
61
|
+
const abortController = new AbortController();
|
|
62
|
+
client.on("error", err => {
|
|
63
|
+
var _generator;
|
|
64
|
+
void ((_generator = generator) === null || _generator === void 0 ? void 0 : _generator.throw(err).catch(() => undefined));
|
|
65
|
+
});
|
|
66
|
+
const interruptSignalHandler = async () => {
|
|
67
|
+
var _generator2;
|
|
68
|
+
abortController.abort();
|
|
69
|
+
await (0, _promises.setTimeout)(60_000);
|
|
70
|
+
void ((_generator2 = generator) === null || _generator2 === void 0 ? void 0 : _generator2.throw(new Error("Interrupted")).catch(() => undefined));
|
|
71
|
+
client.end();
|
|
72
|
+
process.exit(1);
|
|
73
|
+
};
|
|
74
|
+
process.on("SIGINT", interruptSignalHandler);
|
|
75
|
+
process.on("SIGTERM", interruptSignalHandler);
|
|
76
|
+
const jsonUnixSocket = new _unixSocket.JSONUnixSocket(client);
|
|
77
|
+
const messagesGenerator = jsonUnixSocket.receiveJSON();
|
|
78
|
+
async function receiveMessages() {
|
|
79
|
+
const data = await messagesGenerator.next();
|
|
80
|
+
if (data.done) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const inputParseResult = inputSchema.safeParse(data.value);
|
|
84
|
+
if (!inputParseResult.success) {
|
|
85
|
+
console.error("Validation error:", (0, _formatZodError.formatZodError)(inputParseResult.error));
|
|
86
|
+
return {
|
|
87
|
+
type: "error",
|
|
88
|
+
error: new _runApi.InternalInvalidInputError("Invalid input", (0, _formatZodError.formatZodError)(inputParseResult.error))
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const input = inputParseResult.data;
|
|
92
|
+
return input;
|
|
93
|
+
}
|
|
94
|
+
let resultPromise = null;
|
|
95
|
+
async function handleMessage(message) {
|
|
96
|
+
if (message.type === "abort") {
|
|
97
|
+
abortController.abort();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (message.type === "tokenUpdate") {
|
|
101
|
+
_jwtTokenManager.backendFunctionsTokenManager.token = message.parameters.functionsToken;
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (message.type === "start") {
|
|
105
|
+
generator = (0, _runApi.runApiGenerator)({
|
|
106
|
+
...message.parameters,
|
|
107
|
+
abortSignal: abortController.signal,
|
|
108
|
+
importFunction
|
|
109
|
+
});
|
|
110
|
+
context = {
|
|
111
|
+
extendedPayloads: [],
|
|
112
|
+
runEnvironment: message.parameters.runOptions.environment === "standalone" ? _enums.RunEnvironment.DEPLOYED : _enums.RunEnvironment.IDE,
|
|
113
|
+
timeoutInfo: {
|
|
114
|
+
extendTimeoutCallback: async () => {
|
|
115
|
+
if (Date.now() - timeoutTimestamp < throttleTime) return;
|
|
116
|
+
timeoutTimestamp = Date.now();
|
|
117
|
+
jsonUnixSocket.sendJSON({
|
|
118
|
+
type: "extend"
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
...(message.parameters.context ?? {}),
|
|
123
|
+
proxy: getProxyUrlFromRunOptions(message.parameters.runOptions)
|
|
124
|
+
};
|
|
125
|
+
_jwtTokenManager.backendFunctionsTokenManager.token = message.parameters.functionsToken;
|
|
126
|
+
resultPromise = (0, _asyncLocalStorage.runWithContext)(context, async () => {
|
|
127
|
+
return await generator.next();
|
|
128
|
+
});
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (message.type === "next") {
|
|
132
|
+
if (!generator) {
|
|
133
|
+
throw new Error("generator not started");
|
|
134
|
+
}
|
|
135
|
+
resultPromise = (0, _asyncLocalStorage.runWithContext)(context, async () => {
|
|
136
|
+
return await generator.next(message.parameters.value);
|
|
137
|
+
});
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function handleResult(generatorResult) {
|
|
142
|
+
if (!generatorResult.done) {
|
|
143
|
+
jsonUnixSocket.sendJSON({
|
|
144
|
+
type: "yield",
|
|
145
|
+
result: generatorResult.value
|
|
146
|
+
});
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const result = generatorResult.value;
|
|
150
|
+
const success = result.isOk();
|
|
151
|
+
const resultToSend = success ? result.value : result.error.json;
|
|
152
|
+
jsonUnixSocket.sendJSON({
|
|
153
|
+
type: "done",
|
|
154
|
+
result: resultToSend,
|
|
155
|
+
success
|
|
156
|
+
});
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
let receiveMessagesPromise = receiveMessages();
|
|
160
|
+
while (true) {
|
|
161
|
+
const messageOrResult = await Promise.race([receiveMessagesPromise.then(message => ({
|
|
162
|
+
type: "message",
|
|
163
|
+
message
|
|
164
|
+
})), ...(resultPromise ? [resultPromise.then(result => ({
|
|
165
|
+
type: "result",
|
|
166
|
+
result
|
|
167
|
+
}))] : [])]);
|
|
168
|
+
if (messageOrResult.type === "message") {
|
|
169
|
+
const {
|
|
170
|
+
message
|
|
171
|
+
} = messageOrResult;
|
|
172
|
+
if (message === undefined) {
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
if (message.type === "error") {
|
|
176
|
+
jsonUnixSocket.sendJSON({
|
|
177
|
+
type: "done",
|
|
178
|
+
result: message.error.json,
|
|
179
|
+
success: false
|
|
180
|
+
});
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
await handleMessage(message);
|
|
184
|
+
receiveMessagesPromise = receiveMessages();
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
const {
|
|
188
|
+
result
|
|
189
|
+
} = messageOrResult;
|
|
190
|
+
const done = await handleResult(result);
|
|
191
|
+
if (done) {
|
|
192
|
+
break;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
if (!client.closed) {
|
|
196
|
+
client.end();
|
|
197
|
+
await Promise.race([new Promise(resolve => client.once("close", resolve)), new Promise(resolve => client.once("error", resolve)), (0, _promises.setTimeout)(3000)]);
|
|
198
|
+
}
|
|
199
|
+
process.exit(0);
|
|
200
|
+
});
|
|
201
|
+
_commander.program.parse(process.argv);
|
|
202
|
+
}
|
|
203
|
+
function getProxyUrlFromRunOptions(runOptions) {
|
|
204
|
+
if ((runOptions === null || runOptions === void 0 ? void 0 : runOptions.environment) !== "standalone") return undefined;
|
|
205
|
+
const proxy = runOptions.proxy;
|
|
206
|
+
if (!proxy) return undefined;
|
|
207
|
+
const url = new URL(proxy.server);
|
|
208
|
+
url.username = proxy.username;
|
|
209
|
+
url.password = proxy.password;
|
|
210
|
+
return url.toString();
|
|
211
|
+
}
|
|
212
|
+
if (require.main === module) {
|
|
213
|
+
runAutomationCLI();
|
|
214
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var ts = _interopRequireWildcard(require("typescript"));
|
|
5
|
+
var _commander = require("commander");
|
|
6
|
+
var fs = _interopRequireWildcard(require("fs-extra"));
|
|
7
|
+
var path = _interopRequireWildcard(require("path"));
|
|
8
|
+
var _template = require("./common/utils/template");
|
|
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
|
+
_commander.program.description("Check TypeScript types in the project").option("-t, --template <type>", "template to use", "InterfaceTemplate").allowUnknownOption().action(async ({
|
|
12
|
+
template
|
|
13
|
+
}) => {
|
|
14
|
+
await (0, _template.moveTemplateFiles)(template);
|
|
15
|
+
const templateTsConfig = path.resolve(__dirname, "..", "..", "template.tsconfig.json");
|
|
16
|
+
await fs.copy(templateTsConfig, `./intuned/${template}/tsconfig.json`);
|
|
17
|
+
checkTypes(template);
|
|
18
|
+
});
|
|
19
|
+
function checkTypes(template) {
|
|
20
|
+
const configPath = ts.findConfigFile(`./intuned/${template}`, ts.sys.fileExists, "tsconfig.json");
|
|
21
|
+
if (!configPath) {
|
|
22
|
+
console.error("Could not find a valid 'tsconfig.json'.");
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const readConfigResult = ts.readConfigFile(configPath, ts.sys.readFile);
|
|
26
|
+
const config = readConfigResult.config;
|
|
27
|
+
const parseConfigHost = {
|
|
28
|
+
useCaseSensitiveFileNames: ts.sys.useCaseSensitiveFileNames,
|
|
29
|
+
readDirectory: ts.sys.readDirectory,
|
|
30
|
+
fileExists: ts.sys.fileExists,
|
|
31
|
+
readFile: ts.sys.readFile
|
|
32
|
+
};
|
|
33
|
+
const parsed = ts.parseJsonConfigFileContent(config, parseConfigHost, "./intuned");
|
|
34
|
+
const program = ts.createProgram(parsed.fileNames, parsed.options);
|
|
35
|
+
const emitResult = program.emit();
|
|
36
|
+
const allDiagnostics = ts.getPreEmitDiagnostics(program).concat(emitResult.diagnostics);
|
|
37
|
+
allDiagnostics.forEach(diagnostic => {
|
|
38
|
+
if (diagnostic.file) {
|
|
39
|
+
const {
|
|
40
|
+
line,
|
|
41
|
+
character
|
|
42
|
+
} = ts.getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start);
|
|
43
|
+
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
44
|
+
console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
|
|
45
|
+
} else {
|
|
46
|
+
console.log(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
if (allDiagnostics.length === 0) {
|
|
50
|
+
console.log("✨ TypeScript type checking passed without errors.");
|
|
51
|
+
} else {
|
|
52
|
+
console.error("Errors found during TypeScript type checking.");
|
|
53
|
+
process.exit(1);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
_commander.program.parse(process.argv);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LogEntry, LogMetadata } from "./types";
|
|
2
|
+
declare class Logger {
|
|
3
|
+
logFunction(entry: LogEntry): void;
|
|
4
|
+
private log;
|
|
5
|
+
trace(message: string, meta?: LogMetadata): void;
|
|
6
|
+
debug(message: string, meta?: LogMetadata): void;
|
|
7
|
+
info(message: string, meta?: LogMetadata): void;
|
|
8
|
+
warn(message: string, meta?: LogMetadata): void;
|
|
9
|
+
error(message: string, meta?: LogMetadata): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const logger: Logger;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
var _nodeUtil = require("node:util");
|
|
8
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const format = _nodeUtil.formatWithOptions.bind(undefined, {
|
|
11
|
+
colors: true
|
|
12
|
+
});
|
|
13
|
+
const LOG_LEVEL_COLORS = {
|
|
14
|
+
TRACE: _chalk.default.gray,
|
|
15
|
+
DEBUG: _chalk.default.blue,
|
|
16
|
+
INFO: _chalk.default.green,
|
|
17
|
+
WARN: _chalk.default.yellow,
|
|
18
|
+
ERROR: _chalk.default.red
|
|
19
|
+
};
|
|
20
|
+
class Logger {
|
|
21
|
+
logFunction(entry) {
|
|
22
|
+
const {
|
|
23
|
+
level,
|
|
24
|
+
timestamp,
|
|
25
|
+
message,
|
|
26
|
+
meta
|
|
27
|
+
} = entry;
|
|
28
|
+
const date = new Date(timestamp);
|
|
29
|
+
const levelColor = LOG_LEVEL_COLORS[level];
|
|
30
|
+
if (meta === undefined) {
|
|
31
|
+
process.stderr.write(`${format(date)} [@intuned/sdk][${levelColor(level)}] ${message}\n`);
|
|
32
|
+
} else {
|
|
33
|
+
process.stderr.write(`${format(date)} [@intuned/sdk][${levelColor(level)}] ${message} ${format(meta)}\n`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
log(level, message, meta) {
|
|
37
|
+
this.logFunction({
|
|
38
|
+
level,
|
|
39
|
+
message,
|
|
40
|
+
meta: meta && Object.keys(meta).length === 0 ? undefined : meta,
|
|
41
|
+
timestamp: Date.now()
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
trace(message, meta) {
|
|
45
|
+
this.log("TRACE", message, meta);
|
|
46
|
+
}
|
|
47
|
+
debug(message, meta) {
|
|
48
|
+
this.log("DEBUG", message, meta);
|
|
49
|
+
}
|
|
50
|
+
info(message, meta) {
|
|
51
|
+
this.log("INFO", message, meta);
|
|
52
|
+
}
|
|
53
|
+
warn(message, meta) {
|
|
54
|
+
this.log("WARN", message, meta);
|
|
55
|
+
}
|
|
56
|
+
error(message, meta) {
|
|
57
|
+
this.log("ERROR", message, meta);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const logger = exports.logger = new Logger();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LogEntry, LogMetadata } from "./types";
|
|
2
|
+
declare class Logger {
|
|
3
|
+
logFunction(entry: LogEntry): void;
|
|
4
|
+
private log;
|
|
5
|
+
trace(message: string, meta?: LogMetadata): void;
|
|
6
|
+
debug(message: string, meta?: LogMetadata): void;
|
|
7
|
+
info(message: string, meta?: LogMetadata): void;
|
|
8
|
+
warn(message: string, meta?: LogMetadata): void;
|
|
9
|
+
error(message: string, meta?: LogMetadata): void;
|
|
10
|
+
}
|
|
11
|
+
export declare const logger: Logger;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.logger = void 0;
|
|
7
|
+
var _nodeUtil = require("node:util");
|
|
8
|
+
var _chalk = _interopRequireDefault(require("chalk"));
|
|
9
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
+
const format = _nodeUtil.formatWithOptions.bind(undefined, {
|
|
11
|
+
colors: true
|
|
12
|
+
});
|
|
13
|
+
const LOG_LEVEL_COLORS = {
|
|
14
|
+
TRACE: _chalk.default.gray,
|
|
15
|
+
DEBUG: _chalk.default.blue,
|
|
16
|
+
INFO: _chalk.default.green,
|
|
17
|
+
WARN: _chalk.default.yellow,
|
|
18
|
+
ERROR: _chalk.default.red
|
|
19
|
+
};
|
|
20
|
+
class Logger {
|
|
21
|
+
logFunction(entry) {
|
|
22
|
+
const {
|
|
23
|
+
level,
|
|
24
|
+
timestamp,
|
|
25
|
+
message,
|
|
26
|
+
meta
|
|
27
|
+
} = entry;
|
|
28
|
+
const date = new Date(timestamp);
|
|
29
|
+
const levelColor = LOG_LEVEL_COLORS[level];
|
|
30
|
+
if (meta === undefined) {
|
|
31
|
+
process.stderr.write(`${format(date)} [@intuned/sdk][${levelColor(level)}] ${message}\n`);
|
|
32
|
+
} else {
|
|
33
|
+
process.stderr.write(`${format(date)} [@intuned/sdk][${levelColor(level)}] ${message} ${format(meta)}\n`);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
log(level, message, meta) {
|
|
37
|
+
this.logFunction({
|
|
38
|
+
level,
|
|
39
|
+
message,
|
|
40
|
+
meta: meta && Object.keys(meta).length === 0 ? undefined : meta,
|
|
41
|
+
timestamp: Date.now()
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
trace(message, meta) {
|
|
45
|
+
this.log("TRACE", message, meta);
|
|
46
|
+
}
|
|
47
|
+
debug(message, meta) {
|
|
48
|
+
this.log("DEBUG", message, meta);
|
|
49
|
+
}
|
|
50
|
+
info(message, meta) {
|
|
51
|
+
this.log("INFO", message, meta);
|
|
52
|
+
}
|
|
53
|
+
warn(message, meta) {
|
|
54
|
+
this.log("WARN", message, meta);
|
|
55
|
+
}
|
|
56
|
+
error(message, meta) {
|
|
57
|
+
this.log("ERROR", message, meta);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const logger = exports.logger = new Logger();
|