Browse Source

Merge branch 'master' into rc

Jonas Gloning 2 years ago
parent
commit
0261817248

+ 22 - 0
.devcontainer/devcontainer.json

@@ -0,0 +1,22 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/typescript-node
+{
+	"name": "Node.js & TypeScript",
+	// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+	"image": "mcr.microsoft.com/devcontainers/typescript-node:0-18",
+
+	// Features to add to the dev container. More info: https://containers.dev/features.
+	// "features": {},
+
+	// Use 'forwardPorts' to make a list of ports inside the container available locally.
+	"forwardPorts": [9000],
+
+	// Use 'postCreateCommand' to run commands after the container is created.
+	"postCreateCommand": "npm clean-install"
+
+	// Configure tool-specific properties.
+	// "customizations": {},
+
+	// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+	// "remoteUser": "root"
+}

+ 6 - 0
.dockerignore

@@ -0,0 +1,6 @@
+.git
+.nyc_output
+.parcel-cache
+coverage
+dist
+node_modules

+ 28 - 0
.github/workflows/docker.yml

@@ -0,0 +1,28 @@
+name: Docker build & publish
+
+on:
+    push:
+        branches: [ "master" ]
+    pull_request:
+        branches: [ "master" ]
+
+jobs:
+    docker:
+        runs-on: ubuntu-latest
+        steps:
+            - name: Set up Docker Buildx
+              uses: docker/setup-buildx-action@v2
+            - name: Login to Docker Hub
+              uses: docker/login-action@v2
+              with:
+                  username: ${{ secrets.DOCKERHUB_USERNAME }}
+                  password: ${{ secrets.DOCKERHUB_TOKEN }}
+            - name: Build
+              if: ${{ github.event_name == 'pull_request' }}
+              uses: docker/build-push-action@v3
+            - name: Build & publish
+              if: ${{ github.event_name == 'push' }}
+              uses: docker/build-push-action@v3
+              with:
+                  push: true
+                  tags: peerjs/peerjs-server-test:nightly

+ 18 - 0
.github/workflows/fly.yml

@@ -0,0 +1,18 @@
+name: Fly Deploy
+
+on:
+  push:
+   branches:
+    - master
+
+env:
+  FLY_API_TOKEN: ${{ secrets.FLY_API_TOKEN }}
+
+jobs:
+  deploy:
+    name: Deploy app
+    runs-on: ubuntu-latest
+    steps:
+    - uses: actions/checkout@v3
+    - uses: superfly/flyctl-actions/setup-flyctl@master
+    - run: flyctl deploy --remote-only

+ 6 - 0
.github/workflows/release.yml

@@ -9,6 +9,12 @@ jobs:
     name: Release
     name: Release
     runs-on: ubuntu-latest
     runs-on: ubuntu-latest
     steps:
     steps:
+      -
+        name: Login to Docker Hub
+        uses: docker/login-action@v2
+        with:
+            username: ${{ secrets.DOCKERHUB_USERNAME } }}
+            password: ${{ secrets.DOCKERHUB_TOKEN }}
       - name: Checkout
       - name: Checkout
         uses: actions/checkout@v3
         uses: actions/checkout@v3
         with:
         with:

+ 29 - 9
.releaserc.json

@@ -1,11 +1,31 @@
 {
 {
-	"branches": ["stable", { "name": "rc", "prerelease": true }],
-	"plugins": [
-		"@semantic-release/commit-analyzer",
-		"@semantic-release/release-notes-generator",
-		"@semantic-release/changelog",
-		"@semantic-release/npm",
-		"@semantic-release/git",
-		"@semantic-release/github"
-	]
+    "branches": [
+        "stable",
+        {
+            "name": "rc",
+            "prerelease": true
+        }
+    ],
+    "plugins": [
+        "@semantic-release/commit-analyzer",
+        "@semantic-release/release-notes-generator",
+        "@semantic-release/changelog",
+        "@semantic-release/npm",
+        "@semantic-release/git",
+        "@semantic-release/github",
+        [
+            "@codedependant/semantic-release-docker",
+            {
+                "dockerTags": [
+                    "{{#if prerelease.[0]}}{{prerelease.[0]}}{{else}}latest{{/if}}",
+                    "{{major}}-{{#if prerelease.[0]}}{{prerelease.[0]}}{{else}}latest{{/if}}",
+                    "{{major}}.{{minor}}-{{#if prerelease.[0]}}{{prerelease.[0]}}{{else}}latest{{/if}}",
+                    "{{version}}"
+                ],
+                "dockerImage": "peerjs-server-test",
+                "dockerFile": "Dockerfile",
+                "dockerProject": "peerjs"
+            }
+        ]
+    ]
 }
 }

+ 15 - 7
Dockerfile

@@ -1,10 +1,18 @@
-FROM node:alpine
+FROM node:18.13.0 as build
 RUN mkdir /peer-server
 RUN mkdir /peer-server
 WORKDIR /peer-server
 WORKDIR /peer-server
-COPY bin ./bin
-COPY dist ./dist
-COPY package.json .
-RUN npm install --production
+COPY package.json package-lock.json ./
+RUN npm clean-install
+COPY . ./
+RUN npm run build
+RUN npm run test
+
+FROM node:18.13.0-alpine as production
+RUN mkdir /peer-server
+WORKDIR /peer-server
+COPY package.json package-lock.json ./
+RUN npm clean-install --omit=dev
+COPY --from=build /peer-server/dist/bin/peerjs.js ./
 EXPOSE 9000
 EXPOSE 9000
-ENTRYPOINT ["node", "bin/peerjs"]
-CMD [ "--port", "9000", "--path", "/myapp" ]
+ENTRYPOINT ["node", "peerjs.js"]
+CMD [ "--port", "9000" ]

+ 0 - 10
docker-compose.yml

@@ -1,10 +0,0 @@
-version: '3'
-
-services:
-  peerjs:
-    build: .
-    container_name: peerjs_server
-    expose:
-      - 9000
-    ports:
-      - "9000:9000"

+ 37 - 0
fly.toml

@@ -0,0 +1,37 @@
+# fly.toml file generated for peerserver on 2023-01-17T16:27:45+01:00
+
+app = "peerserver"
+kill_signal = "SIGINT"
+kill_timeout = 5
+processes = []
+
+[env]
+
+[experimental]
+  auto_rollback = true
+
+[[services]]
+  http_checks = []
+  internal_port = 9000
+  processes = ["app"]
+  protocol = "tcp"
+  script_checks = []
+  [services.concurrency]
+    hard_limit = 25
+    soft_limit = 20
+    type = "connections"
+
+  [[services.ports]]
+    force_https = true
+    handlers = ["http"]
+    port = 80
+
+  [[services.ports]]
+    handlers = ["tls", "http"]
+    port = 443
+
+  [[services.tcp_checks]]
+    grace_period = "1s"
+    interval = "15s"
+    restart_limit = 0
+    timeout = "2s"

+ 10 - 30
package-lock.json

@@ -9,6 +9,8 @@
       "version": "1.0.0-rc.6",
       "version": "1.0.0-rc.6",
       "license": "MIT",
       "license": "MIT",
       "dependencies": {
       "dependencies": {
+        "@types/express": "^4.17.3",
+        "@types/ws": "^7.2.3 || ^8.0.0",
         "cors": "^2.8.5",
         "cors": "^2.8.5",
         "express": "^4.17.1",
         "express": "^4.17.1",
         "ws": "^7.2.3 || ^8.0.0",
         "ws": "^7.2.3 || ^8.0.0",
@@ -25,10 +27,8 @@
         "@semantic-release/git": "^10.0.1",
         "@semantic-release/git": "^10.0.1",
         "@types/chai": "^4.2.11",
         "@types/chai": "^4.2.11",
         "@types/cors": "^2.8.6",
         "@types/cors": "^2.8.6",
-        "@types/express": "^4.17.3",
         "@types/mocha": "^10.0.0",
         "@types/mocha": "^10.0.0",
         "@types/node": "^14.18.33",
         "@types/node": "^14.18.33",
-        "@types/ws": "^7.2.3 || ^8.0.0",
         "@types/yargs": "^17.0.19",
         "@types/yargs": "^17.0.19",
         "@typescript-eslint/eslint-plugin": "^5.0.0",
         "@typescript-eslint/eslint-plugin": "^5.0.0",
         "@typescript-eslint/parser": "^5.0.0",
         "@typescript-eslint/parser": "^5.0.0",
@@ -2820,7 +2820,6 @@
       "version": "1.19.2",
       "version": "1.19.2",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
       "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
       "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/connect": "*",
         "@types/connect": "*",
         "@types/node": "*"
         "@types/node": "*"
@@ -2836,7 +2835,6 @@
       "version": "3.4.35",
       "version": "3.4.35",
       "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
       "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
       "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
       "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/node": "*"
         "@types/node": "*"
       }
       }
@@ -2854,7 +2852,6 @@
       "version": "4.17.15",
       "version": "4.17.15",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
       "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
       "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/body-parser": "*",
         "@types/body-parser": "*",
         "@types/express-serve-static-core": "^4.17.31",
         "@types/express-serve-static-core": "^4.17.31",
@@ -2866,7 +2863,6 @@
       "version": "4.17.31",
       "version": "4.17.31",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
       "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
       "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/node": "*",
         "@types/node": "*",
         "@types/qs": "*",
         "@types/qs": "*",
@@ -2882,8 +2878,7 @@
     "node_modules/@types/mime": {
     "node_modules/@types/mime": {
       "version": "3.0.1",
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
-      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
-      "dev": true
+      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
     },
     },
     "node_modules/@types/minimist": {
     "node_modules/@types/minimist": {
       "version": "1.2.2",
       "version": "1.2.2",
@@ -2900,8 +2895,7 @@
     "node_modules/@types/node": {
     "node_modules/@types/node": {
       "version": "14.18.36",
       "version": "14.18.36",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
-      "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
-      "dev": true
+      "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ=="
     },
     },
     "node_modules/@types/normalize-package-data": {
     "node_modules/@types/normalize-package-data": {
       "version": "2.4.1",
       "version": "2.4.1",
@@ -2918,14 +2912,12 @@
     "node_modules/@types/qs": {
     "node_modules/@types/qs": {
       "version": "6.9.7",
       "version": "6.9.7",
       "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
       "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-      "dev": true
+      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
     },
     },
     "node_modules/@types/range-parser": {
     "node_modules/@types/range-parser": {
       "version": "1.2.4",
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
-      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
-      "dev": true
+      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
     },
     },
     "node_modules/@types/retry": {
     "node_modules/@types/retry": {
       "version": "0.12.0",
       "version": "0.12.0",
@@ -2943,7 +2935,6 @@
       "version": "1.15.0",
       "version": "1.15.0",
       "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
       "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
       "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
       "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/mime": "*",
         "@types/mime": "*",
         "@types/node": "*"
         "@types/node": "*"
@@ -2953,7 +2944,6 @@
       "version": "8.5.4",
       "version": "8.5.4",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
       "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
       "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
-      "dev": true,
       "dependencies": {
       "dependencies": {
         "@types/node": "*"
         "@types/node": "*"
       }
       }
@@ -14699,7 +14689,6 @@
       "version": "1.19.2",
       "version": "1.19.2",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
       "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz",
       "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
       "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/connect": "*",
         "@types/connect": "*",
         "@types/node": "*"
         "@types/node": "*"
@@ -14715,7 +14704,6 @@
       "version": "3.4.35",
       "version": "3.4.35",
       "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
       "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz",
       "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
       "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/node": "*"
         "@types/node": "*"
       }
       }
@@ -14733,7 +14721,6 @@
       "version": "4.17.15",
       "version": "4.17.15",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
       "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.15.tgz",
       "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
       "integrity": "sha512-Yv0k4bXGOH+8a+7bELd2PqHQsuiANB+A8a4gnQrkRWzrkKlb6KHaVvyXhqs04sVW/OWlbPyYxRgYlIXLfrufMQ==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/body-parser": "*",
         "@types/body-parser": "*",
         "@types/express-serve-static-core": "^4.17.31",
         "@types/express-serve-static-core": "^4.17.31",
@@ -14745,7 +14732,6 @@
       "version": "4.17.31",
       "version": "4.17.31",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
       "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz",
       "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
       "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/node": "*",
         "@types/node": "*",
         "@types/qs": "*",
         "@types/qs": "*",
@@ -14761,8 +14747,7 @@
     "@types/mime": {
     "@types/mime": {
       "version": "3.0.1",
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
       "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz",
-      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==",
-      "dev": true
+      "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA=="
     },
     },
     "@types/minimist": {
     "@types/minimist": {
       "version": "1.2.2",
       "version": "1.2.2",
@@ -14779,8 +14764,7 @@
     "@types/node": {
     "@types/node": {
       "version": "14.18.36",
       "version": "14.18.36",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.36.tgz",
-      "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ==",
-      "dev": true
+      "integrity": "sha512-FXKWbsJ6a1hIrRxv+FoukuHnGTgEzKYGi7kilfMae96AL9UNkPFNWJEEYWzdRI9ooIkbr4AKldyuSTLql06vLQ=="
     },
     },
     "@types/normalize-package-data": {
     "@types/normalize-package-data": {
       "version": "2.4.1",
       "version": "2.4.1",
@@ -14797,14 +14781,12 @@
     "@types/qs": {
     "@types/qs": {
       "version": "6.9.7",
       "version": "6.9.7",
       "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
       "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz",
-      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==",
-      "dev": true
+      "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
     },
     },
     "@types/range-parser": {
     "@types/range-parser": {
       "version": "1.2.4",
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
       "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz",
-      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
-      "dev": true
+      "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
     },
     },
     "@types/retry": {
     "@types/retry": {
       "version": "0.12.0",
       "version": "0.12.0",
@@ -14822,7 +14804,6 @@
       "version": "1.15.0",
       "version": "1.15.0",
       "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
       "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz",
       "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
       "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/mime": "*",
         "@types/mime": "*",
         "@types/node": "*"
         "@types/node": "*"
@@ -14832,7 +14813,6 @@
       "version": "8.5.4",
       "version": "8.5.4",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
       "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
       "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
       "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
-      "dev": true,
       "requires": {
       "requires": {
         "@types/node": "*"
         "@types/node": "*"
       }
       }

+ 2 - 2
package.json

@@ -61,7 +61,9 @@
   "dependencies": {
   "dependencies": {
     "cors": "^2.8.5",
     "cors": "^2.8.5",
     "express": "^4.17.1",
     "express": "^4.17.1",
+    "@types/express": "^4.17.3",
     "ws": "^7.2.3 || ^8.0.0",
     "ws": "^7.2.3 || ^8.0.0",
+    "@types/ws": "^7.2.3 || ^8.0.0",
     "yargs": "^17.6.2"
     "yargs": "^17.6.2"
   },
   },
   "devDependencies": {
   "devDependencies": {
@@ -72,10 +74,8 @@
     "@semantic-release/git": "^10.0.1",
     "@semantic-release/git": "^10.0.1",
     "@types/chai": "^4.2.11",
     "@types/chai": "^4.2.11",
     "@types/cors": "^2.8.6",
     "@types/cors": "^2.8.6",
-    "@types/express": "^4.17.3",
     "@types/mocha": "^10.0.0",
     "@types/mocha": "^10.0.0",
     "@types/node": "^14.18.33",
     "@types/node": "^14.18.33",
-    "@types/ws": "^7.2.3 || ^8.0.0",
     "@types/yargs": "^17.0.19",
     "@types/yargs": "^17.0.19",
     "@typescript-eslint/eslint-plugin": "^5.0.0",
     "@typescript-eslint/eslint-plugin": "^5.0.0",
     "@typescript-eslint/parser": "^5.0.0",
     "@typescript-eslint/parser": "^5.0.0",

+ 4 - 2
src/index.ts

@@ -1,14 +1,16 @@
-import express from "express";
+import express, {type Express} from "express";
 import http from "node:http";
 import http from "node:http";
 import https from "node:https";
 import https from "node:https";
-import type {Express} from 'express-serve-static-core';
 
 
 import type {IConfig} from "./config";
 import type {IConfig} from "./config";
 import defaultConfig from "./config";
 import defaultConfig from "./config";
 import type {PeerServerEvents} from "./instance";
 import type {PeerServerEvents} from "./instance";
 import {createInstance} from "./instance";
 import {createInstance} from "./instance";
+import type { IClient } from "./models/client";
+import type { IMessage } from "./models/message";
 
 
 export type {MessageType} from "./enums"
 export type {MessageType} from "./enums"
+export type {IConfig, PeerServerEvents, IClient, IMessage}
 
 
 function ExpressPeerServer(server: https.Server | http.Server, options?: Partial<IConfig>) {
 function ExpressPeerServer(server: https.Server | http.Server, options?: Partial<IConfig>) {
   const app = express();
   const app = express();