chore: move sdk to packages (#28350)
parent
b4f719653f
commit
7837d40f57
|
|
@ -30,9 +30,7 @@ machine-learning/
|
||||||
misc/
|
misc/
|
||||||
mobile/
|
mobile/
|
||||||
|
|
||||||
open-api/typescript-sdk/build/
|
packages/sdk/build/
|
||||||
!open-api/typescript-sdk/package.json
|
|
||||||
!open-api/typescript-sdk/package-lock.json
|
|
||||||
|
|
||||||
server/upload/
|
server/upload/
|
||||||
server/src/queries
|
server/src/queries
|
||||||
|
|
|
||||||
|
|
@ -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/** -diff -merge
|
||||||
mobile/test/drift/main/generated/** linguist-generated=true
|
mobile/test/drift/main/generated/** linguist-generated=true
|
||||||
|
|
||||||
open-api/typescript-sdk/fetch-client.ts -diff -merge
|
packages/sdk/fetch-client.ts -diff -merge
|
||||||
open-api/typescript-sdk/fetch-client.ts linguist-generated=true
|
packages/sdk/fetch-client.ts linguist-generated=true
|
||||||
|
|
||||||
*.sh text eol=lf
|
*.sh text eol=lf
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,6 @@ jobs:
|
||||||
contents: read
|
contents: read
|
||||||
id-token: write
|
id-token: write
|
||||||
packages: write
|
packages: write
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ./open-api/typescript-sdk
|
|
||||||
steps:
|
steps:
|
||||||
- id: token
|
- id: token
|
||||||
uses: immich-app/devtools/actions/create-workflow-token@caa599d954228439ea3e8ce1c3328f41ab120ee6 # create-workflow-token-action-v2.0.0
|
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 }}
|
github_token: ${{ steps.token.outputs.token }}
|
||||||
|
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm --filter @immich/sdk install --frozen-lockfile
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: pnpm build
|
run: pnpm --filter @immich/sdk build
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: pnpm publish --provenance --no-git-checks
|
run: pnpm --filter @immich/sdk publish --provenance --no-git-checks
|
||||||
|
|
|
||||||
|
|
@ -33,14 +33,14 @@ jobs:
|
||||||
web:
|
web:
|
||||||
- 'web/**'
|
- 'web/**'
|
||||||
- 'i18n/**'
|
- 'i18n/**'
|
||||||
- 'open-api/typescript-sdk/**'
|
- 'packages/sdk/**'
|
||||||
- 'pnpm-lock.yaml'
|
- 'pnpm-lock.yaml'
|
||||||
server:
|
server:
|
||||||
- 'server/**'
|
- 'server/**'
|
||||||
- 'pnpm-lock.yaml'
|
- 'pnpm-lock.yaml'
|
||||||
cli:
|
cli:
|
||||||
- 'cli/**'
|
- 'cli/**'
|
||||||
- 'open-api/typescript-sdk/**'
|
- 'packages/sdk/**'
|
||||||
- 'pnpm-lock.yaml'
|
- 'pnpm-lock.yaml'
|
||||||
e2e:
|
e2e:
|
||||||
- 'e2e/**'
|
- 'e2e/**'
|
||||||
|
|
@ -149,9 +149,9 @@ jobs:
|
||||||
node-version-file: '.nvmrc'
|
node-version-file: '.nvmrc'
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
cache-dependency-path: '**/pnpm-lock.yaml'
|
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||||
- name: Setup typescript-sdk
|
|
||||||
run: pnpm install --frozen-lockfile && pnpm build
|
- name: Setup @immich/sdk
|
||||||
working-directory: ./open-api/typescript-sdk
|
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
|
||||||
|
|
||||||
- name: Install deps
|
- name: Install deps
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
@ -194,7 +194,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
github_token: ${{ steps.token.outputs.token }}
|
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
|
run: mise run //:sdk:install && mise run //:sdk:build
|
||||||
|
|
||||||
- name: Run pnpm install
|
- name: Run pnpm install
|
||||||
|
|
@ -384,9 +384,8 @@ jobs:
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
cache-dependency-path: '**/pnpm-lock.yaml'
|
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||||
|
|
||||||
- name: Setup typescript-sdk
|
- name: Setup @immich/sdk
|
||||||
run: pnpm install --frozen-lockfile && pnpm build
|
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
|
||||||
working-directory: ./open-api/typescript-sdk
|
|
||||||
|
|
||||||
- name: Run setup web
|
- name: Run setup web
|
||||||
run: pnpm install --frozen-lockfile && pnpm exec svelte-kit sync
|
run: pnpm install --frozen-lockfile && pnpm exec svelte-kit sync
|
||||||
|
|
@ -467,9 +466,8 @@ jobs:
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
cache-dependency-path: '**/pnpm-lock.yaml'
|
cache-dependency-path: '**/pnpm-lock.yaml'
|
||||||
|
|
||||||
- name: Run setup typescript-sdk
|
- name: Run setup @immich/sdk
|
||||||
run: pnpm install --frozen-lockfile && pnpm build
|
run: pnpm --filter @immich/sdk install --frozen-lockfile && pnpm --filter @immich/sdk build
|
||||||
working-directory: ./open-api/typescript-sdk
|
|
||||||
|
|
||||||
if: ${{ !cancelled() }}
|
if: ${{ !cancelled() }}
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|
@ -699,7 +697,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
mobile/openapi
|
mobile/openapi
|
||||||
open-api/typescript-sdk
|
packages/sdk
|
||||||
open-api/immich-openapi-specs.json
|
open-api/immich-openapi-specs.json
|
||||||
|
|
||||||
- name: Verify files have not changed
|
- name: Verify files have not changed
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ mobile/openapi/doc
|
||||||
mobile/openapi/.openapi-generator/FILES
|
mobile/openapi/.openapi-generator/FILES
|
||||||
mobile/ios/build
|
mobile/ios/build
|
||||||
|
|
||||||
open-api/typescript-sdk/build
|
packages/**/build
|
||||||
mobile/android/fastlane/report.xml
|
mobile/android/fastlane/report.xml
|
||||||
mobile/ios/fastlane/report.xml
|
mobile/ios/fastlane/report.xml
|
||||||
|
|
||||||
|
|
|
||||||
4
Makefile
4
Makefile
|
|
@ -63,7 +63,7 @@ VOLUME_DIRS = \
|
||||||
./e2e/node_modules \
|
./e2e/node_modules \
|
||||||
./docs/node_modules \
|
./docs/node_modules \
|
||||||
./server/node_modules \
|
./server/node_modules \
|
||||||
./open-api/typescript-sdk/node_modules \
|
./packages/sdk/node_modules \
|
||||||
./.github/node_modules \
|
./.github/node_modules \
|
||||||
./node_modules \
|
./node_modules \
|
||||||
./cli/node_modules
|
./cli/node_modules
|
||||||
|
|
@ -77,7 +77,7 @@ MODULES = e2e server web cli sdk docs .github
|
||||||
# cli = @immich/cli
|
# cli = @immich/cli
|
||||||
# docs = documentation
|
# docs = documentation
|
||||||
# e2e = immich-e2e
|
# e2e = immich-e2e
|
||||||
# open-api/typescript-sdk = @immich/sdk
|
# packages/sdk = @immich/sdk
|
||||||
# server = immich
|
# server = immich
|
||||||
# web = immich-web
|
# 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))))))
|
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))))))
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ FROM node:24.1.0-alpine3.20@sha256:8fe019e0d57dbdce5f5c27c0b63d2775cf34b00e3755a
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
COPY package* pnpm* .pnpmfile.cjs ./
|
COPY package* pnpm* .pnpmfile.cjs ./
|
||||||
COPY ./cli ./cli/
|
COPY ./cli ./cli/
|
||||||
COPY ./open-api/typescript-sdk ./open-api/typescript-sdk/
|
COPY ./packages ./packages/
|
||||||
RUN corepack enable pnpm && \
|
RUN corepack enable pnpm && \
|
||||||
pnpm install --filter @immich/sdk --filter @immich/cli --frozen-lockfile && \
|
pnpm install --filter @immich/sdk --filter @immich/cli --frozen-lockfile && \
|
||||||
pnpm --filter @immich/sdk build && \
|
pnpm --filter @immich/sdk build && \
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,7 @@ services:
|
||||||
- cli_node_modules:/usr/src/app/cli/node_modules
|
- cli_node_modules:/usr/src/app/cli/node_modules
|
||||||
- docs_node_modules:/usr/src/app/docs/node_modules
|
- docs_node_modules:/usr/src/app/docs/node_modules
|
||||||
- e2e_node_modules:/usr/src/app/e2e/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
|
- app_node_modules:/usr/src/app/node_modules
|
||||||
- sveltekit:/usr/src/app/web/.svelte-kit
|
- sveltekit:/usr/src/app/web/.svelte-kit
|
||||||
- coverage:/usr/src/app/web/coverage
|
- coverage:/usr/src/app/web/coverage
|
||||||
|
|
|
||||||
|
|
@ -10,4 +10,4 @@ OpenAPI is used to generate the client (Typescript, Dart) SDK. `openapi-generato
|
||||||
make open-api
|
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.
|
||||||
|
|
|
||||||
|
|
@ -205,7 +205,7 @@ When the Dev Container starts, it automatically:
|
||||||
1. **Runs post-create script** (`container-server-post-create.sh`):
|
1. **Runs post-create script** (`container-server-post-create.sh`):
|
||||||
- Adjusts file permissions for the `node` user
|
- Adjusts file permissions for the `node` user
|
||||||
- Installs dependencies: `pnpm install` in all packages
|
- 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:
|
2. **Starts development servers** via VS Code tasks:
|
||||||
- `Immich API Server (Nest)` - API server with hot-reloading on port 2283
|
- `Immich API Server (Nest)` - API server with hot-reloading on port 2283
|
||||||
|
|
|
||||||
|
|
@ -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:
|
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/`
|
2. Enter the web directory - `cd web/`
|
||||||
3. Install web dependencies - `pnpm i`
|
3. Install web dependencies - `pnpm i`
|
||||||
4. Start the web development server
|
4. Start the web development server
|
||||||
|
|
|
||||||
|
|
@ -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 cli
|
||||||
pnpm version "$NEXT_SERVER" --no-git-tag-version --prefix web
|
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 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
|
# copy version to open-api spec
|
||||||
pnpm install --frozen-lockfile --prefix server
|
pnpm install --frozen-lockfile --prefix server
|
||||||
|
|
|
||||||
|
|
@ -42,11 +42,11 @@ pin = true
|
||||||
|
|
||||||
# SDK tasks
|
# SDK tasks
|
||||||
[tasks."sdk:install"]
|
[tasks."sdk:install"]
|
||||||
dir = "open-api/typescript-sdk"
|
dir = "packages/sdk"
|
||||||
run = "pnpm install --filter @immich/sdk --frozen-lockfile"
|
run = "pnpm install --filter @immich/sdk --frozen-lockfile"
|
||||||
|
|
||||||
[tasks."sdk:build"]
|
[tasks."sdk:build"]
|
||||||
dir = "open-api/typescript-sdk"
|
dir = "packages/sdk"
|
||||||
run = "pnpm run build"
|
run = "pnpm run build"
|
||||||
|
|
||||||
# i18n tasks
|
# i18n tasks
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ function dart {
|
||||||
}
|
}
|
||||||
|
|
||||||
function typescript {
|
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 install --frozen-lockfile
|
||||||
pnpm --filter @immich/sdk build
|
pnpm --filter @immich/sdk build
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/immich-app/immich.git",
|
"url": "git+https://github.com/immich-app/immich.git",
|
||||||
"directory": "open-api/typescript-sdk"
|
"directory": "packages/sdk"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./build/index.js",
|
"main": "./build/index.js",
|
||||||
|
|
@ -47,7 +47,7 @@ importers:
|
||||||
version: 10.0.1(eslint@10.2.1(jiti@2.6.1))
|
version: 10.0.1(eslint@10.2.1(jiti@2.6.1))
|
||||||
'@immich/sdk':
|
'@immich/sdk':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../open-api/typescript-sdk
|
version: link:../packages/sdk
|
||||||
'@types/byte-size':
|
'@types/byte-size':
|
||||||
specifier: ^8.1.0
|
specifier: ^8.1.0
|
||||||
version: 8.1.2
|
version: 8.1.2
|
||||||
|
|
@ -207,7 +207,7 @@ importers:
|
||||||
version: link:../e2e-auth-server
|
version: link:../e2e-auth-server
|
||||||
'@immich/sdk':
|
'@immich/sdk':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../open-api/typescript-sdk
|
version: link:../packages/sdk
|
||||||
'@playwright/test':
|
'@playwright/test':
|
||||||
specifier: ^1.44.1
|
specifier: ^1.44.1
|
||||||
version: 1.59.1
|
version: 1.59.1
|
||||||
|
|
@ -314,7 +314,7 @@ importers:
|
||||||
specifier: ^4.1.1
|
specifier: ^4.1.1
|
||||||
version: 4.2.0(prettier@3.8.3)
|
version: 4.2.0(prettier@3.8.3)
|
||||||
|
|
||||||
open-api/typescript-sdk:
|
packages/sdk:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@oazapfts/runtime':
|
'@oazapfts/runtime':
|
||||||
specifier: ^1.0.2
|
specifier: ^1.0.2
|
||||||
|
|
@ -731,7 +731,7 @@ importers:
|
||||||
version: 0.4.3
|
version: 0.4.3
|
||||||
'@immich/sdk':
|
'@immich/sdk':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../open-api/typescript-sdk
|
version: link:../packages/sdk
|
||||||
'@immich/ui':
|
'@immich/ui':
|
||||||
specifier: ^0.76.0
|
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)
|
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)
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
packages:
|
packages:
|
||||||
|
- packages/**
|
||||||
- cli
|
- cli
|
||||||
- docs
|
- docs
|
||||||
- e2e
|
- e2e
|
||||||
- e2e-auth-server
|
- e2e-auth-server
|
||||||
- i18n
|
- i18n
|
||||||
- open-api/typescript-sdk
|
|
||||||
- server
|
- server
|
||||||
- plugins
|
- plugins
|
||||||
- web
|
- web
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ ENV IMMICH_BUILD=${BUILD_ID}
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
COPY ./web ./web/
|
COPY ./web ./web/
|
||||||
COPY ./i18n ./i18n/
|
COPY ./i18n ./i18n/
|
||||||
COPY ./open-api ./open-api/
|
COPY ./packages ./packages/
|
||||||
RUN --mount=type=cache,id=pnpm-web,target=/buildcache/pnpm-store \
|
RUN --mount=type=cache,id=pnpm-web,target=/buildcache/pnpm-store \
|
||||||
--mount=type=bind,source=package.json,target=package.json \
|
--mount=type=bind,source=package.json,target=package.json \
|
||||||
--mount=type=bind,source=.pnpmfile.cjs,target=.pnpmfile.cjs \
|
--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
|
FROM builder AS cli
|
||||||
|
|
||||||
COPY ./cli ./cli/
|
COPY ./cli ./cli/
|
||||||
COPY ./open-api ./open-api/
|
COPY ./packages ./packages/
|
||||||
RUN --mount=type=cache,id=pnpm-cli,target=/buildcache/pnpm-store \
|
RUN --mount=type=cache,id=pnpm-cli,target=/buildcache/pnpm-store \
|
||||||
--mount=type=bind,source=package.json,target=package.json \
|
--mount=type=bind,source=package.json,target=package.json \
|
||||||
--mount=type=bind,source=.pnpmfile.cjs,target=.pnpmfile.cjs \
|
--mount=type=bind,source=.pnpmfile.cjs,target=.pnpmfile.cjs \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue