Skip to content

Commit a508dc2

Browse files
committed
Remove typscript overrides as they were showing worse autocomplete suggestions
Compile typescript definitions separately since emit seems to be missing half the time?
1 parent 8a670e7 commit a508dc2

File tree

6 files changed

+29
-655
lines changed

6 files changed

+29
-655
lines changed

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"main": "dist/json.cjs",
3333
"module": "dist/json.module.js",
3434
"amdName": "OBSWebSocket",
35+
"jsdelivr": "dist/obs-ws.min.cjs",
3536
"unpkg": "dist/obs-ws.min.cjs",
3637
"types": "dist/json.d.ts",
3738
"engines": {
@@ -42,12 +43,14 @@
4243
],
4344
"scripts": {
4445
"build": "npm-run-all clean build:*",
45-
"build:bundle": "microbundle -f modern,esm,cjs --no-compress src/{json,msgpack}.ts",
46-
"build:unpkg": "microbundle -f iife src/unpkg.ts -o dist/obs-ws.min.js --external none",
46+
"build:bundle": "microbundle -f modern,esm,cjs --no-compress src/{json,msgpack}.ts --generateTypes false",
47+
"build:types": "tsc --emitDeclarationOnly",
48+
"build:unpkg": "microbundle -f iife src/unpkg.ts -o dist/obs-ws.min.js --external none --generateTypes false",
4749
"clean": "rimraf dist",
4850
"dev": "npm run build:bundle -- --watch",
4951
"generate:obs-types": "node --loader=ts-node/esm scripts/build-types.ts",
5052
"lint": "eslint . --ext .cjs,.js,.ts",
53+
"prepare": "npm run build",
5154
"report": "c8 report",
5255
"test": "c8 ava",
5356
"test:watch": "ava --watch"

scripts/build-types.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,15 +243,16 @@ export interface OBSRequestTypes {
243243
export interface OBSResponseTypes {
244244
${generateObsResponseTypes(protocol.requests)}
245245
}
246-
246+
`;
247+
/* typescript provides worse autocomplete results and errors with these
247248
// Overrides to improve typescript for requests without data and to provide documentation
248249
declare module './base' {
249250
interface BaseOBSWebSocket {
250251
${generateObsRequestOverrides(protocol.requests)}
251252
${generateObsListenerOverrides(protocol.events)}
252253
}
253254
}
254-
`;
255+
*/
255256

256257
const linter = new ESLint({fix: true});
257258
const linted = await linter.lintText(source, {
@@ -310,7 +311,7 @@ function generateObsEventTypes(events: OBSEvent[]): string {
310311
function generateObsRequestTypes(requests: OBSRequest[]): string {
311312
return requests.map(req => {
312313
if (req.requestFields.length === 0) {
313-
return `${req.requestType}: undefined;`;
314+
return `${req.requestType}: never;`;
314315
}
315316

316317
return `${req.requestType}: ${stringifyTypes(unflattenAndResolveTypes(req.requestFields))};`;
@@ -327,6 +328,7 @@ function generateObsResponseTypes(requests: OBSRequest[]): string {
327328
}).join('\n');
328329
}
329330

331+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
330332
function generateObsListenerOverrides(events: OBSEvent[]): string {
331333
return events.map(ev => {
332334
const jsdoc: string[] = [
@@ -348,6 +350,7 @@ function generateObsListenerOverrides(events: OBSEvent[]): string {
348350
}).join('\n');
349351
}
350352

353+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
351354
function generateObsRequestOverrides(requests: OBSRequest[]): string {
352355
return requests.map(req => {
353356
const jsdoc: string[] = [
@@ -364,7 +367,7 @@ function generateObsRequestOverrides(requests: OBSRequest[]): string {
364367

365368
const requestData = req.requestFields.length > 0
366369
? `requestData: OBSRequestTypes['${req.requestType}']`
367-
: 'requestData?: undefined';
370+
: 'requestData?: never';
368371

369372
return [
370373
formatJsDoc(jsdoc),

src/base.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ export abstract class BaseOBSWebSocket extends EventEmitter<MapValueToArgsArray<
123123
* @param requestData Request data
124124
* @returns Request response
125125
*/
126-
async call<Type extends keyof OBSRequestTypes>(requestType: Type, requestData: OBSRequestTypes[Type]): Promise<OBSResponseTypes[Type]> {
126+
async call<Type extends keyof OBSRequestTypes>(requestType: Type, requestData?: OBSRequestTypes[Type]): Promise<OBSResponseTypes[Type]> {
127127
const requestId = BaseOBSWebSocket.generateMessageId();
128128
const responsePromise = this.internalEventPromise<ResponseMessage<Type>>(`res:${requestId}`);
129129
await this.message(WebSocketOpCode.Request, {

0 commit comments

Comments
 (0)