Skip to content

chore: move manager, sdk and e2e in as workspaces - #3

Open
CptSchnitz wants to merge 1 commit into
migration/01-scaffoldfrom
migration/02-move-workspaces
Open

chore: move manager, sdk and e2e in as workspaces#3
CptSchnitz wants to merge 1 commit into
migration/01-scaffoldfrom
migration/02-move-workspaces

Conversation

@CptSchnitz

Copy link
Copy Markdown
Collaborator

Imports the three frozen source repositories as pnpm workspaces:

  • apps/jobnik-manager (jobnik-manager@e22e59c)
  • packages/jobnik-sdk (jobnik-sdk@de436ab)
  • e2e (jobnik-e2e@11392f7)

Each workspace keeps its original package name, dependency versions and
scripts. Per-repo lockfiles, git hooks, commit tooling and CI workflows
are dropped in favor of the root's (one repo, one install, one hook
setup); the service-catalog descriptor and each release-please config
are dropped per spec (catalog descriptors aren't carried over; release
config is ticket 08's job).

The e2e suite's SDK dependency now resolves through the workspace
(workspace:*) instead of a published version a full major behind
what the SDK ships; its vitest script is renamed test -> e2e so it
runs as its own turbo task rather than under the shared test task.

turbo.json: lint, type-check and test now depend on the package's own
build (not just upstream builds), and build's inputs/outputs now cover
the manager's Prisma schema and generated client. The manager's build
generates that client into the source tree via a pre-script; without
this wiring, a cached build restores dist/ while the generated client
used by lint/type-check/test is silently missing.

Fixes required to get the moved code green under one shared lockfile
(none change any declared dependency range other than as noted):

  • sdk: drop a stray empty generic (IWorker<>), an invalid-TS leftover
    that a newer, deduped TypeScript now rejects.
  • sdk: declare openapi-types/openapi-typescript-helpers directly; they
    were phantom dependencies resolved only via npm's flat hoisting.
  • sdk: pin undici to 7.19.1 (pnpm override) to match the original
    lockfile's resolution; a fresh resolution of the sdk's own ^7.19.1
    range picked a much newer undici whose types no longer structurally
    match the undici-types version @types/node bundles.
  • manager: add @types/express-serve-static-core directly; needed for
    serverBuilder.ts's own declare module augmentation to resolve
    under pnpm's stricter, non-hoisted resolution.
  • sdk: drop a redundant explicit project eslint parserOption that
    conflicts with the shared config's own projectService under the
    now-resolved typescript-eslint.
  • sdk: three real lint findings surfaced by that config fix, fixed
    without changing behavior (see wrapper.ts, consumer.ts, errors/utils.ts).
  • root: approve the native postinstall scripts (prisma, esbuild, etc.)
    pnpm 10 blocks by default, so a clean install actually works.

Verified end to end through the single root entry point: build, lint,
lint:openapi, format, type-check and test all pass, including the
manager's real Postgres-backed integration tests via its own
docker-compose.yaml (left in its workspace, none added at the repo
root, so the container tool's upward search still finds it).

Known follow-up left for ticket 06 (noted there): the e2e suite's own
tests are stale against the current SDK contract (status literals the
API no longer accepts for those endpoints) — exactly the staleness
this move surfaces rather than papers over.

Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com


Stack created with GitHub Stacks CLIGive Feedback 💬

Imports the three frozen source repositories as pnpm workspaces:

- apps/jobnik-manager (jobnik-manager@e22e59c)
- packages/jobnik-sdk (jobnik-sdk@de436ab)
- e2e (jobnik-e2e@11392f7)

Each workspace keeps its original package name, dependency versions and
scripts. Per-repo lockfiles, git hooks, commit tooling and CI workflows
are dropped in favor of the root's (one repo, one install, one hook
setup); the service-catalog descriptor and each release-please config
are dropped per spec (catalog descriptors aren't carried over; release
config is ticket 08's job).

The e2e suite's SDK dependency now resolves through the workspace
(`workspace:*`) instead of a published version a full major behind
what the SDK ships; its vitest script is renamed test -> e2e so it
runs as its own turbo task rather than under the shared `test` task.

turbo.json: lint, type-check and test now depend on the package's own
build (not just upstream builds), and build's inputs/outputs now cover
the manager's Prisma schema and generated client. The manager's build
generates that client into the source tree via a pre-script; without
this wiring, a cached build restores dist/ while the generated client
used by lint/type-check/test is silently missing.

Fixes required to get the moved code green under one shared lockfile
(none change any declared dependency range other than as noted):

- sdk: drop a stray empty generic (`IWorker<>`), an invalid-TS leftover
  that a newer, deduped TypeScript now rejects.
- sdk: declare openapi-types/openapi-typescript-helpers directly; they
  were phantom dependencies resolved only via npm's flat hoisting.
- sdk: pin undici to 7.19.1 (pnpm override) to match the original
  lockfile's resolution; a fresh resolution of the sdk's own `^7.19.1`
  range picked a much newer undici whose types no longer structurally
  match the undici-types version @types/node bundles.
- manager: add @types/express-serve-static-core directly; needed for
  serverBuilder.ts's own `declare module` augmentation to resolve
  under pnpm's stricter, non-hoisted resolution.
- sdk: drop a redundant explicit `project` eslint parserOption that
  conflicts with the shared config's own `projectService` under the
  now-resolved typescript-eslint.
- sdk: three real lint findings surfaced by that config fix, fixed
  without changing behavior (see wrapper.ts, consumer.ts, errors/utils.ts).
- root: approve the native postinstall scripts (prisma, esbuild, etc.)
  pnpm 10 blocks by default, so a clean install actually works.

Verified end to end through the single root entry point: build, lint,
lint:openapi, format, type-check and test all pass, including the
manager's real Postgres-backed integration tests via its own
docker-compose.yaml (left in its workspace, none added at the repo
root, so the container tool's upward search still finds it).

Known follow-up left for ticket 06 (noted there): the e2e suite's own
tests are stale against the current SDK contract (status literals the
API no longer accepts for those endpoints) — exactly the staleness
this move surfaces rather than papers over.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@CptSchnitz
CptSchnitz marked this pull request as ready for review August 23, 2026 11:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant