@guckdev/sdk 0.3.0 → 0.4.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.
- package/dist/sdk/emit.d.ts.map +1 -1
- package/dist/sdk/emit.js +33 -1
- package/dist/sdk/emit.js.map +1 -1
- package/package.json +2 -2
- package/src/sdk/emit.ts +37 -1
package/dist/sdk/emit.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/sdk/emit.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EAKV,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/sdk/emit.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,SAAS,EAKV,MAAM,eAAe,CAAC;AAgFvB,eAAO,MAAM,IAAI,GAAU,OAAO,OAAO,CAAC,SAAS,CAAC,KAAG,OAAO,CAAC,IAAI,CAyBlE,CAAC"}
|
package/dist/sdk/emit.js
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { appendEvent, loadConfig, redactEvent, resolveStoreDir, } from "@guckdev/core";
|
|
3
3
|
let cached;
|
|
4
|
+
let writeDisabled = false;
|
|
5
|
+
let warned = false;
|
|
6
|
+
const isWriteError = (error) => {
|
|
7
|
+
if (!error || typeof error !== "object") {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
const code = error.code;
|
|
11
|
+
return code === "EACCES" || code === "EPERM" || code === "EROFS";
|
|
12
|
+
};
|
|
13
|
+
const warnOnce = (message) => {
|
|
14
|
+
if (warned) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
warned = true;
|
|
18
|
+
process.stderr.write(`${message}\n`);
|
|
19
|
+
};
|
|
4
20
|
const defaultRunId = process.env.GUCK_RUN_ID ?? randomUUID();
|
|
5
21
|
const defaultSessionId = process.env.GUCK_SESSION_ID;
|
|
6
22
|
const normalizeLevel = (level) => {
|
|
@@ -45,12 +61,28 @@ const getCached = () => {
|
|
|
45
61
|
return cached;
|
|
46
62
|
};
|
|
47
63
|
export const emit = async (input) => {
|
|
64
|
+
if (writeDisabled) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
48
67
|
const { storeDir, config } = getCached();
|
|
49
68
|
if (!config.enabled) {
|
|
50
69
|
return;
|
|
51
70
|
}
|
|
52
71
|
const event = toEvent(input, { service: config.default_service });
|
|
53
72
|
const redacted = redactEvent(config, event);
|
|
54
|
-
|
|
73
|
+
try {
|
|
74
|
+
await appendEvent(storeDir, redacted);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (process.env.GUCK_STRICT_WRITE_ERRORS === "1") {
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
if (isWriteError(error)) {
|
|
81
|
+
writeDisabled = true;
|
|
82
|
+
warnOnce("[guck] write disabled (permission error); set GUCK_STRICT_WRITE_ERRORS=1 to fail hard");
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
55
87
|
};
|
|
56
88
|
//# sourceMappingURL=emit.js.map
|
package/dist/sdk/emit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/sdk/emit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,WAAW,EAGX,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,IAAI,MAKS,CAAC;AAEd,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;AAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAErD,MAAM,cAAc,GAAG,CAAC,KAAc,EAAa,EAAE;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IACE,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,OAAO;QACjB,KAAK,KAAK,OAAO,EACjB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACd,KAAyB,EACzB,QAA6B,EAClB,EAAE;IACb,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,UAAU,EAAE;QAC5B,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACxC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK;QACzB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO;QAC1C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,YAAY;QACpC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,gBAAgB;QAChD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE;KACxC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,GAAG,EAAE;IACrB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,MAAM,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;IAC7C,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,KAAyB,EAAiB,EAAE;IACrE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5C,MAAM,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/sdk/emit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@guckdev/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Guck JS SDK",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"node": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@guckdev/core": "0.
|
|
40
|
+
"@guckdev/core": "0.4.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/node": "25.2.2"
|
package/src/sdk/emit.ts
CHANGED
|
@@ -15,6 +15,25 @@ let cached:
|
|
|
15
15
|
}
|
|
16
16
|
| undefined;
|
|
17
17
|
|
|
18
|
+
let writeDisabled = false;
|
|
19
|
+
let warned = false;
|
|
20
|
+
|
|
21
|
+
const isWriteError = (error: unknown): boolean => {
|
|
22
|
+
if (!error || typeof error !== "object") {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const code = (error as { code?: string }).code;
|
|
26
|
+
return code === "EACCES" || code === "EPERM" || code === "EROFS";
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const warnOnce = (message: string): void => {
|
|
30
|
+
if (warned) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
warned = true;
|
|
34
|
+
process.stderr.write(`${message}\n`);
|
|
35
|
+
};
|
|
36
|
+
|
|
18
37
|
const defaultRunId = process.env.GUCK_RUN_ID ?? randomUUID();
|
|
19
38
|
const defaultSessionId = process.env.GUCK_SESSION_ID;
|
|
20
39
|
|
|
@@ -68,11 +87,28 @@ const getCached = () => {
|
|
|
68
87
|
};
|
|
69
88
|
|
|
70
89
|
export const emit = async (input: Partial<GuckEvent>): Promise<void> => {
|
|
90
|
+
if (writeDisabled) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
71
93
|
const { storeDir, config } = getCached();
|
|
72
94
|
if (!config.enabled) {
|
|
73
95
|
return;
|
|
74
96
|
}
|
|
75
97
|
const event = toEvent(input, { service: config.default_service });
|
|
76
98
|
const redacted = redactEvent(config, event);
|
|
77
|
-
|
|
99
|
+
try {
|
|
100
|
+
await appendEvent(storeDir, redacted);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
if (process.env.GUCK_STRICT_WRITE_ERRORS === "1") {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
if (isWriteError(error)) {
|
|
106
|
+
writeDisabled = true;
|
|
107
|
+
warnOnce(
|
|
108
|
+
"[guck] write disabled (permission error); set GUCK_STRICT_WRITE_ERRORS=1 to fail hard",
|
|
109
|
+
);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
throw error;
|
|
113
|
+
}
|
|
78
114
|
};
|