From 92628ee4735cfbdb52870d2190d171d673d8e66e Mon Sep 17 00:00:00 2001 From: Alba Mendez Date: Mon, 30 Oct 2023 23:55:33 +0100 Subject: [PATCH] enable typechecking, expose types to users equivalent to https://github.com/medooze/media-server-node/pull/229 --- index.d.ts | 13 +++++++++++++ lib/RTMPServer.js | 5 ++--- package.json | 11 +++++++++-- tsconfig.json | 17 +++++++++++++++++ 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 index.d.ts create mode 100644 tsconfig.json diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..9963c8a --- /dev/null +++ b/index.d.ts @@ -0,0 +1,13 @@ +export * from "./build/types/RTMPServer"; + +export type { default as Server } from "./build/types/Server"; +export type { default as Application } from "./build/types/Application"; +export type { default as Client } from "./build/types/Client"; +export type { default as Stream, AMFData, Command } from "./build/types/Stream"; +export type { default as IncomingStreamBridge, StreamStats } from "./build/types/IncomingStreamBridge"; + +export type { + default as IncomingStreamTrackBridge, + ActiveEncodingInfo, ActiveLayersInfo, + EncodingStats, LayerStats, MediaStats, PacketWaitTime, TrackStats, +} from "./build/types/IncomingStreamTrackBridge"; diff --git a/lib/RTMPServer.js b/lib/RTMPServer.js index 9797bf2..b7f1840 100644 --- a/lib/RTMPServer.js +++ b/lib/RTMPServer.js @@ -1,15 +1,14 @@ const Native = require("./Native.js"); const Server = require("./Server.js"); const Application = require("./Application.js"); -const Status = require("./Status.js"); const IncomingStreamBridge = require("./IncomingStreamBridge"); /** @typedef {import("./Status").Status} Status */ /** @namespace */ const RTMPServer = {}; -RTMPServer.NetStream = Status.NetStream; -RTMPServer.NetConnection = Status.NetConnection; +RTMPServer.NetStream = require("./Status.js").NetStream; +RTMPServer.NetConnection = require("./Status.js").NetConnection; //INitialize Stuff Native.RTMPServerModule.Initialize(); diff --git a/package.json b/package.json index 0200b2a..e6c9ccc 100644 --- a/package.json +++ b/package.json @@ -4,12 +4,14 @@ "description": "RTMP Server by Medooze", "main": "index.js", "scripts": { + "prepare": "tsc --checkJs false", + "check": "tsc --noEmit --emitDeclarationOnly false", "configure": "node-gyp configure", "swig": "swig -javascript -node -c++ src/rtmp-server.i", "build": "node-gyp build --jobs=max", "install": "test -f build/Release/medooze-rtmp-server.node || (node-gyp configure && node-gyp rebuild --jobs=max)", - "package": "tar cvzf build/medooze-rtmp-server.tgz `([ \"$(uname)\" = 'Darwin' ] && echo \"-s |^|medooze-rtmp-server/|\") || echo \" --transform=flags=r;s|^|medooze-rtmp-server/|\"` media-server/src/* media-server/include/* media-server/ext/libdatachannels/src/* media-server/ext/crc32c/* lib/* package.json index.js binding.gyp README.md src", - "dist": "node-gyp configure && node-gyp build --jobs=max && mkdir -p dist && tar cvzf dist/medooze-rtmp-server-`node -e 'console.log(require(\"./package.json\").version)'`.tgz `([ \"$(uname)\" = 'Darwin' ] && echo \"-s |^|medooze-rtmp-server/|\") || echo \" --transform=flags=r;s|^|medooze-rtmp-server/|\"` package.json index.js README.md lib/* build/Release/medooze-rtmp-server.node", + "package": "npm run prepare && tar cvzf build/medooze-rtmp-server.tgz `([ \"$(uname)\" = 'Darwin' ] && echo \"-s |^|medooze-rtmp-server/|\") || echo \" --transform=flags=r;s|^|medooze-rtmp-server/|\"` media-server/src/* media-server/include/* media-server/ext/libdatachannels/src/* media-server/ext/crc32c/* lib/* package.json index.js index.d.ts build/types binding.gyp README.md src", + "dist": "npm run configure && npm run build && npm run prepare && mkdir -p dist && tar cvzf dist/medooze-rtmp-server-`node -e 'console.log(require(\"./package.json\").version)'`.tgz `([ \"$(uname)\" = 'Darwin' ] && echo \"-s |^|medooze-rtmp-server/|\") || echo \" --transform=flags=r;s|^|medooze-rtmp-server/|\"` package.json index.js index.d.ts build/types README.md lib/* build/Release/medooze-rtmp-server.node", "test": "tap tests/*.js --cov --no-check-coverage" }, "repository": { @@ -33,5 +35,10 @@ "nan": "^2.12.1", "tap": "^16.3.2", "uuid": "^3.3.2" + }, + "devDependencies": { + "@types/node": "^20.8.6", + "@types/uuid": "^9.0.5", + "typescript": "^5.2.2" } } diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ef523e3 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,17 @@ +{ + "include": ["lib/**/*"], + "compilerOptions": { + "lib": ["ES2018"], + "target": "ES2018", + "module": "CommonJS", + "moduleResolution": "Node", + "allowJs": true, + "checkJs": true, + "strict": true, + "noImplicitAny": true, + "outDir": "build/types", + "declaration": true, + "emitDeclarationOnly": true, + "declarationMap": true + } +}