@beeverlabs/auralogger 1.0.0

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.
Files changed (62) hide show
  1. package/dist/aura-log.d.ts +3 -0
  2. package/dist/aura-log.d.ts.map +1 -0
  3. package/dist/aura-log.js +418 -0
  4. package/dist/aura-log.js.map +1 -0
  5. package/dist/backend-origin.d.ts +9 -0
  6. package/dist/backend-origin.d.ts.map +1 -0
  7. package/dist/backend-origin.js +39 -0
  8. package/dist/backend-origin.js.map +1 -0
  9. package/dist/bin/auralogger.d.ts +3 -0
  10. package/dist/bin/auralogger.d.ts.map +1 -0
  11. package/dist/bin/auralogger.js +49 -0
  12. package/dist/bin/auralogger.js.map +1 -0
  13. package/dist/config.d.ts +12 -0
  14. package/dist/config.d.ts.map +1 -0
  15. package/dist/config.js +108 -0
  16. package/dist/config.js.map +1 -0
  17. package/dist/get-logs-filters.d.ts +9 -0
  18. package/dist/get-logs-filters.d.ts.map +1 -0
  19. package/dist/get-logs-filters.js +72 -0
  20. package/dist/get-logs-filters.js.map +1 -0
  21. package/dist/get-logs.d.ts +2 -0
  22. package/dist/get-logs.d.ts.map +1 -0
  23. package/dist/get-logs.js +65 -0
  24. package/dist/get-logs.js.map +1 -0
  25. package/dist/http-utils.d.ts +2 -0
  26. package/dist/http-utils.d.ts.map +1 -0
  27. package/dist/http-utils.js +19 -0
  28. package/dist/http-utils.js.map +1 -0
  29. package/dist/index.d.ts +13 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +26 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/init.d.ts +7 -0
  34. package/dist/init.d.ts.map +1 -0
  35. package/dist/init.js +150 -0
  36. package/dist/init.js.map +1 -0
  37. package/dist/log-print.d.ts +9 -0
  38. package/dist/log-print.d.ts.map +1 -0
  39. package/dist/log-print.js +14 -0
  40. package/dist/log-print.js.map +1 -0
  41. package/dist/log-styles.d.ts +42 -0
  42. package/dist/log-styles.d.ts.map +1 -0
  43. package/dist/log-styles.js +88 -0
  44. package/dist/log-styles.js.map +1 -0
  45. package/dist/parser.d.ts +14 -0
  46. package/dist/parser.d.ts.map +1 -0
  47. package/dist/parser.js +51 -0
  48. package/dist/parser.js.map +1 -0
  49. package/dist/reset.d.ts +2 -0
  50. package/dist/reset.d.ts.map +1 -0
  51. package/dist/reset.js +61 -0
  52. package/dist/reset.js.map +1 -0
  53. package/dist/server-check.d.ts +2 -0
  54. package/dist/server-check.d.ts.map +1 -0
  55. package/dist/server-check.js +47 -0
  56. package/dist/server-check.js.map +1 -0
  57. package/dist/test-logger.d.ts +2 -0
  58. package/dist/test-logger.d.ts.map +1 -0
  59. package/dist/test-logger.js +57 -0
  60. package/dist/test-logger.js.map +1 -0
  61. package/package.json +52 -0
  62. package/readme.md +19 -0
package/dist/config.js ADDED
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CONFIG_FILE_NAME = void 0;
37
+ exports.readConfig = readConfig;
38
+ exports.readConfigIfExists = readConfigIfExists;
39
+ exports.getConfigProjectId = getConfigProjectId;
40
+ exports.getConfigSecret = getConfigSecret;
41
+ const fs = __importStar(require("node:fs/promises"));
42
+ const path = __importStar(require("node:path"));
43
+ exports.CONFIG_FILE_NAME = "auralogger.config.json";
44
+ function isRecord(value) {
45
+ return typeof value === "object" && value !== null;
46
+ }
47
+ function parseConfig(raw) {
48
+ let parsed;
49
+ try {
50
+ parsed = JSON.parse(raw);
51
+ }
52
+ catch {
53
+ throw new Error(`${exports.CONFIG_FILE_NAME} contains invalid JSON.`);
54
+ }
55
+ if (!isRecord(parsed)) {
56
+ throw new Error(`${exports.CONFIG_FILE_NAME} is not a valid JSON object.`);
57
+ }
58
+ return parsed;
59
+ }
60
+ function isEnoent(err) {
61
+ return (typeof err === "object" &&
62
+ err !== null &&
63
+ "code" in err &&
64
+ err.code === "ENOENT");
65
+ }
66
+ async function readConfig(cwd) {
67
+ const configPath = path.join(cwd, exports.CONFIG_FILE_NAME);
68
+ let raw;
69
+ try {
70
+ raw = await fs.readFile(configPath, "utf8");
71
+ }
72
+ catch (error) {
73
+ if (isEnoent(error)) {
74
+ throw new Error(`No ${exports.CONFIG_FILE_NAME} in ${cwd}. Run "auralogger init" first.`);
75
+ }
76
+ throw error;
77
+ }
78
+ return parseConfig(raw);
79
+ }
80
+ async function readConfigIfExists(cwd) {
81
+ const configPath = path.join(cwd, exports.CONFIG_FILE_NAME);
82
+ let raw;
83
+ try {
84
+ raw = await fs.readFile(configPath, "utf8");
85
+ }
86
+ catch (error) {
87
+ if (isEnoent(error)) {
88
+ return null;
89
+ }
90
+ throw error;
91
+ }
92
+ return parseConfig(raw);
93
+ }
94
+ function getConfigProjectId(config) {
95
+ const value = config.project_id;
96
+ if (typeof value !== "string" || !value.trim()) {
97
+ return null;
98
+ }
99
+ return value.trim();
100
+ }
101
+ function getConfigSecret(config) {
102
+ const value = config.secret_key;
103
+ if (typeof value !== "string" || !value.trim()) {
104
+ return null;
105
+ }
106
+ return value.trim();
107
+ }
108
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,gCAcC;AAED,gDAgBC;AAED,gDAMC;AAED,0CAMC;AAxFD,qDAAuC;AACvC,gDAAkC;AAErB,QAAA,gBAAgB,GAAG,wBAAwB,CAAC;AASzD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,wBAAgB,yBAAyB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,GAAG,wBAAgB,8BAA8B,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY;IAC5B,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,MAAM,IAAI,GAAG;QACZ,GAA6B,CAAC,IAAI,KAAK,QAAQ,CACjD,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,GAAW;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAgB,CAAC,CAAC;IAEpD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,MAAM,wBAAgB,OAAO,GAAG,gCAAgC,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,kBAAkB,CACtC,GAAW;IAEX,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,wBAAgB,CAAC,CAAC;IAEpD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAwB;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC;AAED,SAAgB,eAAe,CAAC,MAAwB;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC;IAChC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ParsedFilter } from "./parser";
2
+ /** Body filter shape for `POST /api/logs`. */
3
+ export interface ApiLogFilter {
4
+ field: string;
5
+ op?: string;
6
+ value: unknown;
7
+ }
8
+ export declare function normalizeAndValidateFilters(parsed: ParsedFilter[]): ApiLogFilter[];
9
+ //# sourceMappingURL=get-logs-filters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-logs-filters.d.ts","sourceRoot":"","sources":["../src/get-logs-filters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;CAChB;AAgDD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CA8BlF"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeAndValidateFilters = normalizeAndValidateFilters;
4
+ const MAX_MAXCOUNT = 100;
5
+ function defaultOpForField(field) {
6
+ if (field.startsWith("data.")) {
7
+ return "eq";
8
+ }
9
+ if (field === "order" || field === "maxcount" || field === "skip") {
10
+ return "eq";
11
+ }
12
+ if (field === "message") {
13
+ return "contains";
14
+ }
15
+ if (field === "location") {
16
+ return "in";
17
+ }
18
+ if (field === "time") {
19
+ return "since";
20
+ }
21
+ if (field === "type") {
22
+ return "in";
23
+ }
24
+ throw new Error(`Unknown filter field: ${field}`);
25
+ }
26
+ function allowedOpsForField(field) {
27
+ if (field.startsWith("data.")) {
28
+ return ["eq"];
29
+ }
30
+ switch (field) {
31
+ case "type":
32
+ return ["in", "not-in"];
33
+ case "message":
34
+ return ["contains", "not-contains"];
35
+ case "location":
36
+ return ["in", "not-in"];
37
+ case "time":
38
+ return ["since", "from-to"];
39
+ case "order":
40
+ case "maxcount":
41
+ case "skip":
42
+ return ["eq"];
43
+ default:
44
+ return [];
45
+ }
46
+ }
47
+ function normalizeAndValidateFilters(parsed) {
48
+ return parsed.map((filter) => {
49
+ const defaultOp = defaultOpForField(filter.field);
50
+ const allowedOps = allowedOpsForField(filter.field);
51
+ if (allowedOps.length === 0) {
52
+ throw new Error(`Unknown filter field: ${filter.field}`);
53
+ }
54
+ const resolvedOp = filter.op ?? defaultOp;
55
+ if (!allowedOps.includes(resolvedOp)) {
56
+ throw new Error(`Invalid op '${resolvedOp}' for field '${filter.field}'. Allowed: ${allowedOps.join(", ")}`);
57
+ }
58
+ let value = filter.value;
59
+ if (filter.field === "maxcount" && typeof value === "number") {
60
+ value = Math.min(Math.max(0, Math.floor(value)), MAX_MAXCOUNT);
61
+ }
62
+ if (filter.field === "skip" && typeof value === "number") {
63
+ value = Math.max(0, Math.floor(value));
64
+ }
65
+ const apiFilter = { field: filter.field, value };
66
+ if (resolvedOp !== defaultOp) {
67
+ apiFilter.op = resolvedOp;
68
+ }
69
+ return apiFilter;
70
+ });
71
+ }
72
+ //# sourceMappingURL=get-logs-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-logs-filters.js","sourceRoot":"","sources":["../src/get-logs-filters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function runGetLogs(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=get-logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-logs.d.ts","sourceRoot":"","sources":["../src/get-logs.ts"],"names":[],"mappings":"AAiEA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B9D"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runGetLogs = runGetLogs;
4
+ const backend_origin_1 = require("./backend-origin");
5
+ const config_1 = require("./config");
6
+ const get_logs_filters_1 = require("./get-logs-filters");
7
+ const http_utils_1 = require("./http-utils");
8
+ const log_print_1 = require("./log-print");
9
+ const parser_1 = require("./parser");
10
+ function isRecord(value) {
11
+ return typeof value === "object" && value !== null;
12
+ }
13
+ function isLogRow(value) {
14
+ return isRecord(value);
15
+ }
16
+ async function fetchLogsWithFallback(baseUrl, secret, filters) {
17
+ const route = `${baseUrl}/api/logs`;
18
+ const requestBody = JSON.stringify({ filters });
19
+ const requestInit = {
20
+ method: "POST",
21
+ headers: {
22
+ secret,
23
+ "content-type": "application/json",
24
+ },
25
+ body: requestBody,
26
+ };
27
+ const response = await fetch(route, requestInit).catch((error) => {
28
+ const message = error instanceof Error ? error.message : String(error);
29
+ throw new Error(`Unable to reach ${baseUrl}: ${message}`);
30
+ });
31
+ if (!response.ok) {
32
+ throw new Error(await (0, http_utils_1.parseErrorBody)(response));
33
+ }
34
+ const body = await response.json().catch(() => {
35
+ throw new Error("Logs response was not valid JSON.");
36
+ });
37
+ if (!isRecord(body)) {
38
+ throw new Error("Logs response had an unexpected shape.");
39
+ }
40
+ return body;
41
+ }
42
+ async function runGetLogs(argv) {
43
+ const cwd = process.cwd();
44
+ const config = await (0, config_1.readConfig)(cwd);
45
+ const secret = (0, config_1.getConfigSecret)(config);
46
+ if (!secret) {
47
+ throw new Error('auralogger.config.json is missing a valid "secret_key". Run "auralogger init" to set it.');
48
+ }
49
+ const parsed = (0, parser_1.parseCommand)(argv);
50
+ const filters = (0, get_logs_filters_1.normalizeAndValidateFilters)(parsed.filters);
51
+ const baseUrl = (0, backend_origin_1.resolveApiBaseUrl)();
52
+ const body = await fetchLogsWithFallback(baseUrl, secret, filters);
53
+ const logsRaw = body.logs;
54
+ const logs = Array.isArray(logsRaw) ? logsRaw : [];
55
+ if (logs.length === 0) {
56
+ console.log("No logs matched your filters.");
57
+ return;
58
+ }
59
+ for (const item of logs) {
60
+ if (isLogRow(item)) {
61
+ (0, log_print_1.printLog)(item, config.styles);
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=get-logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-logs.js","sourceRoot":"","sources":["../src/get-logs.ts"],"names":[],"mappings":";;AAiEA,gCA6BC;AA9FD,qDAAqD;AACrD,qCAGkB;AAClB,yDAAiE;AACjE,6CAA8C;AAC9C,2CAAuC;AACvC,qCAAwC;AAcxC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,MAAc,EACd,OAAgB;IAEhB,MAAM,KAAK,GAAG,GAAG,OAAO,WAAW,CAAC;IAEpC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAgB;QAC/B,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,MAAM;YACN,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxE,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,MAAM,IAAA,2BAAc,EAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;QACrD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,EAAC,GAAG,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,IAAA,wBAAe,EAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,0FAA0F,CAC3F,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,IAAI,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAA,8CAA2B,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,IAAA,kCAAiB,GAAE,CAAC;IACpC,MAAM,IAAI,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACnB,IAAA,oBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function parseErrorBody(response: Response): Promise<string>;
2
+ //# sourceMappingURL=http-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-utils.d.ts","sourceRoot":"","sources":["../src/http-utils.ts"],"names":[],"mappings":"AAAA,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBxE"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseErrorBody = parseErrorBody;
4
+ async function parseErrorBody(response) {
5
+ const contentType = response.headers.get("content-type") || "";
6
+ if (!contentType.includes("application/json")) {
7
+ return `Request failed with status ${response.status}.`;
8
+ }
9
+ const body = await response.json().catch(() => null);
10
+ if (body !== null &&
11
+ typeof body === "object" &&
12
+ "error" in body &&
13
+ typeof body.error === "string" &&
14
+ body.error.trim()) {
15
+ return body.error.trim();
16
+ }
17
+ return `Request failed with status ${response.status}.`;
18
+ }
19
+ //# sourceMappingURL=http-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-utils.js","sourceRoot":"","sources":["../src/http-utils.ts"],"names":[],"mappings":";;AAAA,wCAkBC;AAlBM,KAAK,UAAU,cAAc,CAAC,QAAkB;IACrD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC9C,OAAO,8BAA8B,QAAQ,CAAC,MAAM,GAAG,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9D,IACE,IAAI,KAAK,IAAI;QACb,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,IAAI,IAAI;QACf,OAAQ,IAA2B,CAAC,KAAK,KAAK,QAAQ;QACrD,IAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,EACxC,CAAC;QACD,OAAQ,IAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAClD,CAAC;IAED,OAAO,8BAA8B,QAAQ,CAAC,MAAM,GAAG,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,13 @@
1
+ export { runGetLogs } from "./get-logs";
2
+ export { normalizeAndValidateFilters } from "./get-logs-filters";
3
+ export type { ApiLogFilter } from "./get-logs-filters";
4
+ export { parseErrorBody } from "./http-utils";
5
+ export { auraLog, closeAuraLogSocket } from "./aura-log";
6
+ export { runInit } from "./init";
7
+ export { runReset } from "./reset";
8
+ export { runServerCheck } from "./server-check";
9
+ export { DEFAULT_LOG_STYLE_SPEC, buildStyleEntriesFromApi, resolveLogStyleSpec, styleMapFromConfigEntries, } from "./log-styles";
10
+ export type { ApiStyleRow, LogStyleSpec, ProjAuthConfigPayload, } from "./log-styles";
11
+ export { parseCommand } from "./parser";
12
+ export type { ParsedFilter, ParsedGetLogsCommand } from "./parser";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,YAAY,EACZ,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseCommand = exports.styleMapFromConfigEntries = exports.resolveLogStyleSpec = exports.buildStyleEntriesFromApi = exports.DEFAULT_LOG_STYLE_SPEC = exports.runServerCheck = exports.runReset = exports.runInit = exports.closeAuraLogSocket = exports.auraLog = exports.parseErrorBody = exports.normalizeAndValidateFilters = exports.runGetLogs = void 0;
4
+ var get_logs_1 = require("./get-logs");
5
+ Object.defineProperty(exports, "runGetLogs", { enumerable: true, get: function () { return get_logs_1.runGetLogs; } });
6
+ var get_logs_filters_1 = require("./get-logs-filters");
7
+ Object.defineProperty(exports, "normalizeAndValidateFilters", { enumerable: true, get: function () { return get_logs_filters_1.normalizeAndValidateFilters; } });
8
+ var http_utils_1 = require("./http-utils");
9
+ Object.defineProperty(exports, "parseErrorBody", { enumerable: true, get: function () { return http_utils_1.parseErrorBody; } });
10
+ var aura_log_1 = require("./aura-log");
11
+ Object.defineProperty(exports, "auraLog", { enumerable: true, get: function () { return aura_log_1.auraLog; } });
12
+ Object.defineProperty(exports, "closeAuraLogSocket", { enumerable: true, get: function () { return aura_log_1.closeAuraLogSocket; } });
13
+ var init_1 = require("./init");
14
+ Object.defineProperty(exports, "runInit", { enumerable: true, get: function () { return init_1.runInit; } });
15
+ var reset_1 = require("./reset");
16
+ Object.defineProperty(exports, "runReset", { enumerable: true, get: function () { return reset_1.runReset; } });
17
+ var server_check_1 = require("./server-check");
18
+ Object.defineProperty(exports, "runServerCheck", { enumerable: true, get: function () { return server_check_1.runServerCheck; } });
19
+ var log_styles_1 = require("./log-styles");
20
+ Object.defineProperty(exports, "DEFAULT_LOG_STYLE_SPEC", { enumerable: true, get: function () { return log_styles_1.DEFAULT_LOG_STYLE_SPEC; } });
21
+ Object.defineProperty(exports, "buildStyleEntriesFromApi", { enumerable: true, get: function () { return log_styles_1.buildStyleEntriesFromApi; } });
22
+ Object.defineProperty(exports, "resolveLogStyleSpec", { enumerable: true, get: function () { return log_styles_1.resolveLogStyleSpec; } });
23
+ Object.defineProperty(exports, "styleMapFromConfigEntries", { enumerable: true, get: function () { return log_styles_1.styleMapFromConfigEntries; } });
24
+ var parser_1 = require("./parser");
25
+ Object.defineProperty(exports, "parseCommand", { enumerable: true, get: function () { return parser_1.parseCommand; } });
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AACnB,uDAAiE;AAAxD,+HAAA,2BAA2B,OAAA;AAEpC,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AACvB,uCAAyD;AAAhD,mGAAA,OAAO,OAAA;AAAE,8GAAA,kBAAkB,OAAA;AACpC,+BAAiC;AAAxB,+FAAA,OAAO,OAAA;AAChB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,+CAAgD;AAAvC,8GAAA,cAAc,OAAA;AACvB,2CAKsB;AAJpB,oHAAA,sBAAsB,OAAA;AACtB,sHAAA,wBAAwB,OAAA;AACxB,iHAAA,mBAAmB,OAAA;AACnB,uHAAA,yBAAyB,OAAA;AAO3B,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
package/dist/init.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import type { ProjAuthConfigPayload } from "./log-styles";
2
+ export interface InitConfigPayload extends ProjAuthConfigPayload {
3
+ secret_key: string;
4
+ }
5
+ export declare function fetchAndWriteAuraloggerConfig(cwd: string, secret: string): Promise<InitConfigPayload>;
6
+ export declare function runInit(): Promise<void>;
7
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AA4C1D,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,UAAU,EAAE,MAAM,CAAC;CACpB;AA4DD,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAO7C"}
package/dist/init.js ADDED
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.fetchAndWriteAuraloggerConfig = fetchAndWriteAuraloggerConfig;
37
+ exports.runInit = runInit;
38
+ const fs = __importStar(require("node:fs/promises"));
39
+ const path = __importStar(require("node:path"));
40
+ const readline = __importStar(require("node:readline/promises"));
41
+ const node_process_1 = require("node:process");
42
+ const backend_origin_1 = require("./backend-origin");
43
+ const config_1 = require("./config");
44
+ const http_utils_1 = require("./http-utils");
45
+ const log_styles_1 = require("./log-styles");
46
+ const CONFIG_FILE_NAME = "auralogger.config.json";
47
+ async function promptForSecret() {
48
+ const cli = readline.createInterface({ input: node_process_1.stdin, output: node_process_1.stdout });
49
+ try {
50
+ const enteredSecret = await cli.question("Enter AURALOGGER secret key: ");
51
+ const secret = enteredSecret.trim();
52
+ if (!secret) {
53
+ throw new Error("Secret key cannot be empty.");
54
+ }
55
+ return secret;
56
+ }
57
+ finally {
58
+ cli.close();
59
+ }
60
+ }
61
+ async function resolveSecret(cwd) {
62
+ const envSecret = process.env.AURALOGGER_SECRET_KEY?.trim();
63
+ if (envSecret) {
64
+ return envSecret;
65
+ }
66
+ const config = await (0, config_1.readConfigIfExists)(cwd);
67
+ const configSecret = config ? (0, config_1.getConfigSecret)(config) : null;
68
+ if (configSecret) {
69
+ return configSecret;
70
+ }
71
+ return promptForSecret();
72
+ }
73
+ function buildConfigPayload(authResponse, secret) {
74
+ const apiRows = Array.isArray(authResponse.styles) ? authResponse.styles : [];
75
+ return {
76
+ secret_key: secret,
77
+ project_id: authResponse.project_id ?? null,
78
+ user_id: authResponse.user_id ?? null,
79
+ name: authResponse.name ?? null,
80
+ role: authResponse.role ?? null,
81
+ profile_id: authResponse.profile_id ?? null,
82
+ session: authResponse.session ?? null,
83
+ styles: (0, log_styles_1.buildStyleEntriesFromApi)(apiRows),
84
+ };
85
+ }
86
+ async function writeConfigFile(cwd, configPayload) {
87
+ const configPath = path.join(cwd, CONFIG_FILE_NAME);
88
+ const configBody = `${JSON.stringify(configPayload, null, 2)}\n`;
89
+ await fs.writeFile(configPath, configBody, "utf8");
90
+ }
91
+ function isEnoent(err) {
92
+ return (typeof err === "object" &&
93
+ err !== null &&
94
+ "code" in err &&
95
+ err.code === "ENOENT");
96
+ }
97
+ async function ensureConfigIgnored(cwd) {
98
+ const gitignorePath = path.join(cwd, ".gitignore");
99
+ const entry = CONFIG_FILE_NAME;
100
+ let currentContent = "";
101
+ try {
102
+ currentContent = await fs.readFile(gitignorePath, "utf8");
103
+ }
104
+ catch (error) {
105
+ if (!isEnoent(error)) {
106
+ throw error;
107
+ }
108
+ }
109
+ const lines = currentContent.split(/\r?\n/);
110
+ if (lines.includes(entry)) {
111
+ return;
112
+ }
113
+ const normalized = currentContent.replace(/\s*$/, "");
114
+ const nextContent = normalized ? `${normalized}\n${entry}\n` : `${entry}\n`;
115
+ await fs.writeFile(gitignorePath, nextContent, "utf8");
116
+ }
117
+ async function fetchAndWriteAuraloggerConfig(cwd, secret) {
118
+ const baseUrl = (0, backend_origin_1.resolveApiBaseUrl)();
119
+ const response = await fetch(`${baseUrl}/api/proj_auth`, {
120
+ method: "POST",
121
+ headers: { secret },
122
+ }).catch((error) => {
123
+ const msg = error instanceof Error ? error.message : String(error);
124
+ throw new Error(`Unable to reach ${baseUrl}: ${msg}`);
125
+ });
126
+ if (!response.ok) {
127
+ throw new Error(await (0, http_utils_1.parseErrorBody)(response));
128
+ }
129
+ const authResponse = await response.json().catch(() => {
130
+ throw new Error("Authentication succeeded but response was not valid JSON.");
131
+ });
132
+ if (!isPlainAuthResponse(authResponse)) {
133
+ throw new Error("Authentication response had an unexpected shape.");
134
+ }
135
+ const payload = buildConfigPayload(authResponse, secret);
136
+ await writeConfigFile(cwd, payload);
137
+ await ensureConfigIgnored(cwd);
138
+ return payload;
139
+ }
140
+ async function runInit() {
141
+ const cwd = process.cwd();
142
+ const secret = await resolveSecret(cwd);
143
+ await fetchAndWriteAuraloggerConfig(cwd, secret);
144
+ console.log("Auralogger initialized successfully.");
145
+ console.log(`Created ${CONFIG_FILE_NAME} in ${cwd}`);
146
+ }
147
+ function isPlainAuthResponse(value) {
148
+ return value !== null && typeof value === "object";
149
+ }
150
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface PrintableLogRow {
2
+ created_at?: unknown;
3
+ type?: unknown;
4
+ location?: unknown;
5
+ message?: unknown;
6
+ data?: unknown;
7
+ }
8
+ export declare function printLog(log: PrintableLogRow, configStyles: unknown): void;
9
+ //# sourceMappingURL=log-print.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-print.d.ts","sourceRoot":"","sources":["../src/log-print.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAGD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,GAAG,IAAI,CAY1E"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.printLog = printLog;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const log_styles_1 = require("./log-styles");
9
+ function printLog(log, configStyles) {
10
+ const spec = (0, log_styles_1.resolveLogStyleSpec)(typeof log.type === "string" ? log.type : "", configStyles);
11
+ console.log(chalk_1.default.rgb(...spec["time-color"])(log.created_at), spec.icon, chalk_1.default.rgb(...spec["type-color"])(log.type), chalk_1.default.rgb(...spec["location-color"])(log.location));
12
+ console.log(chalk_1.default.rgb(...spec["message-color"])(String(log.message ?? "")));
13
+ }
14
+ //# sourceMappingURL=log-print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-print.js","sourceRoot":"","sources":["../src/log-print.ts"],"names":[],"mappings":";;;;;AAaA,4BAYC;AAzBD,kDAA0B;AAE1B,6CAAmD;AAWnD,SAAgB,QAAQ,CAAC,GAAoB,EAAE,YAAqB;IAClE,MAAM,IAAI,GAAG,IAAA,gCAAmB,EAC9B,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAC5C,YAAY,CACb,CAAC;IACF,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAE,EACjD,IAAI,CAAC,IAAI,EACT,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAC1C,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CACnD,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,42 @@
1
+ /** One log type’s terminal/UI styling (RGB triples are [r, g, b]). */
2
+ export interface LogStyleSpec {
3
+ icon: string;
4
+ "type-color": [number, number, number];
5
+ background: [number, number, number];
6
+ borderColor: [number, number, number];
7
+ "location-color": [number, number, number];
8
+ "time-color": [number, number, number];
9
+ "message-color": [number, number, number];
10
+ "text-color": [number, number, number];
11
+ }
12
+ /** Row from `proj_auth` / `GET /api/styles` before CLI normalization. */
13
+ export interface ApiStyleRow {
14
+ type?: string;
15
+ styles?: Record<string, unknown>;
16
+ importance?: number;
17
+ }
18
+ export interface ProjAuthConfigPayload {
19
+ project_id: string | null;
20
+ user_id: string | null;
21
+ name: string | null;
22
+ role: string | null;
23
+ profile_id: string | null;
24
+ session: string | null;
25
+ styles: Record<string, LogStyleSpec | Record<string, unknown>>[];
26
+ }
27
+ export declare const DEFAULT_LOG_STYLE_SPEC: LogStyleSpec;
28
+ /**
29
+ * Builds `styles` for `auralogger.config.json` after init.
30
+ * Shape: array of objects, each with a single key (log type string) and a style spec object as value.
31
+ * Always includes `default`; server rows override or add types (by `importance` ascending).
32
+ */
33
+ export declare function buildStyleEntriesFromApi(rows: unknown): Record<string, LogStyleSpec | Record<string, unknown>>[];
34
+ /**
35
+ * Flattens config `styles` into one object per type.
36
+ */
37
+ export declare function styleMapFromConfigEntries(entries: unknown): Record<string, LogStyleSpec | Record<string, unknown>>;
38
+ /**
39
+ * Resolved spec for a log line: per-type fields merged over `default`, then default alone if unknown type.
40
+ */
41
+ export declare function resolveLogStyleSpec(logType: string, configStyles: unknown): LogStyleSpec;
42
+ //# sourceMappingURL=log-styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-styles.d.ts","sourceRoot":"","sources":["../src/log-styles.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,yEAAyE;AACzE,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;CAClE;AAED,eAAO,MAAM,sBAAsB,EAAE,YASpC,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CA2B1D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,GACf,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuBxD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,OAAO,GACpB,YAAY,CAUd"}