From 2adb53f6ddd9493567b9250f29d2d9f7467dc6ee Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Thu, 28 Aug 2025 12:45:20 -0600 Subject: [PATCH 1/5] feat: set up typedoc and standardize versions --- package.json | 3 +- packages/livekit-rtc/package.json | 10 +++-- packages/livekit-server-sdk/package.json | 5 ++- pnpm-lock.yaml | 57 ++++++++++++++++-------- pnpm-workspace.yaml | 4 ++ 5 files changed, 54 insertions(+), 25 deletions(-) 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 From 7688a33f13ad3913f144415a27b40efae1af57f9 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Thu, 28 Aug 2025 12:32:58 -0600 Subject: [PATCH 2/5] feat(ci): add docs deploy workflow --- .github/workflows/publish-docs.yml | 73 ++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 .github/workflows/publish-docs.yml diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml new file mode 100644 index 00000000..38ba118c --- /dev/null +++ b/.github/workflows/publish-docs.yml @@ -0,0 +1,73 @@ +# SPDX-FileCopyrightText: 2025 LiveKit, Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +name: Publish Docs + +on: + workflow_dispatch: + inputs: + packages: + description: "Packages to build and deploy docs for (space-separated, empty for all)" + required: false + default: "livekit-rtc livekit-server-sdk" + type: string + +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: Parse packages input + id: packages + run: | + if [ -z "${{ github.event.inputs.packages }}" ]; then + echo "packages=livekit-rtc livekit-server-sdk" >> $GITHUB_OUTPUT + else + echo "packages=${{ github.event.inputs.packages }}" >> $GITHUB_OUTPUT + fi + echo "Parsed packages: ${{ steps.packages.outputs.packages }}" + + - name: Build docs for livekit-rtc + if: contains(steps.packages.outputs.packages, 'livekit-rtc') + run: | + cd packages/livekit-rtc + pnpm build:docs + + - name: Build docs for livekit-server-sdk + if: contains(steps.packages.outputs.packages, 'livekit-server-sdk') + run: | + cd packages/livekit-server-sdk + pnpm build:docs + + - name: Upload livekit-rtc docs to S3 + if: contains(steps.packages.outputs.packages, 'livekit-rtc') + run: | + aws s3 cp packages/livekit-rtc/docs/ s3://livekit-docs/client-sdk-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: contains(steps.packages.outputs.packages, '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" From 1433ac2cb1808893680fa3c1e30ed8c390ccc494 Mon Sep 17 00:00:00 2001 From: Tobias Fried Date: Thu, 28 Aug 2025 12:50:44 -0600 Subject: [PATCH 3/5] chore(ci): reduce workflow permissions Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> --- .github/workflows/publish-docs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 38ba118c..8b98f077 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -3,6 +3,8 @@ # SPDX-License-Identifier: Apache-2.0 name: Publish Docs +permissions: + contents: read on: workflow_dispatch: From bbc2ccce858ed2707c23486192ee79c4c4274ca3 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Thu, 28 Aug 2025 12:59:30 -0600 Subject: [PATCH 4/5] chore(ci): use checkboxes to select docs deploys --- .github/workflows/publish-docs.yml | 31 +++++++++++++----------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index 8b98f077..ece6cd92 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -9,11 +9,16 @@ permissions: on: workflow_dispatch: inputs: - packages: - description: "Packages to build and deploy docs for (space-separated, empty for all)" + livekit-rtc: + description: "Build and deploy docs for livekit-rtc" required: false - default: "livekit-rtc livekit-server-sdk" - type: string + 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 }} @@ -34,30 +39,20 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Parse packages input - id: packages - run: | - if [ -z "${{ github.event.inputs.packages }}" ]; then - echo "packages=livekit-rtc livekit-server-sdk" >> $GITHUB_OUTPUT - else - echo "packages=${{ github.event.inputs.packages }}" >> $GITHUB_OUTPUT - fi - echo "Parsed packages: ${{ steps.packages.outputs.packages }}" - - name: Build docs for livekit-rtc - if: contains(steps.packages.outputs.packages, 'livekit-rtc') + if: ${{ github.event.inputs.livekit-rtc }} run: | cd packages/livekit-rtc pnpm build:docs - name: Build docs for livekit-server-sdk - if: contains(steps.packages.outputs.packages, '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: contains(steps.packages.outputs.packages, 'livekit-rtc') + if: ${{ github.event.inputs.livekit-rtc }} run: | aws s3 cp packages/livekit-rtc/docs/ s3://livekit-docs/client-sdk-node --recursive env: @@ -66,7 +61,7 @@ jobs: AWS_DEFAULT_REGION: "us-east-1" - name: Upload livekit-server-sdk docs to S3 - if: contains(steps.packages.outputs.packages, 'livekit-server-sdk') + if: ${{ github.event.inputs.livekit-server-sdk }} run: | aws s3 cp packages/livekit-server-sdk/docs/ s3://livekit-docs/server-sdk-js --recursive env: From a4e0021b3df61ea5a228f51927f07e3848582802 Mon Sep 17 00:00:00 2001 From: rektdeckard Date: Thu, 28 Aug 2025 13:12:53 -0600 Subject: [PATCH 5/5] chore(ci): rename s3 bucket client-sdk-node -> rtc-node --- .github/workflows/publish-docs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/publish-docs.yml b/.github/workflows/publish-docs.yml index ece6cd92..86d5ff51 100644 --- a/.github/workflows/publish-docs.yml +++ b/.github/workflows/publish-docs.yml @@ -54,7 +54,7 @@ jobs: - name: Upload livekit-rtc docs to S3 if: ${{ github.event.inputs.livekit-rtc }} run: | - aws s3 cp packages/livekit-rtc/docs/ s3://livekit-docs/client-sdk-node --recursive + 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 }}