@phylaco/node 0.1.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 ADDED
@@ -0,0 +1,16 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented here.
4
+
5
+ ---
6
+
7
+ ## [0.1.0] - Initial Release
8
+
9
+ ### Added
10
+
11
+ * Express middleware integration
12
+ * Request tracking
13
+ * Error classification
14
+ * Retry queue system
15
+ * Data sanitization
16
+ * OpenTelemetry trace support
package/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Phylaco
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software.
10
+
11
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
package/README.md ADDED
@@ -0,0 +1,122 @@
1
+ # @phylaco/node
2
+
3
+ Phylaco Node SDK for backend telemetry, request tracking, and behavioral signal collection.
4
+
5
+ ## 🚀 Features
6
+
7
+ * Automatic request tracking (Express middleware)
8
+ * API performance monitoring
9
+ * Error detection & classification
10
+ * Trace correlation (OpenTelemetry compatible)
11
+ * Data sanitization (PII protection)
12
+ * Retry & batching system
13
+
14
+ ---
15
+
16
+ ## 📦 Installation
17
+
18
+ ```bash
19
+ npm install @phylaco/node
20
+ ```
21
+
22
+ ---
23
+
24
+ ## ⚡ Quick Start
25
+
26
+ ```js
27
+ import express from "express";
28
+ import phylaco from "@phylaco/node";
29
+
30
+ const app = express();
31
+
32
+ phylaco.init(app, {
33
+ ingestUrl: "https://api.phylaco.com/ingest",
34
+ projectKey: "YOUR_PROJECT_KEY",
35
+ serviceName: "my-backend",
36
+ debug: true,
37
+ });
38
+
39
+ app.get("/api/test", (req, res) => {
40
+ res.json({ success: true });
41
+ });
42
+
43
+ app.listen(3000);
44
+ ```
45
+
46
+ ---
47
+
48
+ ## 🔧 Configuration
49
+
50
+ | Option | Type | Required | Description |
51
+ | ----------------- | ------- | -------- | ------------------ |
52
+ | ingestUrl | string | ✅ | Phylaco ingest API |
53
+ | projectKey | string | ✅ | Project auth key |
54
+ | serviceName | string | ❌ | Service identifier |
55
+ | debug | boolean | ❌ | Enable debug logs |
56
+ | capturePathPrefix | string | ❌ | Filter routes |
57
+
58
+ ---
59
+
60
+ ## 👤 User Identification
61
+
62
+ ```js
63
+ import { identify } from "@phylaco/node";
64
+
65
+ identify("user_123");
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 🔒 Data Protection
71
+
72
+ * Sensitive fields automatically masked:
73
+
74
+ * password
75
+ * token
76
+ * authorization
77
+ * Deep object sanitization enabled
78
+
79
+ ---
80
+
81
+ ## 🧠 What SDK Does
82
+
83
+ ✔ Collects signals
84
+ ✔ Tracks performance
85
+ ✔ Sends events
86
+
87
+ ❌ Does NOT do:
88
+
89
+ * ML
90
+ * risk scoring
91
+ * behavior analysis
92
+
93
+ 👉 That happens in Phylaco backend
94
+
95
+ ---
96
+
97
+ ## 📊 Event Example
98
+
99
+ ```json
100
+ {
101
+ "type": "backend_request",
102
+ "route": "/api/user/:id",
103
+ "status": 200,
104
+ "duration": 120,
105
+ "success": true
106
+ }
107
+ ```
108
+
109
+ ---
110
+
111
+ ## 🛠 Development
112
+
113
+ ```bash
114
+ npm run build
115
+ npm run typecheck
116
+ ```
117
+
118
+ ---
119
+
120
+ ## 📄 License
121
+
122
+ MIT
@@ -0,0 +1,44 @@
1
+ import type { IncomingHttpHeaders } from "node:http";
2
+ export interface PhylacoNodeOptions {
3
+ ingestUrl: string;
4
+ projectKey: string;
5
+ serviceName?: string;
6
+ capturePathPrefix?: string;
7
+ debug?: boolean;
8
+ }
9
+ interface ExpressLikeRequest {
10
+ originalUrl?: string;
11
+ url?: string;
12
+ method: string;
13
+ headers: IncomingHttpHeaders;
14
+ user?: {
15
+ id?: string;
16
+ };
17
+ admin?: {
18
+ id?: string;
19
+ };
20
+ }
21
+ interface ExpressLikeResponse {
22
+ statusCode: number;
23
+ send(body?: unknown): unknown;
24
+ }
25
+ type ExpressLikeNext = () => void;
26
+ type ExpressLikeApp = {
27
+ use(handler: (req: ExpressLikeRequest, res: ExpressLikeResponse, next: ExpressLikeNext) => void): void;
28
+ };
29
+ export declare class PhylacoNode {
30
+ private options;
31
+ private transport;
32
+ private initialized;
33
+ init(app: ExpressLikeApp, options: PhylacoNodeOptions): void;
34
+ identify(userId: string | null): void;
35
+ reset(): void;
36
+ private shouldCapture;
37
+ private captureRequest;
38
+ }
39
+ export declare const phylacoNode: PhylacoNode;
40
+ export declare const init: (app: ExpressLikeApp, options: PhylacoNodeOptions) => void;
41
+ export declare const identify: (userId: string | null) => void;
42
+ export declare const reset: () => void;
43
+ export {};
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAoBrD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAOD,UAAU,kBAAkB;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,mBAAmB,CAAC;IAC7B,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvB,KAAK,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B;AAED,KAAK,eAAe,GAAG,MAAM,IAAI,CAAC;AAClC,KAAK,cAAc,GAAG;IACpB,GAAG,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,eAAe,KAAK,IAAI,GAAG,IAAI,CAAC;CACxG,CAAC;AAIF,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,WAAW,CAAS;IAE5B,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAsC5D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAKrC,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;CAiDvB;AAsCD,eAAO,MAAM,WAAW,aAAoB,CAAC;AAC7C,eAAO,MAAM,IAAI,QA5IL,cAAc,WAAW,kBAAkB,KAAG,IA4IJ,CAAC;AACvD,eAAO,MAAM,QAAQ,WAvGF,MAAM,GAAG,IAAI,KAAG,IAuG2B,CAAC;AAC/D,eAAO,MAAM,KAAK,QAnGP,IAmG6C,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,158 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { randomUUID } from "node:crypto";
3
+ import { HttpTransport, normalizePath, nowIso, redactRecord } from "@phylaco/core";
4
+ const SDK_NAME = "node";
5
+ const SDK_VERSION = "0.1.0";
6
+ const SENSITIVE_KEYS = [
7
+ "password",
8
+ "token",
9
+ "authorization",
10
+ "cookie",
11
+ "secret",
12
+ "apikey",
13
+ "accesstoken",
14
+ "refreshtoken",
15
+ ];
16
+ const requestStore = new AsyncLocalStorage();
17
+ export class PhylacoNode {
18
+ constructor() {
19
+ this.initialized = false;
20
+ }
21
+ init(app, options) {
22
+ if (this.initialized)
23
+ return;
24
+ this.options = {
25
+ serviceName: "node-service",
26
+ capturePathPrefix: "/api",
27
+ debug: false,
28
+ ...options,
29
+ };
30
+ this.transport = new HttpTransport({
31
+ ingestUrl: this.options.ingestUrl,
32
+ projectKey: this.options.projectKey,
33
+ sdkName: SDK_NAME,
34
+ sdkVersion: SDK_VERSION,
35
+ });
36
+ app.use((req, res, next) => {
37
+ if (!this.shouldCapture(req)) {
38
+ next();
39
+ return;
40
+ }
41
+ requestStore.run({ requestId: randomUUID(), userId: null }, () => {
42
+ const started = Date.now();
43
+ const originalSend = res.send;
44
+ const sdk = this;
45
+ res.send = function patchedSend(body) {
46
+ sdk.captureRequest(req, res, body, Date.now() - started);
47
+ return originalSend.call(this, body);
48
+ };
49
+ next();
50
+ });
51
+ });
52
+ this.initialized = true;
53
+ }
54
+ identify(userId) {
55
+ const store = requestStore.getStore();
56
+ if (store)
57
+ store.userId = userId;
58
+ }
59
+ reset() {
60
+ this.identify(null);
61
+ }
62
+ shouldCapture(req) {
63
+ const url = req.originalUrl || req.url || "";
64
+ return !this.options.capturePathPrefix || url.startsWith(this.options.capturePathPrefix);
65
+ }
66
+ captureRequest(req, res, body, durationMs) {
67
+ try {
68
+ const route = normalizePath(req.originalUrl || req.url || "");
69
+ const safeBody = redactRecord(parseBody(body), SENSITIVE_KEYS);
70
+ const success = extractSuccess(safeBody, res.statusCode);
71
+ const event = {
72
+ eventId: randomUUID(),
73
+ type: "backend_request",
74
+ event: "backend_request",
75
+ source: "backend",
76
+ userId: requestStore.getStore()?.userId || req.user?.id || req.admin?.id || null,
77
+ anonymousId: getAnonymousId(req.headers),
78
+ sessionId: null,
79
+ traceId: null,
80
+ clientTraceId: getHeader(req.headers, "x-phylaco-trace-id") || randomUUID(),
81
+ timestamp: nowIso(),
82
+ sdk: {
83
+ name: SDK_NAME,
84
+ version: SDK_VERSION,
85
+ },
86
+ context: {
87
+ serviceName: this.options.serviceName,
88
+ requestId: requestStore.getStore()?.requestId || null,
89
+ userAgent: getHeader(req.headers, "user-agent"),
90
+ referer: getHeader(req.headers, "referer"),
91
+ },
92
+ properties: {
93
+ route,
94
+ method: req.method,
95
+ status: res.statusCode,
96
+ statusCode: res.statusCode,
97
+ duration: durationMs,
98
+ durationMs,
99
+ success,
100
+ message: extractMessage(safeBody) || `${req.method} ${route}`,
101
+ errorType: success ? null : res.statusCode >= 500 ? "system_error" : "business_error",
102
+ },
103
+ };
104
+ if (this.options.debug)
105
+ console.log("PHYLACO BACKEND EVENT", event);
106
+ void this.transport.send({ events: [event] }).then((ok) => {
107
+ if (!ok && this.options.debug) {
108
+ console.warn("Phylaco ingest unavailable; telemetry dropped");
109
+ }
110
+ });
111
+ }
112
+ catch (error) {
113
+ if (this.options.debug)
114
+ console.warn("Phylaco internal error", error);
115
+ }
116
+ }
117
+ }
118
+ function parseBody(body) {
119
+ if (typeof body !== "string")
120
+ return body;
121
+ try {
122
+ return JSON.parse(body);
123
+ }
124
+ catch {
125
+ return null;
126
+ }
127
+ }
128
+ function extractSuccess(body, status) {
129
+ if (body && typeof body === "object" && "success" in body && typeof body.success === "boolean") {
130
+ return body.success;
131
+ }
132
+ return status >= 200 && status < 300;
133
+ }
134
+ function extractMessage(body) {
135
+ if (!body || typeof body !== "object")
136
+ return null;
137
+ const record = body;
138
+ const value = record.message || record.error || record.msg;
139
+ return typeof value === "string" ? value : null;
140
+ }
141
+ function getHeader(headers, key) {
142
+ const value = headers[key.toLowerCase()];
143
+ if (Array.isArray(value))
144
+ return value[0] || null;
145
+ return value || null;
146
+ }
147
+ function getAnonymousId(headers) {
148
+ const cookie = getHeader(headers, "cookie");
149
+ if (!cookie)
150
+ return null;
151
+ const match = cookie.match(/(?:^|;\s*)ph_anonymous_id=([^;]+)/);
152
+ return match?.[1] || null;
153
+ }
154
+ export const phylacoNode = new PhylacoNode();
155
+ export const init = phylacoNode.init.bind(phylacoNode);
156
+ export const identify = phylacoNode.identify.bind(phylacoNode);
157
+ export const reset = phylacoNode.reset.bind(phylacoNode);
158
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "@phylaco/node",
3
+ "version": "0.1.0",
4
+ "description": "Phylaco Node telemetry SDK",
5
+ "type": "module",
6
+
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "LICENSE",
21
+ "CHANGELOG.md"
22
+ ],
23
+
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
27
+
28
+ "sideEffects": false,
29
+
30
+ "dependencies": {
31
+ "@phylaco/contracts": "0.1.0",
32
+ "@phylaco/core": "0.1.0"
33
+ },
34
+
35
+ "peerDependencies": {
36
+ "express": ">=4"
37
+ },
38
+
39
+ "peerDependenciesMeta": {
40
+ "express": {
41
+ "optional": true
42
+ }
43
+ },
44
+
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "typecheck": "tsc -p tsconfig.json --noEmit",
48
+ "prepublishOnly": "npm run build"
49
+ },
50
+
51
+ "engines": {
52
+ "node": ">=18"
53
+ },
54
+
55
+ "keywords": [
56
+ "phylaco",
57
+ "analytics",
58
+ "telemetry",
59
+ "observability",
60
+ "sdk"
61
+ ],
62
+
63
+ "license": "MIT"
64
+ }