@forklaunch/core 1.5.15 → 1.5.17

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 (32) hide show
  1. package/lib/http/index.js +29 -18
  2. package/lib/http/index.js.map +1 -1
  3. package/lib/http/index.mjs +28 -18
  4. package/lib/http/index.mjs.map +1 -1
  5. package/lib/http/router/expressLikeRouter.d.ts +3 -1
  6. package/lib/http/router/expressLikeRouter.d.ts.map +1 -1
  7. package/lib/persistence/complianceTypes.d.ts +51 -2
  8. package/lib/persistence/complianceTypes.d.ts.map +1 -1
  9. package/lib/persistence/defineComplianceEntity.d.ts +3 -3
  10. package/lib/persistence/defineComplianceEntity.d.ts.map +1 -1
  11. package/lib/persistence/encryptionSafeEm.d.ts +82 -0
  12. package/lib/persistence/encryptionSafeEm.d.ts.map +1 -0
  13. package/lib/persistence/forgivingDecryptionEm.d.ts +12 -0
  14. package/lib/persistence/forgivingDecryptionEm.d.ts.map +1 -0
  15. package/lib/persistence/index.d.ts +3 -1
  16. package/lib/persistence/index.d.ts.map +1 -1
  17. package/lib/persistence/index.js +88 -6
  18. package/lib/persistence/index.js.map +1 -1
  19. package/lib/persistence/index.mjs +86 -6
  20. package/lib/persistence/index.mjs.map +1 -1
  21. package/lib/persistence/mikroOrm.types.d.ts +7 -1
  22. package/lib/persistence/mikroOrm.types.d.ts.map +1 -1
  23. package/lib/services/configInjector.d.ts.map +1 -1
  24. package/lib/services/index.js +6 -0
  25. package/lib/services/index.js.map +1 -1
  26. package/lib/services/index.mjs +6 -0
  27. package/lib/services/index.mjs.map +1 -1
  28. package/lib/services/retentionService.d.ts +3 -2
  29. package/lib/services/retentionService.d.ts.map +1 -1
  30. package/lib/services/runRetentionEnforcement.d.ts +2 -1
  31. package/lib/services/runRetentionEnforcement.d.ts.map +1 -1
  32. package/package.json +16 -17
@@ -59,8 +59,10 @@ export declare function extractRouteHandlers<SV extends AnySchemaValidator, Name
59
59
  controllerHandler: ExpressLikeSchemaHandler<SV, P, ResBodyMap, ReqBody, ReqQuery, ReqHeaders, ResHeaders, LocalsObj, VersionedApi, RouterSession, BaseRequest, BaseResponse, NextFunction>;
60
60
  };
61
61
  /**
62
- * A class that represents an Express-like router.
62
+ * Test-only. Lets a suite assert the handlers install exactly once across many
63
+ * routers without leaking state into the next test.
63
64
  */
65
+ export declare function resetProcessHandlersForTesting(): void;
64
66
  export declare class ForklaunchExpressLikeRouter<SV extends AnySchemaValidator, BasePath extends `/${string}`, RouterHandler, Internal extends ExpressLikeRouter<RouterHandler, Internal>, BaseRequest, BaseResponse, NextFunction, RouterSession extends SessionObject<SV>, FetchMap extends Record<string, unknown> = EmptyObject, Sdk extends Record<string, unknown> = EmptyObject> implements ConstrainedForklaunchRouter<SV, RouterHandler> {
65
67
  #private;
66
68
  readonly basePath: BasePath;
@@ -1 +1 @@
1
- {"version":3,"file":"expressLikeRouter.d.ts","sourceRoot":"","sources":["../../../src/http/router/expressLikeRouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAmB,MAAM,uBAAuB,CAAC;AAG5E,OAAO,EACL,WAAW,EAEX,QAAQ,EACR,eAAe,EAGf,mBAAmB,EAIpB,MAAM,oBAAoB,CAAC;AAU5B,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,gBAAgB,EAChB,4BAA4B,EAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAEL,wBAAwB,EACxB,eAAe,EACf,gBAAgB,EAGjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,IAAI,EACJ,aAAa,EACb,MAAM,EAEN,YAAY,EAEZ,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,EACd,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EACL,yCAAyC,EACzC,uBAAuB,EACvB,sCAAsC,EACtC,yBAAyB,EACzB,iCAAiC,EAClC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AASrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,SAAS,kBAAkB,EAC7B,IAAI,SAAS,MAAM,EACnB,cAAc,SAAS,MAAM,EAC7B,IAAI,SAAS,IAAI,MAAM,EAAE,EACzB,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAC1B,UAAU,SAAS,eAAe,CAAC,EAAE,CAAC,EACtC,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,SAAS,WAAW,CAAC,EAAE,CAAC,EAChC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,YAAY,SAAS,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,EACtD,aAAa,SAAS,aAAa,CAAC,EAAE,CAAC,EACvC,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,SAAS,iBAAiB,CAC5B,EAAE,EACF,CAAC,EACD,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,CACZ,EACD,aAAa,EACb,MAAM,EAAE;IACR,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,EAAE,CAAC;IACpB,yCAAyC,EAAE,yCAAyC,CAClF,EAAE,EACF,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,CAAC;IACF,qCAAqC,EAAE,sCAAsC,CAC3E,EAAE,EACF,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,EAAE,CAAC;IACJ,sBAAsB,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACnE,oBAAoB,CAAC,EAAE,aAAa,EAAE,CAAC;IACvC,aAAa,CAAC,EAAE,wBAAwB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;CAC7D,GAAG;IACF,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,iBAAiB,EAAE,wBAAwB,CACzC,EAAE,EACF,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,CACb,CAAC;CACH,CAwEA;AAED;;GAEG;AACH,qBAAa,2BAA2B,CACtC,EAAE,SAAS,kBAAkB,EAC7B,QAAQ,SAAS,IAAI,MAAM,EAAE,EAC7B,aAAa,EACb,QAAQ,SAAS,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,EAC3D,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,SAAS,aAAa,CAAC,EAAE,CAAC,EACvC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EACtD,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CACjD,YAAW,2BAA2B,CAAC,EAAE,EAAE,aAAa,CAAC;;IAWvD,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,eAAe,EAAE,EAAE;IAC5B,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,oBAAoB,EAAE,aAAa,EAAE;IAC9C,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC;IAC1E,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,CAAC,EAAE,EAAE,aAAa,CAAC;IAftE,cAAc,EAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAM;IACrC,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAAE,CAAM;IAEnC,SAAS,EAAE,QAAQ,CAAkB;IACrC,GAAG,EAAE,GAAG,CAAa;IAErB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAEtC,YACW,QAAQ,EAAE,QAAQ,EAClB,eAAe,EAAE,EAAE,EACnB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,aAAa,EAAE,EACrC,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,EACjE,aAAa,CAAC,EAAE,wBAAwB,CAAC,EAAE,EAAE,aAAa,CAAC,YAAA,EA0BrE;IAkFD;;;;;;;;;;;OAWG;IAEH;;;;;;;OAOG;IACH,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAmFrC;IAsJF,aAAa,CACX,IAAI,SAAS,MAAM,EACnB,cAAc,SAAS,MAAM,EAC7B,IAAI,SAAS,IAAI,MAAM,EAAE,EACzB,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAC1B,UAAU,SAAS,eAAe,CAAC,EAAE,CAAC,EACtC,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,SAAS,WAAW,CAAC,EAAE,CAAC,EAChC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,YAAY,SAAS,aAAa,CAAC,EAAE,EAAE,cAAc,CAAC,EACtD,IAAI,SAAS,iBAAiB,CAC5B,EAAE,EACF,CAAC,EACD,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,CACZ,EAED,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,IAAI,EACV,kBAAkB,EAAE,gBAAgB,CAAC,aAAa,CAAC,EACnD,yCAAyC,EAAE,yCAAyC,CAClF,EAAE,EACF,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,EACD,GAAG,qCAAqC,EAAE,sCAAsC,CAC9E,EAAE,EACF,IAAI,EACJ,cAAc,EACd,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,EAAE,GACF,IAAI,GAAG;QACR,SAAS,EAAE,QAAQ,CACjB,QAAQ,SAAS,MAAM,CACrB,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,EACzC,OAAO,CACR,GACG,QAAQ,GACN,MAAM,CACJ,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,EACzC,QAAQ,CAAC,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,GACjD,MAAM,CACJ,SAAS,CAAC,cAAc,CAAC,EACzB,gBAAgB,CACd,EAAE,EACF,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,EACzC,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,IAAI,CACL,CACF,CACJ,GACH,QAAQ,GACN,MAAM,CACJ,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,EACzC,MAAM,CACJ,SAAS,CAAC,cAAc,CAAC,EACzB,gBAAgB,CACd,EAAE,EACF,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,EACzC,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,IAAI,CACL,CACF,CACF,CACR,CAAC;QACF,GAAG,EAAE,QAAQ,CACX,GAAG,GACD,MAAM,CACJ,eAAe,CACb,IAAI,SAAS,MAAM,GACf,IAAI,GACJ,mBAAmB,CAAC,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAC9C,EACD,eAAe,CACb,EAAE,EACF,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,YAAY,EACZ,IAAI,CACL,CACF,CACJ,CAAC;KACH,CA8MA;IA6iBD,yBAAyB,CACvB,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,IAAI,MAAM,EAAE,EACzB,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAC1B,UAAU,SAAS,eAAe,CAAC,EAAE,CAAC,EACtC,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,SAAS,WAAW,CAAC,EAAE,CAAC,EAChC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,YAAY,SAAS,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC,EACpD,IAAI,SAAS,iBAAiB,CAC5B,EAAE,EACF,CAAC,EACD,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,CACZ,EAED,kBAAkB,EAAE,4BAA4B,CAAC,aAAa,CAAC,EAC/D,+CAA+C,EAC3C,IAAI,GACJ,yCAAyC,CACvC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,aAAa,EACjB,yCAAyC,CAAC,EACtC,yCAAyC,CACvC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,aAAa,EACjB,GAAG,sCAAsC,EAAE,CACvC,sCAAsC,CACpC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,aAAa,CAChB,EAAE,GACF,IAAI,CAwGN;IAED,OAAO,CAAC,cAAc;IAkBtB,iCAAiC,CAC/B,IAAI,SAAS,MAAM,EACnB,IAAI,SAAS,IAAI,MAAM,EAAE,EACzB,CAAC,SAAS,YAAY,CAAC,EAAE,CAAC,EAC1B,UAAU,SAAS,eAAe,CAAC,EAAE,CAAC,EACtC,OAAO,SAAS,IAAI,CAAC,EAAE,CAAC,EACxB,QAAQ,SAAS,WAAW,CAAC,EAAE,CAAC,EAChC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,UAAU,SAAS,aAAa,CAAC,EAAE,CAAC,EACpC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzC,YAAY,SAAS,aAAa,CAAC,EAAE,EAAE,YAAY,CAAC,EACpD,KAAK,CAAC,aAAa,SAAS,aAAa,CAAC,EAAE,CAAC,EAC7C,IAAI,SAAS,iBAAiB,CAC5B,EAAE,EACF,CAAC,EACD,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,WAAW,CACZ,EAED,kBAAkB,EAAE,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,EACvE,+CAA+C,EAC3C,IAAI,GACJ,yCAAyC,CACvC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,2BAA2B,CAAC,EAAE,EAAE,aAAa,CAAC,EAClD,yCAAyC,CAAC,EACtC,yCAAyC,CACvC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,2BAA2B,CAAC,EAAE,EAAE,aAAa,CAAC,EAClD,GAAG,sCAAsC,EAAE,CACvC,sCAAsC,CACpC,EAAE,EACF,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,CAAC,EACD,UAAU,EACV,OAAO,EACP,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,IAAI,CACL,GACD,2BAA2B,CAAC,EAAE,EAAE,aAAa,CAAC,CACjD,EAAE,GACF,IAAI,CAsHN;IAED,OAAO,CAAC,gBAAgB;IAexB;;;;OAIG;IACH,0BAA0B,CACxB,MAAM,GAAE,gBAAgB,CAAC,EAAE,CAAQ,EACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAsDrC;IAED,GAAG,EAAE,iCAAiC,CACpC,IAAI,EACJ,aAAa,EACb,QAAQ,EACR,EAAE,EACF,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,CACb,CA+IC;IAEF,GAAG,EAAE,yBAAyB,CAC5B,IAAI,EACJ,EAAE,EACF,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,CACd,CAyGC;IAEF,OAAO,EAAE,yBAAyB,CAChC,IAAI,EACJ,EAAE,EACF,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,CACd,CAyGC;IAEF;;;;;;;;;;;;OAYG;IACH,GAAG,EAAE,uBAAuB,CAC1B,EAAE,EACF,QAAQ,EACR,KAAK,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,uBAAuB,CAC3B,EAAE,EACF,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,GAAG,EAAE,uBAAuB,CAC1B,EAAE,EACF,QAAQ,EACR,KAAK,EACL,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,KAAK,EAAE,uBAAuB,CAC5B,EAAE,EACF,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,MAAM,EAAE,uBAAuB,CAC7B,EAAE,EACF,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,OAAO,EAAE,uBAAuB,CAC9B,EAAE,EACF,QAAQ,EACR,SAAS,EACT,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,IAAI,EAAE,uBAAuB,CAC3B,EAAE,EACF,QAAQ,EACR,MAAM,EACN,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF;;;;;;;;;;;;OAYG;IACH,KAAK,EAAE,uBAAuB,CAC5B,EAAE,EACF,QAAQ,EACR,OAAO,EACP,aAAa,EACb,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,IAAI,CACL,CAiFC;IAEF,wBAAwB,CAAC,EACvB,OAAO,EACP,IAAI,EACJ,MAAM,EACN,IAAI,EACL,EAAE;QACD,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;KAChB,QAoBA;IAED,OAAO,CAAC,UAAU;IA4BlB,YAAY,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAAE,CAAC,QAEtC;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAM1C;IAED,KAAK,IAAI,IAAI,CAwBZ;CACF"}
1
+ {"version":3,"file":"expressLikeRouter.d.ts","sourceRoot":"","sources":["../../../src/http/router/expressLikeRouter.ts"],"names":[],"mappings":"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"}
@@ -56,9 +56,58 @@ declare module '@mikro-orm/core' {
56
56
  compliance?: ComplianceLevel;
57
57
  }
58
58
  interface UniversalPropertyOptionsBuilder<Value, Options, IncludeKeys> {
59
- compliance(level: ComplianceLevel): Pick<UniversalPropertyOptionsBuilder<Value, Options & {
60
- readonly '~c': true;
59
+ /**
60
+ * The level is captured as a literal type parameter rather than widened to
61
+ * `ComplianceLevel`, so the marker records WHICH classification a property
62
+ * carries and not merely that it has one.
63
+ *
64
+ * That distinction is what makes {@link EncryptedKeysOf} possible: `pii`,
65
+ * `phi` and `pci` are encrypted at rest and `none` is not, and a `true`
66
+ * marker cannot tell them apart. See {@link RequiresEncryptionContext} for
67
+ * why the difference matters at a call site.
68
+ */
69
+ compliance<const L extends ComplianceLevel>(level: L): Pick<UniversalPropertyOptionsBuilder<Value, Options & {
70
+ readonly '~c': L;
61
71
  }, IncludeKeys>, IncludeKeys & keyof UniversalPropertyOptionsBuilder<never, never, never>>;
62
72
  }
63
73
  }
74
+ /**
75
+ * The classifications that cause a column to be encrypted at rest by
76
+ * `EncryptedType`. `none` is deliberately excluded — it is a real, deliberate
77
+ * classification, just not an encrypting one.
78
+ */
79
+ export type EncryptedComplianceLevel = Extract<ComplianceLevel, 'pii' | 'phi' | 'pci'>;
80
+ /**
81
+ * The property names of `TProperties` whose classification means the column is
82
+ * encrypted at rest.
83
+ *
84
+ * Reading such a column requires the same encryption context it was written
85
+ * under, because `FieldEncryptor` derives its key per tenant. When a read
86
+ * happens BEFORE that context is known — a lookup whose whole purpose is to
87
+ * discover which organisation a row belongs to — hydrating these columns cannot
88
+ * succeed, and fails with "ciphertext is corrupted or the wrong key was used".
89
+ *
90
+ * The remedy at such a call site is a partial select that omits these keys, so
91
+ * hydration never touches them. This type is what lets that be checked rather
92
+ * than remembered.
93
+ */
94
+ export type EncryptedKeysOf<TProperties> = {
95
+ [K in keyof TProperties]: TProperties[K] extends {
96
+ '~options': {
97
+ readonly '~c': infer L;
98
+ };
99
+ } ? L extends EncryptedComplianceLevel ? K : never : never;
100
+ }[keyof TProperties];
101
+ /**
102
+ * True when reading `TProperties` in full would decrypt something, and so
103
+ * requires an encryption context to already be established.
104
+ */
105
+ export type RequiresEncryptionContext<TProperties> = [
106
+ EncryptedKeysOf<TProperties>
107
+ ] extends [never] ? false : true;
108
+ /**
109
+ * True when `TFields` is a selection that provably avoids every encrypted
110
+ * column of `TProperties` — the shape that makes a context-free read safe.
111
+ */
112
+ export type SelectionAvoidsEncryptedColumns<TProperties, TFields extends readonly PropertyKey[]> = [Extract<TFields[number], EncryptedKeysOf<TProperties>>] extends [never] ? true : false;
64
113
  //# sourceMappingURL=complianceTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"complianceTypes.d.ts","sourceRoot":"","sources":["../../src/persistence/complianceTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;aAC1B,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,IAAI,EAAE,MAAM;CACJ,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAG,aAAsB,CAAC;AAQrD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACnC,IAAI,CAEN;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,eAAe,CAEjB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAE1C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOpE;AAMD,eAAO,MAAM,eAAe;aAC1B,MAAM,EAAE,QAAQ;aAChB,SAAS,EAAE,WAAW;CACd,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;aAC5B,IAAI,MAAM,MAAM,KAAG,MAAM;aACzB,MAAM,MAAM,MAAM,KAAG,MAAM;aAC3B,KAAK,MAAM,MAAM,KAAG,MAAM;CAClB,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoBzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAM3E;AAWD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,eAAe,GAAG,SAAS,CAE7B;AAED,wBAAgB,uBAAuB,IAAI,WAAW,CACpD,MAAM,EACN,eAAe,CAChB,CAEA;AAMD;;;;;GAKG;AACH,OAAO,QAAQ,iBAAiB,CAAC;IAE/B,UAAU,eAAe,CAAC,KAAK;QAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;KAC9B;IAED,UAAU,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW;QACnE,UAAU,CACR,KAAK,EAAE,eAAe,GACrB,IAAI,CACL,+BAA+B,CAC7B,KAAK,EACL,OAAO,GAAG;YAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;SAAE,EACjC,WAAW,CACZ,EACD,WAAW,GAAG,MAAM,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACzE,CAAC;KACH;CACF"}
1
+ {"version":3,"file":"complianceTypes.d.ts","sourceRoot":"","sources":["../../src/persistence/complianceTypes.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;aAC1B,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,GAAG,EAAE,KAAK;aACV,IAAI,EAAE,MAAM;CACJ,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,EAAG,aAAsB,CAAC;AAQrD,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GACnC,IAAI,CAEN;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,eAAe,CAEjB;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,GACjB,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,SAAS,CAE1C;AAED,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAOpE;AAMD,eAAO,MAAM,eAAe;aAC1B,MAAM,EAAE,QAAQ;aAChB,SAAS,EAAE,WAAW;CACd,CAAC;AACX,MAAM,MAAM,eAAe,GACzB,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB;aAC5B,IAAI,MAAM,MAAM,KAAG,MAAM;aACzB,MAAM,MAAM,MAAM,KAAG,MAAM;aAC3B,KAAK,MAAM,MAAM,KAAG,MAAM;CAClB,CAAC;AAEX,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoBzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAM3E;AAWD,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhE;AAED,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GACtB,IAAI,CAEN;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,GACjB,eAAe,GAAG,SAAS,CAE7B;AAED,wBAAgB,uBAAuB,IAAI,WAAW,CACpD,MAAM,EACN,eAAe,CAChB,CAEA;AAMD;;;;;GAKG;AACH,OAAO,QAAQ,iBAAiB,CAAC;IAE/B,UAAU,eAAe,CAAC,KAAK;QAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;KAC9B;IAED,UAAU,+BAA+B,CAAC,KAAK,EAAE,OAAO,EAAE,WAAW;QACnE;;;;;;;;;WASG;QACH,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,eAAe,EACxC,KAAK,EAAE,CAAC,GACP,IAAI,CACL,+BAA+B,CAC7B,KAAK,EACL,OAAO,GAAG;YAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;SAAE,EAC9B,WAAW,CACZ,EACD,WAAW,GAAG,MAAM,+BAA+B,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CACzE,CAAC;KACH;CACF;AAMD;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,eAAe,EACf,KAAK,GAAG,KAAK,GAAG,KAAK,CACtB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,CAAC,WAAW,IAAI;KACxC,CAAC,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS;QAC/C,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;SAAE,CAAC;KACxC,GACG,CAAC,SAAS,wBAAwB,GAChC,CAAC,GACD,KAAK,GACP,KAAK;CACV,CAAC,MAAM,WAAW,CAAC,CAAC;AAErB;;;GAGG;AACH,MAAM,MAAM,yBAAyB,CAAC,WAAW,IAAI;IACnD,eAAe,CAAC,WAAW,CAAC;CAC7B,SAAS,CAAC,KAAK,CAAC,GACb,KAAK,GACL,IAAI,CAAC;AAET;;;GAGG;AACH,MAAM,MAAM,+BAA+B,CACzC,WAAW,EACX,OAAO,SAAS,SAAS,WAAW,EAAE,IACpC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACxE,IAAI,GACJ,KAAK,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { type EntityMetadataWithProperties, type EntitySchemaWithMeta, type InferEntityFromProperties } from '@mikro-orm/core';
2
- import { type RetentionPolicy } from './complianceTypes';
2
+ import { type ComplianceLevel, type RetentionPolicy } from './complianceTypes';
3
3
  type ValidateProperties<T> = {
4
4
  [K in keyof T]: T[K] extends {
5
5
  '~options': {
6
- readonly '~c': true;
6
+ readonly '~c': ComplianceLevel;
7
7
  };
8
8
  } | ((...args: never[]) => unknown) ? T[K] : {
9
9
  '~options': {
10
- readonly '~c': true;
10
+ readonly '~c': ComplianceLevel;
11
11
  };
12
12
  };
13
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"defineComplianceEntity.d.ts","sourceRoot":"","sources":["../../src/persistence/defineComplianceEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAOL,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAE3B,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAClB;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GACvE,CAAC,CAAC,CAAC,CAAC,GACJ;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;SAAE,CAAA;KAAE;CAC5C,CAAC;AAQF,wBAAgB,sBAAsB,CACpC,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,UAAU,SAAS,MAAM,EAC/B,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAK,CAAC,KAAK,GAAG,KAAK,EACnB,KAAK,CAAC,WAAW,GAAG,KAAK,EACzB,KAAK,CAAC,YAAY,SAAS,OAAO,GAAG,KAAK,EAE1C,IAAI,EAAE,4BAA4B,CAChC,KAAK,EACL,UAAU,EACV,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAC7C,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,CACb,GAAG;IAAE,SAAS,CAAC,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,oBAAoB,CACrB,KAAK,EACL,UAAU,EACV,yBAAyB,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAC7E,KAAK,EACL,WAAW,CACZ,CAwEA"}
1
+ {"version":3,"file":"defineComplianceEntity.d.ts","sourceRoot":"","sources":["../../src/persistence/defineComplianceEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC/B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAML,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAC;AAK3B,KAAK,kBAAkB,CAAC,CAAC,IAAI;KAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAChB;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE,GAClD,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC,GAC/B,CAAC,CAAC,CAAC,CAAC,GACJ;QAAE,UAAU,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAA;SAAE,CAAA;KAAE;CACvD,CAAC;AAQF,wBAAgB,sBAAsB,CACpC,KAAK,CAAC,KAAK,SAAS,MAAM,EAC1B,KAAK,CAAC,UAAU,SAAS,MAAM,EAC/B,KAAK,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjD,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,SAAS,GAAG,SAAS,EAC/D,KAAK,CAAC,KAAK,GAAG,KAAK,EACnB,KAAK,CAAC,WAAW,GAAG,KAAK,EACzB,KAAK,CAAC,YAAY,SAAS,OAAO,GAAG,KAAK,EAE1C,IAAI,EAAE,4BAA4B,CAChC,KAAK,EACL,UAAU,EACV,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAC7C,GAAG,EACH,KAAK,EACL,WAAW,EACX,YAAY,CACb,GAAG;IAAE,SAAS,CAAC,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACxD,oBAAoB,CACrB,KAAK,EACL,UAAU,EACV,yBAAyB,CAAC,WAAW,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,EAC7E,KAAK,EACL,WAAW,CACZ,CAwEA"}
@@ -0,0 +1,82 @@
1
+ import type { EncryptedKeysOf } from './complianceTypes';
2
+ /**
3
+ * Makes "this read would decrypt, and nothing has bound a context" a compile
4
+ * error instead of a production 500.
5
+ *
6
+ * The failure it prevents, twice seen in production: an entity carries columns
7
+ * encrypted under an ORGANISATION's key, and a lookup reads that row to
8
+ * discover which organisation it belongs to. The context needed to decrypt is
9
+ * exactly what the read is trying to find, so hydration cannot succeed and
10
+ * fails with "ciphertext is corrupted or the wrong key was used". The remedy is
11
+ * a partial select omitting those columns — easy to apply, easy to forget, and
12
+ * invisible until a tenant id is in play.
13
+ *
14
+ * Two things had to be true for a type to catch it, and both now are: the
15
+ * classification level is recorded in the type (see `EncryptedKeysOf`), and an
16
+ * entity schema exposes its properties as `readonly properties: TProperties`.
17
+ *
18
+ * Adoption is per call site by design. Wrapping an EntityManager here narrows
19
+ * only that reference, so a service can move over one file at a time rather
20
+ * than the whole repository failing to compile at once.
21
+ */
22
+ /** The property map behind an entity schema from `defineComplianceEntity`. */
23
+ export type PropertiesOfSchema<TSchema> = TSchema extends {
24
+ readonly properties: infer TProperties;
25
+ } ? TProperties : never;
26
+ /** The encrypted-at-rest property names of an entity schema. */
27
+ export type EncryptedKeysOfSchema<TSchema> = EncryptedKeysOf<PropertiesOfSchema<TSchema>>;
28
+ /** True when reading this schema in full would decrypt something. */
29
+ export type SchemaRequiresEncryptionContext<TSchema> = [
30
+ EncryptedKeysOfSchema<TSchema>
31
+ ] extends [never] ? false : true;
32
+ /** The property names of a schema that are safe to select without a context. */
33
+ export type ContextFreeKeysOfSchema<TSchema> = Exclude<keyof PropertiesOfSchema<TSchema>, EncryptedKeysOfSchema<TSchema>>;
34
+ /**
35
+ * Read options that provably avoid every encrypted column.
36
+ *
37
+ * `fields` is the same option MikroORM already takes; the constraint is only on
38
+ * which names may appear in it.
39
+ */
40
+ export type ContextFreeReadOptions<TSchema> = {
41
+ fields: readonly ContextFreeKeysOfSchema<TSchema>[];
42
+ };
43
+ /**
44
+ * Carried by a caller that has already bound an encryption context and so may
45
+ * decrypt. It is a type-level acknowledgement, not a runtime flag: nothing can
46
+ * observe an AsyncLocalStorage binding from a signature, so the honest design
47
+ * is to make the claim explicit and greppable rather than to pretend to check
48
+ * it.
49
+ */
50
+ export type DecryptingReadOptions = {
51
+ /**
52
+ * Set only inside `withEncryptionContext(...)`, or where the EntityManager
53
+ * came from `wrapEmWithTenantContext(em, tenantId)` with a real tenant.
54
+ */
55
+ encryptionContextIsBound: true;
56
+ };
57
+ /**
58
+ * The options a read may pass, given what the schema carries.
59
+ *
60
+ * - nothing encrypted: options are unconstrained, exactly as before
61
+ * - something encrypted: either select around it, or declare a bound context
62
+ */
63
+ export type EncryptionAwareReadOptions<TSchema, TOptions> = [
64
+ EncryptedKeysOfSchema<TSchema>
65
+ ] extends [never] ? TOptions : TOptions & (ContextFreeReadOptions<TSchema> | DecryptingReadOptions);
66
+ /** Read methods that hydrate entities, and therefore decrypt. */
67
+ export type HydratingReadMethod = 'findOne' | 'findOneOrFail' | 'find' | 'findAll' | 'findAndCount';
68
+ /**
69
+ * An EntityManager whose hydrating reads carry the constraint above. Every
70
+ * other member is passed through untouched, so this stays a drop-in narrowing
71
+ * of an existing reference.
72
+ */
73
+ export type EncryptionSafeEntityManager<TEntityManager> = Omit<TEntityManager, HydratingReadMethod> & {
74
+ [TMethod in HydratingReadMethod & keyof TEntityManager]: TEntityManager[TMethod] extends (entity: infer TSchema, where: infer TWhere, options?: infer TOptions) => infer TResult ? <TActualSchema extends TSchema>(entity: TActualSchema, where: TWhere, options: EncryptionAwareReadOptions<TActualSchema, TOptions>) => TResult : TEntityManager[TMethod];
75
+ };
76
+ /**
77
+ * Narrows an EntityManager so its hydrating reads must account for encrypted
78
+ * columns. Purely a type-level change — the same object is returned, so there
79
+ * is no proxy, no allocation and no behavioural difference at runtime.
80
+ */
81
+ export declare function asEncryptionSafe<TEntityManager extends object>(em: TEntityManager): EncryptionSafeEntityManager<TEntityManager>;
82
+ //# sourceMappingURL=encryptionSafeEm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encryptionSafeEm.d.ts","sourceRoot":"","sources":["../../src/persistence/encryptionSafeEm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,CAAC,OAAO,IAAI,OAAO,SAAS;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,WAAW,CAAC;CACxC,GACG,WAAW,GACX,KAAK,CAAC;AAEV,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,CAAC,OAAO,IAAI,eAAe,CAC1D,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,+BAA+B,CAAC,OAAO,IAAI;IACrD,qBAAqB,CAAC,OAAO,CAAC;CAC/B,SAAS,CAAC,KAAK,CAAC,GACb,KAAK,GACL,IAAI,CAAC;AAET,gFAAgF;AAChF,MAAM,MAAM,uBAAuB,CAAC,OAAO,IAAI,OAAO,CACpD,MAAM,kBAAkB,CAAC,OAAO,CAAC,EACjC,qBAAqB,CAAC,OAAO,CAAC,CAC/B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,sBAAsB,CAAC,OAAO,IAAI;IAC5C,MAAM,EAAE,SAAS,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;CACrD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,wBAAwB,EAAE,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0BAA0B,CAAC,OAAO,EAAE,QAAQ,IAAI;IAC1D,qBAAqB,CAAC,OAAO,CAAC;CAC/B,SAAS,CAAC,KAAK,CAAC,GACb,QAAQ,GACR,QAAQ,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC;AAEzE,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAC7B,SAAS,GAAG,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,cAAc,CAAC;AAEpE;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,CAAC,cAAc,IAAI,IAAI,CAC5D,cAAc,EACd,mBAAmB,CACpB,GAAG;KAEA,OAAO,IAAI,mBAAmB,GAAG,MAAM,cAAc,GACpD,cAAc,CAAC,OAAO,CAAC,SAAS,CACjC,MAAM,EAAE,MAAM,OAAO,EACrB,KAAK,EAAE,MAAM,MAAM,EACnB,OAAO,CAAC,EAAE,MAAM,QAAQ,KACrB,MAAM,OAAO,GACd,CAAC,aAAa,SAAS,OAAO,EAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,0BAA0B,CAAC,aAAa,EAAE,QAAQ,CAAC,KACzD,OAAO,GACZ,cAAc,CAAC,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,cAAc,SAAS,MAAM,EAC5D,EAAE,EAAE,cAAc,GACjB,2BAA2B,CAAC,cAAc,CAAC,CAE7C"}
@@ -0,0 +1,12 @@
1
+ /** Minimal logger shape, so this does not depend on the telemetry package. */
2
+ export interface ForgivingDecryptionLogger {
3
+ warn(message: string, meta?: Record<string, unknown>): void;
4
+ }
5
+ /**
6
+ * Wraps an EntityManager so hydrating reads degrade instead of throwing.
7
+ *
8
+ * Returns a Proxy; every non-read member passes through untouched. Reads that
9
+ * succeed are unaffected and pay nothing.
10
+ */
11
+ export declare function wrapEmWithForgivingDecryption<TEntityManager extends object>(em: TEntityManager, logger: ForgivingDecryptionLogger): TEntityManager;
12
+ //# sourceMappingURL=forgivingDecryptionEm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forgivingDecryptionEm.d.ts","sourceRoot":"","sources":["../../src/persistence/forgivingDecryptionEm.ts"],"names":[],"mappings":"AA2FA,8EAA8E;AAC9E,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC7D;AAkBD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,cAAc,SAAS,MAAM,EACzE,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,yBAAyB,GAChC,cAAc,CAqDhB"}
@@ -1,4 +1,6 @@
1
- export { ComplianceLevel, type ComplianceLevel as ComplianceLevelType, getComplianceMetadata, getEntityComplianceFields, entityHasEncryptedFields, RetentionAction, type RetentionAction as RetentionActionType, type RetentionPolicy, RetentionDuration, parseDuration, subtractDuration, type ParsedDuration, getEntityRetention, getAllRetentionPolicies, getEntityUserIdField, getAllUserIdFields } from './complianceTypes';
1
+ export { ComplianceLevel, type ComplianceLevel as ComplianceLevelType, getComplianceMetadata, getEntityComplianceFields, entityHasEncryptedFields, RetentionAction, type RetentionAction as RetentionActionType, type RetentionPolicy, RetentionDuration, parseDuration, subtractDuration, type ParsedDuration, getEntityRetention, getAllRetentionPolicies, getEntityUserIdField, getAllUserIdFields, type EncryptedComplianceLevel, type EncryptedKeysOf, type RequiresEncryptionContext, type SelectionAvoidsEncryptedColumns } from './complianceTypes';
2
+ export { wrapEmWithForgivingDecryption, type ForgivingDecryptionLogger } from './forgivingDecryptionEm';
3
+ export { asEncryptionSafe, type ContextFreeKeysOfSchema, type ContextFreeReadOptions, type DecryptingReadOptions, type EncryptedKeysOfSchema, type EncryptionAwareReadOptions, type EncryptionSafeEntityManager, type HydratingReadMethod, type PropertiesOfSchema, type SchemaRequiresEncryptionContext } from './encryptionSafeEm';
2
4
  export { fp } from './compliancePropertyBuilder';
3
5
  export { defineComplianceEntity } from './defineComplianceEntity';
4
6
  export { wrapEmWithNativeQueryBlocking } from './complianceEventSubscriber';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EAExB,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,eAAe,EACpB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,KAAK,cAAc,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,EAExB,eAAe,EACf,KAAK,eAAe,IAAI,mBAAmB,EAC3C,KAAK,eAAe,EACpB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,KAAK,cAAc,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,kBAAkB,EAClB,KAAK,wBAAwB,EAC7B,KAAK,eAAe,EACpB,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,6BAA6B,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,EAChC,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,+BAA+B,EACrC,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAGjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AAG5E,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,cAAc,EACd,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAErE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC"}
@@ -40,6 +40,7 @@ __export(persistence_exports, {
40
40
  RetentionDuration: () => RetentionDuration,
41
41
  RlsEventSubscriber: () => RlsEventSubscriber,
42
42
  TENANT_FILTER_NAME: () => TENANT_FILTER_NAME,
43
+ asEncryptionSafe: () => asEncryptionSafe,
43
44
  createTenantFilterDef: () => createTenantFilterDef,
44
45
  defineComplianceEntity: () => defineComplianceEntity,
45
46
  entityHasEncryptedFields: () => entityHasEncryptedFields,
@@ -59,6 +60,7 @@ __export(persistence_exports, {
59
60
  setupTenantFilter: () => setupTenantFilter,
60
61
  subtractDuration: () => subtractDuration,
61
62
  withEncryptionContext: () => withEncryptionContext,
63
+ wrapEmWithForgivingDecryption: () => wrapEmWithForgivingDecryption,
62
64
  wrapEmWithNativeQueryBlocking: () => wrapEmWithNativeQueryBlocking,
63
65
  wrapEmWithTenantContext: () => wrapEmWithTenantContext
64
66
  });
@@ -147,6 +149,84 @@ function getAllRetentionPolicies() {
147
149
  return retentionRegistry;
148
150
  }
149
151
 
152
+ // src/persistence/forgivingDecryptionEm.ts
153
+ var ENCRYPTED_LEVELS = /* @__PURE__ */ new Set([
154
+ "pii",
155
+ "phi",
156
+ "pci"
157
+ ]);
158
+ var HYDRATING_READS = /* @__PURE__ */ new Set([
159
+ "findOne",
160
+ "findOneOrFail",
161
+ "find",
162
+ "findAll",
163
+ "findAndCount"
164
+ ]);
165
+ var isDecryptionFailure = (error) => error instanceof Error && (error.message.includes("Failed to decrypt encrypted column value") || error.message.includes(
166
+ "Decryption failed: ciphertext is corrupted or the wrong key was used"
167
+ ));
168
+ var resolveEntityName = (entity) => {
169
+ if (typeof entity === "string") return entity;
170
+ if (entity == null) return void 0;
171
+ if (typeof entity === "object") {
172
+ const named = entity;
173
+ if (typeof named.name === "string") return named.name;
174
+ if (typeof named.className === "string") return named.className;
175
+ }
176
+ if (typeof entity === "function") {
177
+ return entity.name;
178
+ }
179
+ return void 0;
180
+ };
181
+ var encryptedColumnsOf = (entityName) => {
182
+ const fields = getEntityComplianceFields(entityName);
183
+ if (!fields) return [];
184
+ return [...fields.entries()].filter(([, level]) => ENCRYPTED_LEVELS.has(level)).map(([field]) => field);
185
+ };
186
+ var buildWarning = (entityName, dropped) => [
187
+ `[encryption] Read of '${entityName}' could not decrypt ${dropped.length} column(s) and returned without them: ${dropped.join(", ")}. The row was NOT modified. Fix this properly by either (a) binding the owning tenant \u2014 wrapEmWithTenantContext(em, tenantId), or withEncryptionContext(tenantId, ...) \u2014 before the read, or (b) if the tenant genuinely is not known yet, because this read is what discovers it, selecting only the columns you need: findOne(${entityName}, where, { fields: [...] }). If the tenant WAS bound correctly, this is not a context problem \u2014 suspect real ciphertext corruption and investigate the row.`,
188
+ { entity: entityName, droppedColumns: dropped }
189
+ ];
190
+ function wrapEmWithForgivingDecryption(em, logger) {
191
+ return new Proxy(em, {
192
+ get(target, prop, receiver) {
193
+ const value = Reflect.get(target, prop, receiver);
194
+ if (typeof prop !== "string" || !HYDRATING_READS.has(prop)) {
195
+ return typeof value === "function" ? value.bind(target) : value;
196
+ }
197
+ if (typeof value !== "function") return value;
198
+ const read = value;
199
+ return async (...args) => {
200
+ try {
201
+ return await read.apply(target, args);
202
+ } catch (error) {
203
+ if (!isDecryptionFailure(error)) throw error;
204
+ const entityName = resolveEntityName(args[0]);
205
+ const dropped = entityName ? encryptedColumnsOf(entityName) : [];
206
+ if (!entityName || dropped.length === 0) throw error;
207
+ const metadata = target.getMetadata?.();
208
+ const meta = metadata?.find?.(entityName);
209
+ const allProps = meta?.props ? Object.keys(meta.props) : [];
210
+ const safeFields = allProps.filter((p3) => !dropped.includes(p3));
211
+ if (safeFields.length === 0) throw error;
212
+ const [message, meta_] = buildWarning(entityName, dropped);
213
+ logger.warn(message, meta_);
214
+ const [entity, where, options] = args;
215
+ return await read.call(target, entity, where, {
216
+ ...options ?? {},
217
+ fields: safeFields
218
+ });
219
+ }
220
+ };
221
+ }
222
+ });
223
+ }
224
+
225
+ // src/persistence/encryptionSafeEm.ts
226
+ function asEncryptionSafe(em) {
227
+ return em;
228
+ }
229
+
150
230
  // src/persistence/compliancePropertyBuilder.ts
151
231
  var import_common = require("@forklaunch/common");
152
232
  var import_core2 = require("@mikro-orm/core");
@@ -358,7 +438,7 @@ function wrapUnclassified(builder) {
358
438
  }
359
439
  });
360
440
  }
361
- var ENCRYPTED_LEVELS = /* @__PURE__ */ new Set([
441
+ var ENCRYPTED_LEVELS2 = /* @__PURE__ */ new Set([
362
442
  "pii",
363
443
  "phi",
364
444
  "pci"
@@ -377,7 +457,7 @@ function resolveEncryptedTypeArgs(options) {
377
457
  return { elementRuntimeType: "string", isArray };
378
458
  }
379
459
  function wrapClassified(builder, level) {
380
- if (ENCRYPTED_LEVELS.has(level)) {
460
+ if (ENCRYPTED_LEVELS2.has(level)) {
381
461
  const options = builder["~options"];
382
462
  if (options) {
383
463
  const { elementRuntimeType, isArray } = resolveEncryptedTypeArgs(options);
@@ -635,7 +715,7 @@ var FieldEncryptor = class {
635
715
  };
636
716
 
637
717
  // src/persistence/complianceEventSubscriber.ts
638
- var ENCRYPTED_LEVELS2 = /* @__PURE__ */ new Set([
718
+ var ENCRYPTED_LEVELS3 = /* @__PURE__ */ new Set([
639
719
  "pii",
640
720
  "phi",
641
721
  "pci"
@@ -650,12 +730,12 @@ function wrapEmWithNativeQueryBlocking(em) {
650
730
  get(target, prop, receiver) {
651
731
  if (typeof prop === "string" && BLOCKED_METHODS.includes(prop)) {
652
732
  return (entityNameOrEntity, ...rest) => {
653
- const entityName = resolveEntityName(entityNameOrEntity);
733
+ const entityName = resolveEntityName2(entityNameOrEntity);
654
734
  if (entityName) {
655
735
  const fields = getEntityComplianceFields(entityName);
656
736
  if (fields) {
657
737
  for (const [fieldName, level] of fields) {
658
- if (ENCRYPTED_LEVELS2.has(level)) {
738
+ if (ENCRYPTED_LEVELS3.has(level)) {
659
739
  throw new EncryptionRequiredError(
660
740
  `${prop}() blocked on entity '${entityName}' because field '${fieldName}' has compliance level '${level}'. Use em.create() + em.flush() instead to ensure encryption.`
661
741
  );
@@ -675,7 +755,7 @@ function wrapEmWithNativeQueryBlocking(em) {
675
755
  }
676
756
  });
677
757
  }
678
- function resolveEntityName(entityNameOrEntity) {
758
+ function resolveEntityName2(entityNameOrEntity) {
679
759
  if (typeof entityNameOrEntity === "string") {
680
760
  return entityNameOrEntity;
681
761
  }
@@ -864,6 +944,7 @@ function wrapEmWithTenantContext(em, tenantId) {
864
944
  RetentionDuration,
865
945
  RlsEventSubscriber,
866
946
  TENANT_FILTER_NAME,
947
+ asEncryptionSafe,
867
948
  createTenantFilterDef,
868
949
  defineComplianceEntity,
869
950
  entityHasEncryptedFields,
@@ -883,6 +964,7 @@ function wrapEmWithTenantContext(em, tenantId) {
883
964
  setupTenantFilter,
884
965
  subtractDuration,
885
966
  withEncryptionContext,
967
+ wrapEmWithForgivingDecryption,
886
968
  wrapEmWithNativeQueryBlocking,
887
969
  wrapEmWithTenantContext
888
970
  });