@expo/entity 0.18.0 → 0.22.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 (85) hide show
  1. package/build/Entity.js +8 -2
  2. package/build/Entity.js.map +1 -1
  3. package/build/EntityCompanion.d.ts +5 -0
  4. package/build/EntityCompanion.js +8 -1
  5. package/build/EntityCompanion.js.map +1 -1
  6. package/build/EntityCompanionProvider.d.ts +1 -1
  7. package/build/EntityCompanionProvider.js.map +1 -1
  8. package/build/EntityLoader.d.ts +3 -1
  9. package/build/EntityLoader.js +5 -4
  10. package/build/EntityLoader.js.map +1 -1
  11. package/build/EntityLoaderFactory.d.ts +3 -1
  12. package/build/EntityLoaderFactory.js +3 -2
  13. package/build/EntityLoaderFactory.js.map +1 -1
  14. package/build/EntityMutationInfo.d.ts +26 -0
  15. package/build/EntityMutationInfo.js +10 -0
  16. package/build/EntityMutationInfo.js.map +1 -0
  17. package/build/EntityMutationTriggerConfiguration.d.ts +3 -3
  18. package/build/EntityMutationValidator.d.ts +2 -2
  19. package/build/EntityMutationValidator.js.map +1 -1
  20. package/build/EntityMutator.d.ts +4 -15
  21. package/build/EntityMutator.js +48 -44
  22. package/build/EntityMutator.js.map +1 -1
  23. package/build/EntityPrivacyPolicy.d.ts +5 -4
  24. package/build/EntityPrivacyPolicy.js +60 -12
  25. package/build/EntityPrivacyPolicy.js.map +1 -1
  26. package/build/EntityQueryContext.d.ts +24 -0
  27. package/build/EntityQueryContext.js +43 -0
  28. package/build/EntityQueryContext.js.map +1 -1
  29. package/build/EntityQueryContextProvider.js +1 -0
  30. package/build/EntityQueryContextProvider.js.map +1 -1
  31. package/build/ViewerScopedEntityCompanion.d.ts +5 -0
  32. package/build/ViewerScopedEntityCompanion.js +6 -0
  33. package/build/ViewerScopedEntityCompanion.js.map +1 -1
  34. package/build/__tests__/EntityEdges-test.js +99 -3
  35. package/build/__tests__/EntityEdges-test.js.map +1 -1
  36. package/build/__tests__/EntityLoader-constructor-test.js +3 -2
  37. package/build/__tests__/EntityLoader-constructor-test.js.map +1 -1
  38. package/build/__tests__/EntityLoader-test.js +19 -11
  39. package/build/__tests__/EntityLoader-test.js.map +1 -1
  40. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.d.ts +1 -0
  41. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js +81 -0
  42. package/build/__tests__/EntityMutator-MutationCacheConsistency-test.js.map +1 -0
  43. package/build/__tests__/EntityMutator-test.js +16 -14
  44. package/build/__tests__/EntityMutator-test.js.map +1 -1
  45. package/build/__tests__/EntityPrivacyPolicy-test.js +119 -43
  46. package/build/__tests__/EntityPrivacyPolicy-test.js.map +1 -1
  47. package/build/__tests__/EntityQueryContext-test.d.ts +1 -0
  48. package/build/__tests__/EntityQueryContext-test.js +56 -0
  49. package/build/__tests__/EntityQueryContext-test.js.map +1 -0
  50. package/build/__tests__/EntitySecondaryCacheLoader-test.js +1 -1
  51. package/build/__tests__/EntitySecondaryCacheLoader-test.js.map +1 -1
  52. package/build/index.d.ts +1 -0
  53. package/build/index.js +1 -0
  54. package/build/index.js.map +1 -1
  55. package/build/metrics/IEntityMetricsAdapter.d.ts +16 -0
  56. package/build/metrics/IEntityMetricsAdapter.js +6 -1
  57. package/build/metrics/IEntityMetricsAdapter.js.map +1 -1
  58. package/build/metrics/NoOpEntityMetricsAdapter.d.ts +2 -1
  59. package/build/metrics/NoOpEntityMetricsAdapter.js +1 -0
  60. package/build/metrics/NoOpEntityMetricsAdapter.js.map +1 -1
  61. package/package.json +1 -1
  62. package/src/Entity.ts +10 -2
  63. package/src/EntityCompanion.ts +10 -2
  64. package/src/EntityCompanionProvider.ts +1 -1
  65. package/src/EntityLoader.ts +9 -4
  66. package/src/EntityLoaderFactory.ts +5 -2
  67. package/src/EntityMutationInfo.ts +47 -0
  68. package/src/EntityMutationTriggerConfiguration.ts +3 -3
  69. package/src/EntityMutationValidator.ts +8 -2
  70. package/src/EntityMutator.ts +91 -71
  71. package/src/EntityPrivacyPolicy.ts +76 -18
  72. package/src/EntityQueryContext.ts +54 -0
  73. package/src/EntityQueryContextProvider.ts +1 -0
  74. package/src/ViewerScopedEntityCompanion.ts +8 -0
  75. package/src/__tests__/EntityEdges-test.ts +163 -9
  76. package/src/__tests__/EntityLoader-constructor-test.ts +4 -2
  77. package/src/__tests__/EntityLoader-test.ts +39 -11
  78. package/src/__tests__/EntityMutator-MutationCacheConsistency-test.ts +105 -0
  79. package/src/__tests__/EntityMutator-test.ts +38 -13
  80. package/src/__tests__/EntityPrivacyPolicy-test.ts +189 -52
  81. package/src/__tests__/EntityQueryContext-test.ts +82 -0
  82. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +1 -0
  83. package/src/index.ts +1 -0
  84. package/src/metrics/IEntityMetricsAdapter.ts +23 -0
  85. package/src/metrics/NoOpEntityMetricsAdapter.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityMutator.js","sourceRoot":"","sources":["../src/EntityMutator.ts"],"names":[],"mappings":";;;;;;AAAA,2CAAgF;AAChF,0DAAkC;AAMlC,mEAAqE;AAErE,6DAK8B;AAU9B,yGAAiF;AACjF,qEAA4E;AAC5E,2EAAmG;AACnG,mDAAuD;AAEvD,MAAe,WAAW;IAcxB,YACqB,aAA6B,EAC7B,YAAgC,EAChC,mBAAiD,EACjD,WAOlB,EACkB,aAA6B,EAC7B,kBAMhB,EACgB,gBAMlB,EACkB,mBAOlB,EACkB,eAA+C,EAC/C,cAAqC;QAnCrC,kBAAa,GAAb,aAAa,CAAgB;QAC7B,iBAAY,GAAZ,YAAY,CAAoB;QAChC,wBAAmB,GAAnB,mBAAmB,CAA8B;QACjD,gBAAW,GAAX,WAAW,CAO7B;QACkB,kBAAa,GAAb,aAAa,CAAgB;QAC7B,uBAAkB,GAAlB,kBAAkB,CAMlC;QACgB,qBAAgB,GAAhB,gBAAgB,CAMlC;QACkB,wBAAmB,GAAnB,mBAAmB,CAOrC;QACkB,oBAAe,GAAf,eAAe,CAAgC;QAC/C,mBAAc,GAAd,cAAc,CAAuB;IACvD,CAAC;IAEM,cAAc,CAAC,MAAwB;QAC/C,KAAK,MAAM,SAAS,IAAI,MAAM,EAAE;YAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,MAAM,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvE,IAAA,mBAAS,EAAC,eAAe,EAAE,0CAA0C,SAAS,EAAE,CAAC,CAAC;YAClF,MAAM,YAAY,GAAG,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,CAAC,YAAY,EAAE;gBACjB,MAAM,IAAI,sCAA4B,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;aACjF;SACF;IACH,CAAC;IAES,KAAK,CAAC,8BAA8B,CAC5C,UAA6F,EAC7F,YAA6C,EAC7C,MAAe,EACf,YAMC;QAED,MAAM,OAAO,CAAC,GAAG,CACf,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3B,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAC/E,CACF,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,4BAA4B,CAC1C,QAEa,EACb,YAA6C,EAC7C,MAAe,EACf,YAA+F;QAE/F,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACvB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,CAAC,CAC7E,CACF,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,4CAA4C,CAC1D,QAQa,EACb,MAAe,EACf,YAA+F;QAE/F,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,MAAM,OAAO,CAAC,GAAG,CACf,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAC1F,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAa,aAaX,SAAQ,WAAmF;IAb7F;;QAcmB,oBAAe,GAAqB,EAAE,CAAC;IAmH1D,CAAC;IAjHC;;;;OAIG;IACH,QAAQ,CAAiD,SAAY,EAAE,KAAiB;QACtF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAA,iDAA4B,EACvC,IAAI,CAAC,cAAc,EACnB,iDAAyB,CAAC,MAAM,EAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,MAAM,IAAA,4BAAkB,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAC3F,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,YAA6C;QAE7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAE1C,MAAM,8BAA8B,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE;YAC9E,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,sCAAsC;YAC1E,GAAG,IAAI,CAAC,eAAe;SACF,CAAC,CAAC;QAEzB,MAAM,qBAAqB,GAAG,MAAM,IAAA,qBAAW,EAC7C,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACrC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ,8BAA8B,EAC9B,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;YAC7B,OAAO,qBAAqB,CAAC;SAC9B;QAED,MAAM,IAAI,CAAC,8BAA8B,CACvC,IAAI,CAAC,kBAAkB,EACvB,YAAY,EACZ,8BAA8B,EAC9B,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAC/B,YAAY,EACZ,8BAA8B,EAC9B,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAClC,YAAY,EACZ,8BAA8B,EAC9B,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAEhG,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACxF,YAAY,CAAC,oCAAoC,CAC/C,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CACpE,CAAC;QAEF,MAAM,6BAA6B,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC7F,MAAM,SAAS,GAAG,MAAM,YAAY;aACjC,SAAS,EAAE;aACX,aAAa,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,YAAY,EACZ,SAAS,EACT,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAC9B,YAAY,EACZ,SAAS,EACT,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CAAC;QAEF,YAAY,CAAC,wBAAwB,CACnC,IAAI,CAAC,4CAA4C,CAAC,IAAI,CACpD,IAAI,EACJ,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,SAAS,EACT,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,CACpC,CACF,CAAC;QAEF,OAAO,IAAA,gBAAM,EAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;CACF;AAjID,sCAiIC;AAED;;GAEG;AACH,MAAa,aAaX,SAAQ,WAAmF;IAK3F,YACE,aAA6B,EAC7B,YAAgC,EAChC,mBAAiD,EACjD,WAOC,EACD,aAA6B,EAC7B,kBAMG,EACH,gBAMC,EACD,mBAOC,EACD,eAA+C,EAC/C,cAAqC,EACrC,cAAuB;QAEvB,KAAK,CACH,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,CACf,CAAC;QApDa,kBAAa,GAAqB,EAAE,CAAC;QAqDpD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,cAAc,CAAC,oBAAoB,EAAE,EAAE,CAAC;IACtE,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAiD,SAAY,EAAE,KAAiB;QACtF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACxC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACtC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAA,iDAA4B,EACvC,IAAI,CAAC,cAAc,EACnB,iDAAyB,CAAC,MAAM,EAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,MAAM,IAAA,4BAAkB,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAC3F,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,YAA6C;QAE7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAExC,MAAM,sBAAsB,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC9F,MAAM,qBAAqB,GAAG,MAAM,IAAA,qBAAW,EAC7C,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACrC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ,sBAAsB,EACtB,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;YAC7B,OAAO,qBAAqB,CAAC;SAC9B;QAED,MAAM,IAAI,CAAC,8BAA8B,CACvC,IAAI,CAAC,kBAAkB,EACvB,YAAY,EACZ,sBAAsB,EACtB,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAC/B,YAAY,EACZ,sBAAsB,EACtB,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAClC,YAAY,EACZ,sBAAsB,EACtB,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CACzD,YAAY,EACZ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAChC,sBAAsB,CAAC,KAAK,EAAE,EAC9B,IAAI,CAAC,aAAa,CACnB,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAExF,YAAY,CAAC,oCAAoC,CAC/C,YAAY,CAAC,qBAAqB,CAAC,IAAI,CACrC,YAAY,EACZ,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAC3C,CACF,CAAC;QACF,YAAY,CAAC,oCAAoC,CAC/C,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAC5E,CAAC;QAEF,MAAM,6BAA6B,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAC7F,MAAM,aAAa,GAAG,MAAM,YAAY;aACrC,SAAS,EAAE;aACX,aAAa,CAAC,6BAA6B,CAAC,KAAK,EAAE,CAAC,CAAC;QAExD,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,YAAY,EACZ,aAAa,EACb,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAC9B,YAAY,EACZ,aAAa,EACb,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CAAC;QAEF,YAAY,CAAC,wBAAwB,CACnC,IAAI,CAAC,4CAA4C,CAAC,IAAI,CACpD,IAAI,EACJ,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,aAAa,EACb,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CACxE,CACF,CAAC;QAEF,OAAO,IAAA,gBAAM,EAAC,aAAa,CAAC,CAAC;IAC/B,CAAC;CACF;AApMD,sCAoMC;AAED;;GAEG;AACH,MAAa,aAaX,SAAQ,WAAmF;IAC3F,YACE,aAA6B,EAC7B,YAAgC,EAChC,mBAAiD,EACjD,WAOC,EACD,aAA6B,EAC7B,kBAMG,EACH,gBAMC,EACD,mBAOC,EACD,eAA+C,EAC/C,cAAqC,EACpB,MAAe;QAEhC,KAAK,CACH,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,cAAc,CACf,CAAC;QAbe,WAAM,GAAN,MAAM,CAAS;IAclC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW;QACf,OAAO,MAAM,IAAA,iDAA4B,EACvC,IAAI,CAAC,cAAc,EACnB,iDAAyB,CAAC,MAAM,EAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CACtB,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,OAAO,MAAM,IAAA,4BAAkB,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,wBAAwB,CACpC,iDAA8D,EAC9D,oBAA6B,EAC7B,oBAAmE;QAEnE,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,uCAAuC,CAAC,CAAC,iBAAiB,EAAE,EAAE,CAC3F,IAAI,CAAC,mBAAmB,CACtB,iBAAiB,EACjB,iDAAiD,EACjD,oBAAoB,EACpB,oBAAoB,CACrB,CACF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,YAA6C,EAC7C,iDAA8D,EAC9D,oBAA6B,EAC7B,oBAAmE;QAEnE,MAAM,qBAAqB,GAAG,MAAM,IAAA,qBAAW,EAC7C,IAAI,CAAC,aAAa,CAAC,oBAAoB,CACrC,IAAI,CAAC,aAAa,EAClB,YAAY,EACZ,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;QACF,IAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE;YAC7B,OAAO,qBAAqB,CAAC;SAC9B;QAED,MAAM,IAAI,CAAC,yCAAyC,CAClD,IAAI,CAAC,MAAM,EACX,YAAY,EACZ,iDAAiD,EACjD,oBAAoB,CACrB,CAAC;QAEF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAC/B,YAAY,EACZ,IAAI,CAAC,MAAM,EACX,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAC1D,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAClC,YAAY,EACZ,IAAI,CAAC,MAAM,EACX,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAC1D,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE;YACzB,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CACpC,YAAY,EACZ,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAChC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CACpB,CAAC;SACH;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QACxF,YAAY,CAAC,oCAAoC,CAC/C,YAAY,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAC1F,CAAC;QAEF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,YAAY,EACZ,IAAI,CAAC,MAAM,EACX,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAC1D,CAAC;QACF,MAAM,IAAI,CAAC,4BAA4B,CACrC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAC9B,YAAY,EACZ,IAAI,CAAC,MAAM,EACX,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAC1D,CAAC;QAEF,YAAY,CAAC,wBAAwB,CACnC,IAAI,CAAC,4CAA4C,CAAC,IAAI,CACpD,IAAI,EACJ,IAAI,CAAC,gBAAgB,CAAC,WAAW,EACjC,IAAI,CAAC,MAAM,EACX,EAAE,IAAI,EAAE,uCAAkB,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAC1D,CACF,CAAC;QAEF,OAAO,IAAA,gBAAM,GAAE,CAAC;IAClB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACK,KAAK,CAAC,yCAAyC,CACrD,MAAe,EACf,YAA6C,EAC7C,0BAAuC,EACvC,oBAAmE;QAEnE,mFAAmF;QACnF,IAAI,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,EAAE;YAChE,OAAO;SACR;QACD,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAE7D,MAAM,mBAAmB,GACvB,MAAM,CAAC,WACR,CAAC,sBAAsB,EAOvB,CAAC;QACF,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,mBAAmB,CAAC;QACpE,MAAM,YAAY,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC;QAC3D,MAAM,OAAO,CAAC,GAAG,CACf,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;YACrC,OAAO,MAAM,IAAA,kBAAW,EACtB,WAAW,CAAC,sBAAsB,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAC/D,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,EAAE;gBACnC,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;gBAChD,IAAI,CAAC,WAAW,EAAE;oBAChB,OAAO;iBACR;gBAED,MAAM,uBAAuB,GAAG,WAAW;qBACxC,wBAAwB,EAAE;qBAC1B,sBAAsB,EAAE,CAAC,mBAAmB,CAAC;gBAChD,IAAI,uBAAuB,KAAK,mBAAmB,EAAE;oBACnD,OAAO;iBACR;gBAED,MAAM,6BAA6B,GAAG,WAAW,CAAC,6BAA6B,CAAC;gBAEhF,MAAM,aAAa,GAAG,MAAM;qBACzB,gBAAgB,EAAE;qBAClB,sCAAsC,CAAC,WAAW,CAAC;qBACnD,gBAAgB,EAAE,CAAC;gBACtB,MAAM,cAAc,GAAG,MAAM;qBAC1B,gBAAgB,EAAE;qBAClB,sCAAsC,CAAC,WAAW,CAAC;qBACnD,iBAAiB,EAAE,CAAC;gBAEvB,IAAI,wBAAuE,CAAC;gBAC5E,IAAI,6BAA6B,EAAE;oBACjC,wBAAwB,GAAG,MAAM,aAAa;yBAC3C,OAAO,CAAC,YAAY,CAAC;yBACrB,SAAS,EAAE;yBACX,4BAA4B,CAC3B,SAAS,EACT,MAAM,CAAC,QAAQ,CAAC,6BAAoC,CAAC,CACtD,CAAC;iBACL;qBAAM;oBACL,wBAAwB,GAAG,MAAM,aAAa;yBAC3C,OAAO,CAAC,YAAY,CAAC;yBACrB,SAAS,EAAE;yBACX,4BAA4B,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;iBAC5D;gBAED,QAAQ,WAAW,CAAC,oBAAoB,EAAE;oBACxC,KAAK,SAAS,CAAC;oBACf,KAAK,kDAA0B,CAAC,+BAA+B,CAAC,CAAC;wBAC/D,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE,CACtD,cAAc;6BACX,SAAS,CAAC,sBAAsB,EAAE,YAAY,CAAC;6BAC/C,wBAAwB,CACvB,0BAA0B;wBAC1B,0BAA0B,CAAC,IAAI,EAAE,4BAA4B;wBAC7D;4BACE,MAAM;4BACN,oBAAoB;yBACrB,CACF,CACJ,CACF,CAAC;wBACF,MAAM;qBACP;oBACD,KAAK,kDAA0B,CAAC,QAAQ,CAAC,CAAC;wBACxC,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE,CACtD,cAAc;6BACX,SAAS,CAAC,sBAAsB,EAAE,YAAY,CAAC;6BAC/C,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;6BACzB,kBAAkB,EAAE,CACxB,CACF,CAAC;wBACF,MAAM;qBACP;oBACD,KAAK,kDAA0B,CAAC,cAAc,CAAC,CAAC;wBAC9C,MAAM,OAAO,CAAC,GAAG,CACf,wBAAwB,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,EAAE,CACtD,cAAc;6BACX,SAAS,CAAC,sBAAsB,EAAE,YAAY,CAAC;6BAC/C,wBAAwB,CACvB,0BAA0B;wBAC1B,0BAA0B,CAAC,KAAK,EAChC;4BACE,MAAM;4BACN,oBAAoB;yBACrB,CACF,CACJ,CACF,CAAC;qBACH;iBACF;YACH,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;CACF;AAvTD,sCAuTC"}
@@ -2,6 +2,7 @@ import { EntityQueryContext } from './EntityQueryContext';
2
2
  import ReadonlyEntity from './ReadonlyEntity';
3
3
  import ViewerContext from './ViewerContext';
4
4
  import EntityNotAuthorizedError from './errors/EntityNotAuthorizedError';
5
+ import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
5
6
  import PrivacyPolicyRule from './rules/PrivacyPolicyRule';
6
7
  export declare enum EntityPrivacyPolicyEvaluationMode {
7
8
  ENFORCE = 0,
@@ -66,7 +67,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
66
67
  * @returns entity if authorized
67
68
  * @throws {@link EntityNotAuthorizedError} when not authorized
68
69
  */
69
- authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity): Promise<TEntity>;
70
+ authorizeCreateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
70
71
  /**
71
72
  * Authorize an entity against read policy.
72
73
  * @param viewerContext - viewer context of user reading the entity
@@ -75,7 +76,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
75
76
  * @returns entity if authorized
76
77
  * @throws {@link EntityNotAuthorizedError} when not authorized
77
78
  */
78
- authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity): Promise<TEntity>;
79
+ authorizeReadAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
79
80
  /**
80
81
  * Authorize an entity against update policy.
81
82
  * @param viewerContext - viewer context of user updating the entity
@@ -84,7 +85,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
84
85
  * @returns entity if authorized
85
86
  * @throws {@link EntityNotAuthorizedError} when not authorized
86
87
  */
87
- authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity): Promise<TEntity>;
88
+ authorizeUpdateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
88
89
  /**
89
90
  * Authorize an entity against deletion policy.
90
91
  * @param viewerContext - viewer context of user deleting the entity
@@ -93,7 +94,7 @@ export default abstract class EntityPrivacyPolicy<TFields, TID extends NonNullab
93
94
  * @returns entity if authorized
94
95
  * @throws {@link EntityNotAuthorizedError} when not authorized
95
96
  */
96
- authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity): Promise<TEntity>;
97
+ authorizeDeleteAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, entity: TEntity, metricsAdapter: IEntityMetricsAdapter): Promise<TEntity>;
97
98
  private authorizeForRulesetAsync;
98
99
  private authorizeForRulesetInnerAsync;
99
100
  }
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.EntityAuthorizationAction = exports.EntityPrivacyPolicyEvaluationMode = void 0;
7
7
  const EntityNotAuthorizedError_1 = __importDefault(require("./errors/EntityNotAuthorizedError"));
8
+ const IEntityMetricsAdapter_1 = require("./metrics/IEntityMetricsAdapter");
8
9
  const PrivacyPolicyRule_1 = require("./rules/PrivacyPolicyRule");
9
10
  var EntityPrivacyPolicyEvaluationMode;
10
11
  (function (EntityPrivacyPolicyEvaluationMode) {
@@ -68,8 +69,8 @@ class EntityPrivacyPolicy {
68
69
  * @returns entity if authorized
69
70
  * @throws {@link EntityNotAuthorizedError} when not authorized
70
71
  */
71
- async authorizeCreateAsync(viewerContext, queryContext, entity) {
72
- return await this.authorizeForRulesetAsync(this.createRules, viewerContext, queryContext, entity, EntityAuthorizationAction.CREATE);
72
+ async authorizeCreateAsync(viewerContext, queryContext, entity, metricsAdapter) {
73
+ return await this.authorizeForRulesetAsync(this.createRules, viewerContext, queryContext, entity, EntityAuthorizationAction.CREATE, metricsAdapter);
73
74
  }
74
75
  /**
75
76
  * Authorize an entity against read policy.
@@ -79,8 +80,8 @@ class EntityPrivacyPolicy {
79
80
  * @returns entity if authorized
80
81
  * @throws {@link EntityNotAuthorizedError} when not authorized
81
82
  */
82
- async authorizeReadAsync(viewerContext, queryContext, entity) {
83
- return await this.authorizeForRulesetAsync(this.readRules, viewerContext, queryContext, entity, EntityAuthorizationAction.READ);
83
+ async authorizeReadAsync(viewerContext, queryContext, entity, metricsAdapter) {
84
+ return await this.authorizeForRulesetAsync(this.readRules, viewerContext, queryContext, entity, EntityAuthorizationAction.READ, metricsAdapter);
84
85
  }
85
86
  /**
86
87
  * Authorize an entity against update policy.
@@ -90,8 +91,8 @@ class EntityPrivacyPolicy {
90
91
  * @returns entity if authorized
91
92
  * @throws {@link EntityNotAuthorizedError} when not authorized
92
93
  */
93
- async authorizeUpdateAsync(viewerContext, queryContext, entity) {
94
- return await this.authorizeForRulesetAsync(this.updateRules, viewerContext, queryContext, entity, EntityAuthorizationAction.UPDATE);
94
+ async authorizeUpdateAsync(viewerContext, queryContext, entity, metricsAdapter) {
95
+ return await this.authorizeForRulesetAsync(this.updateRules, viewerContext, queryContext, entity, EntityAuthorizationAction.UPDATE, metricsAdapter);
95
96
  }
96
97
  /**
97
98
  * Authorize an entity against deletion policy.
@@ -101,34 +102,81 @@ class EntityPrivacyPolicy {
101
102
  * @returns entity if authorized
102
103
  * @throws {@link EntityNotAuthorizedError} when not authorized
103
104
  */
104
- async authorizeDeleteAsync(viewerContext, queryContext, entity) {
105
- return await this.authorizeForRulesetAsync(this.deleteRules, viewerContext, queryContext, entity, EntityAuthorizationAction.DELETE);
105
+ async authorizeDeleteAsync(viewerContext, queryContext, entity, metricsAdapter) {
106
+ return await this.authorizeForRulesetAsync(this.deleteRules, viewerContext, queryContext, entity, EntityAuthorizationAction.DELETE, metricsAdapter);
106
107
  }
107
- async authorizeForRulesetAsync(ruleset, viewerContext, queryContext, entity, action) {
108
+ async authorizeForRulesetAsync(ruleset, viewerContext, queryContext, entity, action, metricsAdapter) {
108
109
  const privacyPolicyEvaluator = this.getPrivacyPolicyEvaluator(viewerContext);
109
110
  switch (privacyPolicyEvaluator.mode) {
110
111
  case EntityPrivacyPolicyEvaluationMode.ENFORCE:
111
- return await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
112
+ try {
113
+ const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
114
+ metricsAdapter.logAuthorizationEvent({
115
+ entityClassName: entity.constructor.name,
116
+ action,
117
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.ALLOW,
118
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
119
+ });
120
+ return result;
121
+ }
122
+ catch (e) {
123
+ if (!(e instanceof EntityNotAuthorizedError_1.default)) {
124
+ throw e;
125
+ }
126
+ metricsAdapter.logAuthorizationEvent({
127
+ entityClassName: entity.constructor.name,
128
+ action,
129
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.DENY,
130
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
131
+ });
132
+ throw e;
133
+ }
112
134
  case EntityPrivacyPolicyEvaluationMode.ENFORCE_AND_LOG:
113
135
  try {
114
- return await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
136
+ const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
137
+ metricsAdapter.logAuthorizationEvent({
138
+ entityClassName: entity.constructor.name,
139
+ action,
140
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.ALLOW,
141
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
142
+ });
143
+ return result;
115
144
  }
116
145
  catch (e) {
117
146
  if (!(e instanceof EntityNotAuthorizedError_1.default)) {
118
147
  throw e;
119
148
  }
120
149
  privacyPolicyEvaluator.denyHandler(e);
150
+ metricsAdapter.logAuthorizationEvent({
151
+ entityClassName: entity.constructor.name,
152
+ action,
153
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.DENY,
154
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
155
+ });
121
156
  throw e;
122
157
  }
123
158
  case EntityPrivacyPolicyEvaluationMode.DRY_RUN:
124
159
  try {
125
- return await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
160
+ const result = await this.authorizeForRulesetInnerAsync(ruleset, viewerContext, queryContext, entity, action);
161
+ metricsAdapter.logAuthorizationEvent({
162
+ entityClassName: entity.constructor.name,
163
+ action,
164
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.ALLOW,
165
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
166
+ });
167
+ return result;
126
168
  }
127
169
  catch (e) {
128
170
  if (!(e instanceof EntityNotAuthorizedError_1.default)) {
129
171
  throw e;
130
172
  }
131
173
  privacyPolicyEvaluator.denyHandler(e);
174
+ metricsAdapter.logAuthorizationEvent({
175
+ entityClassName: entity.constructor.name,
176
+ action,
177
+ evaluationResult: IEntityMetricsAdapter_1.EntityMetricsAuthorizationResult.DENY,
178
+ privacyPolicyEvaluationMode: privacyPolicyEvaluator.mode,
179
+ });
132
180
  return entity;
133
181
  }
134
182
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityPrivacyPolicy.js","sourceRoot":"","sources":["../src/EntityPrivacyPolicy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import EntityQueryContextProvider from './EntityQueryContextProvider';
2
2
  export declare type PostCommitCallback = (...args: any) => Promise<any>;
3
+ export declare type PreCommitCallback = (queryContext: EntityTransactionalQueryContext, ...args: any) => Promise<any>;
3
4
  /**
4
5
  * Entity framework representation of transactional and non-transactional database
5
6
  * query execution units.
@@ -21,8 +22,31 @@ export declare class EntityNonTransactionalQueryContext extends EntityQueryConte
21
22
  runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
22
23
  }
23
24
  export declare class EntityTransactionalQueryContext extends EntityQueryContext {
25
+ private readonly postCommitInvalidationCallbacks;
24
26
  private readonly postCommitCallbacks;
27
+ private readonly preCommitCallbacks;
28
+ /**
29
+ * Schedule a pre-commit callback. These will be run within the transaction right before it is
30
+ * committed, and will be run in the order specified. Ordering of callbacks scheduled with the
31
+ * same value for the order parameter is undefined within that ordering group.
32
+ * @param callback - callback to schedule
33
+ * @param order - order in which this should be run relative to other scheduled pre-commit callbacks,
34
+ * with higher numbers running later than lower numbers.
35
+ */
36
+ appendPreCommitCallback(callback: PreCommitCallback, order: number): void;
37
+ /**
38
+ * Schedule a post-commit cache invalidation callback. These are run before normal
39
+ * post-commit callbacks in order to have cache consistency in normal post-commit callbacks.
40
+ * @param callback - callback to schedule
41
+ */
42
+ appendPostCommitInvalidationCallback(callback: PostCommitCallback): void;
43
+ /**
44
+ * Schedule a post-commit callback. These will be run after the transaction has
45
+ * been committed.
46
+ * @param callback - callback to schedule
47
+ */
25
48
  appendPostCommitCallback(callback: PostCommitCallback): void;
49
+ runPreCommitCallbacksAsync(): Promise<void>;
26
50
  runPostCommitCallbacksAsync(): Promise<void>;
27
51
  isInTransaction(): boolean;
28
52
  runInTransactionIfNotInTransactionAsync<T>(transactionScope: (queryContext: EntityTransactionalQueryContext) => Promise<T>): Promise<T>;
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.EntityTransactionalQueryContext = exports.EntityNonTransactionalQueryContext = exports.EntityQueryContext = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
4
8
  /**
5
9
  * Entity framework representation of transactional and non-transactional database
6
10
  * query execution units.
@@ -33,12 +37,51 @@ exports.EntityNonTransactionalQueryContext = EntityNonTransactionalQueryContext;
33
37
  class EntityTransactionalQueryContext extends EntityQueryContext {
34
38
  constructor() {
35
39
  super(...arguments);
40
+ this.postCommitInvalidationCallbacks = [];
36
41
  this.postCommitCallbacks = [];
42
+ this.preCommitCallbacks = [];
37
43
  }
44
+ /**
45
+ * Schedule a pre-commit callback. These will be run within the transaction right before it is
46
+ * committed, and will be run in the order specified. Ordering of callbacks scheduled with the
47
+ * same value for the order parameter is undefined within that ordering group.
48
+ * @param callback - callback to schedule
49
+ * @param order - order in which this should be run relative to other scheduled pre-commit callbacks,
50
+ * with higher numbers running later than lower numbers.
51
+ */
52
+ appendPreCommitCallback(callback, order) {
53
+ (0, assert_1.default)(order >= Number.MIN_SAFE_INTEGER && order <= Number.MAX_SAFE_INTEGER, `Invalid order specified: ${order}`);
54
+ this.preCommitCallbacks.push({ callback, order });
55
+ }
56
+ /**
57
+ * Schedule a post-commit cache invalidation callback. These are run before normal
58
+ * post-commit callbacks in order to have cache consistency in normal post-commit callbacks.
59
+ * @param callback - callback to schedule
60
+ */
61
+ appendPostCommitInvalidationCallback(callback) {
62
+ this.postCommitInvalidationCallbacks.push(callback);
63
+ }
64
+ /**
65
+ * Schedule a post-commit callback. These will be run after the transaction has
66
+ * been committed.
67
+ * @param callback - callback to schedule
68
+ */
38
69
  appendPostCommitCallback(callback) {
39
70
  this.postCommitCallbacks.push(callback);
40
71
  }
72
+ async runPreCommitCallbacksAsync() {
73
+ const callbacks = [...this.preCommitCallbacks]
74
+ .sort((a, b) => a.order - b.order)
75
+ .map((c) => c.callback);
76
+ this.preCommitCallbacks.length = 0;
77
+ for (const callback of callbacks) {
78
+ await callback(this);
79
+ }
80
+ }
41
81
  async runPostCommitCallbacksAsync() {
82
+ const invalidationCallbacks = [...this.postCommitInvalidationCallbacks];
83
+ this.postCommitInvalidationCallbacks.length = 0;
84
+ await Promise.all(invalidationCallbacks.map((callback) => callback()));
42
85
  const callbacks = [...this.postCommitCallbacks];
43
86
  this.postCommitCallbacks.length = 0;
44
87
  await Promise.all(callbacks.map((callback) => callback()));
@@ -1 +1 @@
1
- {"version":3,"file":"EntityQueryContext.js","sourceRoot":"","sources":["../src/EntityQueryContext.ts"],"names":[],"mappings":";;;AAIA;;;;;;GAMG;AACH,MAAsB,kBAAkB;IACtC,YAA6B,cAAmB;QAAnB,mBAAc,GAAd,cAAc,CAAK;IAAG,CAAC;IAIpD,iBAAiB;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CAKF;AAZD,gDAYC;AAED,MAAa,kCAAmC,SAAQ,kBAAkB;IACxE,YACE,cAAmB,EACF,0BAAsD;QAEvE,KAAK,CAAC,cAAc,CAAC,CAAC;QAFL,+BAA0B,GAA1B,0BAA0B,CAA4B;IAGzE,CAAC;IAED,eAAe;QACb,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,uCAAuC,CAC3C,gBAA+E;QAE/E,OAAO,MAAM,IAAI,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACvF,CAAC;CACF;AAjBD,gFAiBC;AAED,MAAa,+BAAgC,SAAQ,kBAAkB;IAAvE;;QACmB,wBAAmB,GAAyB,EAAE,CAAC;IAqBlE,CAAC;IAnBQ,wBAAwB,CAAC,QAA4B;QAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEM,KAAK,CAAC,2BAA2B;QACtC,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChD,IAAI,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;QACpC,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,uCAAuC,CAC3C,gBAA+E;QAE/E,OAAO,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;CACF;AAtBD,0EAsBC"}
1
+ {"version":3,"file":"EntityQueryContext.js","sourceRoot":"","sources":["../src/EntityQueryContext.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,7 @@ class EntityQueryContextProvider {
19
19
  const [returnedValue, queryContext] = await this.createTransactionRunner()(async (queryInterface) => {
20
20
  const queryContext = new EntityQueryContext_1.EntityTransactionalQueryContext(queryInterface);
21
21
  const result = await transactionScope(queryContext);
22
+ await queryContext.runPreCommitCallbacksAsync();
22
23
  return [result, queryContext];
23
24
  });
24
25
  await queryContext.runPostCommitCallbacksAsync();
@@ -1 +1 @@
1
- {"version":3,"file":"EntityQueryContextProvider.js","sourceRoot":"","sources":["../src/EntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,6DAG8B;AAE9B;;GAEG;AACH,MAA8B,0BAA0B;IACtD;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,uDAAkC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAcD;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,gBAA+E;QAE/E,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAErE,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,oDAA+B,CAAC,cAAc,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,2BAA2B,EAAE,CAAC;QACjD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AArCD,6CAqCC"}
1
+ {"version":3,"file":"EntityQueryContextProvider.js","sourceRoot":"","sources":["../src/EntityQueryContextProvider.ts"],"names":[],"mappings":";;AAAA,6DAG8B;AAE9B;;GAEG;AACH,MAA8B,0BAA0B;IACtD;;OAEG;IACI,eAAe;QACpB,OAAO,IAAI,uDAAkC,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;IAcD;;;OAGG;IACH,KAAK,CAAC,qBAAqB,CACzB,gBAA+E;QAE/E,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAErE,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE;YAC3B,MAAM,YAAY,GAAG,IAAI,oDAA+B,CAAC,cAAc,CAAC,CAAC;YACzE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,YAAY,CAAC,0BAA0B,EAAE,CAAC;YAChD,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,2BAA2B,EAAE,CAAC;QACjD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF;AAtCD,6CAsCC"}
@@ -5,6 +5,7 @@ import ReadonlyEntity from './ReadonlyEntity';
5
5
  import ViewerContext from './ViewerContext';
6
6
  import ViewerScopedEntityLoaderFactory from './ViewerScopedEntityLoaderFactory';
7
7
  import ViewerScopedEntityMutatorFactory from './ViewerScopedEntityMutatorFactory';
8
+ import IEntityMetricsAdapter from './metrics/IEntityMetricsAdapter';
8
9
  /**
9
10
  * Provides a simpler API for loading and mutating entities by injecting the {@link ViewerContext}
10
11
  * from the viewer-scoped entity companion provider.
@@ -25,4 +26,8 @@ export default class ViewerScopedEntityCompanion<TFields, TID extends NonNullabl
25
26
  * Get the query context provider for this entity.
26
27
  */
27
28
  getQueryContextProvider(): EntityQueryContextProvider;
29
+ /**
30
+ * Get the {@link IEntityMetricsAdapter} for this companion.
31
+ */
32
+ getMetricsAdapter(): IEntityMetricsAdapter;
28
33
  }
@@ -32,6 +32,12 @@ class ViewerScopedEntityCompanion {
32
32
  getQueryContextProvider() {
33
33
  return this.entityCompanion.getQueryContextProvider();
34
34
  }
35
+ /**
36
+ * Get the {@link IEntityMetricsAdapter} for this companion.
37
+ */
38
+ getMetricsAdapter() {
39
+ return this.entityCompanion.getMetricsAdapter();
40
+ }
35
41
  }
36
42
  exports.default = ViewerScopedEntityCompanion;
37
43
  //# sourceMappingURL=ViewerScopedEntityCompanion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewerScopedEntityCompanion.js","sourceRoot":"","sources":["../src/ViewerScopedEntityCompanion.ts"],"names":[],"mappings":";;;;;AAKA,wGAAgF;AAChF,0GAAkF;AAElF;;;GAGG;AACH,MAAqB,2BAA2B;IAc9C,YACmB,eAOhB,EACgB,aAA6B;QAR7B,oBAAe,GAAf,eAAe,CAO/B;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ;;OAEG;IACH,gBAAgB;QAQd,OAAO,IAAI,yCAA+B,CACxC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EACvC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB;QAQf,OAAO,IAAI,0CAAgC,CACzC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EACxC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;IACxD,CAAC;CACF;AAlED,8CAkEC"}
1
+ {"version":3,"file":"ViewerScopedEntityCompanion.js","sourceRoot":"","sources":["../src/ViewerScopedEntityCompanion.ts"],"names":[],"mappings":";;;;;AAKA,wGAAgF;AAChF,0GAAkF;AAGlF;;;GAGG;AACH,MAAqB,2BAA2B;IAc9C,YACmB,eAOhB,EACgB,aAA6B;QAR7B,oBAAe,GAAf,eAAe,CAO/B;QACgB,kBAAa,GAAb,aAAa,CAAgB;IAC7C,CAAC;IAEJ;;OAEG;IACH,gBAAgB;QAQd,OAAO,IAAI,yCAA+B,CACxC,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EACvC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,iBAAiB;QAQf,OAAO,IAAI,0CAAgC,CACzC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,EACxC,IAAI,CAAC,aAAa,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;IAClD,CAAC;CACF;AAzED,8CAyEC"}
@@ -8,6 +8,8 @@ const EntityCompanionProvider_1 = require("../EntityCompanionProvider");
8
8
  const EntityConfiguration_1 = __importDefault(require("../EntityConfiguration"));
9
9
  const EntityFieldDefinition_1 = require("../EntityFieldDefinition");
10
10
  const EntityFields_1 = require("../EntityFields");
11
+ const EntityMutationInfo_1 = require("../EntityMutationInfo");
12
+ const EntityMutationTriggerConfiguration_1 = require("../EntityMutationTriggerConfiguration");
11
13
  const EntityPrivacyPolicy_1 = __importDefault(require("../EntityPrivacyPolicy"));
12
14
  const ReadThroughEntityCache_1 = require("../internal/ReadThroughEntityCache");
13
15
  const AlwaysAllowPrivacyPolicyRule_1 = __importDefault(require("../rules/AlwaysAllowPrivacyPolicyRule"));
@@ -32,6 +34,68 @@ class TestEntityPrivacyPolicy extends EntityPrivacyPolicy_1.default {
32
34
  }
33
35
  // eslint-disable-next-line @typescript-eslint/explicit-function-return-type
34
36
  const makeEntityClasses = (edgeDeletionBehavior) => {
37
+ const triggerExecutionCounts = {
38
+ parent: 0,
39
+ child: 0,
40
+ grandchild: 0,
41
+ };
42
+ class ParentCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
43
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
44
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
45
+ return;
46
+ }
47
+ if (mutationInfo.cascadingDeleteCause !== null) {
48
+ throw new Error('Parent entity should not have casade delete cause');
49
+ }
50
+ triggerExecutionCounts.parent++;
51
+ }
52
+ }
53
+ class ChildCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
54
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
55
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
56
+ return;
57
+ }
58
+ if (mutationInfo.cascadingDeleteCause === null) {
59
+ throw new Error('Child entity should have casade delete cause');
60
+ }
61
+ const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
62
+ if (!(cascadingDeleteCauseEntity instanceof ParentEntity)) {
63
+ throw new Error('Child entity should have casade delete cause entity of type ParentEntity');
64
+ }
65
+ const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
66
+ if (secondLevelCascadingDeleteCause) {
67
+ throw new Error('Child entity should not have two-level casade delete cause');
68
+ }
69
+ triggerExecutionCounts.child++;
70
+ }
71
+ }
72
+ class GrandChildCheckInfoTrigger extends EntityMutationTriggerConfiguration_1.EntityMutationTrigger {
73
+ async executeAsync(_viewerContext, _queryContext, _entity, mutationInfo) {
74
+ if (mutationInfo.type !== EntityMutationInfo_1.EntityMutationType.DELETE) {
75
+ return;
76
+ }
77
+ if (mutationInfo.cascadingDeleteCause === null) {
78
+ throw new Error('GrandChild entity should have cascade delete cause');
79
+ }
80
+ const cascadingDeleteCauseEntity = mutationInfo.cascadingDeleteCause.entity;
81
+ if (!(cascadingDeleteCauseEntity instanceof ChildEntity)) {
82
+ throw new Error('GrandChild entity should have cascade delete cause entity of type ChildEntity');
83
+ }
84
+ const secondLevelCascadingDeleteCause = mutationInfo.cascadingDeleteCause.cascadingDeleteCause;
85
+ if (!secondLevelCascadingDeleteCause) {
86
+ throw new Error('GrandChild entity should have two-level casade delete cause');
87
+ }
88
+ const secondLevelCascadingDeleteCauseEntity = secondLevelCascadingDeleteCause.entity;
89
+ if (!(secondLevelCascadingDeleteCauseEntity instanceof ParentEntity)) {
90
+ throw new Error('GrandChild entity should have second level casade delete cause entity of type ParentEntity');
91
+ }
92
+ const thirdLevelCascadingDeleteCause = secondLevelCascadingDeleteCause.cascadingDeleteCause;
93
+ if (thirdLevelCascadingDeleteCause) {
94
+ throw new Error('GrandChild entity should not have three-level casade delete cause');
95
+ }
96
+ triggerExecutionCounts.grandchild++;
97
+ }
98
+ }
35
99
  class ParentEntity extends Entity_1.default {
36
100
  static getCompanionDefinition() {
37
101
  return parentEntityCompanion;
@@ -105,27 +169,40 @@ const makeEntityClasses = (edgeDeletionBehavior) => {
105
169
  entityClass: ParentEntity,
106
170
  entityConfiguration: parentEntityConfiguration,
107
171
  privacyPolicyClass: TestEntityPrivacyPolicy,
172
+ mutationTriggers: () => ({
173
+ beforeDelete: [new ParentCheckInfoTrigger()],
174
+ afterDelete: [new ParentCheckInfoTrigger()],
175
+ }),
108
176
  });
109
177
  const childEntityCompanion = new EntityCompanionProvider_1.EntityCompanionDefinition({
110
178
  entityClass: ChildEntity,
111
179
  entityConfiguration: childEntityConfiguration,
112
180
  privacyPolicyClass: TestEntityPrivacyPolicy,
181
+ mutationTriggers: () => ({
182
+ beforeDelete: [new ChildCheckInfoTrigger()],
183
+ afterDelete: [new ChildCheckInfoTrigger()],
184
+ }),
113
185
  });
114
186
  const grandChildEntityCompanion = new EntityCompanionProvider_1.EntityCompanionDefinition({
115
187
  entityClass: GrandChildEntity,
116
188
  entityConfiguration: grandChildEntityConfiguration,
117
189
  privacyPolicyClass: TestEntityPrivacyPolicy,
190
+ mutationTriggers: () => ({
191
+ beforeDelete: [new GrandChildCheckInfoTrigger()],
192
+ afterDelete: [new GrandChildCheckInfoTrigger()],
193
+ }),
118
194
  });
119
195
  return {
120
196
  ParentEntity,
121
197
  ChildEntity,
122
198
  GrandChildEntity,
199
+ triggerExecutionCounts,
123
200
  };
124
201
  };
125
202
  describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
126
203
  describe('EntityEdgeDeletionBehavior.CASCADE_DELETE', () => {
127
204
  it('deletes', async () => {
128
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
205
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE);
129
206
  const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
130
207
  const viewerContext = new TestViewerContext_1.default(companionProvider);
131
208
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
@@ -142,11 +219,17 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
142
219
  await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
143
220
  await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.toBeNull();
144
221
  await expect(GrandChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(grandchild.getID())).resolves.toBeNull();
222
+ // two calls for each trigger, one beforeDelete, one afterDelete
223
+ expect(triggerExecutionCounts).toMatchObject({
224
+ parent: 2,
225
+ child: 2,
226
+ grandchild: 2,
227
+ });
145
228
  });
146
229
  });
147
230
  describe('EntityEdgeDeletionBehavior.SET_NULL', () => {
148
231
  it('sets null', async () => {
149
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL);
232
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.SET_NULL);
150
233
  const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
151
234
  const viewerContext = new TestViewerContext_1.default(companionProvider);
152
235
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
@@ -169,12 +252,19 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
169
252
  .enforcing()
170
253
  .loadByIDAsync(grandchild.getID());
171
254
  expect(loadedGrandchild.getField('parent_id')).toEqual(loadedChild.getID());
255
+ // two calls for only parent trigger, one beforeDelete, one afterDelete
256
+ // when using set null the descendants aren't deleted
257
+ expect(triggerExecutionCounts).toMatchObject({
258
+ parent: 2,
259
+ child: 0,
260
+ grandchild: 0,
261
+ });
172
262
  });
173
263
  });
174
264
  describe('EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE', () => {
175
265
  it('invalidates the cache', async () => {
176
266
  var _a, _b, _c, _d;
177
- const { ParentEntity, ChildEntity, GrandChildEntity } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE);
267
+ const { ParentEntity, ChildEntity, GrandChildEntity, triggerExecutionCounts } = makeEntityClasses(EntityFieldDefinition_1.EntityEdgeDeletionBehavior.CASCADE_DELETE_INVALIDATE_CACHE);
178
268
  const companionProvider = (0, createUnitTestEntityCompanionProvider_1.createUnitTestEntityCompanionProvider)();
179
269
  const viewerContext = new TestViewerContext_1.default(companionProvider);
180
270
  const parent = await ParentEntity.creator(viewerContext).enforceCreateAsync();
@@ -211,6 +301,12 @@ describe('EntityMutator.processEntityDeletionForInboundEdgesAsync', () => {
211
301
  await expect(ParentEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(parent.getID())).resolves.toBeNull();
212
302
  await expect(ChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(child.getID())).resolves.not.toBeNull();
213
303
  await expect(GrandChildEntity.loader(viewerContext).enforcing().loadByIDNullableAsync(grandchild.getID())).resolves.not.toBeNull();
304
+ // two calls for each trigger, one beforeDelete, one afterDelete
305
+ expect(triggerExecutionCounts).toMatchObject({
306
+ parent: 2,
307
+ child: 2,
308
+ grandchild: 2,
309
+ });
214
310
  });
215
311
  });
216
312
  });