diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 00000000..58643689 --- /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 20c68283..a8fd7410 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 00000000..0fe534ad --- /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 00000000..56c02a0c --- /dev/null +++ b/typedoc.config.mjs @@ -0,0 +1,33 @@ +/** + * Configuration for Typedoc. + */ + +/** @type {Partial} */ +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;