valentinpalkovic/prisma-json-schema-generator

Upcoming rename of `@prisma/sdk` to `@prisma/internals` with Prisma 4

Closed this issue ยท 3 comments

Hey,

Jan from Prisma Engineering here.

Quick heads up that we will soon rename our @prisma/sdk package to @prisma/internals with Prisma 4, which we plan to release on June 28th (soon!).

The @prisma/sdk package was meant as an Prisma internal package only, but somehow it leaked out over time and is now used across all kinds of tools - including yours of course ๐Ÿ˜„

With the rename of the Npm package we want to make it clearer that we can not give any API guarantees for @prisma/internals, might need to introduce breaking changes to the API from time to time and will not follow semantic versioning (breaking changes only in major upgrade) with it. We think that it is better communicated with internals than with sdk.
With Prisma 4, besides the package name nothing should change though.

Additionally it would be super helpful if you could help us gain an understanding where, how and why you are using @prisma/sdk (soon @prisma/internals, remember ๐Ÿ˜€) to achieve, what exactly. We want to cleanup that package and your feedback will be valuable to us to define a better API.

Looking forward to your feedback.

Best
Jan & your friends at Prisma

PS: Are you using Prisma.dmmf from import { Prisma } from '@prisma/client' in your code somewhere by chance? That will also change soon and not include the Prisma.dmmf.schema sub property. Instead you can use getDmmf from @prisma/internals moving forward.

Hey @janpio,

Thank you for letting me know about the upcoming update.

There are exactly two places, where @prisma/sdk is currently in use.

First usage:

parseEnvValue(options.generator.output)

Here I am using it to parse the output-dir. Maybe there is already a more elegant way to do so and it is not required to use the @prisma/sdk here at all.

Second usage:

const dmmf = await getDMMF({ datamodel: datamodelPostGresQL })

Here I am using getDMMF from @prisma/sdk to transform a Prisma model (string template) into an object to test my internal transformDMMF transformer.

Do you have any ideas how to implement these two parts without @prisma/sdk?

@valentinpalkovic Thank you!
These functionalities will stay, renaming @prisma/sdk to @prisma/internals should be what you need for now.

About parseEnvValue the code is quite simple and could be copied.
https://github.com/prisma/prisma/blob/f2a65dab618ae8768ae198ebef8a8117ec6b5498/packages/internals/src/utils/parseEnvValue.ts#L4-L28

We are still collecting feedback from other consumers, after that we want to think about a better API for community tools, so stay tuned ๐Ÿ“ป

Note: You can try prisma packages on the dev tag on npm, like @prisma/internals@3.16.0-dev.84

@valentinpalkovic Prisma 4.0.0 was published on Tuesday ๐Ÿ›ถ

The internal package @prisma/sdk

  • was published for the last time to ease the upgrade (in the future we might reuse the package name, but its content will be different)
  • marked deprecated on npm
  • available under the new, more explicit package name @prisma/internals.

If you know people affected by this, feel free to point them to this GitHub discussion.
It will help us understand where, how, and why people are using it, so we can define a better API.

Note: I posted your earlier comment of your current usage in that discussion to centralize the usage feedback.