@i4e/invest4edu-access-core 0.26.0 → 0.27.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@i4e/invest4edu-access-core",
3
- "version": "0.26.0",
3
+ "version": "0.27.0",
4
4
  "description": "Shared access-control primitives for NeoFindesk: tenant keystone, role capabilities, reportee tree, feature flags, and the unified access engine (registry schema, snapshot resolver, visibleWhen).",
5
5
  "type": "module",
6
6
  "exports": {
@@ -81,6 +81,13 @@ export interface EntitlementStore {
81
81
  }
82
82
 
83
83
  export function createEntitlementStore(opts: {
84
+ /**
85
+ * The subscription master switch. Returning false makes the whole store inert — every
86
+ * entitlement answers OPEN, nothing is counted and no subject is auto-provisioned — so the code
87
+ * can ship to production long before the product does. Defaults to the `SUBSCRIPTION_ENABLED`
88
+ * environment variable, and therefore to OFF.
89
+ */
90
+ isEnabled?: () => boolean | Promise<boolean>;
84
91
  /** Returns a raw MongoDB `Db`, or null/undefined when the connection is not ready. */
85
92
  getDb: () => unknown;
86
93
  /** Cast an id the way the caller's driver expects. Defaults to pass-through. */
@@ -70,6 +70,15 @@ export const SUBSCRIPTION_EVENT_TYPES = Object.freeze([
70
70
  // Consumption that happened outside the software — a webinar attended, a VPD session held.
71
71
  // There is no request behind it, so this event is the only record of who said it happened.
72
72
  "usage_recorded",
73
+ /**
74
+ * Credits handed out by an admin, rather than bought or rolled over.
75
+ *
76
+ * It used to be recorded as `override_set`, which made the history unreadable at exactly the
77
+ * moment it mattered: a one-off top-up and a permanent change to somebody's per-period allowance
78
+ * are different promises, and "who gave this partner 500 credits" cannot be answered by a stream
79
+ * where both look identical.
80
+ */
81
+ "credits_granted",
73
82
  /**
74
83
  * A term closed with credits unspent and the plan's policy carried them forward. Worth its own
75
84
  * type because a customer WILL ask why their balance is bigger than their allowance, and the