@objectstack/plugin-sharing 9.8.0 → 9.9.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": "@objectstack/plugin-sharing",
3
- "version": "9.8.0",
3
+ "version": "9.9.0",
4
4
  "license": "Apache-2.0",
5
5
  "description": "Record-level sharing for ObjectStack — sys_record_share + middleware that enforces sharingModel + ISharingService.",
6
6
  "main": "dist/index.js",
@@ -13,10 +13,10 @@
13
13
  }
14
14
  },
15
15
  "dependencies": {
16
- "@objectstack/core": "9.8.0",
17
- "@objectstack/objectql": "9.8.0",
18
- "@objectstack/platform-objects": "9.8.0",
19
- "@objectstack/spec": "9.8.0"
16
+ "@objectstack/core": "9.9.0",
17
+ "@objectstack/objectql": "9.9.0",
18
+ "@objectstack/platform-objects": "9.9.0",
19
+ "@objectstack/spec": "9.9.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/node": "^25.9.3",
@@ -139,37 +139,41 @@ export class SharingServicePlugin implements Plugin {
139
139
  });
140
140
  ctx.registerService('sharing', this.service);
141
141
 
142
+ // Enforcement (read-filter middleware + sharing-rule hooks) is opt-out
143
+ // via `enforce: false`. The share-link service below is registered
144
+ // REGARDLESS — capability-token sharing does not depend on principal-
145
+ // based RLS enforcement, and multi-tenant hosts mount this plugin purely
146
+ // for the `shareLinks` service (per-env enforcement is applied elsewhere).
142
147
  if (this.options.enforce === false) {
143
- ctx.logger.info('SharingServicePlugin: enforcement disabled (enforce=false)');
144
- return;
145
- }
146
-
147
- const mw = buildSharingMiddleware(this.service);
148
- if (typeof engine.registerMiddleware === 'function') {
149
- engine.registerMiddleware(mw, { object: '*' });
150
- ctx.logger.info('SharingServicePlugin: enforcement middleware installed');
148
+ ctx.logger.info('SharingServicePlugin: enforcement disabled (enforce=false) — share-link service still registered');
151
149
  } else {
152
- ctx.logger.warn('SharingServicePlugin: engine has no registerMiddleware — enforcement not applied');
153
- }
150
+ const mw = buildSharingMiddleware(this.service);
151
+ if (typeof engine.registerMiddleware === 'function') {
152
+ engine.registerMiddleware(mw, { object: '*' });
153
+ ctx.logger.info('SharingServicePlugin: enforcement middleware installed');
154
+ } else {
155
+ ctx.logger.warn('SharingServicePlugin: engine has no registerMiddleware — enforcement not applied');
156
+ }
154
157
 
155
- // Rule evaluator + hot-rebindable lifecycle hooks.
156
- try {
157
- this.ruleService = new SharingRuleService({
158
- engine: engine as SharingEngine,
159
- sharing: this.service,
160
- logger: ctx.logger as any,
161
- });
162
- ctx.registerService('sharingRules', this.ruleService);
158
+ // Rule evaluator + hot-rebindable lifecycle hooks.
159
+ try {
160
+ this.ruleService = new SharingRuleService({
161
+ engine: engine as SharingEngine,
162
+ sharing: this.service,
163
+ logger: ctx.logger as any,
164
+ });
165
+ ctx.registerService('sharingRules', this.ruleService);
163
166
 
164
- if (typeof engine.registerHook === 'function' && typeof engine.unregisterHooksByPackage === 'function') {
165
- const rules = await this.ruleService.listRules({ activeOnly: true }, { isSystem: true } as any);
166
- unbindAllRuleHooks(engine);
167
- bindRuleHooks(engine, this.ruleService, rules, ctx.logger as any);
168
- } else {
169
- ctx.logger.warn('SharingServicePlugin: engine has no hook API — sharing rule auto-evaluation disabled');
167
+ if (typeof engine.registerHook === 'function' && typeof engine.unregisterHooksByPackage === 'function') {
168
+ const rules = await this.ruleService.listRules({ activeOnly: true }, { isSystem: true } as any);
169
+ unbindAllRuleHooks(engine);
170
+ bindRuleHooks(engine, this.ruleService, rules, ctx.logger as any);
171
+ } else {
172
+ ctx.logger.warn('SharingServicePlugin: engine has no hook API — sharing rule auto-evaluation disabled');
173
+ }
174
+ } catch (err: any) {
175
+ ctx.logger.warn('SharingServicePlugin: sharing-rule subsystem not started', { error: err?.message });
170
176
  }
171
- } catch (err: any) {
172
- ctx.logger.warn('SharingServicePlugin: sharing-rule subsystem not started', { error: err?.message });
173
177
  }
174
178
 
175
179
  // ── Share-Link service (capability tokens) ────────────────