Skip to content

Commit 6148edb

Browse files
author
Fran Montiel
authored
Merge pull request #45 from bugfender/feature/add-bugfender-types-pckg
Add `@bugfender/types` and use the provided types & helpers
2 parents 1ea9800 + 473e034 commit 6148edb

15 files changed

Lines changed: 54 additions & 290 deletions

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
16.15

package.json

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -115,17 +115,19 @@
115115
"prettier"
116116
],
117117
"rules": {
118-
"prettier/prettier": [
119-
"error",
120-
{
121-
"quoteProps": "consistent",
122-
"singleQuote": true,
123-
"tabWidth": 2,
124-
"trailingComma": "es5",
125-
"useTabs": false
118+
"prettier/prettier": "off"
119+
},
120+
"overrides": [
121+
{
122+
"files": [
123+
"*.ts",
124+
"*.tsx"
125+
],
126+
"rules": {
127+
"no-dupe-class-members": "off"
126128
}
127-
]
128-
}
129+
}
130+
]
129131
},
130132
"eslintIgnore": [
131133
"node_modules/",
@@ -153,7 +155,7 @@
153155
]
154156
},
155157
"dependencies": {
156-
"@bugfender/sdk": "^2.1.0",
157-
"util": "^0.12.4"
158+
"@bugfender/common": "1.0.0-alpha.0",
159+
"@bugfender/sdk": "^2.1.0"
158160
}
159161
}

src/bugfender.ts

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import { NativeModules, Platform } from 'react-native';
2+
import { BugfenderFacade, DeviceKeyValue, LogEntry, LogLevel, PrintToConsole, UserFeedbackResult, format } from '@bugfender/common';
23
import type { ISDKOptions } from './types/sdk-options';
3-
import type { UserFeedbackOptions, UserFeedbackResult } from './user-feedback';
4+
import type { UserFeedbackOptions } from './user-feedback';
45
import { DefaultUserFeedbackOptions } from './user-feedback';
5-
import type { DeviceKeyValue } from './types/device';
6-
import type { ILogEntry } from './types/log';
7-
import { StringFormatter } from './string-formatter';
8-
import { LogLevel } from './types/log';
9-
import { PrintToConsole } from './print-to-console';
106
import { SDKOptions } from './sdk-options';
117

128
const LINKING_ERROR =
@@ -26,8 +22,7 @@ const RnBugfender = NativeModules.RnBugfender
2622
}
2723
);
2824

29-
class BugfenderClass {
30-
private stringFormatter = new StringFormatter();
25+
class BugfenderClass implements BugfenderFacade {
3126
private overrideConsoleMethods =
3227
new (require('./override-console-methods').OverrideConsoleMethods)(window);
3328
private printToConsole = new PrintToConsole(global.console);
@@ -56,7 +51,7 @@ class BugfenderClass {
5651
: RnBugfender.init(validatedOptions.appKey, validatedOptions.printToConsole ?? false);
5752

5853
if (validatedOptions.overrideConsoleMethods) {
59-
this.overrideConsoleMethods.init(this.stringFormatter);
54+
this.overrideConsoleMethods.init();
6055
}
6156

6257
this.printToConsole.init(validatedOptions.printToConsole ?? true);
@@ -160,7 +155,7 @@ class BugfenderClass {
160155
public log(...parameters: unknown[]): void {
161156
this.printToConsole.log(...parameters);
162157

163-
let message = this.stringFormatter.format([...parameters]);
158+
let message = format([...parameters]);
164159
RnBugfender.debug('', message);
165160
}
166161

@@ -179,7 +174,7 @@ class BugfenderClass {
179174
public warn(...parameters: unknown[]): void {
180175
this.printToConsole.warn(...parameters);
181176

182-
let message = this.stringFormatter.format([...parameters]);
177+
let message = format([...parameters]);
183178
RnBugfender.warning('', message);
184179
}
185180

@@ -198,7 +193,7 @@ class BugfenderClass {
198193
public error(...parameters: unknown[]): void {
199194
this.printToConsole.error(...parameters);
200195

201-
let message = this.stringFormatter.format([...parameters]);
196+
let message = format([...parameters]);
202197
RnBugfender.error('', message);
203198
}
204199

@@ -217,7 +212,7 @@ class BugfenderClass {
217212
public trace(...parameters: unknown[]): void {
218213
this.printToConsole.trace(...parameters);
219214

220-
let message = this.stringFormatter.format([...parameters]);
215+
let message = format([...parameters]);
221216
RnBugfender.trace('', message);
222217
}
223218

@@ -236,7 +231,7 @@ class BugfenderClass {
236231
public info(...parameters: unknown[]): void {
237232
this.printToConsole.info(...parameters);
238233

239-
let message = this.stringFormatter.format([...parameters]);
234+
let message = format([...parameters]);
240235
RnBugfender.info('', message);
241236
}
242237

@@ -255,7 +250,7 @@ class BugfenderClass {
255250
public fatal(...parameters: unknown[]): void {
256251
this.printToConsole.error(...parameters);
257252

258-
let message = this.stringFormatter.format([...parameters]);
253+
let message = format([...parameters]);
259254
RnBugfender.fatal('', message);
260255
}
261256

@@ -274,7 +269,7 @@ class BugfenderClass {
274269
*
275270
* @param log Log object that complies with `ILogEntry` interface.
276271
*/
277-
public sendLog(log: ILogEntry): void {
272+
public sendLog(log: LogEntry): void {
278273
this.printToConsole.printLog(log);
279274

280275
RnBugfender.log(

src/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { LogLevel } from './types/log';
1+
import { LogLevel } from '@bugfender/common';
22
import { SDKOptionsBuilder } from './types/sdk-options';
33
import { BugfenderClass } from './bugfender';
44

src/index.web.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import { LogLevel } from './types/log';
21
import { SDKOptionsBuilder } from './types/sdk-options';
32
import { Bugfender } from '@bugfender/sdk';
3+
import type { LogLevel } from '@bugfender/common';
44

55
export { Bugfender, LogLevel, SDKOptionsBuilder };

src/override-console-methods.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
/* eslint-disable @typescript-eslint/no-explicit-any */
1+
import {format} from '@bugfender/common';
22
import {RnBugfender} from "./bugfender";
3-
import type {StringFormatter} from "./string-formatter";
43

54
/**
65
* Overrides the `window.console` methods in order to execute the Bugfender equivalent logging
@@ -12,39 +11,39 @@ export class OverrideConsoleMethods {
1211
) {
1312
}
1413

15-
public init(stringFormatter: StringFormatter): void {
14+
public init(): void {
1615

1716
(this.window as any).console = function (console: Console) {
1817
return {
1918
...console,
2019
log: function (...parameters: unknown[]) {
2120
console.log(...parameters);
22-
let message = stringFormatter.format([...parameters]);
21+
let message = format([...parameters]);
2322
RnBugfender.debug('', message);
2423
},
2524
debug: function (...parameters: unknown[]) {
2625
console.debug(...parameters);
27-
let message = stringFormatter.format([...parameters]);
26+
let message = format([...parameters]);
2827
RnBugfender.debug('', message);
2928
},
3029
trace: function (...parameters: unknown[]) {
3130
console.trace(...parameters);
32-
let message = stringFormatter.format([...parameters]);
31+
let message = format([...parameters]);
3332
RnBugfender.trace('', message);
3433
},
3534
info: function (...parameters: unknown[]) {
3635
console.info(...parameters);
37-
let message = stringFormatter.format([...parameters]);
36+
let message = format([...parameters]);
3837
RnBugfender.info('', message);
3938
},
4039
warn: function (...parameters: unknown[]) {
4140
console.warn(...parameters);
42-
let message = stringFormatter.format([...parameters]);
41+
let message = format([...parameters]);
4342
RnBugfender.warning('', message);
4443
},
4544
error: function (...parameters: unknown[]) {
4645
console.error(...parameters);
47-
let message = stringFormatter.format([...parameters]);
46+
let message = format([...parameters]);
4847
RnBugfender.error('', message);
4948
},
5049
};

src/print-to-console.ts

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/sdk-options.ts

Lines changed: 6 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import type {ISDKOptions} from "./types/sdk-options";
2-
import {removeUndefinedAttributes} from "./utilities";
2+
import {prepareOptions, validate, ValidationRules} from "@bugfender/common";
33

44
export class SDKOptions {
5-
protected rules = {
5+
protected rules: ValidationRules = {
66
appKey: ['required', 'string'],
77
apiURL: ['string', 'url'],
88
baseURL: ['string', 'url'],
@@ -15,11 +15,11 @@ export class SDKOptions {
1515
};
1616

1717
public init(options: ISDKOptions): ISDKOptions {
18-
// Validate user provided options
19-
this.validate(options);
18+
// Prepare options
19+
options = prepareOptions(options);
2020

21-
options = { ...options };
22-
removeUndefinedAttributes(options);
21+
// Validate user provided options
22+
validate(options, this.rules);
2323

2424
// Set default values if needed
2525
return {
@@ -32,33 +32,4 @@ export class SDKOptions {
3232
...options,
3333
};
3434
}
35-
36-
protected validate(options: ISDKOptions): void {
37-
const urlValidator = new RegExp(/^http(s)?:\/\//i);
38-
39-
Object.entries(this.rules).forEach(([key, rules]) => {
40-
// @ts-ignore
41-
const value = options[key];
42-
43-
rules.forEach(rule => {
44-
if (rule === 'required') {
45-
if (typeof value === 'undefined') {
46-
throw new Error(`Bugfender requires '${key}' option to initialize.`)
47-
}
48-
} else if (rule === 'string') {
49-
if (!['string', 'undefined'].includes(typeof value)) {
50-
throw new Error(`'${key}' option must be a string.`);
51-
}
52-
} else if (rule === 'url') {
53-
if (typeof value !== 'undefined' && !urlValidator.test(value)) {
54-
throw new Error(`'${key}' option must be a valid URL.`);
55-
}
56-
} else if (rule === 'boolean') {
57-
if (!['boolean', 'undefined'].includes(typeof value)) {
58-
throw new Error(`'${key}' option must be a boolean.`);
59-
}
60-
}
61-
})
62-
});
63-
}
6435
}

src/string-formatter.ts

Lines changed: 0 additions & 44 deletions
This file was deleted.

src/types/device.ts

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)