@duckbug/js 0.1.1 → 0.1.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/README.md +195 -30
- package/dist/cjs/DuckBug/DuckBugProvider.cjs +15 -16
- package/dist/cjs/DuckBug/DuckBugService.cjs +59 -0
- package/dist/cjs/{Log → DuckBug}/index.cjs +4 -8
- package/dist/cjs/SDK/DuckSDK.cjs +10 -6
- package/dist/cjs/{Log → SDK}/LogLevel.cjs +2 -1
- package/dist/cjs/{Log → SDK}/LogProvider.cjs +2 -2
- package/dist/cjs/SDK/index.cjs +9 -1
- package/dist/cjs/index.cjs +12 -24
- package/dist/esm/DuckBug/DuckBugProvider.js +15 -16
- package/dist/esm/DuckBug/DuckBugService.js +25 -0
- package/dist/esm/DuckBug/index.js +2 -0
- package/dist/esm/SDK/DuckSDK.js +5 -1
- package/dist/esm/{Log → SDK}/LogLevel.js +2 -1
- package/dist/esm/{Log → SDK}/LogProvider.js +2 -2
- package/dist/esm/SDK/index.js +3 -1
- package/dist/esm/index.js +2 -4
- package/dist/types/DuckBug/DuckBugConfig.d.ts +3 -0
- package/dist/types/DuckBug/DuckBugProvider.d.ts +6 -6
- package/dist/types/DuckBug/DuckBugService.d.ts +12 -0
- package/dist/types/{Log → DuckBug}/Log.d.ts +1 -1
- package/dist/types/DuckBug/index.d.ts +2 -0
- package/dist/types/SDK/DuckSDK.d.ts +3 -2
- package/dist/types/SDK/LogLevel.d.ts +2 -0
- package/dist/types/{Log → SDK}/LogProvider.d.ts +1 -1
- package/dist/types/{Provider → SDK}/Provider.d.ts +2 -1
- package/dist/types/SDK/index.d.ts +5 -1
- package/dist/types/index.d.ts +2 -5
- package/package.json +11 -8
- package/dist/cjs/SDK/DuckConfig.cjs +0 -18
- package/dist/esm/Log/index.js +0 -3
- package/dist/esm/SDK/DuckConfig.js +0 -0
- package/dist/types/Log/LogLevel.d.ts +0 -2
- package/dist/types/Log/index.d.ts +0 -5
- package/dist/types/Provider/index.d.ts +0 -1
- package/dist/types/SDK/DuckConfig.d.ts +0 -3
- /package/dist/cjs/{Log/Log.cjs → DuckBug/DuckBugConfig.cjs} +0 -0
- /package/dist/cjs/{Log/LogProviderConfig.cjs → DuckBug/Log.cjs} +0 -0
- /package/dist/cjs/{Provider/Provider.cjs → SDK/LogProviderConfig.cjs} +0 -0
- /package/dist/cjs/{Provider/index.cjs → SDK/Provider.cjs} +0 -0
- /package/dist/esm/{Log/Log.js → DuckBug/DuckBugConfig.js} +0 -0
- /package/dist/esm/{Log/LogProviderConfig.js → DuckBug/Log.js} +0 -0
- /package/dist/esm/{Provider/Provider.js → SDK/LogProviderConfig.js} +0 -0
- /package/dist/esm/{Provider/index.js → SDK/Provider.js} +0 -0
- /package/dist/types/{Log → SDK}/LogProviderConfig.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,30 +1,47 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @duckbug/js
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@duckbug/js)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
4
5
|
|
|
5
|
-
|
|
6
|
+
The official JavaScript SDK for [DuckBug.io](https://duckbug.io) - a flexible logging and error tracking platform.
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
yarn install
|
|
9
|
-
```
|
|
8
|
+
## Features
|
|
10
9
|
|
|
11
|
-
|
|
10
|
+
- 🦆 **Simple Integration**: Easy setup with DuckBug.io
|
|
11
|
+
- 🔌 **Provider Architecture**: Extensible plugin system for custom logging providers
|
|
12
|
+
- 📊 **Multiple Log Levels**: Support for debug, info, warn, and error levels
|
|
13
|
+
- 🎯 **TypeScript Support**: Full TypeScript support with type definitions
|
|
14
|
+
- 📦 **Dual Module Format**: Both CommonJS and ES Module support
|
|
15
|
+
- ⚡ **Lightweight**: Minimal dependencies and small bundle size
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
12
18
|
|
|
13
19
|
```bash
|
|
14
|
-
|
|
20
|
+
# npm
|
|
21
|
+
npm install @duckbug/js
|
|
22
|
+
|
|
23
|
+
# yarn
|
|
24
|
+
yarn add @duckbug/js
|
|
25
|
+
|
|
26
|
+
# pnpm
|
|
27
|
+
pnpm add @duckbug/js
|
|
15
28
|
```
|
|
16
29
|
|
|
30
|
+
## Quick Start
|
|
31
|
+
|
|
32
|
+
### Basic Usage
|
|
17
33
|
|
|
18
|
-
|
|
34
|
+
```typescript
|
|
35
|
+
import { DuckSDK, DuckBugProvider } from '@duckbug/js';
|
|
19
36
|
|
|
20
|
-
|
|
21
|
-
```ts
|
|
37
|
+
// Initialize with DuckBug.io provider
|
|
22
38
|
const providers = [
|
|
23
|
-
new
|
|
24
|
-
dsn:
|
|
39
|
+
new DuckBugProvider({
|
|
40
|
+
dsn: 'your-duckbug-dsn-here'
|
|
25
41
|
})
|
|
26
|
-
]
|
|
42
|
+
];
|
|
27
43
|
|
|
44
|
+
// Create SDK instance with optional configuration
|
|
28
45
|
const duck = new DuckSDK(providers, {
|
|
29
46
|
logReports: {
|
|
30
47
|
log: false,
|
|
@@ -33,33 +50,181 @@ const duck = new DuckSDK(providers, {
|
|
|
33
50
|
}
|
|
34
51
|
});
|
|
35
52
|
|
|
36
|
-
|
|
37
|
-
duck.
|
|
38
|
-
duck.
|
|
39
|
-
duck.
|
|
53
|
+
// Start logging
|
|
54
|
+
duck.log('Info message', { userId: 123, action: 'user_login' });
|
|
55
|
+
duck.debug('Debug message', { debugInfo: 'Connection established' });
|
|
56
|
+
duck.warn('Warning message', { warning: 'Rate limit approaching' });
|
|
57
|
+
duck.error('Error message', { error: 'Database connection failed' });
|
|
58
|
+
duck.fatal('Fatal message', { error: 'Ay, caramba' });
|
|
59
|
+
|
|
60
|
+
//Send error
|
|
61
|
+
const testError = new Error("Integration test error");
|
|
62
|
+
testError.stack =
|
|
63
|
+
"Error: Integration test error\n at integration.test.ts:1:1";
|
|
64
|
+
|
|
65
|
+
// Use quack method directly on provider
|
|
66
|
+
duckBugProvider.quack("INTEGRATION_ERROR", testError);
|
|
40
67
|
```
|
|
41
68
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
69
|
+
## API Reference
|
|
70
|
+
|
|
71
|
+
### DuckSDK
|
|
72
|
+
|
|
73
|
+
The main SDK class that manages logging across multiple providers.
|
|
74
|
+
|
|
75
|
+
#### Constructor
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
new DuckSDK(providers: Provider[], config?: LogProviderConfig)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- `providers`: Array of provider instances
|
|
82
|
+
- `config`: Optional configuration for log reporting levels
|
|
83
|
+
|
|
84
|
+
#### Methods
|
|
85
|
+
|
|
86
|
+
- `log(tag: string, payload?: object)`: Log an info-level message
|
|
87
|
+
- `debug(tag: string, payload?: object)`: Log a debug-level message
|
|
88
|
+
- `warn(tag: string, payload?: object)`: Log a warning-level message
|
|
89
|
+
- `error(tag: string, payload?: object)`: Log an error-level message
|
|
90
|
+
- `fatal(tag: string, payload?: object)`: Log an fatal-level message
|
|
91
|
+
- `quack(tag: string, error: Error)`: Report error
|
|
92
|
+
|
|
93
|
+
### DuckBugProvider
|
|
94
|
+
|
|
95
|
+
The official DuckBug.io provider for sending logs to the DuckBug.io platform.
|
|
96
|
+
|
|
97
|
+
#### Constructor
|
|
98
|
+
|
|
99
|
+
```typescript
|
|
100
|
+
new DuckBugProvider(config: DuckConfig)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
- `config.dsn`: Your DuckBug.io DSN (Data Source Name)
|
|
104
|
+
|
|
105
|
+
### Log Provider Configuration
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
type LogProviderConfig = {
|
|
109
|
+
logReports: {
|
|
110
|
+
log?: boolean; // Enable/disable info logs (default: false)
|
|
111
|
+
warn?: boolean; // Enable/disable warning logs (default: true)
|
|
112
|
+
error?: boolean; // Enable/disable error logs (default: true)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Custom Providers
|
|
118
|
+
|
|
119
|
+
You can create custom providers by implementing the `Provider` interface:
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
import { Provider, LogLevel } from '@duckbug/js';
|
|
123
|
+
|
|
124
|
+
class TelegramProvider implements Provider {
|
|
125
|
+
constructor(private botToken: string, private chatId: string) {}
|
|
126
|
+
|
|
45
127
|
log(...args: unknown[]): void {
|
|
46
|
-
|
|
128
|
+
this.sendToTelegram('📝', args);
|
|
47
129
|
}
|
|
130
|
+
|
|
48
131
|
warn(...args: unknown[]): void {
|
|
49
|
-
|
|
132
|
+
this.sendToTelegram('⚠️', args);
|
|
50
133
|
}
|
|
134
|
+
|
|
51
135
|
error(...args: unknown[]): void {
|
|
52
|
-
|
|
136
|
+
this.sendToTelegram('🚨', args);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
report(tag: string, level: LogLevel, payload?: object): void {
|
|
140
|
+
const emojiMap: Record<LogLevel, string> = {
|
|
141
|
+
INFO: '📝',
|
|
142
|
+
DEBUG: '🦆',
|
|
143
|
+
WARN: '⚠️',
|
|
144
|
+
ERROR: '🚨',
|
|
145
|
+
FATAL: '💀',
|
|
146
|
+
};
|
|
147
|
+
this.sendToTelegram(emojiMap[level], [tag, payload]);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
quack(tag: string, error: Error): void {
|
|
151
|
+
this.sendToTelegram('💀', [tag, error.message]);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
private sendToTelegram(emoji: string, args: unknown[]) {
|
|
155
|
+
const message = `${emoji} ${args.join(' ')}`;
|
|
156
|
+
// Implementation to send message to Telegram
|
|
157
|
+
fetch(`https://api.telegram.org/bot${this.botToken}/sendMessage`, {
|
|
158
|
+
method: 'POST',
|
|
159
|
+
headers: { 'Content-Type': 'application/json' },
|
|
160
|
+
body: JSON.stringify({
|
|
161
|
+
chat_id: this.chatId,
|
|
162
|
+
text: message
|
|
163
|
+
})
|
|
164
|
+
});
|
|
53
165
|
}
|
|
54
166
|
}
|
|
55
167
|
|
|
168
|
+
// Usage
|
|
56
169
|
const providers = [
|
|
57
|
-
new DuckBugProvider({
|
|
58
|
-
|
|
59
|
-
|
|
170
|
+
new DuckBugProvider({ dsn: 'your-dsn' }),
|
|
171
|
+
new TelegramProvider('your-bot-token', 'your-chat-id')
|
|
172
|
+
];
|
|
173
|
+
|
|
174
|
+
const duck = new DuckSDK(providers);
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Development
|
|
178
|
+
|
|
179
|
+
### Setup
|
|
180
|
+
|
|
181
|
+
Install dependencies:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
yarn install
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Build
|
|
188
|
+
|
|
189
|
+
Build the library:
|
|
60
190
|
|
|
61
|
-
|
|
62
|
-
|
|
191
|
+
```bash
|
|
192
|
+
yarn build
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Linting
|
|
196
|
+
|
|
197
|
+
Run linting:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
yarn lint
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## TypeScript Support
|
|
204
|
+
|
|
205
|
+
This package includes TypeScript definitions. All exports are fully typed:
|
|
63
206
|
|
|
64
|
-
|
|
207
|
+
```typescript
|
|
208
|
+
import type { Provider, DuckConfig, LogLevel } from '@duckbug/js';
|
|
65
209
|
```
|
|
210
|
+
|
|
211
|
+
## Browser Compatibility
|
|
212
|
+
|
|
213
|
+
This SDK works in all modern browsers that support:
|
|
214
|
+
- ES2015+ (ES6)
|
|
215
|
+
- Fetch API
|
|
216
|
+
- JSON API
|
|
217
|
+
|
|
218
|
+
For older browsers, you may need to include polyfills.
|
|
219
|
+
|
|
220
|
+
## License
|
|
221
|
+
|
|
222
|
+
MIT © [DuckBug.io](https://duckbug.io)
|
|
223
|
+
|
|
224
|
+
## Support
|
|
225
|
+
|
|
226
|
+
- 🐛 Issues: [GitHub Issues](https://github.com/duckbugio/duckbug-js/issues)
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
**Made with 🦆 by the DuckBug.io team**
|
|
@@ -26,14 +26,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
DuckBugProvider: ()=>DuckBugProvider
|
|
28
28
|
});
|
|
29
|
-
const index_cjs_namespaceObject = require("../
|
|
29
|
+
const index_cjs_namespaceObject = require("../SDK/index.cjs");
|
|
30
|
+
const external_DuckBugService_cjs_namespaceObject = require("./DuckBugService.cjs");
|
|
30
31
|
class DuckBugProvider {
|
|
31
|
-
|
|
32
|
+
service;
|
|
32
33
|
constructor(config){
|
|
33
|
-
this.
|
|
34
|
+
this.service = new external_DuckBugService_cjs_namespaceObject.DuckBugService(config);
|
|
34
35
|
}
|
|
35
36
|
warn(...args) {
|
|
36
|
-
this.sendLog({
|
|
37
|
+
this.service.sendLog({
|
|
37
38
|
time: this.getTimeStamp(),
|
|
38
39
|
level: index_cjs_namespaceObject.logLevel.WARN,
|
|
39
40
|
message: this.convertArgsToString(args[0]),
|
|
@@ -41,7 +42,7 @@ class DuckBugProvider {
|
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
error(...args) {
|
|
44
|
-
this.sendLog({
|
|
45
|
+
this.service.sendLog({
|
|
45
46
|
time: this.getTimeStamp(),
|
|
46
47
|
level: index_cjs_namespaceObject.logLevel.ERROR,
|
|
47
48
|
message: this.convertArgsToString(args[0]),
|
|
@@ -49,7 +50,7 @@ class DuckBugProvider {
|
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
log(...args) {
|
|
52
|
-
this.sendLog({
|
|
53
|
+
this.service.sendLog({
|
|
53
54
|
time: this.getTimeStamp(),
|
|
54
55
|
level: index_cjs_namespaceObject.logLevel.INFO,
|
|
55
56
|
message: this.convertArgsToString(args[0]),
|
|
@@ -57,28 +58,26 @@ class DuckBugProvider {
|
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
report(tag, level, payload) {
|
|
60
|
-
this.sendLog({
|
|
61
|
+
this.service.sendLog({
|
|
61
62
|
time: this.getTimeStamp(),
|
|
62
63
|
level,
|
|
63
64
|
message: tag,
|
|
64
65
|
context: JSON.stringify(payload)
|
|
65
66
|
});
|
|
66
67
|
}
|
|
68
|
+
quack(tag, error) {
|
|
69
|
+
this.service.sendError({
|
|
70
|
+
stack: error.stack,
|
|
71
|
+
message: tag,
|
|
72
|
+
context: error.message
|
|
73
|
+
});
|
|
74
|
+
}
|
|
67
75
|
convertArgsToString(...args) {
|
|
68
76
|
return args.map((arg)=>"object" == typeof arg ? JSON.stringify(arg) : String(arg)).join(" ");
|
|
69
77
|
}
|
|
70
78
|
getTimeStamp() {
|
|
71
79
|
return Date.now();
|
|
72
80
|
}
|
|
73
|
-
sendLog(logInfo) {
|
|
74
|
-
fetch(`${this.config.dsn}/logs`, {
|
|
75
|
-
method: "POST",
|
|
76
|
-
headers: {
|
|
77
|
-
"Content-Type": "application/json"
|
|
78
|
-
},
|
|
79
|
-
body: JSON.stringify(logInfo)
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
81
|
}
|
|
83
82
|
exports.DuckBugProvider = __webpack_exports__.DuckBugProvider;
|
|
84
83
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
DuckBugService: ()=>DuckBugService
|
|
28
|
+
});
|
|
29
|
+
class DuckBugService {
|
|
30
|
+
config;
|
|
31
|
+
constructor(config){
|
|
32
|
+
this.config = config;
|
|
33
|
+
}
|
|
34
|
+
sendLog(logInfo) {
|
|
35
|
+
fetch(`${this.config.dsn}/logs`, {
|
|
36
|
+
method: "POST",
|
|
37
|
+
headers: {
|
|
38
|
+
"Content-Type": "application/json"
|
|
39
|
+
},
|
|
40
|
+
body: JSON.stringify(logInfo)
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
sendError(errorInfo) {
|
|
44
|
+
fetch(`${this.config.dsn}/errors`, {
|
|
45
|
+
method: "POST",
|
|
46
|
+
headers: {
|
|
47
|
+
"Content-Type": "application/json"
|
|
48
|
+
},
|
|
49
|
+
body: JSON.stringify(errorInfo)
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.DuckBugService = __webpack_exports__.DuckBugService;
|
|
54
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
55
|
+
"DuckBugService"
|
|
56
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
57
|
+
Object.defineProperty(exports, '__esModule', {
|
|
58
|
+
value: true
|
|
59
|
+
});
|
|
@@ -24,16 +24,12 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
|
|
28
|
-
LogProvider: ()=>external_LogProvider_cjs_namespaceObject.LogProvider
|
|
27
|
+
DuckBugProvider: ()=>external_DuckBugProvider_cjs_namespaceObject.DuckBugProvider
|
|
29
28
|
});
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
exports.LogProvider = __webpack_exports__.LogProvider;
|
|
33
|
-
exports.logLevel = __webpack_exports__.logLevel;
|
|
29
|
+
const external_DuckBugProvider_cjs_namespaceObject = require("./DuckBugProvider.cjs");
|
|
30
|
+
exports.DuckBugProvider = __webpack_exports__.DuckBugProvider;
|
|
34
31
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
35
|
-
"
|
|
36
|
-
"logLevel"
|
|
32
|
+
"DuckBugProvider"
|
|
37
33
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
38
34
|
Object.defineProperty(exports, '__esModule', {
|
|
39
35
|
value: true
|
package/dist/cjs/SDK/DuckSDK.cjs
CHANGED
|
@@ -26,25 +26,29 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
DuckSDK: ()=>DuckSDK
|
|
28
28
|
});
|
|
29
|
-
const
|
|
29
|
+
const external_index_cjs_namespaceObject = require("./index.cjs");
|
|
30
30
|
class DuckSDK {
|
|
31
31
|
providers;
|
|
32
32
|
constructor(providers, logProviderConfig){
|
|
33
33
|
this.providers = providers;
|
|
34
|
-
new
|
|
34
|
+
new external_index_cjs_namespaceObject.LogProvider(providers, logProviderConfig);
|
|
35
35
|
}
|
|
36
36
|
log(tag, payload) {
|
|
37
|
-
this.sendReportToPlugins(tag,
|
|
37
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
38
38
|
}
|
|
39
39
|
error(tag, payload) {
|
|
40
|
-
this.sendReportToPlugins(tag,
|
|
40
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
41
41
|
}
|
|
42
42
|
debug(tag, payload) {
|
|
43
|
-
this.sendReportToPlugins(tag,
|
|
43
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
44
44
|
}
|
|
45
45
|
warn(tag, payload) {
|
|
46
|
-
this.sendReportToPlugins(tag,
|
|
46
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.WARN, payload);
|
|
47
47
|
}
|
|
48
|
+
fatal(tag, payload) {
|
|
49
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.FATAL, payload);
|
|
50
|
+
}
|
|
51
|
+
quack() {}
|
|
48
52
|
sendReportToPlugins(tag, level, payload) {
|
|
49
53
|
this.providers.forEach((plugin)=>plugin.report(tag, level, payload));
|
|
50
54
|
}
|
|
@@ -40,8 +40,8 @@ class LogProvider {
|
|
|
40
40
|
error: true
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
|
-
constructor(providers, logProviderConfig
|
|
44
|
-
this.logProviderConfig = logProviderConfig;
|
|
43
|
+
constructor(providers, logProviderConfig){
|
|
44
|
+
if (logProviderConfig) this.logProviderConfig = logProviderConfig;
|
|
45
45
|
this.providers = providers;
|
|
46
46
|
this.initialize();
|
|
47
47
|
}
|
package/dist/cjs/SDK/index.cjs
CHANGED
|
@@ -24,12 +24,20 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
LogProvider: ()=>external_LogProvider_cjs_namespaceObject.LogProvider,
|
|
28
|
+
logLevel: ()=>external_LogLevel_cjs_namespaceObject.logLevel,
|
|
27
29
|
DuckSDK: ()=>external_DuckSDK_cjs_namespaceObject.DuckSDK
|
|
28
30
|
});
|
|
29
31
|
const external_DuckSDK_cjs_namespaceObject = require("./DuckSDK.cjs");
|
|
32
|
+
const external_LogLevel_cjs_namespaceObject = require("./LogLevel.cjs");
|
|
33
|
+
const external_LogProvider_cjs_namespaceObject = require("./LogProvider.cjs");
|
|
30
34
|
exports.DuckSDK = __webpack_exports__.DuckSDK;
|
|
35
|
+
exports.LogProvider = __webpack_exports__.LogProvider;
|
|
36
|
+
exports.logLevel = __webpack_exports__.logLevel;
|
|
31
37
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
32
|
-
"DuckSDK"
|
|
38
|
+
"DuckSDK",
|
|
39
|
+
"LogProvider",
|
|
40
|
+
"logLevel"
|
|
33
41
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
34
42
|
Object.defineProperty(exports, '__esModule', {
|
|
35
43
|
value: true
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __webpack_modules__ = {
|
|
3
|
-
"./DuckBug
|
|
4
|
-
module.exports = require("./DuckBug/
|
|
5
|
-
},
|
|
6
|
-
"./Log": function(module) {
|
|
7
|
-
module.exports = require("./Log/index.cjs");
|
|
3
|
+
"./DuckBug": function(module) {
|
|
4
|
+
module.exports = require("./DuckBug/index.cjs");
|
|
8
5
|
},
|
|
9
6
|
"./SDK": function(module) {
|
|
10
7
|
module.exports = require("./SDK/index.cjs");
|
|
@@ -53,29 +50,20 @@ function __webpack_require__(moduleId) {
|
|
|
53
50
|
var __webpack_exports__ = {};
|
|
54
51
|
(()=>{
|
|
55
52
|
__webpack_require__.r(__webpack_exports__);
|
|
56
|
-
__webpack_require__
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
53
|
+
var _DuckBug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("./DuckBug");
|
|
54
|
+
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
55
|
+
for(var __WEBPACK_IMPORT_KEY__ in _DuckBug__WEBPACK_IMPORTED_MODULE_0__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
56
|
+
return _DuckBug__WEBPACK_IMPORTED_MODULE_0__[key];
|
|
57
|
+
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
58
|
+
__webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
|
|
59
|
+
var _SDK__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("./SDK");
|
|
62
60
|
var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
63
|
-
for(var __WEBPACK_IMPORT_KEY__ in
|
|
64
|
-
|
|
65
|
-
"DuckSDK",
|
|
66
|
-
"default"
|
|
67
|
-
].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
68
|
-
return _Log__WEBPACK_IMPORTED_MODULE_1__[key];
|
|
61
|
+
for(var __WEBPACK_IMPORT_KEY__ in _SDK__WEBPACK_IMPORTED_MODULE_1__)if ("default" !== __WEBPACK_IMPORT_KEY__) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = (function(key) {
|
|
62
|
+
return _SDK__WEBPACK_IMPORTED_MODULE_1__[key];
|
|
69
63
|
}).bind(0, __WEBPACK_IMPORT_KEY__);
|
|
70
64
|
__webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
|
|
71
|
-
var _SDK__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("./SDK");
|
|
72
65
|
})();
|
|
73
|
-
exports
|
|
74
|
-
exports.DuckSDK = __webpack_exports__.DuckSDK;
|
|
75
|
-
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
76
|
-
"DuckBugProvider",
|
|
77
|
-
"DuckSDK"
|
|
78
|
-
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
66
|
+
for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
79
67
|
Object.defineProperty(exports, '__esModule', {
|
|
80
68
|
value: true
|
|
81
69
|
});
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { logLevel } from "../
|
|
1
|
+
import { logLevel } from "../SDK/index.js";
|
|
2
|
+
import { DuckBugService } from "./DuckBugService.js";
|
|
2
3
|
class DuckBugProvider {
|
|
3
|
-
|
|
4
|
+
service;
|
|
4
5
|
constructor(config){
|
|
5
|
-
this.
|
|
6
|
+
this.service = new DuckBugService(config);
|
|
6
7
|
}
|
|
7
8
|
warn(...args) {
|
|
8
|
-
this.sendLog({
|
|
9
|
+
this.service.sendLog({
|
|
9
10
|
time: this.getTimeStamp(),
|
|
10
11
|
level: logLevel.WARN,
|
|
11
12
|
message: this.convertArgsToString(args[0]),
|
|
@@ -13,7 +14,7 @@ class DuckBugProvider {
|
|
|
13
14
|
});
|
|
14
15
|
}
|
|
15
16
|
error(...args) {
|
|
16
|
-
this.sendLog({
|
|
17
|
+
this.service.sendLog({
|
|
17
18
|
time: this.getTimeStamp(),
|
|
18
19
|
level: logLevel.ERROR,
|
|
19
20
|
message: this.convertArgsToString(args[0]),
|
|
@@ -21,7 +22,7 @@ class DuckBugProvider {
|
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
log(...args) {
|
|
24
|
-
this.sendLog({
|
|
25
|
+
this.service.sendLog({
|
|
25
26
|
time: this.getTimeStamp(),
|
|
26
27
|
level: logLevel.INFO,
|
|
27
28
|
message: this.convertArgsToString(args[0]),
|
|
@@ -29,27 +30,25 @@ class DuckBugProvider {
|
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
report(tag, level, payload) {
|
|
32
|
-
this.sendLog({
|
|
33
|
+
this.service.sendLog({
|
|
33
34
|
time: this.getTimeStamp(),
|
|
34
35
|
level,
|
|
35
36
|
message: tag,
|
|
36
37
|
context: JSON.stringify(payload)
|
|
37
38
|
});
|
|
38
39
|
}
|
|
40
|
+
quack(tag, error) {
|
|
41
|
+
this.service.sendError({
|
|
42
|
+
stack: error.stack,
|
|
43
|
+
message: tag,
|
|
44
|
+
context: error.message
|
|
45
|
+
});
|
|
46
|
+
}
|
|
39
47
|
convertArgsToString(...args) {
|
|
40
48
|
return args.map((arg)=>"object" == typeof arg ? JSON.stringify(arg) : String(arg)).join(" ");
|
|
41
49
|
}
|
|
42
50
|
getTimeStamp() {
|
|
43
51
|
return Date.now();
|
|
44
52
|
}
|
|
45
|
-
sendLog(logInfo) {
|
|
46
|
-
fetch(`${this.config.dsn}/logs`, {
|
|
47
|
-
method: "POST",
|
|
48
|
-
headers: {
|
|
49
|
-
"Content-Type": "application/json"
|
|
50
|
-
},
|
|
51
|
-
body: JSON.stringify(logInfo)
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
53
|
}
|
|
55
54
|
export { DuckBugProvider };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
class DuckBugService {
|
|
2
|
+
config;
|
|
3
|
+
constructor(config){
|
|
4
|
+
this.config = config;
|
|
5
|
+
}
|
|
6
|
+
sendLog(logInfo) {
|
|
7
|
+
fetch(`${this.config.dsn}/logs`, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: {
|
|
10
|
+
"Content-Type": "application/json"
|
|
11
|
+
},
|
|
12
|
+
body: JSON.stringify(logInfo)
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
sendError(errorInfo) {
|
|
16
|
+
fetch(`${this.config.dsn}/errors`, {
|
|
17
|
+
method: "POST",
|
|
18
|
+
headers: {
|
|
19
|
+
"Content-Type": "application/json"
|
|
20
|
+
},
|
|
21
|
+
body: JSON.stringify(errorInfo)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export { DuckBugService };
|
package/dist/esm/SDK/DuckSDK.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LogProvider, logLevel } from "
|
|
1
|
+
import { LogProvider, logLevel } from "./index.js";
|
|
2
2
|
class DuckSDK {
|
|
3
3
|
providers;
|
|
4
4
|
constructor(providers, logProviderConfig){
|
|
@@ -17,6 +17,10 @@ class DuckSDK {
|
|
|
17
17
|
warn(tag, payload) {
|
|
18
18
|
this.sendReportToPlugins(tag, logLevel.WARN, payload);
|
|
19
19
|
}
|
|
20
|
+
fatal(tag, payload) {
|
|
21
|
+
this.sendReportToPlugins(tag, logLevel.FATAL, payload);
|
|
22
|
+
}
|
|
23
|
+
quack() {}
|
|
20
24
|
sendReportToPlugins(tag, level, payload) {
|
|
21
25
|
this.providers.forEach((plugin)=>plugin.report(tag, level, payload));
|
|
22
26
|
}
|
|
@@ -12,8 +12,8 @@ class LogProvider {
|
|
|
12
12
|
error: true
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
|
-
constructor(providers, logProviderConfig
|
|
16
|
-
this.logProviderConfig = logProviderConfig;
|
|
15
|
+
constructor(providers, logProviderConfig){
|
|
16
|
+
if (logProviderConfig) this.logProviderConfig = logProviderConfig;
|
|
17
17
|
this.providers = providers;
|
|
18
18
|
this.initialize();
|
|
19
19
|
}
|
package/dist/esm/SDK/index.js
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
1
|
+
import { type LogLevel, type Provider } from "../SDK";
|
|
2
|
+
import type { DuckBugConfig } from "./DuckBugConfig";
|
|
3
|
+
import { DuckBugService } from "./DuckBugService";
|
|
4
4
|
export declare class DuckBugProvider implements Provider {
|
|
5
|
-
|
|
6
|
-
constructor(config:
|
|
5
|
+
service: DuckBugService;
|
|
6
|
+
constructor(config: DuckBugConfig);
|
|
7
7
|
warn(...args: unknown[]): void;
|
|
8
8
|
error(...args: unknown[]): void;
|
|
9
9
|
log(...args: unknown[]): void;
|
|
10
10
|
report(tag: string, level: LogLevel, payload?: object): void;
|
|
11
|
+
quack(tag: string, error: Error): void;
|
|
11
12
|
private convertArgsToString;
|
|
12
13
|
private getTimeStamp;
|
|
13
|
-
private sendLog;
|
|
14
14
|
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DuckBugConfig } from "./DuckBugConfig";
|
|
2
|
+
import type { Log } from "./Log";
|
|
3
|
+
export declare class DuckBugService {
|
|
4
|
+
private config;
|
|
5
|
+
constructor(config: DuckBugConfig);
|
|
6
|
+
sendLog(logInfo: Log): void;
|
|
7
|
+
sendError(errorInfo: {
|
|
8
|
+
message: string;
|
|
9
|
+
stack?: string;
|
|
10
|
+
context: string;
|
|
11
|
+
}): void;
|
|
12
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { LogProviderConfig } from "
|
|
2
|
-
import type { Provider } from "../Provider";
|
|
1
|
+
import type { LogProviderConfig, Provider } from ".";
|
|
3
2
|
export declare class DuckSDK {
|
|
4
3
|
private providers;
|
|
5
4
|
constructor(providers: Array<Provider>, logProviderConfig?: LogProviderConfig);
|
|
@@ -7,5 +6,7 @@ export declare class DuckSDK {
|
|
|
7
6
|
error(tag: string, payload?: object): void;
|
|
8
7
|
debug(tag: string, payload?: object): void;
|
|
9
8
|
warn(tag: string, payload?: object): void;
|
|
9
|
+
fatal(tag: string, payload?: object): void;
|
|
10
|
+
quack(): void;
|
|
10
11
|
private sendReportToPlugins;
|
|
11
12
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import type { LogLevel } from "
|
|
1
|
+
import type { LogLevel } from "./LogLevel";
|
|
2
2
|
export interface Provider {
|
|
3
3
|
log(...args: unknown[]): void;
|
|
4
4
|
warn(...args: unknown[]): void;
|
|
5
5
|
error(...args: unknown[]): void;
|
|
6
6
|
report(tag: string, level: LogLevel, payload?: object): void;
|
|
7
|
+
quack(tag: string, error: Error): void;
|
|
7
8
|
}
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type { Provider } from "../SDK/Provider";
|
|
2
2
|
export { DuckSDK } from "./DuckSDK";
|
|
3
|
+
export type { LogLevel } from "./LogLevel";
|
|
4
|
+
export { logLevel } from "./LogLevel";
|
|
5
|
+
export { LogProvider } from "./LogProvider";
|
|
6
|
+
export type { LogProviderConfig } from "./LogProviderConfig";
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export * from "./
|
|
3
|
-
export type { Provider } from "./Provider/Provider";
|
|
4
|
-
export type { DuckConfig } from "./SDK";
|
|
5
|
-
export { DuckSDK } from "./SDK";
|
|
1
|
+
export * from "./DuckBug";
|
|
2
|
+
export * from "./SDK";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@duckbug/js",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/cjs/index.cjs",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -24,15 +24,18 @@
|
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "rslib build",
|
|
26
26
|
"lint": "yarn biome ci",
|
|
27
|
-
"prepare": "husky"
|
|
27
|
+
"prepare": "husky",
|
|
28
|
+
"test": "vitest run",
|
|
29
|
+
"publish": "yarn build && yarn npm publish"
|
|
28
30
|
},
|
|
29
31
|
"devDependencies": {
|
|
30
|
-
"@biomejs/biome": "
|
|
31
|
-
"@rslib/core": "
|
|
32
|
-
"husky": "
|
|
33
|
-
"pinst": "
|
|
34
|
-
"ts-node": "
|
|
35
|
-
"typescript": "
|
|
32
|
+
"@biomejs/biome": "2.1.1",
|
|
33
|
+
"@rslib/core": "0.10.6",
|
|
34
|
+
"husky": "9.1.7",
|
|
35
|
+
"pinst": "3.0.0",
|
|
36
|
+
"ts-node": "10.9.2",
|
|
37
|
+
"typescript": "5.8.3",
|
|
38
|
+
"vitest": "^3.2.4"
|
|
36
39
|
},
|
|
37
40
|
"packageManager": "yarn@3.8.7"
|
|
38
41
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.r = (exports1)=>{
|
|
5
|
-
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
6
|
-
value: 'Module'
|
|
7
|
-
});
|
|
8
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
9
|
-
value: true
|
|
10
|
-
});
|
|
11
|
-
};
|
|
12
|
-
})();
|
|
13
|
-
var __webpack_exports__ = {};
|
|
14
|
-
__webpack_require__.r(__webpack_exports__);
|
|
15
|
-
for(var __webpack_i__ in __webpack_exports__)exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
16
|
-
Object.defineProperty(exports, '__esModule', {
|
|
17
|
-
value: true
|
|
18
|
-
});
|
package/dist/esm/Log/index.js
DELETED
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export type { Provider } from "./Provider";
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|