nodejs-store 2.7.0 → 3.0.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": "nodejs-store",
3
- "version": "2.7.0",
3
+ "version": "3.0.0",
4
4
  "description": "Multi-backend data layer for Node.js (MongoDB, MySQL, SQLite, PostgreSQL): pure JSON schemas, GQL tree queries compiled to a single native query, GROUP BY/HAVING aggregation, computed columns, soft-delete and role-based access control",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -65,7 +65,7 @@
65
65
  "mongodb": "^6.21.0",
66
66
  "mysql2": "^3.24.4",
67
67
  "pg": "^8.23.0",
68
- "rust-store-node": "^2.7.0"
68
+ "rust-store-node": "^3.0.0"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@eslint/js": "^9.39.2",
package/src/index.js CHANGED
@@ -344,6 +344,19 @@ class Store {
344
344
  rbacRowCondition(model, action, ctx) {
345
345
  return permission.rbacRowCondition(model, action, ctx);
346
346
  }
347
+
348
+ // ── 角色清单与未配置姿态(清单化语义,判决唯一在 core;本层仅透传配置) ──
349
+ setExemptRoles(roles) {
350
+ return permission.setExemptRoles(roles);
351
+ }
352
+
353
+ setDenyWriteRoles(roles) {
354
+ return permission.setDenyWriteRoles(roles);
355
+ }
356
+
357
+ setUnconfiguredPolicy(policy) {
358
+ return permission.setUnconfiguredPolicy(policy);
359
+ }
347
360
  }
348
361
 
349
362
  /** 自定义权限错误(实例可被 store.PermissionError 捕获) */
package/src/permission.js CHANGED
@@ -133,6 +133,20 @@ function rbacRowCondition(model, action, ctx) {
133
133
  return core.rbacRowCondition(_model(model), action, ctx ?? null);
134
134
  }
135
135
 
136
+ // ── 角色清单与未配置姿态(清单化语义,判决唯一在 core;本层仅透传) ──
137
+
138
+ function setExemptRoles(roles) {
139
+ return core.setExemptRoles(roles);
140
+ }
141
+
142
+ function setDenyWriteRoles(roles) {
143
+ return core.setDenyWriteRoles(roles);
144
+ }
145
+
146
+ function setUnconfiguredPolicy(policy) {
147
+ return core.setUnconfiguredPolicy(policy);
148
+ }
149
+
136
150
  // ─── 自定义错误 ──────────────────────────────────────────────
137
151
 
138
152
  class PermissionError extends Error {
@@ -165,5 +179,8 @@ module.exports = {
165
179
  rbacReadableFields,
166
180
  rbacWritableFields,
167
181
  rbacRowCondition,
182
+ setExemptRoles,
183
+ setDenyWriteRoles,
184
+ setUnconfiguredPolicy,
168
185
  PermissionError,
169
186
  };
package/src/schema.js CHANGED
@@ -127,6 +127,21 @@ function setRequireContext(needCtx = true) {
127
127
  core.setRequireContext(Boolean(needCtx));
128
128
  }
129
129
 
130
+ /** 豁免角色清单(命中者在一切判决环节直接放行)。默认空——无豁免(清单化语义) */
131
+ function setExemptRoles(roles) {
132
+ core.setExemptRoles(roles);
133
+ }
134
+
135
+ /** 拒写角色清单(命中者一切写路径拒绝,读不受影响)。默认空——无拒写 */
136
+ function setDenyWriteRoles(roles) {
137
+ core.setDenyWriteRoles(roles);
138
+ }
139
+
140
+ /** schema 白名单缺失/为空时的默认姿态:'open'(默认,放行)| 'closed'(全拒) */
141
+ function setUnconfiguredPolicy(policy) {
142
+ core.setUnconfiguredPolicy(policy);
143
+ }
144
+
130
145
  /** 「上下文强制」开关当前值(对齐 py_store.schema.require_context) */
131
146
  function requireContext() {
132
147
  return core.requireContext();
@@ -160,6 +175,9 @@ module.exports = {
160
175
  list,
161
176
  setRequireContext,
162
177
  requireContext,
178
+ setExemptRoles,
179
+ setDenyWriteRoles,
180
+ setUnconfiguredPolicy,
163
181
  setProfile,
164
182
  getProfile,
165
183
  getAsyncFn,