@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 +16 -0
- package/LICENSE +11 -0
- package/README.md +122 -0
- package/dist/index.d.ts +44 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -0
- package/dist/index.js.map +1 -0
- package/package.json +64 -0
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
|
package/dist/index.d.ts
ADDED
|
@@ -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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnF,MAAM,QAAQ,GAAG,MAAM,CAAC;AACxB,MAAM,WAAW,GAAG,OAAO,CAAC;AAE5B,MAAM,cAAc,GAAG;IACrB,UAAU;IACV,OAAO;IACP,eAAe;IACf,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,cAAc;CACf,CAAC;AAkCF,MAAM,YAAY,GAAG,IAAI,iBAAiB,EAAgB,CAAC;AAE3D,MAAM,OAAO,WAAW;IAAxB;QAGU,gBAAW,GAAG,KAAK,CAAC;IAuG9B,CAAC;IArGC,IAAI,CAAC,GAAmB,EAAE,OAA2B;QACnD,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,IAAI,CAAC,OAAO,GAAG;YACb,WAAW,EAAE,cAAc;YAC3B,iBAAiB,EAAE,MAAM;YACzB,KAAK,EAAE,KAAK;YACZ,GAAG,OAAO;SACX,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,IAAI,aAAa,CAAC;YACjC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACjC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU;YACnC,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,WAAW;SACxB,CAAC,CAAC;QAEH,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YAED,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE;gBAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;gBAC9B,MAAM,GAAG,GAAG,IAAI,CAAC;gBAEjB,GAAG,CAAC,IAAI,GAAG,SAAS,WAAW,CAAC,IAAc;oBAC5C,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC;oBACzD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACvC,CAAC,CAAC;gBAEF,IAAI,EAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,QAAQ,CAAC,MAAqB;QAC5B,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,KAAK;YAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,aAAa,CAAC,GAAuB;QAC3C,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3F,CAAC;IAEO,cAAc,CAAC,GAAuB,EAAE,GAAwB,EAAE,IAAa,EAAE,UAAkB;QACzG,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,QAAQ,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YACzD,MAAM,KAAK,GAAiB;gBAC1B,OAAO,EAAE,UAAU,EAAE;gBACrB,IAAI,EAAE,iBAAiB;gBACvB,KAAK,EAAE,iBAAiB;gBACxB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,IAAI;gBAChF,WAAW,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC;gBACxC,SAAS,EAAE,IAAI;gBACf,OAAO,EAAE,IAAI;gBACb,aAAa,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,oBAAoB,CAAC,IAAI,UAAU,EAAE;gBAC3E,SAAS,EAAE,MAAM,EAAE;gBACnB,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,WAAW;iBACrB;gBACD,OAAO,EAAE;oBACP,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;oBACrC,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,IAAI,IAAI;oBACrD,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC;oBAC/C,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC;iBAC3C;gBACD,UAAU,EAAE;oBACV,KAAK;oBACL,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,MAAM,EAAE,GAAG,CAAC,UAAU;oBACtB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,QAAQ,EAAE,UAAU;oBACpB,UAAU;oBACV,OAAO;oBACP,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,EAAE;oBAC7D,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB;iBACtF;aACF,CAAC;YAEF,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACpE,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;gBACxD,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAChE,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK;gBAAE,OAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF;AAED,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAa,EAAE,MAAc;IACnD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACD,OAAO,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;AACvC,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnD,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC;IAC3D,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,OAA4B,EAAE,GAAW;IAC1D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACzC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAClD,OAAO,KAAK,IAAI,IAAI,CAAC;AACvB,CAAC;AAED,SAAS,cAAc,CAAC,OAA4B;IAClD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAChE,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC"}
|
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
|
+
}
|