diff --git a/.dockerignore b/.dockerignore index f7efb5c56e..4d8e2160c2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -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 diff --git a/.gitattributes b/.gitattributes index e1225939b1..f1d1336935 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/.github/workflows/sdk.yml b/.github/workflows/sdk.yml index 6eb3742e7a..f5f43041ec 100644 --- a/.github/workflows/sdk.yml +++ b/.github/workflows/sdk.yml @@ -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 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ea4602c660..dca52c73b9 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -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 diff --git a/.gitignore b/.gitignore index e8fdfa266c..8beeeedfe3 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/Makefile b/Makefile index 4d76913d8f..9a3410dc68 100644 --- a/Makefile +++ b/Makefile @@ -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)))))) diff --git a/cli/Dockerfile b/cli/Dockerfile index d56190ee16..d577308cf9 100644 --- a/cli/Dockerfile +++ b/cli/Dockerfile @@ -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 && \ diff --git a/docker/docker-compose.dev.yml b/docker/docker-compose.dev.yml index 434500b835..e173006786 100644 --- a/docker/docker-compose.dev.yml +++ b/docker/docker-compose.dev.yml @@ -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 diff --git a/docs/docs/api.md b/docs/docs/api.md index edf58dc94d..9336fcf40d 100644 --- a/docs/docs/api.md +++ b/docs/docs/api.md @@ -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. diff --git a/docs/docs/developer/devcontainers.md b/docs/docs/developer/devcontainers.md index 4bd60262ad..e6f1fbeecd 100644 --- a/docs/docs/developer/devcontainers.md +++ b/docs/docs/developer/devcontainers.md @@ -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 diff --git a/docs/docs/developer/setup.md b/docs/docs/developer/setup.md index abdb3befbe..c5d782fb52 100644 --- a/docs/docs/developer/setup.md +++ b/docs/docs/developer/setup.md @@ -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 diff --git a/misc/release/pump-version.sh b/misc/release/pump-version.sh index 6be0ddebb9..018046de7f 100755 --- a/misc/release/pump-version.sh +++ b/misc/release/pump-version.sh @@ -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 diff --git a/mise.toml b/mise.toml index 5aa7054c27..9ff4abfb5a 100644 --- a/mise.toml +++ b/mise.toml @@ -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 diff --git a/open-api/bin/generate-open-api.sh b/open-api/bin/generate-open-api.sh index 9d7b158fc3..d03ff7a063 100755 --- a/open-api/bin/generate-open-api.sh +++ b/open-api/bin/generate-open-api.sh @@ -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 } diff --git a/open-api/typescript-sdk/.npmignore b/packages/sdk/.npmignore similarity index 100% rename from open-api/typescript-sdk/.npmignore rename to packages/sdk/.npmignore diff --git a/open-api/typescript-sdk/README.md b/packages/sdk/README.md similarity index 100% rename from open-api/typescript-sdk/README.md rename to packages/sdk/README.md diff --git a/open-api/typescript-sdk/package.json b/packages/sdk/package.json similarity index 93% rename from open-api/typescript-sdk/package.json rename to packages/sdk/package.json index eca4bab946..926a30ba88 100644 --- a/open-api/typescript-sdk/package.json +++ b/packages/sdk/package.json @@ -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", diff --git a/open-api/typescript-sdk/src/fetch-client.ts b/packages/sdk/src/fetch-client.ts similarity index 100% rename from open-api/typescript-sdk/src/fetch-client.ts rename to packages/sdk/src/fetch-client.ts diff --git a/open-api/typescript-sdk/src/fetch-errors.ts b/packages/sdk/src/fetch-errors.ts similarity index 100% rename from open-api/typescript-sdk/src/fetch-errors.ts rename to packages/sdk/src/fetch-errors.ts diff --git a/open-api/typescript-sdk/src/index.ts b/packages/sdk/src/index.ts similarity index 100% rename from open-api/typescript-sdk/src/index.ts rename to packages/sdk/src/index.ts diff --git a/open-api/typescript-sdk/tsconfig.json b/packages/sdk/tsconfig.json similarity index 100% rename from open-api/typescript-sdk/tsconfig.json rename to packages/sdk/tsconfig.json diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d831c2d195..a2f8ba7899 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -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) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index d9ac5ddcee..6beec5f44f 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,10 +1,10 @@ packages: + - packages/** - cli - docs - e2e - e2e-auth-server - i18n - - open-api/typescript-sdk - server - plugins - web diff --git a/server/Dockerfile b/server/Dockerfile index 50e8b9714c..4d29393bab 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -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 \