@duckbug/js 0.1.0 → 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/DuckBugConfig.cjs +18 -0
- package/dist/cjs/DuckBug/DuckBugProvider.cjs +88 -0
- package/dist/cjs/DuckBug/DuckBugService.cjs +59 -0
- package/dist/cjs/DuckBug/Log.cjs +18 -0
- package/dist/cjs/DuckBug/index.cjs +36 -0
- package/dist/cjs/SDK/DuckSDK.cjs +62 -0
- package/dist/cjs/SDK/LogLevel.cjs +42 -0
- package/dist/cjs/SDK/LogProvider.cjs +89 -0
- package/dist/cjs/SDK/LogProviderConfig.cjs +18 -0
- package/dist/cjs/SDK/Provider.cjs +18 -0
- package/dist/cjs/SDK/index.cjs +44 -0
- package/dist/cjs/index.cjs +69 -0
- package/dist/esm/DuckBug/DuckBugConfig.js +0 -0
- package/dist/esm/DuckBug/DuckBugProvider.js +32 -34
- package/dist/esm/DuckBug/DuckBugService.js +25 -0
- package/dist/esm/DuckBug/Log.js +0 -0
- package/dist/esm/DuckBug/index.js +2 -0
- package/dist/esm/SDK/DuckSDK.js +16 -11
- package/dist/esm/{Log → SDK}/LogLevel.js +3 -1
- package/dist/esm/SDK/LogProvider.js +55 -0
- package/dist/esm/SDK/LogProviderConfig.js +0 -0
- package/dist/esm/SDK/Provider.js +0 -0
- package/dist/esm/SDK/index.js +4 -1
- package/dist/esm/index.js +2 -3
- package/dist/types/DuckBug/DuckBugConfig.d.ts +3 -0
- package/dist/types/DuckBug/DuckBugProvider.d.ts +14 -0
- package/dist/types/DuckBug/DuckBugService.d.ts +12 -0
- package/dist/{cjs/Log → types/DuckBug}/Log.d.ts +1 -1
- package/dist/types/DuckBug/index.d.ts +2 -0
- package/dist/{esm → types}/SDK/DuckSDK.d.ts +5 -3
- package/dist/types/SDK/LogLevel.d.ts +2 -0
- package/dist/types/SDK/LogProvider.d.ts +13 -0
- package/dist/{esm/Provider → types/SDK}/Provider.d.ts +2 -1
- package/dist/{cjs/Log → types/SDK}/index.d.ts +2 -1
- package/dist/types/index.d.ts +2 -0
- package/package.json +27 -11
- package/dist/cjs/DuckBug/DuckBugProvider.d.ts +0 -11
- package/dist/cjs/DuckBug/DuckBugProvider.js +0 -71
- package/dist/cjs/Log/Log.js +0 -2
- package/dist/cjs/Log/LogLevel.d.ts +0 -2
- package/dist/cjs/Log/LogLevel.js +0 -9
- package/dist/cjs/Log/LogProvider.d.ts +0 -6
- package/dist/cjs/Log/LogProvider.js +0 -73
- package/dist/cjs/Log/LogProviderConfig.js +0 -2
- package/dist/cjs/Log/index.js +0 -7
- package/dist/cjs/Provider/Provider.d.ts +0 -7
- package/dist/cjs/Provider/Provider.js +0 -2
- package/dist/cjs/Provider/index.d.ts +0 -1
- package/dist/cjs/Provider/index.js +0 -2
- package/dist/cjs/SDK/DuckConfig.d.ts +0 -3
- package/dist/cjs/SDK/DuckConfig.js +0 -2
- package/dist/cjs/SDK/DuckSDK.d.ts +0 -10
- package/dist/cjs/SDK/DuckSDK.js +0 -40
- package/dist/cjs/SDK/index.d.ts +0 -2
- package/dist/cjs/SDK/index.js +0 -5
- package/dist/cjs/index.d.ts +0 -5
- package/dist/cjs/index.js +0 -22
- package/dist/esm/DuckBug/DuckBugProvider.d.ts +0 -11
- package/dist/esm/Log/Log.d.ts +0 -7
- package/dist/esm/Log/Log.js +0 -1
- package/dist/esm/Log/LogLevel.d.ts +0 -2
- package/dist/esm/Log/LogProvider.d.ts +0 -6
- package/dist/esm/Log/LogProvider.js +0 -60
- package/dist/esm/Log/LogProviderConfig.d.ts +0 -7
- package/dist/esm/Log/LogProviderConfig.js +0 -1
- package/dist/esm/Log/index.d.ts +0 -5
- package/dist/esm/Log/index.js +0 -2
- package/dist/esm/Provider/Provider.js +0 -1
- package/dist/esm/Provider/index.d.ts +0 -1
- package/dist/esm/Provider/index.js +0 -1
- package/dist/esm/SDK/DuckConfig.d.ts +0 -3
- package/dist/esm/SDK/DuckConfig.js +0 -1
- package/dist/esm/SDK/index.d.ts +0 -2
- package/dist/esm/index.d.ts +0 -5
- /package/dist/{cjs/Log → types/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**
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
DuckBugProvider: ()=>DuckBugProvider
|
|
28
|
+
});
|
|
29
|
+
const index_cjs_namespaceObject = require("../SDK/index.cjs");
|
|
30
|
+
const external_DuckBugService_cjs_namespaceObject = require("./DuckBugService.cjs");
|
|
31
|
+
class DuckBugProvider {
|
|
32
|
+
service;
|
|
33
|
+
constructor(config){
|
|
34
|
+
this.service = new external_DuckBugService_cjs_namespaceObject.DuckBugService(config);
|
|
35
|
+
}
|
|
36
|
+
warn(...args) {
|
|
37
|
+
this.service.sendLog({
|
|
38
|
+
time: this.getTimeStamp(),
|
|
39
|
+
level: index_cjs_namespaceObject.logLevel.WARN,
|
|
40
|
+
message: this.convertArgsToString(args[0]),
|
|
41
|
+
context: this.convertArgsToString(args.slice(1))
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
error(...args) {
|
|
45
|
+
this.service.sendLog({
|
|
46
|
+
time: this.getTimeStamp(),
|
|
47
|
+
level: index_cjs_namespaceObject.logLevel.ERROR,
|
|
48
|
+
message: this.convertArgsToString(args[0]),
|
|
49
|
+
context: this.convertArgsToString(args.slice(1))
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
log(...args) {
|
|
53
|
+
this.service.sendLog({
|
|
54
|
+
time: this.getTimeStamp(),
|
|
55
|
+
level: index_cjs_namespaceObject.logLevel.INFO,
|
|
56
|
+
message: this.convertArgsToString(args[0]),
|
|
57
|
+
context: this.convertArgsToString(args.slice(1))
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
report(tag, level, payload) {
|
|
61
|
+
this.service.sendLog({
|
|
62
|
+
time: this.getTimeStamp(),
|
|
63
|
+
level,
|
|
64
|
+
message: tag,
|
|
65
|
+
context: JSON.stringify(payload)
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
quack(tag, error) {
|
|
69
|
+
this.service.sendError({
|
|
70
|
+
stack: error.stack,
|
|
71
|
+
message: tag,
|
|
72
|
+
context: error.message
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
convertArgsToString(...args) {
|
|
76
|
+
return args.map((arg)=>"object" == typeof arg ? JSON.stringify(arg) : String(arg)).join(" ");
|
|
77
|
+
}
|
|
78
|
+
getTimeStamp() {
|
|
79
|
+
return Date.now();
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.DuckBugProvider = __webpack_exports__.DuckBugProvider;
|
|
83
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
84
|
+
"DuckBugProvider"
|
|
85
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
86
|
+
Object.defineProperty(exports, '__esModule', {
|
|
87
|
+
value: true
|
|
88
|
+
});
|
|
@@ -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
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
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
|
+
DuckBugProvider: ()=>external_DuckBugProvider_cjs_namespaceObject.DuckBugProvider
|
|
28
|
+
});
|
|
29
|
+
const external_DuckBugProvider_cjs_namespaceObject = require("./DuckBugProvider.cjs");
|
|
30
|
+
exports.DuckBugProvider = __webpack_exports__.DuckBugProvider;
|
|
31
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
32
|
+
"DuckBugProvider"
|
|
33
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
34
|
+
Object.defineProperty(exports, '__esModule', {
|
|
35
|
+
value: true
|
|
36
|
+
});
|
|
@@ -0,0 +1,62 @@
|
|
|
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
|
+
DuckSDK: ()=>DuckSDK
|
|
28
|
+
});
|
|
29
|
+
const external_index_cjs_namespaceObject = require("./index.cjs");
|
|
30
|
+
class DuckSDK {
|
|
31
|
+
providers;
|
|
32
|
+
constructor(providers, logProviderConfig){
|
|
33
|
+
this.providers = providers;
|
|
34
|
+
new external_index_cjs_namespaceObject.LogProvider(providers, logProviderConfig);
|
|
35
|
+
}
|
|
36
|
+
log(tag, payload) {
|
|
37
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
38
|
+
}
|
|
39
|
+
error(tag, payload) {
|
|
40
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
41
|
+
}
|
|
42
|
+
debug(tag, payload) {
|
|
43
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.DEBUG, payload);
|
|
44
|
+
}
|
|
45
|
+
warn(tag, payload) {
|
|
46
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.WARN, payload);
|
|
47
|
+
}
|
|
48
|
+
fatal(tag, payload) {
|
|
49
|
+
this.sendReportToPlugins(tag, external_index_cjs_namespaceObject.logLevel.FATAL, payload);
|
|
50
|
+
}
|
|
51
|
+
quack() {}
|
|
52
|
+
sendReportToPlugins(tag, level, payload) {
|
|
53
|
+
this.providers.forEach((plugin)=>plugin.report(tag, level, payload));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.DuckSDK = __webpack_exports__.DuckSDK;
|
|
57
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
58
|
+
"DuckSDK"
|
|
59
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
60
|
+
Object.defineProperty(exports, '__esModule', {
|
|
61
|
+
value: true
|
|
62
|
+
});
|
|
@@ -0,0 +1,42 @@
|
|
|
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
|
+
logLevel: ()=>logLevel
|
|
28
|
+
});
|
|
29
|
+
const logLevel = {
|
|
30
|
+
DEBUG: "DEBUG",
|
|
31
|
+
INFO: "INFO",
|
|
32
|
+
WARN: "WARN",
|
|
33
|
+
ERROR: "ERROR",
|
|
34
|
+
FATAL: "FATAL"
|
|
35
|
+
};
|
|
36
|
+
exports.logLevel = __webpack_exports__.logLevel;
|
|
37
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
38
|
+
"logLevel"
|
|
39
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
40
|
+
Object.defineProperty(exports, '__esModule', {
|
|
41
|
+
value: true
|
|
42
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
LogProvider: ()=>LogProvider
|
|
28
|
+
});
|
|
29
|
+
class LogProvider {
|
|
30
|
+
originalConsole = {
|
|
31
|
+
log: console.log,
|
|
32
|
+
error: console.error,
|
|
33
|
+
warn: console.warn
|
|
34
|
+
};
|
|
35
|
+
providers;
|
|
36
|
+
logProviderConfig = {
|
|
37
|
+
logReports: {
|
|
38
|
+
log: false,
|
|
39
|
+
warn: true,
|
|
40
|
+
error: true
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
constructor(providers, logProviderConfig){
|
|
44
|
+
if (logProviderConfig) this.logProviderConfig = logProviderConfig;
|
|
45
|
+
this.providers = providers;
|
|
46
|
+
this.initialize();
|
|
47
|
+
}
|
|
48
|
+
initialize() {
|
|
49
|
+
if (this.logProviderConfig.logReports.log) this.overrideLog();
|
|
50
|
+
if (this.logProviderConfig.logReports.warn) this.overrideWarn();
|
|
51
|
+
if (this.logProviderConfig.logReports.error) this.overrideError();
|
|
52
|
+
}
|
|
53
|
+
overrideError() {
|
|
54
|
+
console.error = (...args)=>{
|
|
55
|
+
this.originalConsole.error.apply(console, args);
|
|
56
|
+
this.callPlugins((plugin)=>{
|
|
57
|
+
plugin.error(args);
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
overrideLog() {
|
|
62
|
+
console.log = (...args)=>{
|
|
63
|
+
this.originalConsole.log.apply(console, args);
|
|
64
|
+
this.callPlugins((plugin)=>{
|
|
65
|
+
plugin.log(args);
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
overrideWarn() {
|
|
70
|
+
console.warn = (...args)=>{
|
|
71
|
+
this.originalConsole.warn.apply(console, args);
|
|
72
|
+
this.callPlugins((plugin)=>{
|
|
73
|
+
plugin.warn(args);
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
callPlugins(callback) {
|
|
78
|
+
this.providers.forEach((plugin)=>{
|
|
79
|
+
callback(plugin);
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.LogProvider = __webpack_exports__.LogProvider;
|
|
84
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
85
|
+
"LogProvider"
|
|
86
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
87
|
+
Object.defineProperty(exports, '__esModule', {
|
|
88
|
+
value: true
|
|
89
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
});
|