@expo/entity 0.54.0 → 0.57.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 (173) hide show
  1. package/build/src/AuthorizationResultBasedEntityAssociationLoader.d.ts +1 -1
  2. package/build/src/AuthorizationResultBasedEntityAssociationLoader.js.map +1 -1
  3. package/build/src/AuthorizationResultBasedEntityLoader.d.ts +18 -24
  4. package/build/src/AuthorizationResultBasedEntityLoader.js +37 -56
  5. package/build/src/AuthorizationResultBasedEntityLoader.js.map +1 -1
  6. package/build/src/AuthorizationResultBasedEntityMutator.js +26 -19
  7. package/build/src/AuthorizationResultBasedEntityMutator.js.map +1 -1
  8. package/build/src/EnforcingEntityCreator.d.ts +1 -1
  9. package/build/src/EnforcingEntityCreator.js +1 -1
  10. package/build/src/EnforcingEntityLoader.d.ts +1 -58
  11. package/build/src/EnforcingEntityLoader.js +0 -65
  12. package/build/src/EnforcingEntityLoader.js.map +1 -1
  13. package/build/src/Entity.d.ts +6 -0
  14. package/build/src/Entity.js +6 -0
  15. package/build/src/Entity.js.map +1 -1
  16. package/build/src/EntityCompanion.d.ts +2 -2
  17. package/build/src/EntityCompanion.js.map +1 -1
  18. package/build/src/EntityCompanionProvider.d.ts +1 -1
  19. package/build/src/EntityCompanionProvider.js +4 -4
  20. package/build/src/EntityConfiguration.d.ts +1 -1
  21. package/build/src/EntityConfiguration.js +1 -2
  22. package/build/src/EntityConfiguration.js.map +1 -1
  23. package/build/src/{EntityLoaderUtils.d.ts → EntityConstructionUtils.d.ts} +15 -29
  24. package/build/src/EntityConstructionUtils.js +118 -0
  25. package/build/src/EntityConstructionUtils.js.map +1 -0
  26. package/build/src/EntityDatabaseAdapter.d.ts +10 -108
  27. package/build/src/EntityDatabaseAdapter.js +14 -76
  28. package/build/src/EntityDatabaseAdapter.js.map +1 -1
  29. package/build/src/EntityFieldDefinition.d.ts +1 -1
  30. package/build/src/EntityInvalidationUtils.d.ts +41 -0
  31. package/build/src/EntityInvalidationUtils.js +71 -0
  32. package/build/src/EntityInvalidationUtils.js.map +1 -0
  33. package/build/src/EntityLoader.d.ts +0 -6
  34. package/build/src/EntityLoader.js +0 -7
  35. package/build/src/EntityLoader.js.map +1 -1
  36. package/build/src/EntityLoaderFactory.d.ts +4 -0
  37. package/build/src/EntityLoaderFactory.js +10 -3
  38. package/build/src/EntityLoaderFactory.js.map +1 -1
  39. package/build/src/EntityPrivacyPolicy.d.ts +27 -0
  40. package/build/src/EntityPrivacyPolicy.js +22 -1
  41. package/build/src/EntityPrivacyPolicy.js.map +1 -1
  42. package/build/src/EntitySecondaryCacheLoader.d.ts +14 -3
  43. package/build/src/EntitySecondaryCacheLoader.js +21 -4
  44. package/build/src/EntitySecondaryCacheLoader.js.map +1 -1
  45. package/build/src/ReadonlyEntity.d.ts +4 -5
  46. package/build/src/ReadonlyEntity.js +7 -8
  47. package/build/src/ReadonlyEntity.js.map +1 -1
  48. package/build/src/ViewerContext.d.ts +6 -6
  49. package/build/src/ViewerContext.js +8 -8
  50. package/build/src/ViewerScopedEntityCompanion.d.ts +1 -1
  51. package/build/src/ViewerScopedEntityCompanion.js.map +1 -1
  52. package/build/src/ViewerScopedEntityLoaderFactory.d.ts +4 -0
  53. package/build/src/ViewerScopedEntityLoaderFactory.js +6 -0
  54. package/build/src/ViewerScopedEntityLoaderFactory.js.map +1 -1
  55. package/build/src/errors/EntityDatabaseAdapterError.d.ts +4 -0
  56. package/build/src/errors/EntityDatabaseAdapterError.js +13 -1
  57. package/build/src/errors/EntityDatabaseAdapterError.js.map +1 -1
  58. package/build/src/errors/EntityError.d.ts +2 -1
  59. package/build/src/errors/EntityError.js +1 -0
  60. package/build/src/errors/EntityError.js.map +1 -1
  61. package/build/src/index.d.ts +6 -1
  62. package/build/src/index.js +6 -1
  63. package/build/src/index.js.map +1 -1
  64. package/build/src/internal/EntityDataManager.d.ts +8 -16
  65. package/build/src/internal/EntityDataManager.js +8 -18
  66. package/build/src/internal/EntityDataManager.js.map +1 -1
  67. package/build/src/internal/EntityFieldTransformationUtils.js.map +1 -1
  68. package/build/src/internal/EntityLoadInterfaces.d.ts +2 -0
  69. package/build/src/internal/EntityLoadInterfaces.js +2 -0
  70. package/build/src/internal/EntityLoadInterfaces.js.map +1 -1
  71. package/build/src/internal/EntityTableDataCoordinator.d.ts +2 -0
  72. package/build/src/internal/EntityTableDataCoordinator.js +4 -0
  73. package/build/src/internal/EntityTableDataCoordinator.js.map +1 -1
  74. package/build/src/metrics/EntityMetricsUtils.d.ts +1 -0
  75. package/build/src/metrics/EntityMetricsUtils.js +15 -1
  76. package/build/src/metrics/EntityMetricsUtils.js.map +1 -1
  77. package/build/src/metrics/IEntityMetricsAdapter.d.ts +4 -1
  78. package/build/src/metrics/IEntityMetricsAdapter.js +3 -0
  79. package/build/src/metrics/IEntityMetricsAdapter.js.map +1 -1
  80. package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.d.ts +10 -0
  81. package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.js +19 -0
  82. package/build/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.js.map +1 -0
  83. package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.d.ts +10 -0
  84. package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.js +19 -0
  85. package/build/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.js.map +1 -0
  86. package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.d.ts +66 -0
  87. package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.js +75 -0
  88. package/build/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.js.map +1 -0
  89. package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.d.ts +12 -0
  90. package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js +23 -0
  91. package/build/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js.map +1 -0
  92. package/build/src/rules/PrivacyPolicyRule.d.ts +2 -2
  93. package/build/src/utils/EntityPrivacyUtils.js +11 -20
  94. package/build/src/utils/EntityPrivacyUtils.js.map +1 -1
  95. package/build/src/utils/collections/maps.d.ts +2 -2
  96. package/build/src/utils/collections/maps.js +2 -2
  97. package/package.json +5 -5
  98. package/src/AuthorizationResultBasedEntityAssociationLoader.ts +4 -7
  99. package/src/AuthorizationResultBasedEntityLoader.ts +58 -88
  100. package/src/AuthorizationResultBasedEntityMutator.ts +35 -20
  101. package/src/EnforcingEntityCreator.ts +1 -1
  102. package/src/EnforcingEntityLoader.ts +1 -95
  103. package/src/Entity.ts +6 -0
  104. package/src/EntityCompanion.ts +2 -2
  105. package/src/EntityCompanionProvider.ts +4 -4
  106. package/src/EntityConfiguration.ts +8 -5
  107. package/src/EntityConstructionUtils.ts +168 -0
  108. package/src/EntityDatabaseAdapter.ts +32 -222
  109. package/src/EntityFieldDefinition.ts +1 -1
  110. package/src/{EntityLoaderUtils.ts → EntityInvalidationUtils.ts} +5 -96
  111. package/src/EntityLoader.ts +0 -16
  112. package/src/EntityLoaderFactory.ts +50 -10
  113. package/src/EntityPrivacyPolicy.ts +44 -1
  114. package/src/EntitySecondaryCacheLoader.ts +54 -3
  115. package/src/ReadonlyEntity.ts +9 -11
  116. package/src/ViewerContext.ts +10 -10
  117. package/src/ViewerScopedEntityCompanion.ts +1 -1
  118. package/src/ViewerScopedEntityLoaderFactory.ts +37 -0
  119. package/src/__tests__/AuthorizationResultBasedEntityLoader-constructor-test.ts +3 -5
  120. package/src/__tests__/AuthorizationResultBasedEntityLoader-test.ts +34 -419
  121. package/src/__tests__/ComposedCacheAdapter-test.ts +3 -3
  122. package/src/__tests__/EnforcingEntityLoader-test.ts +2 -134
  123. package/src/__tests__/EntityCompanion-test.ts +18 -0
  124. package/src/__tests__/EntityConfiguration-test.ts +4 -4
  125. package/src/__tests__/EntityDatabaseAdapter-test.ts +33 -68
  126. package/src/__tests__/EntityEdges-test.ts +10 -10
  127. package/src/__tests__/EntityLoader-test.ts +6 -4
  128. package/src/__tests__/EntityMutator-test.ts +27 -15
  129. package/src/__tests__/EntityPrivacyPolicy-test.ts +102 -0
  130. package/src/__tests__/EntityQueryContext-test.ts +11 -11
  131. package/src/__tests__/EntitySecondaryCacheLoader-test.ts +10 -5
  132. package/src/__tests__/EntitySelfReferentialEdges-test.ts +6 -6
  133. package/src/__tests__/GenericEntityCacheAdapter-test.ts +18 -15
  134. package/src/__tests__/GenericSecondaryEntityCache-test.ts +27 -5
  135. package/src/__tests__/ReadonlyEntity-test.ts +6 -4
  136. package/src/__tests__/ViewerContext-test.ts +4 -4
  137. package/src/__tests__/ViewerScopedEntityCompanion-test.ts +1 -0
  138. package/src/__tests__/cases/TwoEntitySameTableDisjointRows-test.ts +0 -17
  139. package/src/errors/EntityDatabaseAdapterError.ts +14 -0
  140. package/src/errors/EntityError.ts +1 -0
  141. package/src/errors/__tests__/EntityDatabaseAdapterError-test.ts +9 -0
  142. package/src/errors/__tests__/EntityError-test.ts +13 -5
  143. package/src/index.ts +6 -1
  144. package/src/internal/EntityDataManager.ts +19 -54
  145. package/src/internal/EntityFieldTransformationUtils.ts +5 -5
  146. package/src/internal/EntityLoadInterfaces.ts +2 -0
  147. package/src/internal/EntityTableDataCoordinator.ts +2 -2
  148. package/src/internal/__tests__/CompositeFieldHolder-test.ts +8 -2
  149. package/src/internal/__tests__/EntityDataManager-test.ts +71 -202
  150. package/src/internal/__tests__/ReadThroughEntityCache-test.ts +39 -24
  151. package/src/metrics/EntityMetricsUtils.ts +23 -0
  152. package/src/metrics/IEntityMetricsAdapter.ts +3 -0
  153. package/src/metrics/__tests__/EntityMetricsUtils-test.ts +120 -0
  154. package/src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.ts +47 -0
  155. package/src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.ts +47 -0
  156. package/src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.ts +177 -0
  157. package/src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.ts +46 -0
  158. package/src/rules/PrivacyPolicyRule.ts +2 -2
  159. package/src/rules/__tests__/AllowIfAllSubRulesAllowPrivacyPolicyRule-test.ts +64 -0
  160. package/src/rules/__tests__/AllowIfAnySubRuleAllowsPrivacyPolicyRule-test.ts +64 -0
  161. package/src/rules/__tests__/AllowIfInParentCascadeDeletionPrivacyPolicyRule-test.ts +268 -0
  162. package/src/rules/__tests__/AlwaysAllowPrivacyPolicyRule-test.ts +2 -2
  163. package/src/rules/__tests__/AlwaysDenyPrivacyPolicyRule-test.ts +2 -2
  164. package/src/rules/__tests__/AlwaysSkipPrivacyPolicyRule-test.ts +2 -2
  165. package/src/rules/__tests__/EvaluateIfEntityFieldPredicatePrivacyPolicyRule-test.ts +47 -0
  166. package/src/utils/EntityPrivacyUtils.ts +18 -29
  167. package/src/utils/__testfixtures__/PrivacyPolicyRuleTestUtils.ts +2 -2
  168. package/src/utils/__testfixtures__/StubDatabaseAdapter.ts +13 -101
  169. package/src/utils/__tests__/EntityCreationUtils-test.ts +6 -6
  170. package/src/utils/__tests__/EntityPrivacyUtils-test.ts +2 -2
  171. package/src/utils/collections/maps.ts +2 -2
  172. package/build/src/EntityLoaderUtils.js +0 -147
  173. package/build/src/EntityLoaderUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EntityMetricsUtils.js","sourceRoot":"","sources":["../../../src/metrics/EntityMetricsUtils.ts"],"names":[],"mappings":";;;AAOA,oDAAsD;AAE/C,MAAM,wBAAwB,GACnC,CACE,cAAqC,EACrC,QAA+B,EAC/B,eAAuB,EACvB,YAAgC,EAChC,EAAE,CACJ,KAAK,EAAW,OAA8C,EAAE,EAAE;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,eAAe,EAAE,YAAY,CAAC,eAAe,EAAE;QAC/C,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;QAC7B,KAAK,EAAE,MAAM,CAAC,MAAM;KACrB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArBS,QAAA,wBAAwB,4BAqBjC;AAEG,MAAM,2BAA2B,GACtC,CACE,cAAqC,EACrC,QAA+B,EAC/B,eAAuB,EACvB,YAAgC,EAChC,EAAE,CACJ,KAAK,EAKH,OAAuE,EACvE,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,IAAA,gBAAS,EAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAE/D,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,QAAQ;QACd,eAAe,EAAE,YAAY,CAAC,eAAe,EAAE;QAC/C,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;QAC7B,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA7BS,QAAA,2BAA2B,+BA6BpC;AAEG,MAAM,4BAA4B,GACvC,CACE,cAAqC,EACrC,YAAuC,EACvC,eAAuB,EACvB,YAAgC,EAChC,EAAE,CACJ,KAAK,EAAK,OAAmB,EAAE,EAAE;IAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,cAAc,CAAC,uBAAuB,CAAC;QACrC,IAAI,EAAE,YAAY;QAClB,eAAe,EAAE,YAAY,CAAC,eAAe,EAAE;QAC/C,eAAe;QACf,QAAQ,EAAE,OAAO,GAAG,SAAS;KAC9B,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AApBS,QAAA,4BAA4B,gCAoBrC"}
1
+ {"version":3,"file":"EntityMetricsUtils.js","sourceRoot":"","sources":["../../../src/metrics/EntityMetricsUtils.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,10 @@ import { EntityLoadMethodType } from '../internal/EntityLoadInterfaces';
3
3
  export declare enum EntityMetricsLoadType {
4
4
  LOAD_MANY = 0,
5
5
  LOAD_MANY_EQUALITY_CONJUNCTION = 1,
6
- LOAD_MANY_RAW = 2
6
+ LOAD_MANY_RAW = 2,
7
+ LOAD_MANY_SQL = 3,
8
+ LOAD_ONE = 4,
9
+ LOAD_PAGE = 5
7
10
  }
8
11
  /**
9
12
  * Event about a single call to an EntityLoader method.
@@ -6,6 +6,9 @@ var EntityMetricsLoadType;
6
6
  EntityMetricsLoadType[EntityMetricsLoadType["LOAD_MANY"] = 0] = "LOAD_MANY";
7
7
  EntityMetricsLoadType[EntityMetricsLoadType["LOAD_MANY_EQUALITY_CONJUNCTION"] = 1] = "LOAD_MANY_EQUALITY_CONJUNCTION";
8
8
  EntityMetricsLoadType[EntityMetricsLoadType["LOAD_MANY_RAW"] = 2] = "LOAD_MANY_RAW";
9
+ EntityMetricsLoadType[EntityMetricsLoadType["LOAD_MANY_SQL"] = 3] = "LOAD_MANY_SQL";
10
+ EntityMetricsLoadType[EntityMetricsLoadType["LOAD_ONE"] = 4] = "LOAD_ONE";
11
+ EntityMetricsLoadType[EntityMetricsLoadType["LOAD_PAGE"] = 5] = "LOAD_PAGE";
9
12
  })(EntityMetricsLoadType || (exports.EntityMetricsLoadType = EntityMetricsLoadType = {}));
10
13
  var EntityMetricsMutationType;
11
14
  (function (EntityMetricsMutationType) {
@@ -1 +1 @@
1
- {"version":3,"file":"IEntityMetricsAdapter.js","sourceRoot":"","sources":["../../../src/metrics/IEntityMetricsAdapter.ts"],"names":[],"mappings":";;;AAMA,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC/B,2EAAS,CAAA;IACT,qHAA8B,CAAA;IAC9B,mFAAa,CAAA;AACf,CAAC,EAJW,qBAAqB,qCAArB,qBAAqB,QAIhC;AAgCD,IAAY,yBAIX;AAJD,WAAY,yBAAyB;IACnC,6EAAM,CAAA;IACN,6EAAM,CAAA;IACN,6EAAM,CAAA;AACR,CAAC,EAJW,yBAAyB,yCAAzB,yBAAyB,QAIpC;AAwBD,IAAY,2BAgBX;AAhBD,WAAY,2BAA2B;IACrC;;;OAGG;IACH,yFAAU,CAAA;IAEV;;OAEG;IACH,+EAAK,CAAA;IAEL;;OAEG;IACH,qFAAQ,CAAA;AACV,CAAC,EAhBW,2BAA2B,2CAA3B,2BAA2B,QAgBtC;AAgCD,IAAY,gCAGX;AAHD,WAAY,gCAAgC;IAC1C,uFAAI,CAAA;IACJ,yFAAK,CAAA;AACP,CAAC,EAHW,gCAAgC,gDAAhC,gCAAgC,QAG3C"}
1
+ {"version":3,"file":"IEntityMetricsAdapter.js","sourceRoot":"","sources":["../../../src/metrics/IEntityMetricsAdapter.ts"],"names":[],"mappings":";;;AAMA,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,2EAAS,CAAA;IACT,qHAA8B,CAAA;IAC9B,mFAAa,CAAA;IACb,mFAAa,CAAA;IACb,yEAAQ,CAAA;IACR,2EAAS,CAAA;AACX,CAAC,EAPW,qBAAqB,qCAArB,qBAAqB,QAOhC;AAgCD,IAAY,yBAIX;AAJD,WAAY,yBAAyB;IACnC,6EAAM,CAAA;IACN,6EAAM,CAAA;IACN,6EAAM,CAAA;AACR,CAAC,EAJW,yBAAyB,yCAAzB,yBAAyB,QAIpC;AAwBD,IAAY,2BAgBX;AAhBD,WAAY,2BAA2B;IACrC;;;OAGG;IACH,yFAAU,CAAA;IAEV;;OAEG;IACH,+EAAK,CAAA;IAEL;;OAEG;IACH,qFAAQ,CAAA;AACV,CAAC,EAhBW,2BAA2B,2CAA3B,2BAA2B,QAgBtC;AAgCD,IAAY,gCAGX;AAHD,WAAY,gCAAgC;IAC1C,uFAAI,CAAA;IACJ,yFAAK,CAAA;AACP,CAAC,EAHW,gCAAgC,gDAAhC,gCAAgC,QAG3C"}
@@ -0,0 +1,10 @@
1
+ import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
2
+ import { EntityQueryContext } from '../EntityQueryContext';
3
+ import { ReadonlyEntity } from '../ReadonlyEntity';
4
+ import { ViewerContext } from '../ViewerContext';
5
+ import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
6
+ export declare class AllowIfAllSubRulesAllowPrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
7
+ private readonly subRules;
8
+ constructor(subRules: PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>[]);
9
+ evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyRuleEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
10
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AllowIfAllSubRulesAllowPrivacyPolicyRule = void 0;
4
+ const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
5
+ class AllowIfAllSubRulesAllowPrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
6
+ subRules;
7
+ constructor(subRules) {
8
+ super();
9
+ this.subRules = subRules;
10
+ }
11
+ async evaluateAsync(viewerContext, queryContext, evaluationContext, entity) {
12
+ const results = await Promise.all(this.subRules.map((subRule) => subRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)));
13
+ return results.every((result) => result === PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW)
14
+ ? PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW
15
+ : PrivacyPolicyRule_1.RuleEvaluationResult.SKIP;
16
+ }
17
+ }
18
+ exports.AllowIfAllSubRulesAllowPrivacyPolicyRule = AllowIfAllSubRulesAllowPrivacyPolicyRule;
19
+ //# sourceMappingURL=AllowIfAllSubRulesAllowPrivacyPolicyRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AllowIfAllSubRulesAllowPrivacyPolicyRule.js","sourceRoot":"","sources":["../../../src/rules/AllowIfAllSubRulesAllowPrivacyPolicyRule.ts"],"names":[],"mappings":";;;AAIA,2DAA8E;AAE9E,MAAa,wCAMX,SAAQ,qCAA8E;IAEnE;IADnB,YACmB,QAMd;QAEH,KAAK,EAAE,CAAC;QARS,aAAQ,GAAR,QAAQ,CAMtB;IAGL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,aAA6B,EAC7B,YAAgC,EAChC,iBAMC,EACD,MAAe;QAEf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAC9E,CACF,CAAC;QACF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,wCAAoB,CAAC,KAAK,CAAC;YACrE,CAAC,CAAC,wCAAoB,CAAC,KAAK;YAC5B,CAAC,CAAC,wCAAoB,CAAC,IAAI,CAAC;IAChC,CAAC;CACF;AAxCD,4FAwCC"}
@@ -0,0 +1,10 @@
1
+ import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
2
+ import { EntityQueryContext } from '../EntityQueryContext';
3
+ import { ReadonlyEntity } from '../ReadonlyEntity';
4
+ import { ViewerContext } from '../ViewerContext';
5
+ import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
6
+ export declare class AllowIfAnySubRuleAllowsPrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
7
+ private readonly subRules;
8
+ constructor(subRules: PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>[]);
9
+ evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyRuleEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
10
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AllowIfAnySubRuleAllowsPrivacyPolicyRule = void 0;
4
+ const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
5
+ class AllowIfAnySubRuleAllowsPrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
6
+ subRules;
7
+ constructor(subRules) {
8
+ super();
9
+ this.subRules = subRules;
10
+ }
11
+ async evaluateAsync(viewerContext, queryContext, evaluationContext, entity) {
12
+ const results = await Promise.all(this.subRules.map((subRule) => subRule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)));
13
+ return results.includes(PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW)
14
+ ? PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW
15
+ : PrivacyPolicyRule_1.RuleEvaluationResult.SKIP;
16
+ }
17
+ }
18
+ exports.AllowIfAnySubRuleAllowsPrivacyPolicyRule = AllowIfAnySubRuleAllowsPrivacyPolicyRule;
19
+ //# sourceMappingURL=AllowIfAnySubRuleAllowsPrivacyPolicyRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AllowIfAnySubRuleAllowsPrivacyPolicyRule.js","sourceRoot":"","sources":["../../../src/rules/AllowIfAnySubRuleAllowsPrivacyPolicyRule.ts"],"names":[],"mappings":";;;AAIA,2DAA8E;AAE9E,MAAa,wCAMX,SAAQ,qCAA8E;IAEnE;IADnB,YACmB,QAMd;QAEH,KAAK,EAAE,CAAC;QARS,aAAQ,GAAR,QAAQ,CAMtB;IAGL,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,aAA6B,EAC7B,YAAgC,EAChC,iBAMC,EACD,MAAe;QAEf,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5B,OAAO,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAC9E,CACF,CAAC;QACF,OAAO,OAAO,CAAC,QAAQ,CAAC,wCAAoB,CAAC,KAAK,CAAC;YACjD,CAAC,CAAC,wCAAoB,CAAC,KAAK;YAC5B,CAAC,CAAC,wCAAoB,CAAC,IAAI,CAAC;IAChC,CAAC;CACF;AAxCD,4FAwCC"}
@@ -0,0 +1,66 @@
1
+ import { IEntityClass } from '../Entity';
2
+ import { EntityPrivacyPolicy, EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
3
+ import { EntityQueryContext } from '../EntityQueryContext';
4
+ import { ReadonlyEntity } from '../ReadonlyEntity';
5
+ import { ViewerContext } from '../ViewerContext';
6
+ import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
7
+ /**
8
+ * Directive for specifying the parent relationship in AllowIfInParentCascadeDeletionPrivacyPolicyRule.
9
+ */
10
+ export interface AllowIfInParentCascadeDeletionDirective<TViewerContext extends ViewerContext, TFields, TParentFields extends object, TParentIDField extends keyof NonNullable<Pick<TParentFields, TParentSelectedFields>>, TParentEntity extends ReadonlyEntity<TParentFields, TParentIDField, TViewerContext, TParentSelectedFields>, TParentPrivacyPolicy extends EntityPrivacyPolicy<TParentFields, TParentIDField, TViewerContext, TParentEntity, TParentSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields, TParentSelectedFields extends keyof TParentFields = keyof TParentFields> {
11
+ /**
12
+ * Class of parent entity that should trigger a cascade set null update to a field within
13
+ * the entity being authorized.
14
+ */
15
+ parentEntityClass: IEntityClass<TParentFields, TParentIDField, TViewerContext, TParentEntity, TParentPrivacyPolicy, TParentSelectedFields>;
16
+ /**
17
+ * Field of the current entity with references the deleting instace of parentEntityClass.
18
+ */
19
+ fieldIdentifyingParentEntity: keyof Pick<TFields, TSelectedFields>;
20
+ /**
21
+ * Field in parentEntityClass referenced by the value of fieldIdentifyingParentEntity.
22
+ * If not provided, ID is assumed.
23
+ */
24
+ parentEntityLookupByField?: keyof Pick<TParentFields, TParentSelectedFields>;
25
+ }
26
+ /**
27
+ * A generic privacy policy rule that allows when an entity is being authorized
28
+ * as part of a cascading delete from a parent entity. Handles two cases:
29
+ * - When the field has not yet been null'ed out due to a cascading set null. This is often
30
+ * required for read rules to authorize the initial re-read of the entity being update set null'ed.
31
+ * - When the field has been null'ed out due to a cascading set null. This is often required
32
+ * the update rules for the field nullification.
33
+ *
34
+ * These two cases could theoretically be handled by two separate (stricter) rules, but are combined
35
+ * to simplify configuration since practically there are few cases where having them be combined would
36
+ * preset an issue.
37
+ *
38
+ * @example
39
+ * Billing info owned by an account, but records who created the billing info in creating_user_id. User is a member of that account.
40
+ * User can delete themselves, and the billing info's creating_user_id field is cascade set null'ed when the user is deleted.
41
+ *
42
+ * ```ts
43
+ * class BillingInfoEntityPrivacyPolicy extends EntityPrivacyPolicy<...> {
44
+ * protected override readonly readRules = [
45
+ * ...,
46
+ * new AllowIfInParentCascadeDeletionPrivacyPolicyRule<...>({
47
+ * fieldIdentifyingParentEntity: 'creating_user_id',
48
+ * parentEntityClass: UserEntity,
49
+ * }),
50
+ * ];
51
+ *
52
+ * protected override readonly updateRules = [
53
+ * ...,
54
+ * new AllowIfInParentCascadeDeletionPrivacyPolicyRule<...>({
55
+ * fieldIdentifyingParentEntity: 'creating_user_id',
56
+ * parentEntityClass: UserEntity,
57
+ * }),
58
+ * ];
59
+ * }
60
+ * ```
61
+ */
62
+ export declare class AllowIfInParentCascadeDeletionPrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TFields2 extends object, TIDField2 extends keyof NonNullable<Pick<TFields2, TSelectedFields2>>, TEntity2 extends ReadonlyEntity<TFields2, TIDField2, TViewerContext, TSelectedFields2>, TPrivacyPolicy2 extends EntityPrivacyPolicy<TFields2, TIDField2, TViewerContext, TEntity2, TSelectedFields2>, TSelectedFields extends keyof TFields = keyof TFields, TSelectedFields2 extends keyof TFields2 = keyof TFields2> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
63
+ private readonly directive;
64
+ constructor(directive: AllowIfInParentCascadeDeletionDirective<TViewerContext, TFields, TFields2, TIDField2, TEntity2, TPrivacyPolicy2, TSelectedFields, TSelectedFields2>);
65
+ evaluateAsync(_viewerContext: TViewerContext, _queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
66
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AllowIfInParentCascadeDeletionPrivacyPolicyRule = void 0;
4
+ const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
5
+ /**
6
+ * A generic privacy policy rule that allows when an entity is being authorized
7
+ * as part of a cascading delete from a parent entity. Handles two cases:
8
+ * - When the field has not yet been null'ed out due to a cascading set null. This is often
9
+ * required for read rules to authorize the initial re-read of the entity being update set null'ed.
10
+ * - When the field has been null'ed out due to a cascading set null. This is often required
11
+ * the update rules for the field nullification.
12
+ *
13
+ * These two cases could theoretically be handled by two separate (stricter) rules, but are combined
14
+ * to simplify configuration since practically there are few cases where having them be combined would
15
+ * preset an issue.
16
+ *
17
+ * @example
18
+ * Billing info owned by an account, but records who created the billing info in creating_user_id. User is a member of that account.
19
+ * User can delete themselves, and the billing info's creating_user_id field is cascade set null'ed when the user is deleted.
20
+ *
21
+ * ```ts
22
+ * class BillingInfoEntityPrivacyPolicy extends EntityPrivacyPolicy<...> {
23
+ * protected override readonly readRules = [
24
+ * ...,
25
+ * new AllowIfInParentCascadeDeletionPrivacyPolicyRule<...>({
26
+ * fieldIdentifyingParentEntity: 'creating_user_id',
27
+ * parentEntityClass: UserEntity,
28
+ * }),
29
+ * ];
30
+ *
31
+ * protected override readonly updateRules = [
32
+ * ...,
33
+ * new AllowIfInParentCascadeDeletionPrivacyPolicyRule<...>({
34
+ * fieldIdentifyingParentEntity: 'creating_user_id',
35
+ * parentEntityClass: UserEntity,
36
+ * }),
37
+ * ];
38
+ * }
39
+ * ```
40
+ */
41
+ class AllowIfInParentCascadeDeletionPrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
42
+ directive;
43
+ constructor(directive) {
44
+ super();
45
+ this.directive = directive;
46
+ }
47
+ async evaluateAsync(_viewerContext, _queryContext, evaluationContext, entity) {
48
+ const parentEntityClass = this.directive.parentEntityClass;
49
+ const deleteCause = evaluationContext.cascadingDeleteCause;
50
+ if (!deleteCause || !(deleteCause.entity instanceof parentEntityClass)) {
51
+ return PrivacyPolicyRule_1.RuleEvaluationResult.SKIP;
52
+ }
53
+ const entityBeingDeleted = deleteCause.entity;
54
+ // allow if parent foreign key field matches specified field in the entity being authorized
55
+ const valueInThisEntityReferencingParent = entity.getField(this.directive.fieldIdentifyingParentEntity);
56
+ const valueInParent = this.directive.parentEntityLookupByField
57
+ ? entityBeingDeleted.getField(this.directive.parentEntityLookupByField)
58
+ : entityBeingDeleted.getID();
59
+ if (valueInThisEntityReferencingParent &&
60
+ valueInThisEntityReferencingParent === valueInParent) {
61
+ return PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW;
62
+ }
63
+ // allow if parent foreign key field matches specified field in the entity being authorized, and the
64
+ // field in the entity being authorized has been null'ed out due to cascading set null
65
+ const valueInPreviousValueOfThisEntityReferencingParent = evaluationContext.previousValue?.getField(this.directive.fieldIdentifyingParentEntity);
66
+ if (valueInPreviousValueOfThisEntityReferencingParent &&
67
+ valueInPreviousValueOfThisEntityReferencingParent === valueInParent &&
68
+ valueInThisEntityReferencingParent === null) {
69
+ return PrivacyPolicyRule_1.RuleEvaluationResult.ALLOW;
70
+ }
71
+ return PrivacyPolicyRule_1.RuleEvaluationResult.SKIP;
72
+ }
73
+ }
74
+ exports.AllowIfInParentCascadeDeletionPrivacyPolicyRule = AllowIfInParentCascadeDeletionPrivacyPolicyRule;
75
+ //# sourceMappingURL=AllowIfInParentCascadeDeletionPrivacyPolicyRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AllowIfInParentCascadeDeletionPrivacyPolicyRule.js","sourceRoot":"","sources":["../../../src/rules/AllowIfInParentCascadeDeletionPrivacyPolicyRule.ts"],"names":[],"mappings":";;;AAKA,2DAA8E;AAmD9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,+CAiBX,SAAQ,qCAA8E;IAEnE;IADnB,YACmB,SAShB;QAED,KAAK,EAAE,CAAC;QAXS,cAAS,GAAT,SAAS,CASzB;IAGH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,cAA8B,EAC9B,aAAiC,EACjC,iBAMC,EACD,MAAe;QAEf,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;QAE3D,MAAM,WAAW,GAAG,iBAAiB,CAAC,oBAAoB,CAAC;QAC3D,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE,CAAC;YACvE,OAAO,wCAAoB,CAAC,IAAI,CAAC;QACnC,CAAC;QAED,MAAM,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC;QAE9C,2FAA2F;QAC3F,MAAM,kCAAkC,GAAG,MAAM,CAAC,QAAQ,CACxD,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAC5C,CAAC;QACF,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,yBAAyB;YAC5D,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC;YACvE,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAE/B,IACE,kCAAkC;YAClC,kCAAkC,KAAK,aAAa,EACpD,CAAC;YACD,OAAO,wCAAoB,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,oGAAoG;QACpG,uFAAuF;QACvF,MAAM,iDAAiD,GACrD,iBAAiB,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;QAEzF,IACE,iDAAiD;YACjD,iDAAiD,KAAK,aAAa;YACnE,kCAAkC,KAAK,IAAI,EAC3C,CAAC;YACD,OAAO,wCAAoB,CAAC,KAAK,CAAC;QACpC,CAAC;QAED,OAAO,wCAAoB,CAAC,IAAI,CAAC;IACnC,CAAC;CACF;AApFD,0GAoFC"}
@@ -0,0 +1,12 @@
1
+ import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
2
+ import { EntityQueryContext } from '../EntityQueryContext';
3
+ import { ReadonlyEntity } from '../ReadonlyEntity';
4
+ import { ViewerContext } from '../ViewerContext';
5
+ import { PrivacyPolicyRule, RuleEvaluationResult } from './PrivacyPolicyRule';
6
+ export declare class EvaluateIfEntityFieldPredicatePrivacyPolicyRule<TFields extends object, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, N extends TSelectedFields, TSelectedFields extends keyof TFields = keyof TFields> extends PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields> {
7
+ private readonly fieldName;
8
+ private readonly shouldEvaluatePredicate;
9
+ private readonly rule;
10
+ constructor(fieldName: N, shouldEvaluatePredicate: (fieldValue: TFields[N]) => boolean, rule: PrivacyPolicyRule<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>);
11
+ evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyRuleEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
12
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvaluateIfEntityFieldPredicatePrivacyPolicyRule = void 0;
4
+ const PrivacyPolicyRule_1 = require("./PrivacyPolicyRule");
5
+ class EvaluateIfEntityFieldPredicatePrivacyPolicyRule extends PrivacyPolicyRule_1.PrivacyPolicyRule {
6
+ fieldName;
7
+ shouldEvaluatePredicate;
8
+ rule;
9
+ constructor(fieldName, shouldEvaluatePredicate, rule) {
10
+ super();
11
+ this.fieldName = fieldName;
12
+ this.shouldEvaluatePredicate = shouldEvaluatePredicate;
13
+ this.rule = rule;
14
+ }
15
+ async evaluateAsync(viewerContext, queryContext, evaluationContext, entity) {
16
+ const fieldValue = entity.getField(this.fieldName);
17
+ return this.shouldEvaluatePredicate(fieldValue)
18
+ ? await this.rule.evaluateAsync(viewerContext, queryContext, evaluationContext, entity)
19
+ : PrivacyPolicyRule_1.RuleEvaluationResult.SKIP;
20
+ }
21
+ }
22
+ exports.EvaluateIfEntityFieldPredicatePrivacyPolicyRule = EvaluateIfEntityFieldPredicatePrivacyPolicyRule;
23
+ //# sourceMappingURL=EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EvaluateIfEntityFieldPredicatePrivacyPolicyRule.js","sourceRoot":"","sources":["../../../src/rules/EvaluateIfEntityFieldPredicatePrivacyPolicyRule.ts"],"names":[],"mappings":";;;AAIA,2DAA8E;AAE9E,MAAa,+CAOX,SAAQ,qCAA8E;IAEnE;IACA;IACA;IAHnB,YACmB,SAAY,EACZ,uBAA4D,EAC5D,IAMhB;QAED,KAAK,EAAE,CAAC;QAVS,cAAS,GAAT,SAAS,CAAG;QACZ,4BAAuB,GAAvB,uBAAuB,CAAqC;QAC5D,SAAI,GAAJ,IAAI,CAMpB;IAGH,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,aAA6B,EAC7B,YAAgC,EAChC,iBAMC,EACD,MAAe;QAEf,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;YAC7C,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC;YACvF,CAAC,CAAC,wCAAoB,CAAC,IAAI,CAAC;IAChC,CAAC;CACF;AAvCD,0GAuCC"}
@@ -1,4 +1,4 @@
1
- import { EntityPrivacyPolicyEvaluationContext } from '../EntityPrivacyPolicy';
1
+ import { EntityPrivacyPolicyRuleEvaluationContext } from '../EntityPrivacyPolicy';
2
2
  import { EntityQueryContext } from '../EntityQueryContext';
3
3
  import { ReadonlyEntity } from '../ReadonlyEntity';
4
4
  import { ViewerContext } from '../ViewerContext';
@@ -33,5 +33,5 @@ export declare enum RuleEvaluationResult {
33
33
  * would be named something like `DenyIfViewerHasBeenBlockedPrivacyPolicyRule`.
34
34
  */
35
35
  export declare abstract class PrivacyPolicyRule<TFields extends Record<string, any>, TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>, TViewerContext extends ViewerContext, TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>, TSelectedFields extends keyof TFields = keyof TFields> {
36
- abstract evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
36
+ abstract evaluateAsync(viewerContext: TViewerContext, queryContext: EntityQueryContext, evaluationContext: EntityPrivacyPolicyRuleEvaluationContext<TFields, TIDField, TViewerContext, TEntity, TSelectedFields>, entity: TEntity): Promise<RuleEvaluationResult>;
37
37
  }
@@ -132,10 +132,13 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
132
132
  for (const inboundEdge of inboundEdges) {
133
133
  const configurationForInboundEdge = entityCompanionProvider.getCompanionForEntity(inboundEdge).entityCompanionDefinition
134
134
  .entityConfiguration;
135
- const loader = viewerContext
136
- .getViewerScopedEntityCompanionForClass(inboundEdge)
137
- .getLoaderFactory()
138
- .forLoad(queryContext, {
135
+ const entityCompanion = viewerContext.getViewerScopedEntityCompanionForClass(inboundEdge);
136
+ const loaderFactory = entityCompanion.getLoaderFactory();
137
+ const loader = loaderFactory.forLoad(queryContext, {
138
+ previousValue: null,
139
+ cascadingDeleteCause: newCascadingDeleteCause,
140
+ });
141
+ const constructionUtils = loaderFactory.constructionUtils(queryContext, {
139
142
  previousValue: null,
140
143
  cascadingDeleteCause: newCascadingDeleteCause,
141
144
  });
@@ -152,14 +155,9 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
152
155
  let entityResultsToCheckForInboundEdge;
153
156
  if (edgeDeletionPermissionInferenceBehavior ===
154
157
  EntityFieldDefinition_1.EntityEdgeDeletionAuthorizationInferenceBehavior.ONE_IMPLIES_ALL) {
155
- const singleEntityResultToTestForInboundEdge = await loader.loadFirstByFieldEqualityConjunctionAsync([
156
- {
157
- fieldName,
158
- fieldValue: association.associatedEntityLookupByField
159
- ? sourceEntity.getField(association.associatedEntityLookupByField)
160
- : sourceEntity.getID(),
161
- },
162
- ], { orderBy: [] });
158
+ const singleEntityResultToTestForInboundEdge = await loader['loadOneByFieldEqualingAsync'](fieldName, association.associatedEntityLookupByField
159
+ ? sourceEntity.getField(association.associatedEntityLookupByField)
160
+ : sourceEntity.getID());
163
161
  entityResultsToCheckForInboundEdge = singleEntityResultToTestForInboundEdge
164
162
  ? [singleEntityResultToTestForInboundEdge]
165
163
  : [];
@@ -196,13 +194,6 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
196
194
  // create synthetic entities with the reference field set to null to properly evaluate
197
195
  // privacy policy as it would be after the cascading SET NULL operation
198
196
  const previousAndSyntheticEntitiesForInboundEdge = entitiesForInboundEdge.map((entity) => {
199
- const entityLoader = viewerContext
200
- .getViewerScopedEntityCompanionForClass(inboundEdge)
201
- .getLoaderFactory()
202
- .forLoad(queryContext, {
203
- previousValue: entity,
204
- cascadingDeleteCause: newCascadingDeleteCause,
205
- });
206
197
  const allFields = entity.getAllDatabaseFields();
207
198
  const syntheticFields = {
208
199
  ...allFields,
@@ -210,7 +201,7 @@ async function canViewerDeleteInternalAsync(entityClass, sourceEntity, evaluatio
210
201
  };
211
202
  return {
212
203
  previousValue: entity,
213
- syntheticallyUpdatedValue: entityLoader.utils.constructEntity(syntheticFields),
204
+ syntheticallyUpdatedValue: constructionUtils.constructEntity(syntheticFields),
214
205
  };
215
206
  });
216
207
  const canUpdateEvaluationResults = await Promise.all(previousAndSyntheticEntitiesForInboundEdge.map(({ previousValue, syntheticallyUpdatedValue }) => canViewerUpdateInternalAsync(inboundEdge, syntheticallyUpdatedValue, {
@@ -1 +1 @@
1
- {"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntityPrivacyUtils.js","sourceRoot":"","sources":["../../../src/utils/EntityPrivacyUtils.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /**
2
- * If the specified key is not already associated with a value in this map, attempts to compute
3
- * its value using the given mapping function and enters it into this map unless null.
2
+ * If the specified key is not already associated with a value in this map, computes
3
+ * its value using the given mapping function and enters it into this map.
4
4
  *
5
5
  * @param map - map from which to get the key's value or compute and associate
6
6
  * @param key - key for which to get the value or with which the computed value is to be associated
@@ -7,8 +7,8 @@ exports.reduceMapAsync = exports.reduceMap = exports.invertMap = exports.zipToMa
7
7
  exports.filterMap = filterMap;
8
8
  const invariant_1 = __importDefault(require("invariant"));
9
9
  /**
10
- * If the specified key is not already associated with a value in this map, attempts to compute
11
- * its value using the given mapping function and enters it into this map unless null.
10
+ * If the specified key is not already associated with a value in this map, computes
11
+ * its value using the given mapping function and enters it into this map.
12
12
  *
13
13
  * @param map - map from which to get the key's value or compute and associate
14
14
  * @param key - key for which to get the value or with which the computed value is to be associated
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@expo/entity",
3
- "version": "0.54.0",
3
+ "version": "0.57.0",
4
4
  "description": "A privacy-first data model",
5
5
  "files": [
6
6
  "build",
@@ -34,12 +34,12 @@
34
34
  "devDependencies": {
35
35
  "@jest/globals": "30.2.0",
36
36
  "@types/invariant": "2.2.37",
37
- "@types/lodash": "4.17.23",
38
- "@types/node": "24.10.9",
39
- "lodash": "4.17.21",
37
+ "@types/lodash": "4.17.24",
38
+ "@types/node": "24.10.13",
39
+ "lodash": "4.17.23",
40
40
  "ts-mockito": "2.6.1",
41
41
  "typescript": "5.9.3",
42
42
  "uuid": "13.0.0"
43
43
  },
44
- "gitHead": "283c02eedbd4f5721afad96f31ada85bf92afb41"
44
+ "gitHead": "e876cfb27bb9b0004d81b40c9067481e3e0c2beb"
45
45
  }
@@ -16,7 +16,7 @@ export class AuthorizationResultBasedEntityAssociationLoader<
16
16
  TIDField extends keyof NonNullable<Pick<TFields, TSelectedFields>>,
17
17
  TViewerContext extends ViewerContext,
18
18
  TEntity extends ReadonlyEntity<TFields, TIDField, TViewerContext, TSelectedFields>,
19
- TSelectedFields extends keyof TFields,
19
+ TSelectedFields extends keyof TFields = keyof TFields,
20
20
  > {
21
21
  constructor(
22
22
  private readonly entity: TEntity,
@@ -123,10 +123,7 @@ export class AuthorizationResultBasedEntityAssociationLoader<
123
123
  .getViewerScopedEntityCompanionForClass(associatedEntityClass)
124
124
  .getLoaderFactory()
125
125
  .forLoad(this.queryContext, { previousValue: null, cascadingDeleteCause: null });
126
- return await loader.loadManyByFieldEqualingAsync(
127
- associatedEntityFieldContainingThisID,
128
- thisID as any,
129
- );
126
+ return await loader.loadManyByFieldEqualingAsync(associatedEntityFieldContainingThisID, thisID);
130
127
  }
131
128
 
132
129
  /**
@@ -178,7 +175,7 @@ export class AuthorizationResultBasedEntityAssociationLoader<
178
175
  .forLoad(this.queryContext, { previousValue: null, cascadingDeleteCause: null });
179
176
  return await loader.loadByFieldEqualingAsync(
180
177
  associatedEntityLookupByField,
181
- associatedFieldValue as any,
178
+ associatedFieldValue,
182
179
  );
183
180
  }
184
181
 
@@ -232,7 +229,7 @@ export class AuthorizationResultBasedEntityAssociationLoader<
232
229
  .forLoad(this.queryContext, { previousValue: null, cascadingDeleteCause: null });
233
230
  return await loader.loadManyByFieldEqualingAsync(
234
231
  associatedEntityLookupByField,
235
- associatedFieldValue as any,
232
+ associatedFieldValue,
236
233
  );
237
234
  }
238
235