Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Oct 10, 2025

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@baseplate-dev/[email protected]

Minor Changes

  • #692 c3c2a00 Thanks @kingston! - Replace imperative CRUD service pattern with declarative, type-safe data operations architecture

    Overview

    This change migrates from manually-written imperative CRUD functions to a declarative, type-safe data operations system featuring composable field definitions and automatic type inference. This represents a fundamental architectural improvement in how Baseplate generates data access code.

    Key Changes

    Architecture Shift

    Before: Manual, imperative functions with explicit Prisma calls and complex data transformations

    // 250+ lines of manual data handling
    export async function createUser({ data, query, context }) {
      const { roles, customer, userProfile, images, ...rest } = data;
    
      const customerOutput = await createOneToOneCreateData({ input: customer });
      const imagesOutput = await createOneToManyCreateData({
        /* complex config */
      });
      // ... more manual transformations
    
      return applyDataPipeOutput(
        [rolesOutput, customerOutput, userProfileOutput, imagesOutput],
        prisma.user.create({
          /* manually built data object */
        }),
      );
    }

    After: Declarative operations with composable field definitions

    // ~100 lines with clear separation of concerns
    export const createUser = defineCreateOperation({
      model: 'user',
      fields: userInputFields,
      create: ({ tx, data, query }) =>
        tx.user.create({
          data,
          ...query,
        }),
    });

    Composable Field Definitions

    Field definitions are now centralized, reusable components:

    export const userInputFields = {
      name: scalarField(z.string().nullish()),
      email: scalarField(z.string()),
      customer: nestedOneToOneField({
        buildData: (data) => data,
        fields: { stripeCustomerId: scalarField(z.string()) },
        getWhereUnique: (parentModel) => ({ id: parentModel.id }),
        model: 'customer',
        parentModel,
        relationName: 'user',
      }),
      images: nestedOneToManyField({
        buildData: (data) => data,
        fields: pick(userImageInputFields, ['id', 'caption', 'file']),
        getWhereUnique: (input) => (input.id ? { id: input.id } : undefined),
        model: 'userImage',
        parentModel,
        relationName: 'user',
      }),
    };

    Breaking Changes

    • File naming: Services now use *-data-service.ts instead of *-crud.ts
    • Import paths: New utilities from @src/utils/data-operations/
    • Service signatures: Remain compatible - same inputs and outputs
  • #680 ac912b3 Thanks @kingston! - Switch backend to ESM instead of CommonJS. This may break some packages but
    most packages at this point are now ESM compatible.

Patch Changes

  • #693 e79df28 Thanks @kingston! - Use Zod schema defined in mutations instead of restrictObjectNulls to allow for cleaner mutations and validation

  • #676 e68624e Thanks @kingston! - Allow prisma.config.mts to gracefully handle missing .env files by checking file existence before calling loadEnvFile(), enabling pnpm prisma generate to run successfully in environments without .env files

  • #677 6daff18 Thanks @kingston! - Upgrade Prisma to 6.17.1 and adopt the new Prisma generator architecture:

    • Updated to Prisma 6.17.1 for improved performance and features
    • Migrated Prisma generated client location from node_modules/.prisma/client to @src/generated/prisma/client.js for better control and type safety
  • #680 ac912b3 Thanks @kingston! - Upgrade TSX to 4.20.6

  • #673 852c3a5 Thanks @kingston! - Replace custom Date/DateTime/UUID scalars with graphql-scalars package and add JSON/JSONObject scalar support

    This change migrates from custom scalar implementations to the well-maintained graphql-scalars package, providing:

    • Reduced maintenance burden: No custom scalar code to maintain
    • Battle-tested implementations: Comprehensive edge case handling from widely-used library
    • Standards compliance: RFC 3339 compliant Date/DateTime handling
    • Better error messages: Detailed validation error messages out of the box
    • Additional scalars: JSON and JSONObject scalars now available

    Breaking Changes:

    • Date scalar now uses RFC 3339 format (stricter than previous YYYY-MM-DD regex)
    • DateTime scalar automatically shifts non-UTC timezones to UTC
    • UUID scalar has more comprehensive validation

    New Features:

    • JSON scalar for any valid JSON value (objects, arrays, primitives, null)
    • JSONObject scalar for JSON objects only (rejects arrays and primitives)

    Dependencies:

  • #692 c3c2a00 Thanks @kingston! - Remove support for password transformer since it is no longer used.

  • #680 ac912b3 Thanks @kingston! - Upgrade ioredis to 5.8.1 and ioredis-mock to 8.13.0-

  • #693 e79df28 Thanks @kingston! - Add support for validation plugin in Pothos

  • Updated dependencies [839cbdf, c3c2a00, c3c2a00, 6daff18]:

@baseplate-dev/[email protected]

Minor Changes

Patch Changes

@baseplate-dev/[email protected]

Minor Changes

  • #684 9f22eef Thanks @kingston! - BREAKING: Remove packageLocation field and standardize app locations to apps/{appName}

    The packageLocation field has been removed from app configurations. All apps now use a standardized location pattern: apps/{appName}.

    Migration required for existing projects:

    1. Move your app folders from packages/ to apps/
    2. Update pnpm-workspace.yaml to use apps/* instead of packages/*
  • #687 57e15c0 Thanks @kingston! - Add support for generating the root of a monorepo

Patch Changes

  • #690 839cbdf Thanks @kingston! - Move Docker Compose generation from backend to root package

    Docker Compose configuration is now generated at the monorepo root instead of within individual backend packages. This provides a better developer experience with a single docker compose up command from the project root.

    Breaking Changes:

    • Docker files now generate at docker/ (root) instead of apps/backend/docker/
    • enableRedis removed from backend app configuration - moved to project-level infrastructure settings
    • New Infrastructure settings page for configuring Redis (Postgres is always enabled)
  • #690 839cbdf Thanks @kingston! - Add migration to move enableRedis from backend apps to infrastructure settings. Redis configuration is now stored at settings.infrastructure.redis.enabled instead of individual backend app settings, allowing for centralized infrastructure configuration across the monorepo.

  • Updated dependencies [839cbdf, c3c2a00, d324059]:

@baseplate-dev/[email protected]

Minor Changes

Patch Changes

@baseplate-dev/[email protected]

Minor Changes

Patch Changes

  • #690 839cbdf Thanks @kingston! - Move Docker Compose generation from backend to root package

    Docker Compose configuration is now generated at the monorepo root instead of within individual backend packages. This provides a better developer experience with a single docker compose up command from the project root.

    Breaking Changes:

    • Docker files now generate at docker/ (root) instead of apps/backend/docker/
    • enableRedis removed from backend app configuration - moved to project-level infrastructure settings
    • New Infrastructure settings page for configuring Redis (Postgres is always enabled)
  • Updated dependencies [9f22eef, 839cbdf, 839cbdf, c3c2a00, d324059, 57e15c0]:

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

@baseplate-dev/[email protected]

Patch Changes

@baseplate-dev/[email protected]

@vercel
Copy link

vercel bot commented Oct 10, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
baseplate-project-builder-web Ready Ready Preview Comment Nov 20, 2025 3:32pm

@coderabbitai
Copy link

coderabbitai bot commented Oct 10, 2025

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions github-actions bot force-pushed the changeset-release/main branch from 5e6ad0d to 9d42837 Compare October 10, 2025 12:33
@github-actions github-actions bot force-pushed the changeset-release/main branch from 9d42837 to c985f1c Compare October 14, 2025 08:07
@github-actions github-actions bot force-pushed the changeset-release/main branch from c985f1c to b70fd29 Compare October 15, 2025 09:47
@github-actions github-actions bot force-pushed the changeset-release/main branch from b70fd29 to 378111b Compare October 15, 2025 10:08
@github-actions github-actions bot force-pushed the changeset-release/main branch from 378111b to 7a3ac10 Compare October 15, 2025 10:12
@github-actions github-actions bot force-pushed the changeset-release/main branch from 7a3ac10 to 97e5875 Compare October 15, 2025 12:11
@github-actions github-actions bot force-pushed the changeset-release/main branch from 97e5875 to fb9ba36 Compare October 16, 2025 10:05
@github-actions github-actions bot force-pushed the changeset-release/main branch from fb9ba36 to e180557 Compare October 23, 2025 20:59
@github-actions github-actions bot force-pushed the changeset-release/main branch from e180557 to fa4fa3d Compare October 24, 2025 07:49
@github-actions github-actions bot force-pushed the changeset-release/main branch from fa4fa3d to 1932b4b Compare October 24, 2025 18:11
@github-actions github-actions bot force-pushed the changeset-release/main branch from 1932b4b to c2849a1 Compare October 27, 2025 15:05
@github-actions github-actions bot force-pushed the changeset-release/main branch from c2849a1 to 2c9e8be Compare October 27, 2025 15:14
@github-actions github-actions bot force-pushed the changeset-release/main branch from 2c9e8be to ccadc68 Compare October 27, 2025 22:18
@github-actions github-actions bot force-pushed the changeset-release/main branch from ccadc68 to 221f889 Compare October 28, 2025 17:06
@github-actions github-actions bot force-pushed the changeset-release/main branch from 231e604 to 9f69b08 Compare November 20, 2025 15:30
@kingston kingston merged commit b2b45a3 into main Nov 20, 2025
6 checks passed
@kingston kingston deleted the changeset-release/main branch November 20, 2025 15:33
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.

2 participants