@usequeek/app-sdk 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/CHANGELOG.md +120 -0
- package/LICENSE +21 -0
- package/README.md +210 -0
- package/dist/app-auth.d.ts +139 -0
- package/dist/app-auth.d.ts.map +1 -0
- package/dist/app-auth.js +205 -0
- package/dist/app-auth.js.map +1 -0
- package/dist/background.d.ts +68 -0
- package/dist/background.d.ts.map +1 -0
- package/dist/background.js +78 -0
- package/dist/background.js.map +1 -0
- package/dist/client.d.ts +148 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +269 -0
- package/dist/client.js.map +1 -0
- package/dist/collected.d.ts +103 -0
- package/dist/collected.d.ts.map +1 -0
- package/dist/collected.js +59 -0
- package/dist/collected.js.map +1 -0
- package/dist/crypto.d.ts +6 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +76 -0
- package/dist/crypto.js.map +1 -0
- package/dist/frame.d.ts +58 -0
- package/dist/frame.d.ts.map +1 -0
- package/dist/frame.js +56 -0
- package/dist/frame.js.map +1 -0
- package/dist/handoff.d.ts +113 -0
- package/dist/handoff.d.ts.map +1 -0
- package/dist/handoff.js +29 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/install-handlers.d.ts +62 -0
- package/dist/install-handlers.d.ts.map +1 -0
- package/dist/install-handlers.js +238 -0
- package/dist/install-handlers.js.map +1 -0
- package/dist/logger.d.ts +27 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +75 -0
- package/dist/logger.js.map +1 -0
- package/dist/merchant-schema.d.ts +13963 -0
- package/dist/merchant-schema.d.ts.map +1 -0
- package/dist/merchant-schema.js +11 -0
- package/dist/merchant-schema.js.map +1 -0
- package/dist/resync.d.ts +80 -0
- package/dist/resync.d.ts.map +1 -0
- package/dist/resync.js +203 -0
- package/dist/resync.js.map +1 -0
- package/dist/server.d.ts +9 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +8 -0
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +66 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +155 -0
- package/dist/session.js.map +1 -0
- package/dist/signatures.d.ts +55 -0
- package/dist/signatures.d.ts.map +1 -0
- package/dist/signatures.js +74 -0
- package/dist/signatures.js.map +1 -0
- package/dist/store.d.ts +278 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +610 -0
- package/dist/store.js.map +1 -0
- package/dist/tokens.d.ts +162 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +411 -0
- package/dist/tokens.js.map +1 -0
- package/dist/webhooks.d.ts +60 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +125 -0
- package/dist/webhooks.js.map +1 -0
- package/openapi/merchant.json +21452 -0
- package/package.json +63 -0
package/dist/logger.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ONE structured logger for every Queek app: JSON lines on stdout (info and
|
|
3
|
+
* below) / stderr (warn and above), with secret redaction baked in — never
|
|
4
|
+
* opt-in per call site.
|
|
5
|
+
*
|
|
6
|
+
* Redacted: any field whose name looks like key/secret/token/password/auth/
|
|
7
|
+
* credential/session, and any string shaped like an `sk_`/`pk_` key, a
|
|
8
|
+
* `whsec_` secret, a `Bearer …` token, a bare RS256 JWT (`eyJ….….…`), or a
|
|
9
|
+
* PEM private-key block — in field values AND in the message. What is left
|
|
10
|
+
* in the logs is ids and p_ids, which is all an operator needs.
|
|
11
|
+
*/
|
|
12
|
+
const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
13
|
+
const SENSITIVE_KEY_RE = /key|secret|token|passwd|password|auth|credential|session/i;
|
|
14
|
+
// Long opaque values Queek and friends mint: sk_live_/sk_test_, pk_*, whsec_*, Bearer …
|
|
15
|
+
// — plus the S1 app credential shapes, which must NEVER reach logs: a whole PEM
|
|
16
|
+
// private-key block and a bare RS256 JWT (eyJ….….…, with or without a Bearer prefix).
|
|
17
|
+
const SECRET_VALUE_RE = /-----BEGIN [A-Z0-9 ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z0-9 ]*PRIVATE KEY-----|\b(eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+|sk_(live|test)_[A-Za-z0-9_-]+|pk_(live|test)_[A-Za-z0-9_-]+|whsec_[A-Za-z0-9+/=_-]+|Bearer\s+[A-Za-z0-9._~+/-]+=*)\b/g;
|
|
18
|
+
export const REDACTED = "[redacted]";
|
|
19
|
+
function redactValue(key, value, depth) {
|
|
20
|
+
if (SENSITIVE_KEY_RE.test(key))
|
|
21
|
+
return REDACTED;
|
|
22
|
+
return redactUnknown(value, depth);
|
|
23
|
+
}
|
|
24
|
+
function redactUnknown(value, depth) {
|
|
25
|
+
if (typeof value === "string") {
|
|
26
|
+
SECRET_VALUE_RE.lastIndex = 0;
|
|
27
|
+
return SECRET_VALUE_RE.test(value) ? value.replace(SECRET_VALUE_RE, REDACTED) : value;
|
|
28
|
+
}
|
|
29
|
+
if (Array.isArray(value)) {
|
|
30
|
+
return depth <= 0 ? REDACTED : value.map((item) => redactUnknown(item, depth - 1));
|
|
31
|
+
}
|
|
32
|
+
if (typeof value === "object" && value !== null) {
|
|
33
|
+
if (depth <= 0)
|
|
34
|
+
return REDACTED;
|
|
35
|
+
const out = {};
|
|
36
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
37
|
+
out[key] = redactValue(key, entry, depth - 1);
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
export function createLogger(options) {
|
|
44
|
+
const threshold = LEVELS[options.level ?? process.env.LOG_LEVEL ?? "info"] ?? 1;
|
|
45
|
+
const sink = options.sink ??
|
|
46
|
+
((line, level) => {
|
|
47
|
+
if (LEVELS[level] >= LEVELS.warn)
|
|
48
|
+
process.stderr.write(`${line}\n`);
|
|
49
|
+
else
|
|
50
|
+
process.stdout.write(`${line}\n`);
|
|
51
|
+
});
|
|
52
|
+
const emit = (level, message, fields = {}) => {
|
|
53
|
+
if (LEVELS[level] < threshold)
|
|
54
|
+
return;
|
|
55
|
+
const redactedMessage = redactUnknown(message, 0);
|
|
56
|
+
const redactedFields = {};
|
|
57
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
58
|
+
redactedFields[key] = redactValue(key, value, 4);
|
|
59
|
+
}
|
|
60
|
+
sink(JSON.stringify({
|
|
61
|
+
ts: new Date().toISOString(),
|
|
62
|
+
level,
|
|
63
|
+
service: options.service,
|
|
64
|
+
msg: redactedMessage,
|
|
65
|
+
...redactedFields,
|
|
66
|
+
}), level);
|
|
67
|
+
};
|
|
68
|
+
return {
|
|
69
|
+
debug: (message, fields) => emit("debug", message, fields),
|
|
70
|
+
info: (message, fields) => emit("info", message, fields),
|
|
71
|
+
warn: (message, fields) => emit("warn", message, fields),
|
|
72
|
+
error: (message, fields) => emit("error", message, fields),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|