@syswatch/core 1.0.0 → 1.0.2

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,7 @@
1
+ # @syswatch/core
2
+
3
+ ## 1.0.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 3ff9f37: correction type
@@ -0,0 +1,111 @@
1
+ declare enum LogLevel {
2
+ DEBUG = "DEBUG",
3
+ INFO = "INFO",
4
+ SUCCESS = "SUCCESS",
5
+ FAILURE = "FAILURE",
6
+ WARN = "WARN",
7
+ ERROR = "ERROR",
8
+ CRITICAL = "CRITICAL"
9
+ }
10
+ interface CreateLogDto {
11
+ type: string;
12
+ level: LogLevel;
13
+ message?: string;
14
+ meta?: Record<string, any>;
15
+ environment?: string;
16
+ userId?: string;
17
+ ip?: string;
18
+ timestamp?: Date | string;
19
+ tags?: string[];
20
+ }
21
+ interface CreateMetricDto {
22
+ type: string;
23
+ value: number;
24
+ meta?: Record<string, any>;
25
+ environment?: string;
26
+ timestamp?: Date | string;
27
+ tags?: string[];
28
+ unit?: string;
29
+ }
30
+
31
+ type LogOptions = Omit<CreateLogDto, "level" | "message" | "type"> & {
32
+ type?: string;
33
+ };
34
+ declare class Logs {
35
+ private sendLog;
36
+ constructor(sendLog: (log: CreateLogDto) => Promise<void>);
37
+ /**
38
+ * Send a DEBUG log
39
+ * @param message Log message
40
+ * @param options Additional options (meta, tags, etc.)
41
+ */
42
+ debug(message: string, options?: LogOptions): Promise<void>;
43
+ /**
44
+ * Send an INFO log
45
+ * @param message Log message
46
+ * @param options Additional options (meta, tags, etc.)
47
+ */
48
+ info(message: string, options?: LogOptions): Promise<void>;
49
+ /**
50
+ * Send a SUCCESS log
51
+ * @param message Log message
52
+ * @param options Additional options (meta, tags, etc.)
53
+ */
54
+ success(message: string, options?: LogOptions): Promise<void>;
55
+ /**
56
+ * Send a FAILURE log
57
+ * @param message Log message
58
+ * @param options Additional options (meta, tags, etc.)
59
+ */
60
+ failure(message: string, options?: LogOptions): Promise<void>;
61
+ /**
62
+ * Send a WARN log
63
+ * @param message Log message
64
+ * @param options Additional options (meta, tags, etc.)
65
+ */
66
+ warn(message: string, options?: LogOptions): Promise<void>;
67
+ /**
68
+ * Send an ERROR log with smart error handling
69
+ * @param message Log message
70
+ * @param errorOrOptions Error object or options object
71
+ */
72
+ error(message: string, errorOrOptions?: Error | (Omit<CreateLogDto, "level" | "message" | "type"> & {
73
+ type?: string;
74
+ })): Promise<void>;
75
+ /**
76
+ * Send a CRITICAL log
77
+ * @param message Log message
78
+ * @param options Additional options (meta, tags, etc.)
79
+ */
80
+ critical(message: string, options?: LogOptions): Promise<void>;
81
+ }
82
+
83
+ interface SysWatchConfig {
84
+ apiKey: string;
85
+ defaultMeta?: Record<string, any>;
86
+ defaultTags?: string[];
87
+ }
88
+ declare class SysWatch {
89
+ private apiKey;
90
+ private baseUrl;
91
+ private defaultMeta;
92
+ private defaultTags;
93
+ log: Logs;
94
+ constructor(config: SysWatchConfig);
95
+ private request;
96
+ /**
97
+ * Send a log entry to SysWatch
98
+ * @param data Log data
99
+ */
100
+ sendLog(data: CreateLogDto): Promise<any>;
101
+ /**
102
+ * Track a metric value
103
+ * @param type Metric type key
104
+ * @param value Metric value
105
+ * @param unit Unit of measurement (optional)
106
+ * @param options Additional options
107
+ */
108
+ trackMetric(type: string, value: number, unit?: string, options?: Omit<CreateMetricDto, "type" | "value" | "unit">): Promise<any>;
109
+ }
110
+
111
+ export { type CreateLogDto, type CreateMetricDto, LogLevel, SysWatch, type SysWatchConfig };
@@ -0,0 +1,111 @@
1
+ declare enum LogLevel {
2
+ DEBUG = "DEBUG",
3
+ INFO = "INFO",
4
+ SUCCESS = "SUCCESS",
5
+ FAILURE = "FAILURE",
6
+ WARN = "WARN",
7
+ ERROR = "ERROR",
8
+ CRITICAL = "CRITICAL"
9
+ }
10
+ interface CreateLogDto {
11
+ type: string;
12
+ level: LogLevel;
13
+ message?: string;
14
+ meta?: Record<string, any>;
15
+ environment?: string;
16
+ userId?: string;
17
+ ip?: string;
18
+ timestamp?: Date | string;
19
+ tags?: string[];
20
+ }
21
+ interface CreateMetricDto {
22
+ type: string;
23
+ value: number;
24
+ meta?: Record<string, any>;
25
+ environment?: string;
26
+ timestamp?: Date | string;
27
+ tags?: string[];
28
+ unit?: string;
29
+ }
30
+
31
+ type LogOptions = Omit<CreateLogDto, "level" | "message" | "type"> & {
32
+ type?: string;
33
+ };
34
+ declare class Logs {
35
+ private sendLog;
36
+ constructor(sendLog: (log: CreateLogDto) => Promise<void>);
37
+ /**
38
+ * Send a DEBUG log
39
+ * @param message Log message
40
+ * @param options Additional options (meta, tags, etc.)
41
+ */
42
+ debug(message: string, options?: LogOptions): Promise<void>;
43
+ /**
44
+ * Send an INFO log
45
+ * @param message Log message
46
+ * @param options Additional options (meta, tags, etc.)
47
+ */
48
+ info(message: string, options?: LogOptions): Promise<void>;
49
+ /**
50
+ * Send a SUCCESS log
51
+ * @param message Log message
52
+ * @param options Additional options (meta, tags, etc.)
53
+ */
54
+ success(message: string, options?: LogOptions): Promise<void>;
55
+ /**
56
+ * Send a FAILURE log
57
+ * @param message Log message
58
+ * @param options Additional options (meta, tags, etc.)
59
+ */
60
+ failure(message: string, options?: LogOptions): Promise<void>;
61
+ /**
62
+ * Send a WARN log
63
+ * @param message Log message
64
+ * @param options Additional options (meta, tags, etc.)
65
+ */
66
+ warn(message: string, options?: LogOptions): Promise<void>;
67
+ /**
68
+ * Send an ERROR log with smart error handling
69
+ * @param message Log message
70
+ * @param errorOrOptions Error object or options object
71
+ */
72
+ error(message: string, errorOrOptions?: Error | (Omit<CreateLogDto, "level" | "message" | "type"> & {
73
+ type?: string;
74
+ })): Promise<void>;
75
+ /**
76
+ * Send a CRITICAL log
77
+ * @param message Log message
78
+ * @param options Additional options (meta, tags, etc.)
79
+ */
80
+ critical(message: string, options?: LogOptions): Promise<void>;
81
+ }
82
+
83
+ interface SysWatchConfig {
84
+ apiKey: string;
85
+ defaultMeta?: Record<string, any>;
86
+ defaultTags?: string[];
87
+ }
88
+ declare class SysWatch {
89
+ private apiKey;
90
+ private baseUrl;
91
+ private defaultMeta;
92
+ private defaultTags;
93
+ log: Logs;
94
+ constructor(config: SysWatchConfig);
95
+ private request;
96
+ /**
97
+ * Send a log entry to SysWatch
98
+ * @param data Log data
99
+ */
100
+ sendLog(data: CreateLogDto): Promise<any>;
101
+ /**
102
+ * Track a metric value
103
+ * @param type Metric type key
104
+ * @param value Metric value
105
+ * @param unit Unit of measurement (optional)
106
+ * @param options Additional options
107
+ */
108
+ trackMetric(type: string, value: number, unit?: string, options?: Omit<CreateMetricDto, "type" | "value" | "unit">): Promise<any>;
109
+ }
110
+
111
+ export { type CreateLogDto, type CreateMetricDto, LogLevel, SysWatch, type SysWatchConfig };
package/dist/index.js CHANGED
@@ -1,18 +1,2 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./types"), exports);
18
- __exportStar(require("./client"), exports);
1
+ "use strict";var o=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var y=Object.prototype.hasOwnProperty;var m=(a,t)=>{for(var e in t)o(a,e,{get:t[e],enumerable:!0})},d=(a,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of u(t))!y.call(a,r)&&r!==e&&o(a,r,{get:()=>t[r],enumerable:!(s=p(t,r))||s.enumerable});return a};var h=a=>d(o({},"__esModule",{value:!0}),a);var f={};m(f,{LogLevel:()=>g,SysWatch:()=>l});module.exports=h(f);var g=(i=>(i.DEBUG="DEBUG",i.INFO="INFO",i.SUCCESS="SUCCESS",i.FAILURE="FAILURE",i.WARN="WARN",i.ERROR="ERROR",i.CRITICAL="CRITICAL",i))(g||{});var n=class{constructor(t){this.sendLog=t}async debug(t,e){return this.sendLog({type:"debug",level:"DEBUG",message:t,...e})}async info(t,e){return this.sendLog({type:"info",level:"INFO",message:t,...e})}async success(t,e){return this.sendLog({type:"success",level:"SUCCESS",message:t,...e})}async failure(t,e){return this.sendLog({type:"failure",level:"FAILURE",message:t,...e})}async warn(t,e){return this.sendLog({type:"warn",level:"WARN",message:t,...e})}async error(t,e){let s={},r={};return e instanceof Error?s={error:{name:e.name,message:e.message,stack:e.stack}}:e&&(r=e),this.sendLog({type:"error",level:"ERROR",message:t,...r,meta:{...s,...r.meta||{}}})}async critical(t,e){return this.sendLog({type:"critical",level:"CRITICAL",message:t,...e})}};var l=class{constructor(t){this.apiKey=t.apiKey,this.baseUrl="https://syswatchapp.discloud.app/v1",this.defaultMeta=t.defaultMeta||{},this.defaultTags=t.defaultTags||[],this.baseUrl.endsWith("/")&&(this.baseUrl=this.baseUrl.slice(0,-1)),this.log=new n(this.sendLog.bind(this))}async request(t,e){try{let s=await fetch(`${this.baseUrl}${t}`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.apiKey,"user-agent":"NodeJS SysWatch SDK "},body:JSON.stringify(e)});if(!s.ok){let r=await s.text();throw new Error(`SysWatch API Error: ${s.status} ${s.statusText} - ${r}`)}return await s.json()}catch(s){throw s}}async sendLog(t){let e={...t,meta:{...this.defaultMeta,...t.meta},tags:[...this.defaultTags,...t.tags||[]]};return this.request("/logs",e)}async trackMetric(t,e,s,r){let c={type:t,value:e,unit:s,...r,meta:{...this.defaultMeta,...r?.meta},tags:[...this.defaultTags,...r?.tags||[]]};return this.request("/metrics",c)}};0&&(module.exports={LogLevel,SysWatch});
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/types.ts","../src/logs.ts","../src/client.ts"],"sourcesContent":["export * from './types';\nexport * from './client';\n","export enum LogLevel {\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n FAILURE = 'FAILURE',\n WARN = 'WARN',\n ERROR = 'ERROR',\n CRITICAL = 'CRITICAL',\n}\n\nexport interface CreateLogDto {\n type: string;\n level: LogLevel;\n message?: string;\n meta?: Record<string, any>;\n environment?: string;\n userId?: string;\n ip?: string;\n timestamp?: Date | string;\n tags?: string[];\n}\n\nexport interface CreateMetricDto {\n type: string;\n value: number;\n meta?: Record<string, any>;\n environment?: string;\n timestamp?: Date | string;\n tags?: string[];\n unit?: string;\n}\n","import { CreateLogDto, LogLevel } from \"./types\";\n\ntype LogOptions = Omit<CreateLogDto, \"level\" | \"message\" | \"type\"> & {\n type?: string;\n};\n\nexport class Logs {\n constructor(private sendLog: (log: CreateLogDto) => Promise<void>) {}\n\n /**\n * Send a DEBUG log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async debug(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"debug\",\n level: LogLevel.DEBUG,\n message,\n ...options,\n });\n }\n\n /**\n * Send an INFO log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async info(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"info\",\n level: LogLevel.INFO,\n message,\n ...options,\n });\n }\n\n /**\n * Send a SUCCESS log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async success(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"success\",\n level: LogLevel.SUCCESS,\n message,\n ...options,\n });\n }\n /**\n * Send a FAILURE log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async failure(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"failure\",\n level: LogLevel.FAILURE,\n message,\n ...options,\n });\n }\n\n /**\n * Send a WARN log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async warn(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"warn\",\n level: LogLevel.WARN,\n message,\n ...options,\n });\n }\n\n /**\n * Send an ERROR log with smart error handling\n * @param message Log message\n * @param errorOrOptions Error object or options object\n */\n async error(\n message: string,\n errorOrOptions?:\n | Error\n | (Omit<CreateLogDto, \"level\" | \"message\" | \"type\"> & { type?: string })\n ) {\n let meta = {};\n let options: Partial<CreateLogDto> = {};\n\n if (errorOrOptions instanceof Error) {\n meta = {\n error: {\n name: errorOrOptions.name,\n message: errorOrOptions.message,\n stack: errorOrOptions.stack,\n },\n };\n } else if (errorOrOptions) {\n options = errorOrOptions;\n }\n\n return this.sendLog({\n type: \"error\",\n level: LogLevel.ERROR,\n message,\n ...options,\n meta: { ...meta, ...(options.meta || {}) },\n });\n }\n\n /**\n * Send a CRITICAL log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async critical(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"critical\",\n level: LogLevel.CRITICAL,\n message,\n ...options,\n });\n }\n}\n","import { Logs } from \"./logs\";\nimport { CreateLogDto, CreateMetricDto } from \"./types\";\n\nexport interface SysWatchConfig {\n apiKey: string;\n defaultMeta?: Record<string, any>;\n defaultTags?: string[];\n}\n\nexport class SysWatch {\n private apiKey: string;\n private baseUrl: string;\n private defaultMeta: Record<string, any>;\n private defaultTags: string[];\n\n public log: Logs;\n\n constructor(config: SysWatchConfig) {\n this.apiKey = config.apiKey;\n this.baseUrl = \"https://syswatchapp.discloud.app/v1\";\n this.defaultMeta = config.defaultMeta || {};\n this.defaultTags = config.defaultTags || [];\n\n if (this.baseUrl.endsWith(\"/\")) {\n this.baseUrl = this.baseUrl.slice(0, -1);\n }\n\n this.log = new Logs(this.sendLog.bind(this));\n }\n\n private async request(path: string, body: any) {\n try {\n const response = await fetch(`${this.baseUrl}${path}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-api-key\": this.apiKey,\n \"user-agent\": \"NodeJS SysWatch SDK \",\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(\n `SysWatch API Error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n return await response.json();\n } catch (error) {\n // Re-throw the error to let the caller handle it\n throw error;\n }\n }\n\n /**\n * Send a log entry to SysWatch\n * @param data Log data\n */\n async sendLog(data: CreateLogDto) {\n const payload: CreateLogDto = {\n ...data,\n meta: { ...this.defaultMeta, ...data.meta },\n tags: [...this.defaultTags, ...(data.tags || [])],\n };\n return this.request(\"/logs\", payload);\n }\n\n /**\n * Track a metric value\n * @param type Metric type key\n * @param value Metric value\n * @param unit Unit of measurement (optional)\n * @param options Additional options\n */\n async trackMetric(\n type: string,\n value: number,\n unit?: string,\n options?: Omit<CreateMetricDto, \"type\" | \"value\" | \"unit\">\n ) {\n const payload: CreateMetricDto = {\n type,\n value,\n unit,\n ...options,\n meta: { ...this.defaultMeta, ...options?.meta },\n tags: [...this.defaultTags, ...(options?.tags || [])],\n };\n return this.request(\"/metrics\", payload);\n }\n}\n"],"mappings":"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","names":["index_exports","__export","LogLevel","SysWatch","__toCommonJS","LogLevel","Logs","sendLog","message","options","errorOrOptions","meta","SysWatch","config","Logs","path","body","response","errorText","error","data","payload","type","value","unit","options"]}
package/dist/index.mjs ADDED
@@ -0,0 +1,2 @@
1
+ var n=(a=>(a.DEBUG="DEBUG",a.INFO="INFO",a.SUCCESS="SUCCESS",a.FAILURE="FAILURE",a.WARN="WARN",a.ERROR="ERROR",a.CRITICAL="CRITICAL",a))(n||{});var i=class{constructor(t){this.sendLog=t}async debug(t,e){return this.sendLog({type:"debug",level:"DEBUG",message:t,...e})}async info(t,e){return this.sendLog({type:"info",level:"INFO",message:t,...e})}async success(t,e){return this.sendLog({type:"success",level:"SUCCESS",message:t,...e})}async failure(t,e){return this.sendLog({type:"failure",level:"FAILURE",message:t,...e})}async warn(t,e){return this.sendLog({type:"warn",level:"WARN",message:t,...e})}async error(t,e){let s={},r={};return e instanceof Error?s={error:{name:e.name,message:e.message,stack:e.stack}}:e&&(r=e),this.sendLog({type:"error",level:"ERROR",message:t,...r,meta:{...s,...r.meta||{}}})}async critical(t,e){return this.sendLog({type:"critical",level:"CRITICAL",message:t,...e})}};var o=class{constructor(t){this.apiKey=t.apiKey,this.baseUrl="https://syswatchapp.discloud.app/v1",this.defaultMeta=t.defaultMeta||{},this.defaultTags=t.defaultTags||[],this.baseUrl.endsWith("/")&&(this.baseUrl=this.baseUrl.slice(0,-1)),this.log=new i(this.sendLog.bind(this))}async request(t,e){try{let s=await fetch(`${this.baseUrl}${t}`,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.apiKey,"user-agent":"NodeJS SysWatch SDK "},body:JSON.stringify(e)});if(!s.ok){let r=await s.text();throw new Error(`SysWatch API Error: ${s.status} ${s.statusText} - ${r}`)}return await s.json()}catch(s){throw s}}async sendLog(t){let e={...t,meta:{...this.defaultMeta,...t.meta},tags:[...this.defaultTags,...t.tags||[]]};return this.request("/logs",e)}async trackMetric(t,e,s,r){let l={type:t,value:e,unit:s,...r,meta:{...this.defaultMeta,...r?.meta},tags:[...this.defaultTags,...r?.tags||[]]};return this.request("/metrics",l)}};export{n as LogLevel,o as SysWatch};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/types.ts","../src/logs.ts","../src/client.ts"],"sourcesContent":["export enum LogLevel {\n DEBUG = 'DEBUG',\n INFO = 'INFO',\n SUCCESS = 'SUCCESS',\n FAILURE = 'FAILURE',\n WARN = 'WARN',\n ERROR = 'ERROR',\n CRITICAL = 'CRITICAL',\n}\n\nexport interface CreateLogDto {\n type: string;\n level: LogLevel;\n message?: string;\n meta?: Record<string, any>;\n environment?: string;\n userId?: string;\n ip?: string;\n timestamp?: Date | string;\n tags?: string[];\n}\n\nexport interface CreateMetricDto {\n type: string;\n value: number;\n meta?: Record<string, any>;\n environment?: string;\n timestamp?: Date | string;\n tags?: string[];\n unit?: string;\n}\n","import { CreateLogDto, LogLevel } from \"./types\";\n\ntype LogOptions = Omit<CreateLogDto, \"level\" | \"message\" | \"type\"> & {\n type?: string;\n};\n\nexport class Logs {\n constructor(private sendLog: (log: CreateLogDto) => Promise<void>) {}\n\n /**\n * Send a DEBUG log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async debug(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"debug\",\n level: LogLevel.DEBUG,\n message,\n ...options,\n });\n }\n\n /**\n * Send an INFO log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async info(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"info\",\n level: LogLevel.INFO,\n message,\n ...options,\n });\n }\n\n /**\n * Send a SUCCESS log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async success(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"success\",\n level: LogLevel.SUCCESS,\n message,\n ...options,\n });\n }\n /**\n * Send a FAILURE log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async failure(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"failure\",\n level: LogLevel.FAILURE,\n message,\n ...options,\n });\n }\n\n /**\n * Send a WARN log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async warn(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"warn\",\n level: LogLevel.WARN,\n message,\n ...options,\n });\n }\n\n /**\n * Send an ERROR log with smart error handling\n * @param message Log message\n * @param errorOrOptions Error object or options object\n */\n async error(\n message: string,\n errorOrOptions?:\n | Error\n | (Omit<CreateLogDto, \"level\" | \"message\" | \"type\"> & { type?: string })\n ) {\n let meta = {};\n let options: Partial<CreateLogDto> = {};\n\n if (errorOrOptions instanceof Error) {\n meta = {\n error: {\n name: errorOrOptions.name,\n message: errorOrOptions.message,\n stack: errorOrOptions.stack,\n },\n };\n } else if (errorOrOptions) {\n options = errorOrOptions;\n }\n\n return this.sendLog({\n type: \"error\",\n level: LogLevel.ERROR,\n message,\n ...options,\n meta: { ...meta, ...(options.meta || {}) },\n });\n }\n\n /**\n * Send a CRITICAL log\n * @param message Log message\n * @param options Additional options (meta, tags, etc.)\n */\n async critical(message: string, options?: LogOptions) {\n return this.sendLog({\n type: \"critical\",\n level: LogLevel.CRITICAL,\n message,\n ...options,\n });\n }\n}\n","import { Logs } from \"./logs\";\nimport { CreateLogDto, CreateMetricDto } from \"./types\";\n\nexport interface SysWatchConfig {\n apiKey: string;\n defaultMeta?: Record<string, any>;\n defaultTags?: string[];\n}\n\nexport class SysWatch {\n private apiKey: string;\n private baseUrl: string;\n private defaultMeta: Record<string, any>;\n private defaultTags: string[];\n\n public log: Logs;\n\n constructor(config: SysWatchConfig) {\n this.apiKey = config.apiKey;\n this.baseUrl = \"https://syswatchapp.discloud.app/v1\";\n this.defaultMeta = config.defaultMeta || {};\n this.defaultTags = config.defaultTags || [];\n\n if (this.baseUrl.endsWith(\"/\")) {\n this.baseUrl = this.baseUrl.slice(0, -1);\n }\n\n this.log = new Logs(this.sendLog.bind(this));\n }\n\n private async request(path: string, body: any) {\n try {\n const response = await fetch(`${this.baseUrl}${path}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"x-api-key\": this.apiKey,\n \"user-agent\": \"NodeJS SysWatch SDK \",\n },\n body: JSON.stringify(body),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new Error(\n `SysWatch API Error: ${response.status} ${response.statusText} - ${errorText}`\n );\n }\n\n return await response.json();\n } catch (error) {\n // Re-throw the error to let the caller handle it\n throw error;\n }\n }\n\n /**\n * Send a log entry to SysWatch\n * @param data Log data\n */\n async sendLog(data: CreateLogDto) {\n const payload: CreateLogDto = {\n ...data,\n meta: { ...this.defaultMeta, ...data.meta },\n tags: [...this.defaultTags, ...(data.tags || [])],\n };\n return this.request(\"/logs\", payload);\n }\n\n /**\n * Track a metric value\n * @param type Metric type key\n * @param value Metric value\n * @param unit Unit of measurement (optional)\n * @param options Additional options\n */\n async trackMetric(\n type: string,\n value: number,\n unit?: string,\n options?: Omit<CreateMetricDto, \"type\" | \"value\" | \"unit\">\n ) {\n const payload: CreateMetricDto = {\n type,\n value,\n unit,\n ...options,\n meta: { ...this.defaultMeta, ...options?.meta },\n tags: [...this.defaultTags, ...(options?.tags || [])],\n };\n return this.request(\"/metrics\", payload);\n }\n}\n"],"mappings":"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","names":["LogLevel","Logs","sendLog","message","options","errorOrOptions","meta","SysWatch","config","Logs","path","body","response","errorText","error","data","payload","type","value","unit","options"]}
package/jest.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { Config } from "jest";
2
+
3
+ const config: Config = {
4
+ preset: "ts-jest",
5
+ testEnvironment: "node",
6
+ testMatch: ["**/*.spec.ts"],
7
+ };
8
+
9
+ export default config;
package/package.json CHANGED
@@ -1,15 +1,28 @@
1
1
  {
2
2
  "name": "@syswatch/core",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "main": "dist/index.js",
5
+ "module": "dist/index.mjs",
5
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "require": "./dist/index.js",
11
+ "import": "./dist/index.mjs"
12
+ }
13
+ },
6
14
  "publishConfig": {
7
15
  "access": "public"
8
16
  },
9
17
  "scripts": {
10
- "build": "tsc"
18
+ "build": "tsup",
19
+ "test": "jest"
11
20
  },
12
21
  "devDependencies": {
22
+ "@types/jest": "^30.0.0",
23
+ "jest": "^30.2.0",
24
+ "ts-jest": "^29.4.6",
25
+ "tsup": "^8.5.1",
13
26
  "typescript": "^5.0.0"
14
27
  }
15
28
  }
@@ -1,5 +1,4 @@
1
1
  import { SysWatch } from "./client";
2
- import { LogLevel } from "./types";
3
2
  import { Logs } from "./logs";
4
3
 
5
4
  // Mock global fetch
@@ -8,7 +7,7 @@ global.fetch = mockFetch;
8
7
 
9
8
  describe("SysWatch", () => {
10
9
  const apiKey = "test-api-key";
11
- const defaultBaseUrl = "http://localhost:8080/v1";
10
+ const defaultBaseUrl = "https://syswatchapp.discloud.app/v1";
12
11
 
13
12
  beforeEach(() => {
14
13
  mockFetch.mockClear();
@@ -32,7 +31,6 @@ describe("SysWatch", () => {
32
31
  apiKey,
33
32
  defaultMeta,
34
33
  defaultTags,
35
- environment: "staging",
36
34
  });
37
35
 
38
36
  expect(client["defaultMeta"]).toEqual(defaultMeta);
@@ -57,6 +55,7 @@ describe("SysWatch", () => {
57
55
  headers: {
58
56
  "Content-Type": "application/json",
59
57
  "x-api-key": apiKey,
58
+ "user-agent": "NodeJS SysWatch SDK ",
60
59
  },
61
60
  body: expect.stringContaining('"level":"INFO"'),
62
61
  })
@@ -110,6 +109,7 @@ describe("SysWatch", () => {
110
109
  headers: {
111
110
  "Content-Type": "application/json",
112
111
  "x-api-key": apiKey,
112
+ "user-agent": "NodeJS SysWatch SDK ",
113
113
  },
114
114
  body: expect.any(String),
115
115
  });
package/src/client.ts CHANGED
@@ -5,7 +5,6 @@ export interface SysWatchConfig {
5
5
  apiKey: string;
6
6
  defaultMeta?: Record<string, any>;
7
7
  defaultTags?: string[];
8
- environment?: string;
9
8
  }
10
9
 
11
10
  export class SysWatch {
package/tsup.config.ts ADDED
@@ -0,0 +1,10 @@
1
+ import { defineConfig } from "tsup";
2
+
3
+ export default defineConfig({
4
+ entry: ["src/index.ts"],
5
+ format: ["cjs", "esm"],
6
+ dts: true,
7
+ clean: true,
8
+ minify: true,
9
+ sourcemap: true,
10
+ });
package/jest.config.js DELETED
@@ -1,6 +0,0 @@
1
- /** @type {import('ts-jest').JestConfigWithTsJest} */
2
- module.exports = {
3
- preset: 'ts-jest',
4
- testEnvironment: 'node',
5
- testMatch: ['**/*.spec.ts'],
6
- };