chore: move sdk to packages (#28350)

This commit is contained in:
Jason Rasmussen 2026-05-11 13:37:10 -04:00 committed by GitHub
parent b4f719653f
commit 7837d40f57
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
24 changed files with 37 additions and 44 deletions

View File

@ -30,9 +30,7 @@ machine-learning/
misc/
mobile/
open-api/typescript-sdk/build/
!open-api/typescript-sdk/package.json
!open-api/typescript-sdk/package-lock.json
packages/sdk/build/
server/upload/
server/src/queries

4
.gitattributes vendored
View File

@ -24,7 +24,7 @@ mobile/lib/infrastructure/repositories/db.repository.steps.dart linguist-generat
mobile/test/drift/main/generated/** -diff -merge
mobile/test/drift/main/generated/** linguist-generated=true
open-api/typescript-sdk/fetch-client.ts -diff -merge
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
packages/sdk/fetch-client.ts -diff -merge
packages/sdk/fetch-client.ts linguist-generated=true
*.sh text eol=lf

View File

@ -14,9 +14,6 @@ jobs:
contents: read
id-token: write
packages: write
defaults:
run:
working-directory: ./open-api/typescript-sdk
steps:
- id: token
uses: immich-app/devtools/actions/create-workflow-token@caa599d954228439ea3e8ce1c3328f41ab120ee6 # create-workflow-token-action-v2.0.0
@ -36,10 +33,10 @@ jobs:
github_token: ${{ steps.token.outputs.token }}
- name: Install deps
run: pnpm install --frozen-lockfile
run: pnpm --filter @immich/sdk install --frozen-lockfile
- name: Build
run: pnpm build
run: pnpm --filter @immich/sdk build
- name: Publish
run: pnpm publish --provenance --no-git-checks
run: pnpm --filter @immich/sdk publish --provenance --no-git-checks

View File

@ -33,14 +33,14 @@ jobs:
web:
- 'web/**'
- 'i18n/**'
- 'open-api/typescript-sdk/**'
- 'packages/sdk/**'
- 'pnpm-lock.yaml'
server:
- 'server/**'
- 'pnpm-lock.yaml'
cli:
- 'cli/**'
- 'open-api/typescript-sdk/**'
- 'packages/sdk/**'
- 'pnpm-lock.yaml'
e2e:
- 'e2e/**'
@ -149,9 +149,9 @@ jobs:
node-version-file: '.nvmrc'
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Setup typescript-sdk
run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk
- name: Setup @immich/sdk
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
- name: Install deps
run: pnpm install --frozen-lockfile
@ -194,7 +194,7 @@ jobs:
with:
github_token: ${{ steps.token.outputs.token }}
- name: Run setup typescript-sdk
- name: Run setup @immich/sdk
run: mise run //:sdk:install && mise run //:sdk:build
- name: Run pnpm install
@ -384,9 +384,8 @@ jobs:
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Setup typescript-sdk
run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk
- name: Setup @immich/sdk
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
- name: Run setup web
run: pnpm install --frozen-lockfile && pnpm exec svelte-kit sync
@ -467,9 +466,8 @@ jobs:
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Run setup typescript-sdk
run: pnpm install --frozen-lockfile && pnpm build
working-directory: ./open-api/typescript-sdk
- name: Run setup @immich/sdk
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
if: ${{ !cancelled() }}
- name: Install dependencies
@ -699,7 +697,7 @@ jobs:
with:
files: |
mobile/openapi
open-api/typescript-sdk
packages/sdk
open-api/immich-openapi-specs.json
- name: Verify files have not changed

2
.gitignore vendored
View File

@ -20,7 +20,7 @@ mobile/openapi/doc
mobile/openapi/.openapi-generator/FILES
mobile/ios/build
open-api/typescript-sdk/build
packages/**/build
mobile/android/fastlane/report.xml
mobile/ios/fastlane/report.xml

View File

@ -63,7 +63,7 @@ VOLUME_DIRS = \
./e2e/node_modules \
./docs/node_modules \
./server/node_modules \
./open-api/typescript-sdk/node_modules \
./packages/sdk/node_modules \
./.github/node_modules \
./node_modules \
./cli/node_modules
@ -77,7 +77,7 @@ MODULES = e2e server web cli sdk docs .github
# cli = @immich/cli
# docs = documentation
# e2e = immich-e2e
# open-api/typescript-sdk = @immich/sdk
# packages/sdk = @immich/sdk
# server = immich
# web = immich-web
map-package = $(subst sdk,@immich/sdk,$(subst cli,@immich/cli,$(subst docs,documentation,$(subst e2e,immich-e2e,$(subst server,immich,$(subst web,immich-web,$1))))))

View File

@ -3,7 +3,7 @@ FROM node:24.1.0-alpine3.20@sha256:8fe019e0d57dbdce5f5c27c0b63d2775cf34b00e3755a
WORKDIR /usr/src/app
COPY package* pnpm* .pnpmfile.cjs ./
COPY ./cli ./cli/
COPY ./open-api/typescript-sdk ./open-api/typescript-sdk/
COPY ./packages ./packages/
RUN corepack enable pnpm && \
pnpm install --filter @immich/sdk --filter @immich/cli --frozen-lockfile && \
pnpm --filter @immich/sdk build && \

View File

@ -28,7 +28,7 @@ services:
- cli_node_modules:/usr/src/app/cli/node_modules
- docs_node_modules:/usr/src/app/docs/node_modules
- e2e_node_modules:/usr/src/app/e2e/node_modules
- sdk_node_modules:/usr/src/app/open-api/typescript-sdk/node_modules
- sdk_node_modules:/usr/src/app/packages/sdk/node_modules
- app_node_modules:/usr/src/app/node_modules
- sveltekit:/usr/src/app/web/.svelte-kit
- coverage:/usr/src/app/web/coverage

View File

@ -10,4 +10,4 @@ OpenAPI is used to generate the client (Typescript, Dart) SDK. `openapi-generato
make open-api
```
You can find the generated client SDK in the `open-api/typescript-sdk/client` for Typescript SDK and `mobile/openapi` for Dart SDK.
You can find the generated client SDK in the `packages/sdk/client` for Typescript SDK and `mobile/openapi` for Dart SDK.

View File

@ -205,7 +205,7 @@ When the Dev Container starts, it automatically:
1. **Runs post-create script** (`container-server-post-create.sh`):
- Adjusts file permissions for the `node` user
- Installs dependencies: `pnpm install` in all packages
- Builds TypeScript SDK: `pnpm run build` in `open-api/typescript-sdk`
- Builds TypeScript SDK: `pnpm --filter @immich/sdk build`
2. **Starts development servers** via VS Code tasks:
- `Immich API Server (Nest)` - API server with hot-reloading on port 2283

View File

@ -58,7 +58,7 @@ You can access the web from `http://your-machine-ip:3000` or `http://localhost:3
If you only want to do web development connected to an existing, remote backend, follow these steps:
1. Build the Immich SDK - `cd open-api/typescript-sdk && pnpm i && pnpm run build && cd -`
1. Build the Immich SDK - `pnpm --filter @immich/sdk install && pnpm --filter @immich/sdk build`
2. Enter the web directory - `cd web/`
3. Install web dependencies - `pnpm i`
4. Start the web development server

View File

@ -68,7 +68,7 @@ if [ "$CURRENT_SERVER" != "$NEXT_SERVER" ]; then
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix cli
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix web
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix e2e
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix open-api/typescript-sdk
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix packages/sdk
# copy version to open-api spec
pnpm install --frozen-lockfile --prefix server

View File

@ -42,11 +42,11 @@ pin = true
# SDK tasks
[tasks."sdk:install"]
dir = "open-api/typescript-sdk"
dir = "packages/sdk"
run = "pnpm install --filter @immich/sdk --frozen-lockfile"
[tasks."sdk:build"]
dir = "open-api/typescript-sdk"
dir = "packages/sdk"
run = "pnpm run build"
# i18n tasks

View File

@ -30,7 +30,7 @@ function dart {
}
function typescript {
pnpm dlx oazapfts --optimistic --argumentStyle=object --useEnumType --allSchemas immich-openapi-specs.json typescript-sdk/src/fetch-client.ts
pnpm dlx oazapfts --optimistic --argumentStyle=object --useEnumType --allSchemas immich-openapi-specs.json ../packages/sdk/src/fetch-client.ts
pnpm --filter @immich/sdk install --frozen-lockfile
pnpm --filter @immich/sdk build
}

View File

@ -5,7 +5,7 @@
"repository": {
"type": "git",
"url": "git+https://github.com/immich-app/immich.git",
"directory": "open-api/typescript-sdk"
"directory": "packages/sdk"
},
"type": "module",
"main": "./build/index.js",

8
pnpm-lock.yaml generated
View File

@ -47,7 +47,7 @@ importers:
version: 10.0.1(eslint@10.2.1(jiti@2.6.1))
'@immich/sdk':
specifier: workspace:*
version: link:../open-api/typescript-sdk
version: link:../packages/sdk
'@types/byte-size':
specifier: ^8.1.0
version: 8.1.2
@ -207,7 +207,7 @@ importers:
version: link:../e2e-auth-server
'@immich/sdk':
specifier: workspace:*
version: link:../open-api/typescript-sdk
version: link:../packages/sdk
'@playwright/test':
specifier: ^1.44.1
version: 1.59.1
@ -314,7 +314,7 @@ importers:
specifier: ^4.1.1
version: 4.2.0(prettier@3.8.3)
open-api/typescript-sdk:
packages/sdk:
dependencies:
'@oazapfts/runtime':
specifier: ^1.0.2
@ -731,7 +731,7 @@ importers:
version: 0.4.3
'@immich/sdk':
specifier: workspace:*
version: link:../open-api/typescript-sdk
version: link:../packages/sdk
'@immich/ui':
specifier: ^0.76.0
version: 0.76.2(@sveltejs/kit@2.57.1(@opentelemetry/api@1.9.1)(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.2)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)(typescript@6.0.3)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.28.0)(jiti@2.6.1)(sass@1.99.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)))(svelte@5.55.2)

View File

@ -1,10 +1,10 @@
packages:
- packages/**
- cli
- docs
- e2e
- e2e-auth-server
- i18n
- open-api/typescript-sdk
- server
- plugins
- web

View File

@ -29,7 +29,7 @@ ENV IMMICH_BUILD=${BUILD_ID}
WORKDIR /usr/src/app
COPY ./web ./web/
COPY ./i18n ./i18n/
COPY ./open-api ./open-api/
COPY ./packages ./packages/
RUN --mount=type=cache,id=pnpm-web,target=/buildcache/pnpm-store \
--mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=.pnpmfile.cjs,target=.pnpmfile.cjs \
@ -41,7 +41,7 @@ RUN --mount=type=cache,id=pnpm-web,target=/buildcache/pnpm-store \
FROM builder AS cli
COPY ./cli ./cli/
COPY ./open-api ./open-api/
COPY ./packages ./packages/
RUN --mount=type=cache,id=pnpm-cli,target=/buildcache/pnpm-store \
--mount=type=bind,source=package.json,target=package.json \
--mount=type=bind,source=.pnpmfile.cjs,target=.pnpmfile.cjs \