prisma-safe-delete 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/README.md +436 -0
  4. package/dist/bin.d.ts +9 -0
  5. package/dist/bin.d.ts.map +1 -0
  6. package/dist/bin.js +9 -0
  7. package/dist/bin.js.map +1 -0
  8. package/dist/cascade-graph.d.ts +54 -0
  9. package/dist/cascade-graph.d.ts.map +1 -0
  10. package/dist/cascade-graph.js +123 -0
  11. package/dist/cascade-graph.js.map +1 -0
  12. package/dist/codegen/emit-cascade-graph.d.ts +6 -0
  13. package/dist/codegen/emit-cascade-graph.d.ts.map +1 -0
  14. package/dist/codegen/emit-cascade-graph.js +56 -0
  15. package/dist/codegen/emit-cascade-graph.js.map +1 -0
  16. package/dist/codegen/emit-index.d.ts +6 -0
  17. package/dist/codegen/emit-index.d.ts.map +1 -0
  18. package/dist/codegen/emit-index.js +26 -0
  19. package/dist/codegen/emit-index.js.map +1 -0
  20. package/dist/codegen/emit-runtime.d.ts +8 -0
  21. package/dist/codegen/emit-runtime.d.ts.map +1 -0
  22. package/dist/codegen/emit-runtime.js +873 -0
  23. package/dist/codegen/emit-runtime.js.map +1 -0
  24. package/dist/codegen/emit-types.d.ts +8 -0
  25. package/dist/codegen/emit-types.d.ts.map +1 -0
  26. package/dist/codegen/emit-types.js +109 -0
  27. package/dist/codegen/emit-types.js.map +1 -0
  28. package/dist/codegen/index.d.ts +5 -0
  29. package/dist/codegen/index.d.ts.map +1 -0
  30. package/dist/codegen/index.js +5 -0
  31. package/dist/codegen/index.js.map +1 -0
  32. package/dist/dmmf-parser.d.ts +62 -0
  33. package/dist/dmmf-parser.d.ts.map +1 -0
  34. package/dist/dmmf-parser.js +171 -0
  35. package/dist/dmmf-parser.js.map +1 -0
  36. package/dist/generator.d.ts +2 -0
  37. package/dist/generator.d.ts.map +1 -0
  38. package/dist/generator.js +71 -0
  39. package/dist/generator.js.map +1 -0
  40. package/package.json +80 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-runtime.js","sourceRoot":"","sources":["../../src/codegen/emit-runtime.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,gBAAwB;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8CAA8C,gBAAgB,IAAI,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAC;IAC7G,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,sBAAsB;IACtB,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC1F,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,uBAAuB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,4BAA4B;IAC5B,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;IACzD,KAAK,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACxE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;IAC7C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,mEAAmE;IACnE,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gFAAgF;IAChF,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAClE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,mEAAmE;IACnE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC1F,KAAK,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IACzG,KAAK,CAAC,IAAI,CAAC,oHAAoH,CAAC,CAAC;IACjI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,wBAAwB;IACxB,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,8BAA8B;IAC9B,KAAK,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,oCAAoC;IACpC,KAAK,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,+BAA+B;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,gDAAgD;IAChD,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,6BAA6B;IAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAExC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB;IAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsLP,CAAC,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuPP,CAAC,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,6BAA6B;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+IP,CAAC,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAkB;IAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO;;iCAEsB,IAAI;;iBAEpB,IAAI;4BACO,SAAS;;;;uEAIkC,IAAI;yEACF,IAAI;uFACU,IAAI;2EAChB,IAAI;yFACU,IAAI;iEAC5B,IAAI;yEACI,IAAI;qEACR,IAAI;;;;;;;;;;;;6CAY5B,IAAI;;2DAEU,IAAI;;;;kDAIb,IAAI;iCACrB,IAAI;;;;;;;;6CAQQ,IAAI;;;;;;;;EAQ/C,CAAC,IAAI,EAAE,CAAC;IACR,CAAC;IAED,OAAO;;4BAEmB,IAAI;;iBAEf,IAAI;kBACH,SAAS;EACzB,CAAC,IAAI,EAAE,CAAC;AACV,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAoB;IACtD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IACpG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,YAAY,SAAS,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;IAC1F,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;YAC3D,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,0CAA0C,SAAS,aAAa,CAAC,CAAC;YAC7E,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,cAAc,oBAAoB,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,2CAA2C,SAAS,cAAc,CAAC,CAAC;YAC/E,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,cAAc,oBAAoB,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,4CAA4C,SAAS,eAAe,CAAC,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,cAAc,oBAAoB,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,UAAU,CAAC,CAAC;YACvE,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,oCAAoC,KAAK,CAAC,cAAc,oBAAoB,CAAC,CAAC;YACzF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAoB;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAC7D,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,KAAK,CAAC,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,sCAAsC,SAAS,kCAAkC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAC9G,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,mCAAmC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAChH,KAAK,CAAC,IAAI,CAAC,8CAA8C,SAAS,0CAA0C,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAC9H,KAAK,CAAC,IAAI,CAAC,wCAAwC,SAAS,oCAAoC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAClH,KAAK,CAAC,IAAI,CAAC,+CAA+C,SAAS,2CAA2C,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAChI,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,+BAA+B,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YACxG,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,mCAAmC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAChH,KAAK,CAAC,IAAI,CAAC,qCAAqC,SAAS,iCAAiC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC;YAC5G,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,gBAAgB,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,oBAAoB,CAAC,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,gBAAgB,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,oBAAoB,CAAC,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,gBAAgB,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,gBAAgB,CAAC,CAAC;YACzE,KAAK,CAAC,IAAI,CAAC,uCAAuC,SAAS,oBAAoB,CAAC,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,QAAQ,SAAS,GAAG,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACzF,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAEzB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,OAAO,SAAS,WAAW,KAAK,CAAC,IAAI,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC/F,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IACrE,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;IACnF,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACrF,KAAK,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;IACzF,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,wFAAwF,CAAC,CAAC;IACrG,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACjE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ParsedSchema } from '../dmmf-parser.js';
2
+ /**
3
+ * Generates the SafePrismaClient type definitions
4
+ * @param schema - The parsed Prisma schema
5
+ * @param clientImportPath - The relative import path to the generated Prisma client (e.g., '../client')
6
+ */
7
+ export declare function emitTypes(schema: ParsedSchema, clientImportPath: string): string;
8
+ //# sourceMappingURL=emit-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-types.d.ts","sourceRoot":"","sources":["../../src/codegen/emit-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAqBhF"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Generates the SafePrismaClient type definitions
3
+ * @param schema - The parsed Prisma schema
4
+ * @param clientImportPath - The relative import path to the generated Prisma client (e.g., '../client')
5
+ */
6
+ export function emitTypes(schema, clientImportPath) {
7
+ const lines = [];
8
+ lines.push('/* eslint-disable */');
9
+ lines.push('// @ts-nocheck');
10
+ lines.push('// Auto-generated by prisma-safe-delete');
11
+ lines.push('// Do not edit this file manually');
12
+ lines.push('');
13
+ lines.push(`import type { PrismaClient, Prisma } from '${clientImportPath}';`);
14
+ lines.push('');
15
+ // Generate model-specific types
16
+ for (const model of schema.models) {
17
+ lines.push(...emitModelTypes(model));
18
+ lines.push('');
19
+ }
20
+ // Generate the main SafePrismaClient type
21
+ lines.push(...emitSafePrismaClientType(schema));
22
+ return lines.join('\n');
23
+ }
24
+ function emitModelTypes(model) {
25
+ const lines = [];
26
+ const name = model.name;
27
+ const lowerName = toLowerFirst(name);
28
+ if (model.isSoftDeletable) {
29
+ // Soft-deletable model gets modified delegate type
30
+ lines.push(`/** Soft-delete enabled delegate for ${name} */`);
31
+ lines.push(`export type Safe${name}Delegate = Omit<`);
32
+ lines.push(` PrismaClient['${lowerName}'],`);
33
+ lines.push(` 'delete' | 'deleteMany'`);
34
+ lines.push(`> & {`);
35
+ lines.push(` /** Soft delete a single ${name} record */`);
36
+ lines.push(` softDelete: (args: Prisma.${name}DeleteArgs) => Promise<Prisma.${name}GetPayload<{}>>;`);
37
+ lines.push(` /** Soft delete multiple ${name} records */`);
38
+ lines.push(` softDeleteMany: (args: Prisma.${name}DeleteManyArgs) => Promise<Prisma.BatchPayload>;`);
39
+ lines.push(` /** Hard delete a single ${name} record (permanent) */`);
40
+ lines.push(` hardDelete: (args: Prisma.${name}DeleteArgs) => Promise<Prisma.${name}GetPayload<{}>>;`);
41
+ lines.push(` /** Hard delete multiple ${name} records (permanent) */`);
42
+ lines.push(` hardDeleteMany: (args: Prisma.${name}DeleteManyArgs) => Promise<Prisma.BatchPayload>;`);
43
+ lines.push(`};`);
44
+ }
45
+ else {
46
+ // Non-soft-deletable model keeps original type
47
+ lines.push(`/** Standard delegate for ${name} (no soft-delete) */`);
48
+ lines.push(`export type Safe${name}Delegate = PrismaClient['${lowerName}'];`);
49
+ }
50
+ return lines;
51
+ }
52
+ function emitSafePrismaClientType(schema) {
53
+ const lines = [];
54
+ lines.push('/** Type-safe Prisma client with soft-delete support */');
55
+ lines.push('export interface SafePrismaClient {');
56
+ // Add model delegates
57
+ for (const model of schema.models) {
58
+ const lowerName = toLowerFirst(model.name);
59
+ lines.push(` ${lowerName}: Safe${model.name}Delegate;`);
60
+ }
61
+ lines.push('');
62
+ lines.push(' // Prisma client methods');
63
+ lines.push(" $connect: PrismaClient['$connect'];");
64
+ lines.push(" $disconnect: PrismaClient['$disconnect'];");
65
+ lines.push(" $on: PrismaClient['$on'];");
66
+ lines.push(" $transaction: PrismaClient['$transaction'];");
67
+ lines.push(" $use: PrismaClient['$use'];");
68
+ lines.push(" $extends: PrismaClient['$extends'];");
69
+ lines.push(" $queryRaw: PrismaClient['$queryRaw'];");
70
+ lines.push(" $executeRaw: PrismaClient['$executeRaw'];");
71
+ lines.push(" $queryRawUnsafe: PrismaClient['$queryRawUnsafe'];");
72
+ lines.push(" $executeRawUnsafe: PrismaClient['$executeRawUnsafe'];");
73
+ lines.push('');
74
+ lines.push(' /** Access to underlying Prisma client for escape hatches */');
75
+ lines.push(' $prisma: PrismaClient;');
76
+ lines.push('');
77
+ lines.push(' /** Query including soft-deleted records */');
78
+ lines.push(' $includingDeleted: IncludingDeletedClient;');
79
+ lines.push('');
80
+ lines.push(' /** Query only soft-deleted records */');
81
+ lines.push(' $onlyDeleted: OnlyDeletedClient;');
82
+ lines.push('}');
83
+ lines.push('');
84
+ // Generate IncludingDeletedClient type
85
+ lines.push('/** Client that includes soft-deleted records in queries */');
86
+ lines.push('export interface IncludingDeletedClient {');
87
+ for (const model of schema.models) {
88
+ const lowerName = toLowerFirst(model.name);
89
+ lines.push(` ${lowerName}: PrismaClient['${lowerName}'];`);
90
+ }
91
+ lines.push('}');
92
+ lines.push('');
93
+ // Generate OnlyDeletedClient type
94
+ lines.push('/** Client that queries only soft-deleted records */');
95
+ lines.push('export interface OnlyDeletedClient {');
96
+ for (const model of schema.models) {
97
+ if (model.isSoftDeletable) {
98
+ const lowerName = toLowerFirst(model.name);
99
+ lines.push(` ${lowerName}: Pick<PrismaClient['${lowerName}'], 'findMany' | 'findFirst' | 'findUnique' | 'count'>;`);
100
+ }
101
+ }
102
+ lines.push('}');
103
+ return lines;
104
+ }
105
+ function toLowerFirst(str) {
106
+ const first = str.charAt(0);
107
+ return first.toLowerCase() + str.slice(1);
108
+ }
109
+ //# sourceMappingURL=emit-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emit-types.js","sourceRoot":"","sources":["../../src/codegen/emit-types.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,MAAoB,EAAE,gBAAwB;IACtE,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,8CAA8C,gBAAgB,IAAI,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,gCAAgC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;IAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAAkB;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACxB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,mDAAmD;QACnD,KAAK,CAAC,IAAI,CAAC,wCAAwC,IAAI,KAAK,CAAC,CAAC;QAC9D,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,mBAAmB,SAAS,KAAK,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACxC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,YAAY,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,iCAAiC,IAAI,kBAAkB,CAAC,CAAC;QACvG,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,aAAa,CAAC,CAAC;QAC5D,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,kDAAkD,CAAC,CAAC;QACtG,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,wBAAwB,CAAC,CAAC;QACvE,KAAK,CAAC,IAAI,CAAC,+BAA+B,IAAI,iCAAiC,IAAI,kBAAkB,CAAC,CAAC;QACvG,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,yBAAyB,CAAC,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,mCAAmC,IAAI,kDAAkD,CAAC,CAAC;QACtG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;SAAM,CAAC;QACN,+CAA+C;QAC/C,KAAK,CAAC,IAAI,CAAC,6BAA6B,IAAI,sBAAsB,CAAC,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,4BAA4B,SAAS,KAAK,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,wBAAwB,CAAC,MAAoB;IACpD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAElD,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,SAAS,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACzC,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC1C,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACtD,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACvC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC5D,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,uCAAuC;IACvC,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,mBAAmB,SAAS,KAAK,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,kCAAkC;IAClC,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,SAAS,wBAAwB,SAAS,yDAAyD,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEhB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { emitTypes } from './emit-types.js';
2
+ export { emitRuntime } from './emit-runtime.js';
3
+ export { emitCascadeGraph } from './emit-cascade-graph.js';
4
+ export { emitIndex } from './emit-index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { emitTypes } from './emit-types.js';
2
+ export { emitRuntime } from './emit-runtime.js';
3
+ export { emitCascadeGraph } from './emit-cascade-graph.js';
4
+ export { emitIndex } from './emit-index.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { DMMF } from '@prisma/generator-helper';
2
+ /**
3
+ * Represents a parsed field from a Prisma model
4
+ */
5
+ export interface ParsedField {
6
+ name: string;
7
+ type: string;
8
+ isRequired: boolean;
9
+ isList: boolean;
10
+ isId: boolean;
11
+ isUnique: boolean;
12
+ hasDefaultValue: boolean;
13
+ isRelation: boolean;
14
+ }
15
+ /**
16
+ * Represents a parsed relation between models
17
+ */
18
+ export interface ParsedRelation {
19
+ name: string;
20
+ type: string;
21
+ foreignKey: string[];
22
+ references: string[];
23
+ onDelete: string | null;
24
+ isList: boolean;
25
+ }
26
+ /**
27
+ * Represents a fully parsed Prisma model
28
+ */
29
+ export interface ParsedModel {
30
+ name: string;
31
+ primaryKey: string | string[];
32
+ isSoftDeletable: boolean;
33
+ deletedAtField: string | null;
34
+ deletedByField: string | null;
35
+ fields: ParsedField[];
36
+ relations: ParsedRelation[];
37
+ /** String fields with @unique or part of @@unique that need mangling on soft delete */
38
+ uniqueStringFields: string[];
39
+ }
40
+ /**
41
+ * Result of parsing the entire DMMF
42
+ */
43
+ export interface ParsedSchema {
44
+ models: ParsedModel[];
45
+ modelMap: Map<string, ParsedModel>;
46
+ }
47
+ /**
48
+ * Parses the complete DMMF datamodel into our structured format
49
+ *
50
+ * @param dmmf - The DMMF document from Prisma generator
51
+ * @returns ParsedSchema with models array and lookup map
52
+ */
53
+ export declare function parseDMMF(dmmf: DMMF.Document): ParsedSchema;
54
+ /**
55
+ * Gets all soft-deletable models from a parsed schema
56
+ */
57
+ export declare function getSoftDeletableModels(schema: ParsedSchema): ParsedModel[];
58
+ /**
59
+ * Gets all non-soft-deletable models from a parsed schema
60
+ */
61
+ export declare function getHardDeleteOnlyModels(schema: ParsedSchema): ParsedModel[];
62
+ //# sourceMappingURL=dmmf-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmmf-parser.d.ts","sourceRoot":"","sources":["../src/dmmf-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,uFAAuF;IACvF,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC;AA0LD;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAa3D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAE1E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,EAAE,CAE3E"}
@@ -0,0 +1,171 @@
1
+ const DELETED_AT_FIELD_NAMES = ['deleted_at', 'deletedAt'];
2
+ const DELETED_BY_FIELD_NAMES = ['deleted_by', 'deletedBy'];
3
+ /**
4
+ * Finds a field matching one of the given candidate names
5
+ */
6
+ function findFieldByNames(fields, candidates) {
7
+ return fields.find((field) => candidates.includes(field.name));
8
+ }
9
+ /**
10
+ * Determines if a field is suitable as a deleted_at marker
11
+ * Must be DateTime and nullable
12
+ */
13
+ function isValidDeletedAtField(field) {
14
+ return field.type === 'DateTime' && !field.isRequired;
15
+ }
16
+ /**
17
+ * Determines if a field is suitable as a deleted_by marker
18
+ * Must be String and nullable
19
+ */
20
+ function isValidDeletedByField(field) {
21
+ return field.type === 'String' && !field.isRequired;
22
+ }
23
+ /**
24
+ * Extracts the primary key configuration from a DMMF model
25
+ */
26
+ function extractPrimaryKey(model) {
27
+ // Check for compound primary key first
28
+ if (model.primaryKey !== null) {
29
+ const pkFields = model.primaryKey.fields;
30
+ if (pkFields.length > 1) {
31
+ return [...pkFields];
32
+ }
33
+ if (pkFields.length === 1 && pkFields[0] !== undefined) {
34
+ return pkFields[0];
35
+ }
36
+ }
37
+ // Fall back to @id field
38
+ const idField = model.fields.find((field) => field.isId);
39
+ if (idField !== undefined) {
40
+ return idField.name;
41
+ }
42
+ // Fall back to @@unique if no @id exists (Prisma allows this)
43
+ if (model.uniqueFields.length > 0) {
44
+ const firstUnique = model.uniqueFields[0];
45
+ if (firstUnique !== undefined && firstUnique.length > 0) {
46
+ return firstUnique.length === 1 ? (firstUnique[0] ?? 'id') : [...firstUnique];
47
+ }
48
+ }
49
+ return 'id';
50
+ }
51
+ /**
52
+ * Parses a single DMMF field into our ParsedField format
53
+ */
54
+ function parseField(field) {
55
+ return {
56
+ name: field.name,
57
+ type: field.type,
58
+ isRequired: field.isRequired,
59
+ isList: field.isList,
60
+ isId: field.isId,
61
+ isUnique: field.isUnique,
62
+ hasDefaultValue: field.hasDefaultValue,
63
+ isRelation: field.relationName !== undefined,
64
+ };
65
+ }
66
+ /**
67
+ * Parses a relation field into our ParsedRelation format
68
+ */
69
+ function parseRelation(field) {
70
+ if (field.relationName === undefined) {
71
+ return null;
72
+ }
73
+ const fromFields = field.relationFromFields;
74
+ const toFields = field.relationToFields;
75
+ return {
76
+ name: field.name,
77
+ type: field.type,
78
+ foreignKey: fromFields !== undefined ? [...fromFields] : [],
79
+ references: toFields !== undefined ? [...toFields] : [],
80
+ onDelete: field.relationOnDelete ?? null,
81
+ isList: field.isList,
82
+ };
83
+ }
84
+ /**
85
+ * Extracts unique string fields from a model.
86
+ * Includes both @unique fields and string fields from @@unique compound constraints.
87
+ */
88
+ function extractUniqueStringFields(model) {
89
+ const uniqueStringFields = new Set();
90
+ // Find fields with @unique that are strings
91
+ for (const field of model.fields) {
92
+ if (field.isUnique && field.type === 'String') {
93
+ uniqueStringFields.add(field.name);
94
+ }
95
+ }
96
+ // Find string fields in @@unique compound constraints
97
+ for (const uniqueConstraint of model.uniqueFields) {
98
+ for (const fieldName of uniqueConstraint) {
99
+ const field = model.fields.find((f) => f.name === fieldName);
100
+ if (field?.type === 'String') {
101
+ uniqueStringFields.add(fieldName);
102
+ }
103
+ }
104
+ }
105
+ // Return sorted for deterministic output
106
+ return [...uniqueStringFields].sort();
107
+ }
108
+ /**
109
+ * Parses a single DMMF model into our ParsedModel format
110
+ */
111
+ function parseModel(model) {
112
+ const deletedAtCandidate = findFieldByNames(model.fields, DELETED_AT_FIELD_NAMES);
113
+ const deletedByCandidate = findFieldByNames(model.fields, DELETED_BY_FIELD_NAMES);
114
+ const deletedAtField = deletedAtCandidate !== undefined && isValidDeletedAtField(deletedAtCandidate)
115
+ ? deletedAtCandidate.name
116
+ : null;
117
+ const deletedByField = deletedByCandidate !== undefined && isValidDeletedByField(deletedByCandidate)
118
+ ? deletedByCandidate.name
119
+ : null;
120
+ const fields = [];
121
+ for (const field of model.fields) {
122
+ fields.push(parseField(field));
123
+ }
124
+ const relations = [];
125
+ for (const field of model.fields) {
126
+ const relation = parseRelation(field);
127
+ if (relation !== null) {
128
+ relations.push(relation);
129
+ }
130
+ }
131
+ return {
132
+ name: model.name,
133
+ primaryKey: extractPrimaryKey(model),
134
+ isSoftDeletable: deletedAtField !== null,
135
+ deletedAtField,
136
+ deletedByField,
137
+ fields,
138
+ relations,
139
+ uniqueStringFields: extractUniqueStringFields(model),
140
+ };
141
+ }
142
+ /**
143
+ * Parses the complete DMMF datamodel into our structured format
144
+ *
145
+ * @param dmmf - The DMMF document from Prisma generator
146
+ * @returns ParsedSchema with models array and lookup map
147
+ */
148
+ export function parseDMMF(dmmf) {
149
+ const models = [];
150
+ for (const model of dmmf.datamodel.models) {
151
+ models.push(parseModel(model));
152
+ }
153
+ const modelMap = new Map();
154
+ for (const model of models) {
155
+ modelMap.set(model.name, model);
156
+ }
157
+ return { models, modelMap };
158
+ }
159
+ /**
160
+ * Gets all soft-deletable models from a parsed schema
161
+ */
162
+ export function getSoftDeletableModels(schema) {
163
+ return schema.models.filter((model) => model.isSoftDeletable);
164
+ }
165
+ /**
166
+ * Gets all non-soft-deletable models from a parsed schema
167
+ */
168
+ export function getHardDeleteOnlyModels(schema) {
169
+ return schema.models.filter((model) => !model.isSoftDeletable);
170
+ }
171
+ //# sourceMappingURL=dmmf-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dmmf-parser.js","sourceRoot":"","sources":["../src/dmmf-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import generatorHelper from '@prisma/generator-helper';
2
+ const { generatorHandler } = generatorHelper;
3
+ import * as fs from 'node:fs/promises';
4
+ import * as path from 'node:path';
5
+ import { parseDMMF } from './dmmf-parser.js';
6
+ import { buildCascadeGraph } from './cascade-graph.js';
7
+ import { emitTypes, emitRuntime, emitCascadeGraph, emitIndex, } from './codegen/index.js';
8
+ /**
9
+ * Computes the relative import path from our output directory to the Prisma client.
10
+ */
11
+ function computeClientImportPath(ourOutputDir, clientOutputDir) {
12
+ // Calculate relative path from our output to client output
13
+ let relativePath = path.relative(ourOutputDir, clientOutputDir);
14
+ // Normalize to forward slashes for imports
15
+ relativePath = relativePath.split(path.sep).join('/');
16
+ // Ensure it starts with ./ or ../
17
+ if (!relativePath.startsWith('.')) {
18
+ relativePath = './' + relativePath;
19
+ }
20
+ return relativePath;
21
+ }
22
+ generatorHandler({
23
+ onManifest() {
24
+ return {
25
+ defaultOutput: './generated/soft-cascade',
26
+ prettyName: 'Prisma Soft Cascade',
27
+ // Prisma 7+ uses prisma-client
28
+ requiresGenerators: ['prisma-client'],
29
+ };
30
+ },
31
+ async onGenerate(options) {
32
+ const outputDir = options.generator.output?.value;
33
+ if (outputDir === undefined || outputDir === null) {
34
+ throw new Error('No output directory specified for prisma-safe-delete');
35
+ }
36
+ // Find the Prisma client generator to get its output path
37
+ const clientGenerator = options.otherGenerators.find((g) => g.provider.value === 'prisma-client');
38
+ // Compute client import path - Prisma 7 requires explicit output
39
+ const clientOutputPath = clientGenerator?.output?.value;
40
+ if (clientOutputPath === undefined ||
41
+ clientOutputPath === null ||
42
+ clientOutputPath === '') {
43
+ throw new Error('prisma-safe-delete requires the prisma-client generator with an explicit output path. ' +
44
+ 'Please ensure your schema.prisma has:\n\n' +
45
+ 'generator client {\n' +
46
+ ' provider = "prisma-client"\n' +
47
+ ' output = "./generated/client"\n' +
48
+ '}');
49
+ }
50
+ const clientImportPath = computeClientImportPath(outputDir, clientOutputPath);
51
+ // Parse the DMMF
52
+ const schema = parseDMMF(options.dmmf);
53
+ // Build the cascade graph
54
+ const cascadeGraph = buildCascadeGraph(schema);
55
+ // Generate all output files
56
+ const typesContent = emitTypes(schema, clientImportPath);
57
+ const cascadeGraphContent = emitCascadeGraph(cascadeGraph);
58
+ const runtimeContent = emitRuntime(schema, clientImportPath);
59
+ const indexContent = emitIndex(schema);
60
+ // Ensure output directory exists
61
+ await fs.mkdir(outputDir, { recursive: true });
62
+ // Write all files
63
+ await Promise.all([
64
+ fs.writeFile(path.join(outputDir, 'types.ts'), typesContent, 'utf-8'),
65
+ fs.writeFile(path.join(outputDir, 'cascade-graph.ts'), cascadeGraphContent, 'utf-8'),
66
+ fs.writeFile(path.join(outputDir, 'runtime.ts'), runtimeContent, 'utf-8'),
67
+ fs.writeFile(path.join(outputDir, 'index.ts'), indexContent, 'utf-8'),
68
+ ]);
69
+ },
70
+ });
71
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../src/generator.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "prisma-safe-delete",
3
+ "version": "0.1.0",
4
+ "description": "A Prisma generator that creates a type-safe wrapper for soft deletion with automatic cascade support",
5
+ "type": "module",
6
+ "main": "dist/generator.js",
7
+ "types": "dist/generator.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/generator.d.ts",
11
+ "default": "./dist/generator.js"
12
+ }
13
+ },
14
+ "bin": {
15
+ "prisma-safe-delete": "./dist/bin.js"
16
+ },
17
+ "files": [
18
+ "dist",
19
+ "LICENSE",
20
+ "README.md",
21
+ "CHANGELOG.md"
22
+ ],
23
+ "keywords": [
24
+ "prisma",
25
+ "soft-delete",
26
+ "soft-deletion",
27
+ "cascade",
28
+ "generator",
29
+ "typescript",
30
+ "orm",
31
+ "database",
32
+ "delete",
33
+ "restore"
34
+ ],
35
+ "author": "EddieRydell",
36
+ "license": "MIT",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "git+https://github.com/EddieRydell/prisma-safe-delete.git"
40
+ },
41
+ "homepage": "https://github.com/EddieRydell/prisma-safe-delete#readme",
42
+ "bugs": {
43
+ "url": "https://github.com/EddieRydell/prisma-safe-delete/issues"
44
+ },
45
+ "peerDependencies": {
46
+ "prisma": ">=7.0.0"
47
+ },
48
+ "devDependencies": {
49
+ "@eslint/js": "^9.0.0",
50
+ "@prisma/adapter-pg": "^7.0.0",
51
+ "@prisma/client": "^7.3.0",
52
+ "@prisma/generator-helper": "^7.0.0",
53
+ "@types/node": "^25.2.1",
54
+ "@types/pg": "^8.16.0",
55
+ "@vitest/coverage-v8": "^4.0.18",
56
+ "dotenv": "^16.5.0",
57
+ "eslint": "^9.0.0",
58
+ "knip": "^5.0.0",
59
+ "pg": "^8.16.0",
60
+ "prisma": "^7.0.0",
61
+ "typescript": "^5.7.0",
62
+ "typescript-eslint": "^8.0.0",
63
+ "vitest": "^4.0.18"
64
+ },
65
+ "engines": {
66
+ "node": ">=18"
67
+ },
68
+ "scripts": {
69
+ "build": "tsc",
70
+ "typecheck": "tsc -p tsconfig.test.json",
71
+ "lint": "eslint src tests",
72
+ "lint:fix": "eslint src tests --fix",
73
+ "knip": "knip",
74
+ "test": "vitest run",
75
+ "test:watch": "vitest",
76
+ "test:coverage": "vitest run --coverage",
77
+ "ci": "pnpm audit --prod && pnpm run typecheck && pnpm run lint && pnpm run knip && pnpm run test",
78
+ "version": "pnpm run build"
79
+ }
80
+ }