diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 00000000..86d5ff51 --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,70 @@ +# SPDX-FileCopyrightText: 2025 LiveKit, Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Publish Docs +permissions: + contents: read + +on: + workflow_dispatch: + inputs: + livekit-rtc: + description: "Build and deploy docs for livekit-rtc" + required: false + default: true + type: boolean + livekit-server-sdk: + description: "Build and deploy docs for livekit-server-sdk" + required: false + default: true + type: boolean + +concurrency: ${{ github.workflow }}-${{ github.ref }} + +jobs: + build: + name: Build docs and publish to S3 + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + lfs: true + - uses: pnpm/action-setup@v4 + - name: Use Node.js 20 + uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build docs for livekit-rtc + if: ${{ github.event.inputs.livekit-rtc }} + run: | + cd packages/livekit-rtc + pnpm build:docs + + - name: Build docs for livekit-server-sdk + if: ${{ github.event.inputs.livekit-server-sdk }} + run: | + cd packages/livekit-server-sdk + pnpm build:docs + + - name: Upload livekit-rtc docs to S3 + if: ${{ github.event.inputs.livekit-rtc }} + run: | + aws s3 cp packages/livekit-rtc/docs/ s3://livekit-docs/rtc-node --recursive + env: + AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }} + AWS_DEFAULT_REGION: "us-east-1" + + - name: Upload livekit-server-sdk docs to S3 + if: ${{ github.event.inputs.livekit-server-sdk }} + run: | + aws s3 cp packages/livekit-server-sdk/docs/ s3://livekit-docs/server-sdk-js --recursive + env: + AWS_ACCESS_KEY_ID: ${{ secrets.DOCS_DEPLOY_AWS_ACCESS_KEY }} + AWS_SECRET_ACCESS_KEY: ${{ secrets.DOCS_DEPLOY_AWS_API_SECRET }} + AWS_DEFAULT_REGION: "us-east-1" diff --git a/package.json b/package.json index a5f88801..cdec4469 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "eslint-plugin-tsdoc": "^0.4.0", "prettier": "^3.2.5", "turbo": "^2.0.0", - "typescript": "5.8.2", + "typedoc": "catalog:", + "typescript": "catalog:", "vitest": "^3.0.0" }, "packageManager": "pnpm@9.15.7" diff --git a/packages/livekit-rtc/package.json b/packages/livekit-rtc/package.json index fed620c2..53e55eb8 100644 --- a/packages/livekit-rtc/package.json +++ b/packages/livekit-rtc/package.json @@ -49,16 +49,17 @@ "@bufbuild/protobuf": "^1.10.1", "@livekit/mutex": "^1.0.0", "@livekit/typed-emitter": "^3.0.0", - "pino": "^9.0.0", - "pino-pretty": "^13.0.0" + "pino": "^9.9.0", + "pino-pretty": "^13.1.1" }, "devDependencies": { + "@bufbuild/protoc-gen-es": "^1.10.1", "@napi-rs/cli": "^2.18.0", "@types/node": "^22.13.10", "prettier": "^3.0.3", "tsup": "^8.3.5", - "typescript": "5.8.2", - "@bufbuild/protoc-gen-es": "^1.10.1" + "typedoc": "catalog:", + "typescript": "catalog:" }, "optionalDependencies": { "@livekit/rtc-node-darwin-arm64": "workspace:*", @@ -74,6 +75,7 @@ "prebuild": "node -p \"'export const SDK_VERSION = ' + JSON.stringify(require('./package.json').version) + ';'\" > src/version.ts", "build:ts": "pnpm prebuild && tsup --onSuccess \"tsc --declaration --emitDeclarationOnly\" && cp -r src/napi dist/ && cp -r src/napi/* dist/", "build": "pnpm build:ts && napi build --platform --release --dts native.d.ts --js native.cjs --pipe \"prettier -w\" src/napi", + "build:docs": "typedoc", "artifacts": "pnpm build:ts && napi artifacts", "build:debug": "napi build --platform", "lint": "eslint -f unix \"src/**/*.ts\" --ignore-pattern \"src/proto/*\"", diff --git a/packages/livekit-server-sdk/package.json b/packages/livekit-server-sdk/package.json index 1b8acfaa..3b3585d1 100644 --- a/packages/livekit-server-sdk/package.json +++ b/packages/livekit-server-sdk/package.json @@ -31,7 +31,7 @@ "scripts": { "build": "tsup --onSuccess \"tsc --declaration --emitDeclarationOnly\"", "build:watch": "tsc --watch", - "build-docs": "typedoc", + "build:docs": "typedoc", "changeset": "changeset", "ci:publish": "pnpm build && changeset publish", "lint": "eslint src", @@ -55,8 +55,9 @@ "happy-dom": "^17.0.0", "prettier": "^3.0.0", "tsup": "^8.3.5", + "typedoc": "catalog:", "typedoc": "^0.28.0", - "typescript": "5.8.2", + "typescript": "catalog:", "vite": "^5.2.9", "vitest": "^3.0.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6a2e3e58..c0009f72 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,6 +4,15 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +catalogs: + default: + typedoc: + specifier: ^0.28.11 + version: 0.28.11 + typescript: + specifier: 5.8.2 + version: 5.8.2 + importers: .: @@ -65,8 +74,11 @@ importers: turbo: specifier: ^2.0.0 version: 2.5.6 + typedoc: + specifier: 'catalog:' + version: 0.28.11(typescript@5.8.2) typescript: - specifier: 5.8.2 + specifier: 'catalog:' version: 5.8.2 vitest: specifier: ^3.0.0 @@ -213,11 +225,11 @@ importers: specifier: ^3.0.0 version: 3.0.0 pino: - specifier: ^9.0.0 + specifier: ^9.9.0 version: 9.9.0 pino-pretty: - specifier: ^13.0.0 - version: 13.0.0 + specifier: ^13.1.1 + version: 13.1.1 optionalDependencies: '@livekit/rtc-node-darwin-arm64': specifier: workspace:* @@ -250,8 +262,11 @@ importers: tsup: specifier: ^8.3.5 version: 8.5.0(postcss@8.5.3)(tsx@4.17.0)(typescript@5.8.2)(yaml@2.8.1) + typedoc: + specifier: 'catalog:' + version: 0.28.11(typescript@5.8.2) typescript: - specifier: 5.8.2 + specifier: 'catalog:' version: 5.8.2 packages/livekit-rtc/npm/darwin-arm64: {} @@ -302,9 +317,9 @@ importers: version: 8.5.0(postcss@8.5.3)(tsx@4.17.0)(typescript@5.8.2)(yaml@2.8.1) typedoc: specifier: ^0.28.0 - version: 0.28.10(typescript@5.8.2) + version: 0.28.11(typescript@5.8.2) typescript: - specifier: 5.8.2 + specifier: 'catalog:' version: 5.8.2 vite: specifier: ^5.2.9 @@ -3048,8 +3063,8 @@ packages: pino-abstract-transport@2.0.0: resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} - pino-pretty@13.0.0: - resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} + pino-pretty@13.1.1: + resolution: {integrity: sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA==} hasBin: true pino-std-serializers@7.0.0: @@ -3248,8 +3263,8 @@ packages: scheduler@0.23.2: resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - secure-json-parse@2.7.0: - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + secure-json-parse@4.0.0: + resolution: {integrity: sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA==} semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} @@ -3402,6 +3417,10 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strip-json-comments@5.0.3: + resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==} + engines: {node: '>=14.16'} + strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} @@ -3606,8 +3625,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typedoc@0.28.10: - resolution: {integrity: sha512-zYvpjS2bNJ30SoNYfHSRaFpBMZAsL7uwKbWwqoCNFWjcPnI3e/mPLh2SneH9mX7SJxtDpvDgvd9/iZxGbo7daw==} + typedoc@0.28.11: + resolution: {integrity: sha512-1FqgrrUYGNuE3kImAiEDgAVVVacxdO4ZVTKbiOVDGkoeSB4sNwQaDpa8mta+Lw5TEzBFmGXzsg0I1NLRIoaSFw==} engines: {node: '>= 18', pnpm: '>= 10'} hasBin: true peerDependencies: @@ -6666,7 +6685,7 @@ snapshots: dependencies: split2: 4.2.0 - pino-pretty@13.0.0: + pino-pretty@13.1.1: dependencies: colorette: 2.0.20 dateformat: 4.6.3 @@ -6678,9 +6697,9 @@ snapshots: on-exit-leak-free: 2.1.2 pino-abstract-transport: 2.0.0 pump: 3.0.2 - secure-json-parse: 2.7.0 + secure-json-parse: 4.0.0 sonic-boom: 4.2.0 - strip-json-comments: 3.1.1 + strip-json-comments: 5.0.3 pino-std-serializers@7.0.0: {} @@ -6921,7 +6940,7 @@ snapshots: dependencies: loose-envify: 1.4.0 - secure-json-parse@2.7.0: {} + secure-json-parse@4.0.0: {} semver@6.3.1: {} @@ -7101,6 +7120,8 @@ snapshots: strip-json-comments@3.1.1: {} + strip-json-comments@5.0.3: {} + strip-literal@3.0.0: dependencies: js-tokens: 9.0.1 @@ -7303,7 +7324,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typedoc@0.28.10(typescript@5.8.2): + typedoc@0.28.11(typescript@5.8.2): dependencies: '@gerrit0/mini-shiki': 3.9.2 lunr: 2.3.9 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 38753c34..8144c6f9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,7 @@ packages: - 'examples/*' - 'packages/*' - 'packages/livekit-rtc/npm/*' + +catalog: + "typedoc": ^0.28.11 + "typescript": 5.8.2