@venizia/ignis-kernel 0.2.0-8 → 0.2.0-9
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/dist/cjs/base/repositories/common/constants.d.ts +15 -0
- package/dist/cjs/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/cjs/base/repositories/common/constants.js +17 -1
- package/dist/cjs/base/repositories/common/constants.js.map +1 -1
- package/dist/cjs/helpers/inversion/common/types.d.ts +13 -6
- package/dist/cjs/helpers/inversion/common/types.d.ts.map +1 -1
- package/dist/esm/base/repositories/common/constants.d.ts +15 -0
- package/dist/esm/base/repositories/common/constants.d.ts.map +1 -1
- package/dist/esm/base/repositories/common/constants.js +15 -0
- package/dist/esm/base/repositories/common/constants.js.map +1 -1
- package/dist/esm/helpers/inversion/common/types.d.ts +13 -6
- package/dist/esm/helpers/inversion/common/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -34,6 +34,21 @@ export declare class ScopeFilterMissingBehaviors {
|
|
|
34
34
|
}
|
|
35
35
|
/** Valid scope-filter missing-behavior values. */
|
|
36
36
|
export type TScopeFilterMissingBehavior = TConstValue<typeof ScopeFilterMissingBehaviors>;
|
|
37
|
+
/**
|
|
38
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
39
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
40
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
41
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
42
|
+
*/
|
|
43
|
+
export declare class ScopeFilters {
|
|
44
|
+
/**
|
|
45
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
46
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
47
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
48
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
49
|
+
*/
|
|
50
|
+
static readonly UNRESTRICTED: unique symbol;
|
|
51
|
+
}
|
|
37
52
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
38
53
|
export declare class RepositoryErrorCodes {
|
|
39
54
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,4GAA4G;AAC5G,qBAAa,2BAA2B;IACtC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,gHAAgH;IAChH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kDAAkD;AAClD,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1F,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,4GAA4G;AAC5G,qBAAa,2BAA2B;IACtC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,gHAAgH;IAChH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kDAAkD;AAClD,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1F;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,gBAAiE;CAC9F;AAED,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LockStrengths = exports.RelationTypes = exports.RepositoryErrorCodes = exports.ScopeFilterMissingBehaviors = exports.RepositoryOperationScopes = exports.DEFAULT_MAX_LIMIT = exports.DEFAULT_LIMIT = void 0;
|
|
3
|
+
exports.LockStrengths = exports.RelationTypes = exports.RepositoryErrorCodes = exports.ScopeFilters = exports.ScopeFilterMissingBehaviors = exports.RepositoryOperationScopes = exports.DEFAULT_MAX_LIMIT = exports.DEFAULT_LIMIT = void 0;
|
|
4
4
|
const core_1 = require("@venizia/ignis-helpers/core");
|
|
5
5
|
/** Default pagination limit for repository queries. */
|
|
6
6
|
exports.DEFAULT_LIMIT = 10;
|
|
@@ -39,6 +39,22 @@ class ScopeFilterMissingBehaviors {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
exports.ScopeFilterMissingBehaviors = ScopeFilterMissingBehaviors;
|
|
42
|
+
/**
|
|
43
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
44
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
45
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
46
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
47
|
+
*/
|
|
48
|
+
class ScopeFilters {
|
|
49
|
+
/**
|
|
50
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
51
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
52
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
53
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
54
|
+
*/
|
|
55
|
+
static { this.UNRESTRICTED = Symbol.for('@venizia/ignis-kernel:scope-filter-unrestricted'); }
|
|
56
|
+
}
|
|
57
|
+
exports.ScopeFilters = ScopeFilters;
|
|
42
58
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
43
59
|
class RepositoryErrorCodes {
|
|
44
60
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,uDAAuD;AAC1C,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAa,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AARH,8DASC;AAKD,4GAA4G;AAC5G,MAAa,2BAA2B;IACtC,+FAA+F;aAC/E,SAAI,GAAG,MAAM,CAAC;IAC9B,gHAAgH;aAChG,UAAK,GAAG,OAAO,CAAC;aAChB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AATH,kEAUC;AAKD,kMAAkM;AAClM,MAAa,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAJL,oDAKC;AAKD,mEAAmE;AACnE,MAAa,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAPH,sCAQC;AAKD,yEAAyE;AACzE,MAAa,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAdH,sCAeC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":";;;AACA,sDAA0D;AAE1D,uDAAuD;AAC1C,QAAA,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACU,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAa,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AARH,8DASC;AAKD,4GAA4G;AAC5G,MAAa,2BAA2B;IACtC,+FAA+F;aAC/E,SAAI,GAAG,MAAM,CAAC;IAC9B,gHAAgH;aAChG,UAAK,GAAG,OAAO,CAAC;aAChB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AATH,kEAUC;AAKD;;;;;GAKG;AACH,MAAa,YAAY;IACvB;;;;;OAKG;aACa,iBAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;;AAP/F,oCAQC;AAED,kMAAkM;AAClM,MAAa,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,kBAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAJL,oDAKC;AAKD,mEAAmE;AACnE,MAAa,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAPH,sCAQC;AAKD,yEAAyE;AACzE,MAAa,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAdH,sCAeC"}
|
|
@@ -3,7 +3,7 @@ import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/typ
|
|
|
3
3
|
import type { ControllerTransports } from '../../../base/controllers/common/constants';
|
|
4
4
|
import type { IDataSource, TDataSourceDriverClass } from '../../../base/datasources';
|
|
5
5
|
import type { AbstractEntity } from '../../../base/models';
|
|
6
|
-
import type { IRepository, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories';
|
|
6
|
+
import type { IRepository, ScopeFilters, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories';
|
|
7
7
|
import type { TClass, TGrpcMethod, TNullable, TValueOrResolver } from '@venizia/ignis-helpers/common';
|
|
8
8
|
import { type IInjectMetadata as _IInjectMetadata, type IPropertyMetadata as _IPropertyMetadata } from '@venizia/ignis-inversion';
|
|
9
9
|
interface IBaseControllerMetadata {
|
|
@@ -50,12 +50,17 @@ export interface IModelAuthorizeSettings {
|
|
|
50
50
|
* short of removing this setting from the model turns scoping off.
|
|
51
51
|
*/
|
|
52
52
|
export interface IScopeFilterSettings {
|
|
53
|
-
/**
|
|
54
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Returns the scope `where`; `ScopeFilters.UNRESTRICTED` to apply no scope for THIS call (an
|
|
55
|
+
* internal operator, a caller the application has decided sees everything); or null/undefined
|
|
56
|
+
* when this caller's scope cannot be determined at all.
|
|
57
|
+
*/
|
|
58
|
+
resolve: () => TNullable<TWhere> | typeof ScopeFilters.UNRESTRICTED;
|
|
55
59
|
/**
|
|
56
60
|
* What `applyScopeFilter` does when `resolve()` returns null/undefined - no request context, no
|
|
57
61
|
* tenant, a background job. Defaults to `deny`: an unresolved scope matches zero rows, never
|
|
58
|
-
* every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs
|
|
62
|
+
* every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs, declared
|
|
63
|
+
* per MODEL - it cannot express a per-USER bypass; use `ScopeFilters.UNRESTRICTED` for that.
|
|
59
64
|
*/
|
|
60
65
|
onMissing?: TScopeFilterMissingBehavior;
|
|
61
66
|
}
|
|
@@ -65,8 +70,10 @@ export interface IModelSettings {
|
|
|
65
70
|
/** Default filter auto-applied to all repository operations. Bypassable via shouldSkipDefaultFilter. */
|
|
66
71
|
defaultFilter?: TFilter;
|
|
67
72
|
/**
|
|
68
|
-
* Row scope: ANDed into every read and write
|
|
69
|
-
* Resolved per query, so it can depend on the current
|
|
73
|
+
* Row scope: ANDed into every read and write whose scope is expressible as a filter clause, and
|
|
74
|
+
* NOT removable by `shouldSkipDefaultFilter`. Resolved per query, so it can depend on the current
|
|
75
|
+
* request. Ownership resolved per row or through a polymorphic reference is NOT expressible here -
|
|
76
|
+
* that check is still the application's to perform.
|
|
70
77
|
*
|
|
71
78
|
* Relational repositories only - a search-backed model (Typesense, Meilisearch) never reads
|
|
72
79
|
* this setting, so mirroring a scoped entity into a search index needs its own query-time scope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,yBAAyB,EACzB,2BAA2B,EAC3B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,eAAe,IAAI,gBAAgB,EACxC,KAAK,iBAAiB,IAAI,kBAAkB,EAC7C,MAAM,0BAA0B,CAAC;AAElC,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,SAAS,CAAC,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB,CAAC,WAAW,GAAG,OAAO,CAAE,SAAQ,uBAAuB;IAC7F,SAAS,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC;IAC5C,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,uBAAuB,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,uDAAuD;IACvD,MAAM,EAAE,WAAW,CAAC;IAEpB,iDAAiD;IACjD,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAElE,iDAAiD;IACjD,SAAS,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;CAAG;AAEhE,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;CAAG;AAE5D,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,6 +34,21 @@ export declare class ScopeFilterMissingBehaviors {
|
|
|
34
34
|
}
|
|
35
35
|
/** Valid scope-filter missing-behavior values. */
|
|
36
36
|
export type TScopeFilterMissingBehavior = TConstValue<typeof ScopeFilterMissingBehaviors>;
|
|
37
|
+
/**
|
|
38
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
39
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
40
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
41
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
42
|
+
*/
|
|
43
|
+
export declare class ScopeFilters {
|
|
44
|
+
/**
|
|
45
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
46
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
47
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
48
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
49
|
+
*/
|
|
50
|
+
static readonly UNRESTRICTED: unique symbol;
|
|
51
|
+
}
|
|
37
52
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
38
53
|
export declare class RepositoryErrorCodes {
|
|
39
54
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,4GAA4G;AAC5G,qBAAa,2BAA2B;IACtC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,gHAAgH;IAChH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kDAAkD;AAClD,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1F,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGjE,uDAAuD;AACvD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC,gGAAgG;AAChG,qBAAa,yBAAyB;IACpC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,gBAAgB;IAC1C,MAAM,CAAC,QAAQ,CAAC,UAAU,cAA+D;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,+CAA+C;AAC/C,MAAM,MAAM,yBAAyB,GAAG,WAAW,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAEtF,4GAA4G;AAC5G,qBAAa,2BAA2B;IACtC,+FAA+F;IAC/F,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,gHAAgH;IAChH,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAoC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kDAAkD;AAClD,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAE1F;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,QAAQ,CAAC,YAAY,gBAAiE;CAC9F;AAED,kMAAkM;AAClM,qBAAa,oBAAoB;IAC/B,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,qBAAqB,SAElC;CACJ;AAED,0CAA0C;AAC1C,MAAM,MAAM,oBAAoB,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE5E,mEAAmE;AACnE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;CAGzC;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,yEAAyE;AACzE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,SAAS,eAAe;IACxC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAKvB;IAEH,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAG1C;AAED,kCAAkC;AAClC,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -34,6 +34,21 @@ export class ScopeFilterMissingBehaviors {
|
|
|
34
34
|
return this.SCHEME_SET.has(behavior);
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* The third `resolve()` state, beside a `where` and `deny`-by-default null/undefined: unrestricted
|
|
39
|
+
* for THIS call. `onMissing: 'allow'` cannot express it - `onMissing` lives on the model's static
|
|
40
|
+
* settings, so using it for a per-user bypass (an internal operator) would also unscope every
|
|
41
|
+
* ordinary user whose `resolve()` happens to return nothing.
|
|
42
|
+
*/
|
|
43
|
+
export class ScopeFilters {
|
|
44
|
+
/**
|
|
45
|
+
* Return from `resolve()` to apply NO scope for this request - a caller the application has
|
|
46
|
+
* decided sees everything. Deliberately a symbol: forgetting to return must land in deny, and no
|
|
47
|
+
* JSON body, query string, or header can ever produce this value. `Symbol.for` so two installed
|
|
48
|
+
* copies of this package agree on identity, same as `DATA_SOURCE_BRAND`.
|
|
49
|
+
*/
|
|
50
|
+
static { this.UNRESTRICTED = Symbol.for('@venizia/ignis-kernel:scope-filter-unrestricted'); }
|
|
51
|
+
}
|
|
37
52
|
/** Machine-readable codes for repository-level failures, in the dotted namespace core already uses (`core.not_supported`, `core.search_engine.*`) - a client maps the code, never the message. */
|
|
38
53
|
export class RepositoryErrorCodes {
|
|
39
54
|
/** A verb the repository's `operationScope` does not permit (e.g. `create()` on a READ_ONLY one). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAM,OAAO,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAMH,4GAA4G;AAC5G,MAAM,OAAO,2BAA2B;IACtC,+FAA+F;aAC/E,SAAI,GAAG,MAAM,CAAC;IAC9B,gHAAgH;aAChG,UAAK,GAAG,OAAO,CAAC;aAChB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAMH,kMAAkM;AAClM,MAAM,OAAO,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,WAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAML,mEAAmE;AACnE,MAAM,OAAO,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAMH,yEAAyE;AACzE,MAAM,OAAO,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../src/base/repositories/common/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE1D,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,gGAAgG;AAChG,MAAM,OAAO,yBAAyB;aACpB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,YAAY,CAAC;aAC1B,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzF,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAMH,4GAA4G;AAC5G,MAAM,OAAO,2BAA2B;IACtC,+FAA+F;aAC/E,SAAI,GAAG,MAAM,CAAC;IAC9B,gHAAgH;aAChG,UAAK,GAAG,OAAO,CAAC;aAChB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9D,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;;AAMH;;;;;GAKG;AACH,MAAM,OAAO,YAAY;IACvB;;;;;OAKG;aACa,iBAAY,GAAG,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;;AAG/F,kMAAkM;AAClM,MAAM,OAAO,oBAAoB;IAC/B,qGAAqG;aACrF,0BAAqB,GAAG,WAAW,CAAC,KAAK,CAAC;QACxD,KAAK,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,uBAAuB,CAAC;KACvD,CAAC,CAAC;;AAML,mEAAmE;AACnE,MAAM,OAAO,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,OAAe;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;;AAMH,yEAAyE;AACzE,MAAM,OAAO,aAAa;aACR,WAAM,GAAG,QAAQ,CAAC;aAClB,kBAAa,GAAG,eAAe,CAAC;aAChC,UAAK,GAAG,OAAO,CAAC;aAChB,cAAS,GAAG,WAAW,CAAC;aACxB,eAAU,GAAG,IAAI,GAAG,CAAC;QACnC,IAAI,CAAC,MAAM;QACX,IAAI,CAAC,aAAa;QAClB,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,SAAS;KACf,CAAC,CAAC;IAEH,MAAM,CAAC,OAAO,CAAC,QAAgB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC"}
|
|
@@ -3,7 +3,7 @@ import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/typ
|
|
|
3
3
|
import type { ControllerTransports } from '../../../base/controllers/common/constants.js';
|
|
4
4
|
import type { IDataSource, TDataSourceDriverClass } from '../../../base/datasources/index.js';
|
|
5
5
|
import type { AbstractEntity } from '../../../base/models/index.js';
|
|
6
|
-
import type { IRepository, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories/index.js';
|
|
6
|
+
import type { IRepository, ScopeFilters, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories/index.js';
|
|
7
7
|
import type { TClass, TGrpcMethod, TNullable, TValueOrResolver } from '@venizia/ignis-helpers/common';
|
|
8
8
|
import { type IInjectMetadata as _IInjectMetadata, type IPropertyMetadata as _IPropertyMetadata } from '@venizia/ignis-inversion';
|
|
9
9
|
interface IBaseControllerMetadata {
|
|
@@ -50,12 +50,17 @@ export interface IModelAuthorizeSettings {
|
|
|
50
50
|
* short of removing this setting from the model turns scoping off.
|
|
51
51
|
*/
|
|
52
52
|
export interface IScopeFilterSettings {
|
|
53
|
-
/**
|
|
54
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Returns the scope `where`; `ScopeFilters.UNRESTRICTED` to apply no scope for THIS call (an
|
|
55
|
+
* internal operator, a caller the application has decided sees everything); or null/undefined
|
|
56
|
+
* when this caller's scope cannot be determined at all.
|
|
57
|
+
*/
|
|
58
|
+
resolve: () => TNullable<TWhere> | typeof ScopeFilters.UNRESTRICTED;
|
|
55
59
|
/**
|
|
56
60
|
* What `applyScopeFilter` does when `resolve()` returns null/undefined - no request context, no
|
|
57
61
|
* tenant, a background job. Defaults to `deny`: an unresolved scope matches zero rows, never
|
|
58
|
-
* every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs
|
|
62
|
+
* every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs, declared
|
|
63
|
+
* per MODEL - it cannot express a per-USER bypass; use `ScopeFilters.UNRESTRICTED` for that.
|
|
59
64
|
*/
|
|
60
65
|
onMissing?: TScopeFilterMissingBehavior;
|
|
61
66
|
}
|
|
@@ -65,8 +70,10 @@ export interface IModelSettings {
|
|
|
65
70
|
/** Default filter auto-applied to all repository operations. Bypassable via shouldSkipDefaultFilter. */
|
|
66
71
|
defaultFilter?: TFilter;
|
|
67
72
|
/**
|
|
68
|
-
* Row scope: ANDed into every read and write
|
|
69
|
-
* Resolved per query, so it can depend on the current
|
|
73
|
+
* Row scope: ANDed into every read and write whose scope is expressible as a filter clause, and
|
|
74
|
+
* NOT removable by `shouldSkipDefaultFilter`. Resolved per query, so it can depend on the current
|
|
75
|
+
* request. Ownership resolved per row or through a polymorphic reference is NOT expressible here -
|
|
76
|
+
* that check is still the application's to perform.
|
|
70
77
|
*
|
|
71
78
|
* Relational repositories only - a search-backed model (Typesense, Meilisearch) never reads
|
|
72
79
|
* this setting, so mirroring a scoped entity into a search index needs its own query-time scope.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EACV,WAAW,EACX,OAAO,EACP,yBAAyB,EACzB,2BAA2B,EAC3B,MAAM,EACP,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,KAAK,eAAe,IAAI,gBAAgB,EACxC,KAAK,iBAAiB,IAAI,kBAAkB,EAC7C,MAAM,0BAA0B,CAAC;AAElC,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAwB,SAAQ,uBAAuB;IACtE,SAAS,CAAC,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,uBAAuB,CAAC,WAAW,GAAG,OAAO,CAAE,SAAQ,uBAAuB;IAC7F,SAAS,EAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC;IAC5C,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,uBAAuB,CAAC;AAEpF,MAAM,WAAW,YAAY;IAC3B,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IAEb,uDAAuD;IACvD,MAAM,EAAE,WAAW,CAAC;IAEpB,iDAAiD;IACjD,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAElE,iDAAiD;IACjD,SAAS,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,iBAAkB,SAAQ,kBAAkB;CAAG;AAEhE,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;CAAG;AAE5D,2FAA2F;AAC3F,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AAEjE,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@venizia/ignis-kernel",
|
|
3
|
-
"version": "0.2.0-
|
|
3
|
+
"version": "0.2.0-9",
|
|
4
4
|
"description": "Browser-pure kernel of the IGNIS framework: dependency injection, lifecycle, REST controllers, repository and datasource abstractions, and the authentication and authorization seams. No node builtin and no server-only peer, so the same kernel serves a Bun server and a browser Worker.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"authentication",
|