Commit 0013ee8 for jssip.net

commit 0013ee86aaad927e4d37c64967cb4224b5713bb7
Author: José Luis Millán <jmillan@aliax.net>
Date:   Wed Feb 4 11:18:19 2026 +0100

    Prepare typedoc (#959)

diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml
new file mode 100644
index 0000000..5864368
--- /dev/null
+++ b/.github/workflows/docs.yaml
@@ -0,0 +1,72 @@
+# Workflow for deploying docs static content to GitHub Pages.
+name: docs
+
+on:
+  push:
+    branches: [master]
+  # Allows you to run this workflow manually from the Actions tab.
+  workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+  contents: read
+  pages: write
+  id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run
+# in-progress and latest queued. However, do NOT cancel in-progress runs as we
+# want to allow these production deployments to complete.
+concurrency:
+  group: 'pages'
+  cancel-in-progress: false
+
+jobs:
+  # Single deploy job since we're just deploying.
+  deploy:
+    environment:
+      name: github-pages
+      url: ${{ steps.deployment.outputs.page_url }}
+
+    runs-on: ubuntu-latest
+
+    steps:
+      - name: Checkout
+        uses: actions/checkout@v4
+        with:
+          fetch-depth: 2
+
+      - name: Node.js
+        uses: actions/setup-node@v4
+        with:
+          node-version: 24
+
+      - name: Check if version has been updated
+        id: versionCheck
+        uses: EndBug/version-check@v2
+
+      - name: Log when version has changed
+        if: steps.versionCheck.outputs.changed == 'true'
+        run: 'echo "Version changed, new version: ${{ steps.versionCheck.outputs.version }} (${{ steps.versionCheck.outputs.type }})"'
+
+      - name: Log when version has not changed
+        if: steps.versionCheck.outputs.changed == 'false'
+        run: 'echo "Version did not change"'
+
+      - name: npm ci
+        if: steps.versionCheck.outputs.changed == 'true'
+        run: npm ci --foreground-scripts
+
+      - name: npm run docs
+        if: steps.versionCheck.outputs.changed == 'true'
+        run: npm run docs
+
+      - name: Upload docs
+        if: steps.versionCheck.outputs.changed == 'true'
+        uses: actions/upload-pages-artifact@v3
+        with:
+          path: docs/
+
+      - name: Deploy docs to GitHub Pages
+        if: steps.versionCheck.outputs.changed == 'true'
+        id: deployment
+        uses: actions/deploy-pages@v4
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 20c6828..a8fd741 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -7,6 +7,7 @@
   - Use prettier.
   - Prepare environment for TS.
 - Rewrite tests to TS (#958).
+- Prepare typedoc (#959).

 ### 3.12.0

diff --git a/LICENSE b/LICENSE.md
similarity index 100%
rename from LICENSE
rename to LICENSE.md
diff --git a/docs-assets/custom-styles.css b/docs-assets/custom-styles.css
new file mode 100644
index 0000000..0fe534a
--- /dev/null
+++ b/docs-assets/custom-styles.css
@@ -0,0 +1,21 @@
+/* Remove ugly square in bottom-right corner when scroll shows up. */
+*::-webkit-scrollbar {
+	width: 0px;
+}
+
+/* Add margin after code. */
+.tsd-comment {
+	margin-bottom: 2em;
+}
+
+/* Avoid word wrapping when code doesn't fit into avaiable width. */
+.tsd-comment > pre {
+	white-space: pre;
+	overflow: scroll;
+}
+
+/* Remove ugly border radius in code. */
+.tsd-comment > pre,
+.tsd-comment > code {
+	border-radius: 0px;
+}
diff --git a/typedoc.config.mjs b/typedoc.config.mjs
new file mode 100644
index 0000000..56c02a0
--- /dev/null
+++ b/typedoc.config.mjs
@@ -0,0 +1,33 @@
+/**
+ * Configuration for Typedoc.
+ */
+
+/** @type {Partial<import('typedoc').TypeDocOptions>} */
+const config = {
+	entryPoints: ['src/JsSIP.js'],
+	out: 'docs',
+	skipErrorChecking: false,
+	exclude: ['src/**/*.d.ts', 'src/test/**/test-*.ts'],
+	excludePrivate: true,
+	excludeProtected: true,
+	excludeNotDocumented: true,
+	excludeInternal: true,
+	excludeExternals: true,
+	includeVersion: true,
+	gitRemote: 'origin',
+	hideGenerator: false,
+	treatWarningsAsErrors: true,
+	cacheBust: true,
+	categorizeByGroup: false,
+	categoryOrder: ['Config', 'UA', 'RTCSession', '*'],
+	searchInComments: true,
+	readme: 'README.md',
+	projectDocuments: ['README.md', 'LICENSE.md'],
+	navigationLinks: {
+		GitHub: 'https://github.com/versatica/jssip',
+		NPM: 'https://www.npmjs.com/package/jssip',
+	},
+	customCss: './docs-assets/custom-styles.css',
+};
+
+export default config;